summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2024-04-18 17:48:53 -0400
committerTavian Barnes <tavianator@tavianator.com>2024-04-19 15:50:45 -0400
commit71f822ec2bf8c41f782f154d87b7b415a530dd03 (patch)
treeb1090b031c79f2bff839538da391d8ba31ec784a
parentd7130b3eee3e59f2e5475bbac5695cee54310c20 (diff)
config: Check for pipe2()
-rw-r--r--config/header.mk1
-rw-r--r--config/pipe2.c10
-rw-r--r--src/bfstd.c2
3 files changed, 12 insertions, 1 deletions
diff --git a/config/header.mk b/config/header.mk
index ec53dfa..55657f8 100644
--- a/config/header.mk
+++ b/config/header.mk
@@ -16,6 +16,7 @@ HEADERS := \
${GEN}/getdents64-syscall.h \
${GEN}/getprogname.h \
${GEN}/getprogname-gnu.h \
+ ${GEN}/pipe2.h \
${GEN}/posix-spawn-addfchdir.h \
${GEN}/posix-spawn-addfchdir-np.h \
${GEN}/statx.h \
diff --git a/config/pipe2.c b/config/pipe2.c
new file mode 100644
index 0000000..4cb43b5
--- /dev/null
+++ b/config/pipe2.c
@@ -0,0 +1,10 @@
+// Copyright © Tavian Barnes <tavianator@tavianator.com>
+// SPDX-License-Identifier: 0BSD
+
+#include <fcntl.h>
+#include <unistd.h>
+
+int main(void) {
+ int fds[2];
+ return pipe2(fds, O_CLOEXEC);
+}
diff --git a/src/bfstd.c b/src/bfstd.c
index 3eff024..e2c2b97 100644
--- a/src/bfstd.c
+++ b/src/bfstd.c
@@ -489,7 +489,7 @@ int dup_cloexec(int fd) {
}
int pipe_cloexec(int pipefd[2]) {
-#if __linux__ || (BSD && !__APPLE__)
+#if BFS_HAS_PIPE2
return pipe2(pipefd, O_CLOEXEC);
#else
if (pipe(pipefd) != 0) {