From 71f822ec2bf8c41f782f154d87b7b415a530dd03 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Thu, 18 Apr 2024 17:48:53 -0400 Subject: config: Check for pipe2() --- config/header.mk | 1 + config/pipe2.c | 10 ++++++++++ src/bfstd.c | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 config/pipe2.c 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 +// SPDX-License-Identifier: 0BSD + +#include +#include + +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) { -- cgit v1.2.3