diff options
author | Yaakov Selkowitz <yselkowi@redhat.com> | 2012-01-01 22:54:25 +0400 |
---|---|---|
committer | Yaakov Selkowitz <yselkowi@redhat.com> | 2012-01-01 22:54:25 +0400 |
commit | 0b5355f17c5be3f3b565dc4bc257b7f153ac42a5 (patch) | |
tree | b848c4aa19139d8f75f3a0331ce9e86bce81f375 /winsup | |
parent | d27d202f56682f6f01903790a84de1e9cca9aced (diff) |
* 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.
Diffstat (limited to 'winsup')
-rw-r--r-- | winsup/cygwin/ChangeLog | 6 | ||||
-rw-r--r-- | winsup/cygwin/cygwin.din | 1 | ||||
-rw-r--r-- | winsup/cygwin/include/cygwin/version.h | 3 | ||||
-rw-r--r-- | winsup/cygwin/path.cc | 21 | ||||
-rw-r--r-- | winsup/cygwin/posix.sgml | 1 |
5 files changed, 31 insertions, 1 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index e69de29bb..528e0efa2 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -0,0 +1,6 @@ +2012-01-01 Yaakov Selkowitz <yselkowitz@users.sourceforge.net> + + * 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. diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din index e83d952a7..b46839c9a 100644 --- a/winsup/cygwin/cygwin.din +++ b/winsup/cygwin/cygwin.din @@ -672,6 +672,7 @@ _gcvt = gcvt SIGFE gcvtf SIGFE _gcvtf = gcvtf SIGFE get_avphys_pages SIGFE +get_current_dir_name SIGFE get_nprocs SIGFE get_nprocs_conf SIGFE get_osfhandle SIGFE diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index c9d29aca4..550458312 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -426,12 +426,13 @@ details. */ 255: Export ptsname_r. 256: Add CW_ALLOC_DRIVE_MAP, CW_MAP_DRIVE_MAP, CW_FREE_DRIVE_MAP. 257: Export getpt. + 258: Export get_current_dir_name. */ /* Note that we forgot to bump the api for ualarm, strtoll, strtoull */ #define CYGWIN_VERSION_API_MAJOR 0 -#define CYGWIN_VERSION_API_MINOR 257 +#define CYGWIN_VERSION_API_MINOR 258 /* There is also a compatibity version number associated with the shared memory regions. It is incremented when incompatible 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) diff --git a/winsup/cygwin/posix.sgml b/winsup/cygwin/posix.sgml index 196b61c14..185964f32 100644 --- a/winsup/cygwin/posix.sgml +++ b/winsup/cygwin/posix.sgml @@ -1111,6 +1111,7 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para> fremovexattr fsetxattr get_avphys_pages + get_current_dir_name get_phys_pages get_nprocs get_nprocs_conf |