From: Ken Brown Date: Sat, 29 Jun 2019 19:03:34 +0000 (-0400) Subject: Simplify workaround for Cygwin O_PATH bug X-Git-Tag: emacs-27.0.90~2151 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0b2841f9fb0ffd8514b0fb99c5673adad6b07abb;p=emacs.git Simplify workaround for Cygwin O_PATH bug 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. --- diff --git a/configure.ac b/configure.ac index 8ff0e21fbf6..774f8e5eb92 100644 --- a/configure.ac +++ b/configure.ac @@ -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. diff --git a/src/dired.c b/src/dired.c index b8197d36a02..b700013f6a8 100644 --- a/src/dired.c +++ b/src/dired.c @@ -41,10 +41,6 @@ along with GNU Emacs. If not, see . */ #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;