From 3b8f1e655357523f50752296093e56da53ca287f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 16 Oct 2026 21:17:05 +0200 Subject: [PATCH] std.c: fix ioctl() signature for freebsd and openbsd --- lib/std/c.zig | 5 ++++- lib/std/c/dragonfly.zig | 3 +++ lib/std/c/freebsd.zig | 2 ++ lib/std/c/openbsd.zig | 4 ++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index fc64f8b282310bb3fa767e2f790c5525fd84569c..0367ac6011577d51b92077a64a782158dbea4f63 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11430,6 +11430,9 @@ pub const clock_nanosleep = switch (native_os) { }; pub const ioctl = switch (native_os) { + .dragonfly => dragonfly.ioctl, + .freebsd => freebsd.ioctl, + .openbsd => openbsd.ioctl, .windows => {}, else => private.ioctl, }; @@ -11897,7 +11900,7 @@ const private = struct { }; extern "c" fn getrusage(who: c_int, usage: *rusage) c_int; extern "c" fn gettimeofday(noalias tv: ?*timeval, noalias tz: ?*timezone) c_int; - extern "c" fn ioctl(fd: fd_t, request: if (native_os == .dragonfly) c_ulong else c_int, ...) c_int; + extern "c" fn ioctl(fd: fd_t, request: c_int, ...) c_int; extern "c" fn msync(addr: *align(page_size) const anyopaque, len: usize, flags: c_int) c_int; extern "c" fn mremap(addr: ?*align(page_size) const anyopaque, old_len: usize, new_len: usize, flags: MREMAP, ...) *anyopaque; extern "c" fn nanosleep(rqtp: *const timespec, rmtp: ?*timespec) c_int; diff --git a/lib/std/c/dragonfly.zig b/lib/std/c/dragonfly.zig index 8a4aca1b8a08b28fcb29132be3f399f28b63882b..43ee9dc0ae352df4d8899c9e699463267dd575ec 100644 --- a/lib/std/c/dragonfly.zig +++ b/lib/std/c/dragonfly.zig @@ -8,9 +8,12 @@ const pid_t = std.c.pid_t; const sockaddr = std.c.sockaddr; const socklen_t = std.c.socklen_t; const uid_t = std.c.uid_t; +const fd_t = std.c.fd_t; const NI = std.c.NI; const EAI = std.c.EAI; +pub extern "c" fn ioctl(fd: fd_t, request: c_ulong, ...) c_int; + pub extern "c" fn lwp_gettid() c_int; pub extern "c" fn ptrace(request: c_int, pid: pid_t, addr: caddr_t, data: c_int) c_int; pub extern "c" fn umtx_sleep(ptr: *const volatile c_int, value: c_int, timeout: c_int) c_int; diff --git a/lib/std/c/freebsd.zig b/lib/std/c/freebsd.zig index b08bd0888a17f1c9712fffaa21e7c3d2cc89dad5..26a234d6631602374b68fc554dc8132f2cd67cfe 100644 --- a/lib/std/c/freebsd.zig +++ b/lib/std/c/freebsd.zig @@ -30,6 +30,8 @@ comptime { assert(builtin.os.tag == .freebsd); // Prevent access of std.c symbols on wrong OS. } +pub extern "c" fn ioctl(fd: fd_t, request: c_ulong, ...) c_int; + pub extern "c" fn ptrace(request: c_int, pid: pid_t, addr: caddr_t, data: c_int) c_int; pub extern "c" fn kinfo_getfile(pid: pid_t, cntp: *c_int) ?[*]kinfo_file; diff --git a/lib/std/c/openbsd.zig b/lib/std/c/openbsd.zig index 5d9b863fdb7b50f173fc66ef3b85228beefb286b..3dfbd2799a567711fbd7d0d9a2190be15346d499 100644 --- a/lib/std/c/openbsd.zig +++ b/lib/std/c/openbsd.zig @@ -9,6 +9,7 @@ const passwd = std.c.passwd; const timespec = std.c.timespec; const uid_t = std.c.uid_t; const pid_t = std.c.pid_t; +const fd_t = std.c.fd_t; const sockaddr = std.c.sockaddr; const socklen_t = std.c.socklen_t; const NI = std.c.NI; @@ -17,6 +18,9 @@ const EAI = std.c.EAI; comptime { assert(builtin.os.tag == .openbsd); // Prevent access of std.c symbols on wrong OS. } + +pub extern "c" fn ioctl(fd: fd_t, request: c_ulong, ...) c_int; + pub extern "c" fn getnameinfo( noalias addr: *const sockaddr, addrlen: socklen_t, -- 2.54.0