Guard against potential configure bug wrt HAVE_GETWD
authorGlenn Morris <rgm@gnu.org>
Mon, 6 Aug 2012 20:29:45 +0000 (16:29 -0400)
committerGlenn Morris <rgm@gnu.org>
Mon, 6 Aug 2012 20:29:45 +0000 (16:29 -0400)
* configure.ac (BROKEN_GETWD) [unixware]: New define.

* src/sysdep.c: Respect BROKEN_GETWD.

ChangeLog
configure.ac
src/ChangeLog
src/sysdep.c

index f5883f9..48ba569 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2012-08-06  Glenn Morris  <rgm@gnu.org>
 
+       * configure.ac (BROKEN_GETWD) [unixware]: New define.
+
        * configure.ac (GNU_LIBRARY_PENDING_OUTPUT_COUNT): Remove.
        (PENDING_OUTPUT_COUNT): Absorb GNU_LIBRARY_PENDING_OUTPUT_COUNT.
        (DISPNEW_NEEDS_STDIO_EXT): New define.
index b4fe8bc..81d80a5 100644 (file)
@@ -2724,10 +2724,11 @@ getpwent endpwent getgrent endgrent \
 touchlock \
 cfmakeraw cfsetspeed copysign __executable_start)
 
-dnl FIXME Fragile: something else may test for getwd as a dependency.
-dnl Change to defining BROKEN_xxx ?
 dnl getwd appears to be buggy on SVR4.2, so we don't use it.
-if test $opsys != unixware; then
+if test $opsys = unixware; then
+  dnl In case some other test ends up checking for getwd.
+  AC_DEFINE(BROKEN_GETWD, 1, [Define if getwd should not be used.])
+else
   AC_CHECK_FUNCS(getwd)
 fi
 
index ec3f08f..5bccda2 100644 (file)
@@ -1,5 +1,7 @@
 2012-08-06  Glenn Morris  <rgm@gnu.org>
 
+       * sysdep.c: Respect BROKEN_GETWD.
+
        * dispnew.c (GNU_LIBRARY_PENDING_OUTPUT_COUNT, PENDING_OUTPUT_COUNT):
        Let configure handle it.
        (stdio_ext.h) [DISPNEW_NEEDS_STDIO_EXT]: Include it.
index b2b3556..d9e239d 100644 (file)
@@ -1971,7 +1971,7 @@ emacs_readlink (char const *filename, char initial_buf[READLINK_BUFSIZE])
  *     under error conditions.
  */
 
-#ifndef HAVE_GETWD
+#if !defined (HAVE_GETWD) || defined (BROKEN_GETWD)
 
 #ifndef MAXPATHLEN
 /* In 4.1, param.h fails to define this.  */
@@ -2001,7 +2001,7 @@ getwd (char *pathname)
   return pathname;
 }
 
-#endif /* HAVE_GETWD */
+#endif /* !defined (HAVE_GETWD) || defined (BROKEN_GETWD) */
 
 /*
  *     This function will go away as soon as all the stubs fixed. (fnf)