From 56507ecf9849719356bb36ed8e5dc539cd060a36 Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Sun, 29 Mar 2026 19:56:28 -0400 Subject: [PATCH] libzigc: stropts/isastream `isastream` is an old, deprecated function for the STREAMS framework. Linux doesn't even support this natively, and so the musl implementation just returns 0 (not a STREAMS file) for valid file descriptors or -1 (for bad file descriptors). --- lib/c.zig | 1 + lib/c/stropts.zig | 17 +++++++++++++++++ lib/libc/musl/src/legacy/isastream.c | 7 ------- src/libs/musl.zig | 1 - 4 files changed, 18 insertions(+), 8 deletions(-) create mode 100644 lib/c/stropts.zig delete mode 100644 lib/libc/musl/src/legacy/isastream.c diff --git a/lib/c.zig b/lib/c.zig index 00504753c2..c79e7a129f 100644 --- a/lib/c.zig +++ b/lib/c.zig @@ -73,6 +73,7 @@ comptime { _ = @import("c/stdlib.zig"); _ = @import("c/string.zig"); _ = @import("c/strings.zig"); + _ = @import("c/stropts.zig"); _ = @import("c/sys/capability.zig"); _ = @import("c/sys/file.zig"); diff --git a/lib/c/stropts.zig b/lib/c/stropts.zig new file mode 100644 index 0000000000..67552a9a7f --- /dev/null +++ b/lib/c/stropts.zig @@ -0,0 +1,17 @@ +const builtin = @import("builtin"); + +const std = @import("std"); +const linux = std.os.linux; + +const symbol = @import("../c.zig").symbol; +const errno = @import("../c.zig").errno; + +comptime { + if (builtin.target.isMuslLibC()) { + symbol(&isastream, "isastream"); + } +} + +fn isastream(fd: c_int) callconv(.c) c_int { + return if (errno(linux.fcntl(fd, linux.F.GETFD, 0)) < 0) -1 else 0; +} diff --git a/lib/libc/musl/src/legacy/isastream.c b/lib/libc/musl/src/legacy/isastream.c deleted file mode 100644 index 4dafdb0821..0000000000 --- a/lib/libc/musl/src/legacy/isastream.c +++ /dev/null @@ -1,7 +0,0 @@ -#include -#include - -int isastream(int fd) -{ - return fcntl(fd, F_GETFD) < 0 ? -1 : 0; -} diff --git a/src/libs/musl.zig b/src/libs/musl.zig index 96b101c330..e206d86369 100644 --- a/src/libs/musl.zig +++ b/src/libs/musl.zig @@ -691,7 +691,6 @@ const src_files = [_][]const u8{ "musl/src/legacy/getpagesize.c", "musl/src/legacy/getpass.c", "musl/src/legacy/getusershell.c", - "musl/src/legacy/isastream.c", "musl/src/legacy/lutimes.c", "musl/src/legacy/ulimit.c", "musl/src/legacy/utmpx.c",