blob: 782cddcd826e76c21fe035da49e6f4d890b12c17 [file] [log] [blame]
Szabolcs Nagy57174442013-12-12 05:09:18 +00001#define _GNU_SOURCE
Rich Felker1611ab02012-02-17 23:10:00 -05002#include <stdlib.h>
3#include <string.h>
4#include <limits.h>
5#include <unistd.h>
Rich Felkerf96eb332012-02-17 23:56:28 -05006#include <sys/stat.h>
Rich Felker1611ab02012-02-17 23:10:00 -05007
8char *get_current_dir_name(void) {
Rich Felkerf96eb332012-02-17 23:56:28 -05009 struct stat a, b;
Rich Felkerf96eb332012-02-17 23:56:28 -050010 char *res = getenv("PWD");
11 if (res && *res && !stat(res, &a) && !stat(".", &b)
12 && (a.st_dev == b.st_dev) && (a.st_ino == b.st_ino))
13 return strdup(res);
Rich Felker2b7cf6d2013-12-13 02:25:09 -050014 return getcwd(0, 0);
Rich Felker1611ab02012-02-17 23:10:00 -050015}