diff --git a/src/dired.c b/src/dired.c
index 493758292b9..b8197d36a02 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -41,6 +41,10 @@ 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
diff --git a/src/fileio.c b/src/fileio.c
index ed1d2aedf37..e36118652cb 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -61,6 +61,10 @@ along with GNU Emacs. If not, see . */
# include
#endif
+#ifdef __CYGWIN__
+# undef O_PATH /* Buggy in Cygwin 3.0.0 through 3.0.7. */
+#endif
+
#ifdef WINDOWSNT
#define NOMINMAX 1
#include