From 3f7d4c77e8f2c8b1ba3a5608bb6dce298d38487f Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Mon, 12 Sep 2022 10:49:25 +0200 Subject: [PATCH] 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). --- ChangeLog | 6 ++++++ lib/supersede.c | 11 +++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index b7eac1b3e3..0a21f33a29 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2022-09-12 Bruno Haible + + 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). + 2022-09-10 Bruno Haible pipe-filter-gi: Fix test failure on native Windows. diff --git a/lib/supersede.c b/lib/supersede.c index 898c565ade..692d216bb6 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 . - 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 + , + - 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; -- 2.39.5