| 1 | #define _GNU_SOURCE |
| 2 | #include <stdlib.h> |
| 3 | #include <string.h> |
| 4 | #include <limits.h> |
| 5 | #include <unistd.h> |
| 6 | #include <sys/stat.h> |
| 7 | |
| 8 | char *get_current_dir_name(void) { |
| 9 | 	struct stat a, b; |
| 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); |
| 14 | 	return getcwd(0, 0); |
| 15 | } |