Szabolcs Nagy | 5717444 | 2013-12-12 05:09:18 +0000 | [diff] [blame] | 1 | #define _GNU_SOURCE |
Rich Felker | 1611ab0 | 2012-02-17 23:10:00 -0500 | [diff] [blame] | 2 | #include <stdlib.h> |
| 3 | #include <string.h> |
| 4 | #include <limits.h> |
| 5 | #include <unistd.h> |
Rich Felker | f96eb33 | 2012-02-17 23:56:28 -0500 | [diff] [blame] | 6 | #include <sys/stat.h> |
Rich Felker | 1611ab0 | 2012-02-17 23:10:00 -0500 | [diff] [blame] | 7 | |
| 8 | char *get_current_dir_name(void) { |
Rich Felker | f96eb33 | 2012-02-17 23:56:28 -0500 | [diff] [blame] | 9 | struct stat a, b; |
Rich Felker | f96eb33 | 2012-02-17 23:56:28 -0500 | [diff] [blame] | 10 | 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 Felker | 2b7cf6d | 2013-12-13 02:25:09 -0500 | [diff] [blame] | 14 | return getcwd(0, 0); |
Rich Felker | 1611ab0 | 2012-02-17 23:10:00 -0500 | [diff] [blame] | 15 | } |