[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
supersede: Avoid a failure when writing to /dev/null in Solaris zones
From: |
Bruno Haible |
Subject: |
supersede: Avoid a failure when writing to /dev/null in Solaris zones |
Date: |
Mon, 12 Sep 2022 10:51:34 +0200 |
On Solaris 11.3 (gcc211.fsffrance.org), I'm seeing a test-supersede failure.
It's much like the one seen on Solaris/Illumos and fixed through
<https://lists.gnu.org/archive/html/bug-gnulib/2020-08/msg00206.html>.
The only difference is that here, the open() call fails with error EACCES,
not EINVAL.
This patch fixes the test failure.
2022-09-12 Bruno Haible <bruno@clisp.org>
supersede: Avoid a failure when writing to /dev/null in Solaris zones.
* lib/supersede.c (open_supersede): Treat EACCES (seen on Solaris 11.3)
like EINVAL (seen on Illumos).
diff --git a/lib/supersede.c b/lib/supersede.c
index a72c4f40e8..7fbd619fde 100644
--- a/lib/supersede.c
+++ b/lib/supersede.c
@@ -83,9 +83,12 @@ open_supersede (const char *filename, int flags, mode_t mode,
/* Extra flags for existing devices. */
int extra_flags =
#if defined __sun || (defined _WIN32 && !defined __CYGWIN__)
- /* open ("/dev/null", O_TRUNC | O_WRONLY) fails with error EINVAL on
Solaris
- zones. See <https://www.illumos.org/issues/13035>.
- Likewise for open ("NUL", O_TRUNC | O_RDWR) on native Windows.
+ /* open ("/dev/null", O_TRUNC | O_WRONLY) fails on Solaris zones:
+ - with error EINVAL on Illumos, see
+ <https://www.illumos.org/issues/13035>,
+ - with error EACCES on Solaris 11.3.
+ Likewise, open ("NUL", O_TRUNC | O_RDWR) fails with error EINVAL on
+ native Windows.
As a workaround, add the O_CREAT flag, although it ought not to be
necessary. */
O_CREAT;
@@ -204,7 +207,7 @@ open_supersede (const char *filename, int flags, mode_t
mode,
}
#if defined __sun || (defined _WIN32 && !defined __CYGWIN__)
/* See the comment regarding extra_flags, above. */
- else if (errno == EINVAL)
+ else if (errno == EINVAL || errno == EACCES)
{
struct stat statbuf;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- supersede: Avoid a failure when writing to /dev/null in Solaris zones,
Bruno Haible <=