summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/path.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/path.cc')
-rw-r--r--winsup/cygwin/path.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index 0b8539065..7dc85442e 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -2855,6 +2855,27 @@ getwd (char *buf)
return getcwd (buf, PATH_MAX + 1); /*Per SuSv3!*/
}
+extern "C" char *
+get_current_dir_name (void)
+{
+ char *pwd = getenv ("PWD");
+ char *cwd = getcwd (NULL, 0);
+
+ if (pwd)
+ {
+ struct __stat64 pwdbuf, cwdbuf;
+ stat64 (pwd, &pwdbuf);
+ stat64 (cwd, &cwdbuf);
+ if ((pwdbuf.st_dev == cwdbuf.st_dev) && (pwdbuf.st_ino == cwdbuf.st_ino))
+ {
+ cwd = (char *) malloc (strlen (pwd) + 1);
+ strcpy (cwd, pwd);
+ }
+ }
+
+ return cwd;
+}
+
/* chdir: POSIX 5.2.1.1 */
extern "C" int
chdir (const char *in_dir)