authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-15 14:59:25+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-22 22:15:31+02:00
logc299dbf9c355ed9a47febd80811520301aaa8018
tree507ac6e8c114d2158656b68cb37bf6a0793c55af
parent0935f72e78915510e9a27e9f64eb2ddd2079134c
signature Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.c: fix getnameinfo() signature for freebsd


3 files changed, 39 insertions(+), 9 deletions(-)

lib/std/c.zig+14-9
...@@ -11232,15 +11232,11 @@ pub extern "c" fn getaddrinfo(...@@ -11232,15 +11232,11 @@ pub extern "c" fn getaddrinfo(
1123211232
11233pub extern "c" fn freeaddrinfo(res: *addrinfo) void;11233pub extern "c" fn freeaddrinfo(res: *addrinfo) void;
1123411234
11235pub extern "c" fn getnameinfo(11235pub const getnameinfo = switch (native_os) {
11236 noalias addr: *const sockaddr,11236 .dragonfly => dragonfly.getnameinfo,
11237 addrlen: socklen_t,11237 .freebsd => freebsd.getnameinfo,
11238 noalias host: ?[*]u8,11238 else => private.getnameinfo,
11239 hostlen: if (native_os == .dragonfly) usize else socklen_t,11239};
11240 noalias serv: ?[*]u8,
11241 servlen: if (native_os == .dragonfly) usize else socklen_t,
11242 flags: NI,
11243) EAI;
1124411240
11245pub extern "c" fn gai_strerror(errcode: EAI) [*:0]const u8;11241pub extern "c" fn gai_strerror(errcode: EAI) [*:0]const u8;
1124611242
...@@ -11899,6 +11895,15 @@ const private = struct {...@@ -11899,6 +11895,15 @@ const private = struct {
11899 extern "c" fn realpath(noalias file_name: [*:0]const u8, noalias resolved_name: [*]u8) ?[*:0]u8;11895 extern "c" fn realpath(noalias file_name: [*:0]const u8, noalias resolved_name: [*]u8) ?[*:0]u8;
11900 extern "c" fn recvmsg(sockfd: fd_t, msg: *msghdr, flags: u32) isize;11896 extern "c" fn recvmsg(sockfd: fd_t, msg: *msghdr, flags: u32) isize;
11901 extern "c" fn sched_yield() c_int;11897 extern "c" fn sched_yield() c_int;
11898 extern "c" fn getnameinfo(
11899 noalias addr: *const sockaddr,
11900 addrlen: socklen_t,
11901 noalias host: ?[*]u8,
11902 hostlen: socklen_t,
11903 noalias serv: ?[*]u8,
11904 servlen: socklen_t,
11905 flags: NI,
11906 ) EAI;
11902 extern "c" fn sendfile(out_fd: fd_t, in_fd: fd_t, offset: ?*off_t, count: usize) isize;11907 extern "c" fn sendfile(out_fd: fd_t, in_fd: fd_t, offset: ?*off_t, count: usize) isize;
11903 extern "c" fn sendmmsg(sockfd: fd_t, msgvec: [*]mmsghdr, n: c_uint, flags: u32) c_int;11908 extern "c" fn sendmmsg(sockfd: fd_t, msgvec: [*]mmsghdr, n: c_uint, flags: u32) c_int;
11904 extern "c" fn sigaction(sig: SIG, noalias act: ?*const Sigaction, noalias oact: ?*Sigaction) c_int;11909 extern "c" fn sigaction(sig: SIG, noalias act: ?*const Sigaction, noalias oact: ?*Sigaction) c_int;
lib/std/c/dragonfly.zig+12
...@@ -5,13 +5,25 @@ const caddr_t = std.c.caddr_t;...@@ -5,13 +5,25 @@ const caddr_t = std.c.caddr_t;
5const gid_t = std.c.gid_t;5const gid_t = std.c.gid_t;
6const iovec = std.c.iovec;6const iovec = std.c.iovec;
7const pid_t = std.c.pid_t;7const pid_t = std.c.pid_t;
8const sockaddr = std.c.sockaddr;
8const socklen_t = std.c.socklen_t;9const socklen_t = std.c.socklen_t;
9const uid_t = std.c.uid_t;10const uid_t = std.c.uid_t;
11const NI = std.c.NI;
12const EAI = std.c.EAI;
1013
11pub extern "c" fn lwp_gettid() c_int;14pub extern "c" fn lwp_gettid() c_int;
12pub extern "c" fn ptrace(request: c_int, pid: pid_t, addr: caddr_t, data: c_int) c_int;15pub extern "c" fn ptrace(request: c_int, pid: pid_t, addr: caddr_t, data: c_int) c_int;
13pub extern "c" fn umtx_sleep(ptr: *const volatile c_int, value: c_int, timeout: c_int) c_int;16pub extern "c" fn umtx_sleep(ptr: *const volatile c_int, value: c_int, timeout: c_int) c_int;
14pub extern "c" fn umtx_wakeup(ptr: *const volatile c_int, count: c_int) c_int;17pub extern "c" fn umtx_wakeup(ptr: *const volatile c_int, count: c_int) c_int;
18pub extern "c" fn getnameinfo(
19 noalias addr: *const sockaddr,
20 addrlen: socklen_t,
21 noalias host: ?[*]u8,
22 hostlen: usize,
23 noalias serv: ?[*]u8,
24 servlen: usize,
25 flags: NI,
26) EAI;
1527
16pub const E = enum(u16) {28pub const E = enum(u16) {
17 /// No error occurred.29 /// No error occurred.
lib/std/c/freebsd.zig+13
...@@ -16,12 +16,15 @@ const nlink_t = std.c.nlink_t;...@@ -16,12 +16,15 @@ const nlink_t = std.c.nlink_t;
16const off_t = std.c.off_t;16const off_t = std.c.off_t;
17const pid_t = std.c.pid_t;17const pid_t = std.c.pid_t;
18const sockaddr = std.c.sockaddr;18const sockaddr = std.c.sockaddr;
19const socklen_t = std.c.socklen_t;
19const time_t = std.c.time_t;20const time_t = std.c.time_t;
20const timespec = std.c.timespec;21const timespec = std.c.timespec;
21const uid_t = std.c.uid_t;22const uid_t = std.c.uid_t;
22const sf_hdtr = std.c.sf_hdtr;23const sf_hdtr = std.c.sf_hdtr;
23const clockid_t = std.c.clockid_t;24const clockid_t = std.c.clockid_t;
24const mmsghdr = std.c.mmsghdr;25const mmsghdr = std.c.mmsghdr;
26const NI = std.c.NI;
27const EAI = std.c.EAI;
2528
26comptime {29comptime {
27 assert(builtin.os.tag == .freebsd); // Prevent access of std.c symbols on wrong OS.30 assert(builtin.os.tag == .freebsd); // Prevent access of std.c symbols on wrong OS.
...@@ -44,6 +47,16 @@ pub extern "c" fn sendfile(...@@ -44,6 +47,16 @@ pub extern "c" fn sendfile(
4447
45pub extern "c" fn sendmmsg(sockfd: fd_t, msgvec: [*]mmsghdr, vlen: usize, flags: u32) isize;48pub extern "c" fn sendmmsg(sockfd: fd_t, msgvec: [*]mmsghdr, vlen: usize, flags: u32) isize;
4649
50pub extern "c" fn getnameinfo(
51 noalias addr: *const sockaddr,
52 addrlen: socklen_t,
53 noalias host: ?[*]u8,
54 hostlen: usize,
55 noalias serv: ?[*]u8,
56 servlen: usize,
57 flags: NI,
58) EAI;
59
47pub const UMTX_OP = enum(c_int) {60pub const UMTX_OP = enum(c_int) {
48 LOCK = 0,61 LOCK = 0,
49 UNLOCK = 1,62 UNLOCK = 1,