If pipe2 is not available (e.g. on MacOS) and flags are set,
SCM_SYSERROR was correctly signaled, however errno was not set, so it
reported as:
Undefined error: 0
That sucks both in tests (the test is not skipped) and in actual
usage (user has no idea what went wrong).
So set errno to ENOSYS as well.
* libguile/posix.c (scm_pipe2) [!HAVE_PIPE2] <c_flags>: Set errno to
ENOSYS.
---
libguile/posix.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libguile/posix.c b/libguile/posix.c
index 9a873b5a1..986dcc7d0 100644
--- a/libguile/posix.c
+++ b/libguile/posix.c
@@ -282,7 +282,7 @@ SCM_DEFINE (scm_pipe2, "pipe", 0, 1, 0,
/* 'pipe2' cannot be emulated on systems that lack it: calling
'fnctl' afterwards to set the relevant flags is not equivalent
because it's not atomic. */
- rv = ENOSYS;
+ rv = errno = ENOSYS;
#endif
if (rv)
--
2.45.2