/*
Copyright 2010 Nathan Phillip Brink <ohnobinki@ohnopublishing.net>
This file is a part of DistRen.
DistRen is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
DistRen is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with DistRen. If not, see <http://www.gnu.org/licenses/>.
*/
#include "common/misc.h"
#include <errno.h>
#include <unistd.h>
char *distren_getcwd()
{
char *mycwd;
size_t counter;
/**
This is completely wrong, feel free to rewrite with
pathconf() in mind.
*/
for(counter = 128; ; counter +=32)
{
mycwd = malloc(counter);
errno = 0;
if(getcwd(mycwd, counter))
return mycwd;
/** ERANGE means that counter is too small */
if(errno != ERANGE)
return (char *)NULL;
free(mycwd);
}
return (char *)NULL;
}