]> git.eshelyaron.com Git - emacs.git/commitdiff
Simplify workaround for Cygwin O_PATH bug
authorKen Brown <kbrown@cornell.edu>
Sat, 29 Jun 2019 19:03:34 +0000 (15:03 -0400)
committerKen Brown <kbrown@cornell.edu>
Sat, 29 Jun 2019 19:03:34 +0000 (15:03 -0400)
Suggested by Paul Eggert (Bug#36405#22).
* configure.ac (HAVE_CYGWIN_O_PATH_BUG): New AC_DEFINE, for Cygwin
versions 3.0.0 through 3.0.7.
* src/dired.c (O_PATH) [__CYGWIN__]: Remove #undef.
(file_attributes) [HAVE_CYGWIN_O_PATH_BUG]: Don't use O_PATH.

configure.ac
src/dired.c

index 8ff0e21fbf6d46bf174e398f2cd965fac71f38c2..774f8e5eb921c0f2142c1eec74a93ad673d38969 100644 (file)
@@ -5734,6 +5734,9 @@ case $opsys,$emacs_uname_r in
     AC_MSG_WARN([[building Emacs on Cygwin 1.5 is not supported.]])
            echo
           ;;
+  cygwin,3.0.[[0-7]]'('*)
+    AC_DEFINE([HAVE_CYGWIN_O_PATH_BUG], 1,
+      [Define to 1 if opening a FIFO with O_PATH causes a hang.]);;
 esac
 
 # Remove any trailing slashes in these variables.
index b8197d36a0264dfc096e27ed42c7418cfa3e6925..b700013f6a82300756c9c1e75b1f85be505b4a50 100644 (file)
@@ -41,10 +41,6 @@ along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.  */
 #include "buffer.h"
 #include "coding.h"
 
-#ifdef __CYGWIN__
-# undef O_PATH /* Buggy in Cygwin 3.0.0 through 3.0.7.  */
-#endif
-
 #ifdef MSDOS
 #include "msdos.h"     /* for fstatat */
 #endif
@@ -941,7 +937,7 @@ file_attributes (int fd, char const *name,
 
   int err = EINVAL;
 
-#ifdef O_PATH
+#if defined O_PATH && !defined HAVE_CYGWIN_O_PATH_BUG
   int namefd = openat (fd, name, O_PATH | O_CLOEXEC | O_NOFOLLOW);
   if (namefd < 0)
     err = errno;