check for connect failure in syslog log opening
[musl] / src / misc / get_current_dir_name.c
index 212edf3..782cddc 100644 (file)
@@ -1,12 +1,15 @@
+#define _GNU_SOURCE
 #include <stdlib.h>
 #include <string.h>
 #include <limits.h>
 #include <unistd.h>
+#include <sys/stat.h>
 
 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);
 }