aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2025-12-23 18:32:49 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2025-12-23 18:32:49 +0000
commit3502b31fb0b7f19fa681d4444f1e6b97d5be0cea (patch)
tree0140d56ce042c7c8453e34823075dd0304f2f6cf
parent6fbc86a95333119569fc6d59a272d426a40abbc8 (diff)
downloadskalibs-3502b31fb0b7f19fa681d4444f1e6b97d5be0cea.tar.gz
Make fd_sanitize() a real function
-rw-r--r--package/deps.mak1
-rw-r--r--src/include/skalibs/djbunix.h2
-rw-r--r--src/libstddjb/fd_sanitize.c13
3 files changed, 15 insertions, 1 deletions
diff --git a/package/deps.mak b/package/deps.mak
index a5db027..4732648 100644
--- a/package/deps.mak
+++ b/package/deps.mak
@@ -368,6 +368,7 @@ src/libstddjb/fd_move2.o src/libstddjb/fd_move2.lo: src/libstddjb/fd_move2.c src
src/libstddjb/fd_read.o src/libstddjb/fd_read.lo: src/libstddjb/fd_read.c src/include/skalibs/allreadwrite.h
src/libstddjb/fd_readv.o src/libstddjb/fd_readv.lo: src/libstddjb/fd_readv.c src/include/skalibs/allreadwrite.h
src/libstddjb/fd_recv.o src/libstddjb/fd_recv.lo: src/libstddjb/fd_recv.c src/include/skalibs/allreadwrite.h
+src/libstddjb/fd_sanitize.o src/libstddjb/fd_sanitize.lo: src/libstddjb/fd_sanitize.c src/include/skalibs/djbunix.h src/include/skalibs/strerr.h
src/libstddjb/fd_send.o src/libstddjb/fd_send.lo: src/libstddjb/fd_send.c src/include/skalibs/allreadwrite.h
src/libstddjb/fd_shutdown.o src/libstddjb/fd_shutdown.lo: src/libstddjb/fd_shutdown.c src/include/skalibs/djbunix.h src/include/skalibs/nonposix.h
src/libstddjb/fd_sync.o src/libstddjb/fd_sync.lo: src/libstddjb/fd_sync.c src/include/skalibs/djbunix.h
diff --git a/src/include/skalibs/djbunix.h b/src/include/skalibs/djbunix.h
index 0304ce8..29e37d2 100644
--- a/src/include/skalibs/djbunix.h
+++ b/src/include/skalibs/djbunix.h
@@ -31,7 +31,7 @@ extern int fd_sync (int) ;
extern off_t fd_cat (int, int) ;
extern off_t fd_catn (int, int, off_t) ;
extern int fd_ensure_open (int, int) ;
-#define fd_sanitize() (fd_ensure_open(0, 0) && fd_ensure_open(1, 1) && fd_ensure_open(2, 1))
+extern void fd_sanitize (void) ;
extern void fd_shutdown (int, int) ;
extern int fd_lock (int, int, int) ;
diff --git a/src/libstddjb/fd_sanitize.c b/src/libstddjb/fd_sanitize.c
new file mode 100644
index 0000000..d9349cc
--- /dev/null
+++ b/src/libstddjb/fd_sanitize.c
@@ -0,0 +1,13 @@
+/* ISC license. */
+
+#include <unistd.h>
+
+#include <skalibs/strerr.h>
+#include <skalibs/djbunix.h>
+
+void fd_sanitize (void)
+{
+ if (!fd_ensure_open(2, 1)) _exit(111) ;
+ if (!fd_ensure_open(1, 1)) strerr_diefu3sys(111, "ensure std", "out", " is open") ;
+ if (!fd_ensure_open(0, 0)) strerr_diefu3sys(111, "ensure std", "in", " is open") ;
+}