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] <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

