From: Jim Meyering <jim@meyering.net>
Date: Wed, 9 Mar 2005 23:22:08 +0000 (+0000)
Subject: [!HAVE_FCHDIR]: Define open, fchdir, and chdir_long
X-Git-Tag: cvs-readonly~3494
X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=931c1209da16cb5488643b8c84c5263563320334;p=gnulib.git

[!HAVE_FCHDIR]: Define open, fchdir, and chdir_long
so that this module works on systems without fchdir.
---

diff --git a/lib/save-cwd.c b/lib/save-cwd.c
index 596b78c8d9..fe4bb970ce 100644
--- a/lib/save-cwd.c
+++ b/lib/save-cwd.c
@@ -44,6 +44,18 @@
 #include "chdir-long.h"
 #include "xgetcwd.h"
 
+/* On systems without the fchdir function (WOE), pretend that open
+   always returns -1 so that save_cwd resorts to using xgetcwd.
+   Since chdir_long requires fchdir, use chdir instead.  */
+#if !HAVE_FCHDIR
+# undef open
+# define open(File, Flags) -1
+# undef fchdir
+# define fchdir(Fd) (abort (), -1)
+# undef chdir_long
+# define chdir_long(Dir) chdir (Dir)
+#endif
+
 /* Record the location of the current working directory in CWD so that
    the program may change to other directories and later use restore_cwd
    to return to the recorded location.  This function may allocate