From 0175343deb617e9db4bd019f4108d6690de9b919 Mon Sep 17 00:00:00 2001 From: Tomas Volf <~@wolfsden.cz> Date: Sat, 10 Aug 2024 00:54:35 +0200 Subject: [PATCH] posix.c: Set errno when pipe2 is not available and flags provided. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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] : Set errno to ENOSYS. Signed-off-by: Ludovic Courtès --- libguile/posix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libguile/posix.c b/libguile/posix.c index 9a873b5a1..0e57f012b 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 = -1, errno = ENOSYS; #endif if (rv)