Paul Eggert wrote:
> * tests/test-open.h (test_open): Fail if test takes too long
> because we tried to open a fifo. Test opening /dev/null,
> /dev/tty and a fifo, with a trailing "/" and with O_DIRECTORY.
The CI reports a failure of these new tests on native Windows (mingw, MSVC):
FAIL: test-open
===============
../../tests/test-open.h:89: assertion 'errno == ENOTDIR || errno == EISDIR ||
errno == EINVAL' failed
FAIL test-open.exe (exit status: 3)
And in a testdir of modules 'open', 'openat', I see a syntax error as well:
../../gllib/open.c: In function »rpl_open«:
../../gllib/open.c:198:5: error: expected »)« before »{« token
{
^
These patches fix things.
2025-06-02 Bruno Haible <[email protected]>
open, openat: Fix test failure on native Windows.
* tests/test-open.h (test_open): Expect a different error code for
"/dev/null/" on native Windows.
open: Fix syntax error on native Windows (regression 2025-05-28).
* lib/open.c (open): Add missing parenthesis.
>From af9ec1a1ef7ccb81727a6963dea6b2bafa0aa2d5 Mon Sep 17 00:00:00 2001
From: Bruno Haible <[email protected]>
Date: Mon, 2 Jun 2025 12:50:04 +0200
Subject: [PATCH 1/2] open: Fix syntax error on native Windows (regression
2025-05-28).
* lib/open.c (open): Add missing parenthesis.
---
ChangeLog | 5 +++++
lib/open.c | 2 +-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
index e168863f67..9bb85638d4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2025-06-02 Bruno Haible <[email protected]>
+
+ open: Fix syntax error on native Windows (regression 2025-05-28).
+ * lib/open.c (open): Add missing parenthesis.
+
2025-06-01 Bruno Haible <[email protected]>
gettext-h: Avoid warnings from "gcc -Wextra".
diff --git a/lib/open.c b/lib/open.c
index 624572c8dd..3da2dce072 100644
--- a/lib/open.c
+++ b/lib/open.c
@@ -194,7 +194,7 @@ open (const char *filename, int flags, ...)
if (REPLACE_OPEN_DIRECTORY && fd < 0 && errno == EACCES
&& ((flags & (O_ACCMODE | O_CREAT)) == O_RDONLY
|| (O_SEARCH != O_RDONLY
- && (flags & (O_ACCMODE | O_CREAT)) == O_SEARCH))
+ && (flags & (O_ACCMODE | O_CREAT)) == O_SEARCH)))
{
struct stat statbuf;
if (check_directory
--
2.43.0
>From 1619b78c150e77204844e9bd04521aa59ef87e6f Mon Sep 17 00:00:00 2001
From: Bruno Haible <[email protected]>
Date: Mon, 2 Jun 2025 12:51:55 +0200
Subject: [PATCH 2/2] open, openat: Fix test failure on native Windows.
* tests/test-open.h (test_open): Expect a different error code for
"/dev/null/" on native Windows.
---
ChangeLog | 4 ++++
tests/test-open.h | 4 ++++
2 files changed, 8 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index 9bb85638d4..51a3822484 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2025-06-02 Bruno Haible <[email protected]>
+ open, openat: Fix test failure on native Windows.
+ * tests/test-open.h (test_open): Expect a different error code for
+ "/dev/null/" on native Windows.
+
open: Fix syntax error on native Windows (regression 2025-05-28).
* lib/open.c (open): Add missing parenthesis.
diff --git a/tests/test-open.h b/tests/test-open.h
index b745a2b08d..1a80af454a 100644
--- a/tests/test-open.h
+++ b/tests/test-open.h
@@ -86,7 +86,11 @@ test_open (int (*func) (char const *, int, ...), bool print)
/* Cannot open /dev/null with trailing slash or O_DIRECTORY. */
errno = 0;
ASSERT (func ("/dev/null/", O_RDONLY) == -1);
+#if defined _WIN32 && !defined __CYGWIN__
+ ASSERT (errno == ENOENT);
+#else
ASSERT (errno == ENOTDIR || errno == EISDIR || errno == EINVAL);
+#endif
errno = 0;
ASSERT (func ("/dev/null", O_RDONLY | O_DIRECTORY) == -1);
--
2.43.0