From 744471098238416e06c880dcb7b904b092212761 Mon Sep 17 00:00:00 2001 From: Sardorbek Imomaliev Date: Tue, 19 Aug 2025 13:48:23 +0100 Subject: [PATCH 1/2] sysctlbynameZ does not return NameTooLong, drop dead prongs --- lib/std/Thread.zig | 2 +- lib/std/process.zig | 2 +- lib/std/zig/system.zig | 1 - lib/std/zig/system/darwin/macos.zig | 1 - 4 files changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/std/Thread.zig b/lib/std/Thread.zig index 63af3796b79b..e6d1c79d01ff 100644 --- a/lib/std/Thread.zig +++ b/lib/std/Thread.zig @@ -761,7 +761,7 @@ const PosixThreadImpl = struct { var count_len: usize = @sizeOf(c_int); const name = if (comptime target.os.tag.isDarwin()) "hw.logicalcpu" else "hw.ncpu"; posix.sysctlbynameZ(name, &count, &count_len, null, 0) catch |err| switch (err) { - error.NameTooLong, error.UnknownName => unreachable, + error.UnknownName => unreachable, else => |e| return e, }; return @as(usize, @intCast(count)); diff --git a/lib/std/process.zig b/lib/std/process.zig index 2e9cb1fe85a8..360c3f6af087 100644 --- a/lib/std/process.zig +++ b/lib/std/process.zig @@ -1759,7 +1759,7 @@ pub fn totalSystemMemory() TotalSystemMemoryError!u64 { var physmem: c_ulong = undefined; var len: usize = @sizeOf(c_ulong); posix.sysctlbynameZ("hw.physmem", &physmem, &len, null, 0) catch |err| switch (err) { - error.NameTooLong, error.UnknownName => unreachable, + error.UnknownName => unreachable, else => return error.UnknownTotalSystemMemory, }; return @as(usize, @intCast(physmem)); diff --git a/lib/std/zig/system.zig b/lib/std/zig/system.zig index ba43543ee235..41d2aef3f905 100644 --- a/lib/std/zig/system.zig +++ b/lib/std/zig/system.zig @@ -228,7 +228,6 @@ pub fn resolveTargetQuery(query: Target.Query) DetectError!Target { var len: usize = @sizeOf(@TypeOf(value)); posix.sysctlbynameZ(key, &value, &len, null, 0) catch |err| switch (err) { - error.NameTooLong => unreachable, // constant, known good value error.PermissionDenied => unreachable, // only when setting values, error.SystemResources => unreachable, // memory already on the stack error.UnknownName => unreachable, // constant, known good value diff --git a/lib/std/zig/system/darwin/macos.zig b/lib/std/zig/system/darwin/macos.zig index eba837fb497e..eecb857465ad 100644 --- a/lib/std/zig/system/darwin/macos.zig +++ b/lib/std/zig/system/darwin/macos.zig @@ -397,7 +397,6 @@ pub fn detectNativeCpuAndFeatures() ?Target.Cpu { var cpu_family: std.c.CPUFAMILY = undefined; var len: usize = @sizeOf(std.c.CPUFAMILY); std.posix.sysctlbynameZ("hw.cpufamily", &cpu_family, &len, null, 0) catch |err| switch (err) { - error.NameTooLong => unreachable, // constant, known good value error.PermissionDenied => unreachable, // only when setting values, error.SystemResources => unreachable, // memory already on the stack error.UnknownName => unreachable, // constant, known good value From 16df57d017a7524c332fcaef2cff214fbd72a981 Mon Sep 17 00:00:00 2001 From: Sardorbek Imomaliev Date: Wed, 20 Aug 2025 19:33:17 +0100 Subject: [PATCH 2/2] replace error type for sysctlbynameZ drop unused NameTooLong --- lib/std/posix.zig | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/std/posix.zig b/lib/std/posix.zig index 90ab157f0c20..12d30185c735 100644 --- a/lib/std/posix.zig +++ b/lib/std/posix.zig @@ -5219,13 +5219,19 @@ pub fn sysctl( } } +pub const SysCtlByNameError = error{ + PermissionDenied, + SystemResources, + UnknownName, +} || UnexpectedError; + pub fn sysctlbynameZ( name: [*:0]const u8, oldp: ?*anyopaque, oldlenp: ?*usize, newp: ?*anyopaque, newlen: usize, -) SysCtlError!void { +) SysCtlByNameError!void { if (native_os == .wasi) { @compileError("sysctl not supported on WASI"); }