X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fmisc%2Fget_current_dir_name.c;h=782cddcd826e76c21fe035da49e6f4d890b12c17;hb=3176b57e528f335139f37ada07063f3619158f56;hp=212edf3169143b0196dce39bad562753c7b6acc1;hpb=1611ab0d9b10ad3413f452c2b31a6c1c56dd6939;p=musl diff --git a/src/misc/get_current_dir_name.c b/src/misc/get_current_dir_name.c index 212edf31..782cddcd 100644 --- a/src/misc/get_current_dir_name.c +++ b/src/misc/get_current_dir_name.c @@ -1,12 +1,15 @@ +#define _GNU_SOURCE #include #include #include #include +#include char *get_current_dir_name(void) { - char buf[PATH_MAX]; - char* res = getenv("PWD"); - if(res && *res) return strdup(res); - if(!getcwd(buf, sizeof(buf))) return NULL; - return strdup(buf); + struct stat a, b; + char *res = getenv("PWD"); + if (res && *res && !stat(res, &a) && !stat(".", &b) + && (a.st_dev == b.st_dev) && (a.st_ino == b.st_ino)) + return strdup(res); + return getcwd(0, 0); }