From 0b5355f17c5be3f3b565dc4bc257b7f153ac42a5 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Sun, 1 Jan 2012 18:54:25 +0000 Subject: * cygwin.din (get_current_dir_name): Export. * path.cc (get_current_dir_name): New function. * posix.sgml (std-gnu): Add get_current_dir_name. * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump. --- winsup/cygwin/path.cc | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'winsup/cygwin/path.cc') 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) -- cgit v1.2.3