/* Copyright 2010 Nathan Phillip Brink 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 . */ #include "common/misc.h" #include #include #include #include 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; }