From c299dbf9c355ed9a47febd80811520301aaa8018 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Thu, 15 Oct 2026 14:59:25 +0200 Subject: [PATCH] std.c: fix getnameinfo() signature for freebsd --- lib/std/c.zig | 23 ++++++++++++++--------- lib/std/c/dragonfly.zig | 12 ++++++++++++ lib/std/c/freebsd.zig | 13 +++++++++++++ 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index bda3c688146f7684a9fbe366bdc08ce81122a663..ffb3a9d783571b7ac93324e2f68c40c006592c9d 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -11232,15 +11232,11 @@ pub extern "c" fn getaddrinfo( pub extern "c" fn freeaddrinfo(res: *addrinfo) void; -pub extern "c" fn getnameinfo( - noalias addr: *const sockaddr, - addrlen: socklen_t, - noalias host: ?[*]u8, - hostlen: if (native_os == .dragonfly) usize else socklen_t, - noalias serv: ?[*]u8, - servlen: if (native_os == .dragonfly) usize else socklen_t, - flags: NI, -) EAI; +pub const getnameinfo = switch (native_os) { + .dragonfly => dragonfly.getnameinfo, + .freebsd => freebsd.getnameinfo, + else => private.getnameinfo, +}; pub extern "c" fn gai_strerror(errcode: EAI) [*:0]const u8; @@ -11899,6 +11895,15 @@ const private = struct { extern "c" fn realpath(noalias file_name: [*:0]const u8, noalias resolved_name: [*]u8) ?[*:0]u8; extern "c" fn recvmsg(sockfd: fd_t, msg: *msghdr, flags: u32) isize; extern "c" fn sched_yield() c_int; + extern "c" fn getnameinfo( + noalias addr: *const sockaddr, + addrlen: socklen_t, + noalias host: ?[*]u8, + hostlen: socklen_t, + noalias serv: ?[*]u8, + servlen: socklen_t, + flags: NI, + ) EAI; extern "c" fn sendfile(out_fd: fd_t, in_fd: fd_t, offset: ?*off_t, count: usize) isize; extern "c" fn sendmmsg(sockfd: fd_t, msgvec: [*]mmsghdr, n: c_uint, flags: u32) c_int; extern "c" fn sigaction(sig: SIG, noalias act: ?*const Sigaction, noalias oact: ?*Sigaction) c_int; diff --git a/lib/std/c/dragonfly.zig b/lib/std/c/dragonfly.zig index 75ace2565a5439267930563e8b647df025091c28..8a4aca1b8a08b28fcb29132be3f399f28b63882b 100644 --- a/lib/std/c/dragonfly.zig +++ b/lib/std/c/dragonfly.zig @@ -5,13 +5,25 @@ const caddr_t = std.c.caddr_t; const gid_t = std.c.gid_t; const iovec = std.c.iovec; 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 NI = std.c.NI; +const EAI = std.c.EAI; 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; pub extern "c" fn umtx_wakeup(ptr: *const volatile c_int, count: c_int) c_int; +pub extern "c" fn getnameinfo( + noalias addr: *const sockaddr, + addrlen: socklen_t, + noalias host: ?[*]u8, + hostlen: usize, + noalias serv: ?[*]u8, + servlen: usize, + flags: NI, +) EAI; pub const E = enum(u16) { /// No error occurred. diff --git a/lib/std/c/freebsd.zig b/lib/std/c/freebsd.zig index 695670f6aaf198e5433b91538732ef9486a01c9b..b08bd0888a17f1c9712fffaa21e7c3d2cc89dad5 100644 --- a/lib/std/c/freebsd.zig +++ b/lib/std/c/freebsd.zig @@ -16,12 +16,15 @@ const nlink_t = std.c.nlink_t; const off_t = std.c.off_t; const pid_t = std.c.pid_t; const sockaddr = std.c.sockaddr; +const socklen_t = std.c.socklen_t; const time_t = std.c.time_t; const timespec = std.c.timespec; const uid_t = std.c.uid_t; const sf_hdtr = std.c.sf_hdtr; const clockid_t = std.c.clockid_t; const mmsghdr = std.c.mmsghdr; +const NI = std.c.NI; +const EAI = std.c.EAI; comptime { assert(builtin.os.tag == .freebsd); // Prevent access of std.c symbols on wrong OS. @@ -44,6 +47,16 @@ pub extern "c" fn sendfile( pub extern "c" fn sendmmsg(sockfd: fd_t, msgvec: [*]mmsghdr, vlen: usize, flags: u32) isize; +pub extern "c" fn getnameinfo( + noalias addr: *const sockaddr, + addrlen: socklen_t, + noalias host: ?[*]u8, + hostlen: usize, + noalias serv: ?[*]u8, + servlen: usize, + flags: NI, +) EAI; + pub const UMTX_OP = enum(c_int) { LOCK = 0, UNLOCK = 1, -- 2.54.0