From 0d0146004b1a11f75af773ec358a024db4a3787b Mon Sep 17 00:00:00 2001 From: Tomas Volf <~@wolfsden.cz> Date: Fri, 9 Aug 2024 13:44:41 +0200 Subject: [PATCH 9/9] posix.c: Set errno when pipe2 is not available and flags provided. 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. --- 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