From 7fb8303fe94e23c267db66a899db2504825868b6 Mon Sep 17 00:00:00 2001 From: Sergey Fedorov Date: Tue, 1 Apr 2025 03:25:02 +0800 Subject: [PATCH] FileDescriptor: provide fallback if F_DUPFD_CLOEXEC is undefined --- include/hyprutils/os/FileDescriptor.hpp | 5 +++++ src/os/FileDescriptor.cpp | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git include/hyprutils/os/FileDescriptor.hpp include/hyprutils/os/FileDescriptor.hpp index 96761d0..aa9dbf2 100644 --- include/hyprutils/os/FileDescriptor.hpp +++ include/hyprutils/os/FileDescriptor.hpp @@ -2,6 +2,10 @@ #include +#ifndef F_DUPFD_CLOEXEC +#define F_DUPFD_CLOEXEC F_DUPFD +#endif + namespace Hyprutils::OS { class CFileDescriptor { public: diff --git src/os/FileDescriptor.cpp src/os/FileDescriptor.cpp index f13a3ee..3d3c766 100644 --- src/os/FileDescriptor.cpp +++ src/os/FileDescriptor.cpp @@ -55,7 +55,14 @@ CFileDescriptor CFileDescriptor::duplicate(int flags) const { if (m_fd == -1) return {}; - return CFileDescriptor{fcntl(m_fd, flags, 0)}; + int new_fd; +#ifdef F_DUPFD_CLOEXEC + new_fd = fcntl(m_fd, flags, 0); +#else + new_fd = fcntl(m_fd, flags | FD_CLOEXEC, 0); +#endif + + return CFileDescriptor{new_fd}; } bool CFileDescriptor::isClosed() const {