+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).
+
2022-09-10 Bruno Haible <bruno@clisp.org>
pipe-filter-gi: Fix test failure on native Windows.
/* 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;
}
#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;