authorgravatar for michael.dusan@gmail.comMichael Dusan <michael.dusan@gmail.com> 2025-12-28 23:23:54+01:00
committergravatar for michael.dusan@gmail.comMichael Dusan <michael.dusan@gmail.com> 2025-12-28 23:23:54+01:00
log6ca1c88e46352b006c26d4c99944ac0c70fe28e7
treefa136a1969b073416d59fcbdc5977355640a5652
parent6984992153f0656b04c39279f9684fd5a06e952d
parentac4c9b8fb29f30692b40d35db533e7c4e80300b4

Merge pull request 'minor bsd fixups' (#30609) from mikdusan/zig:bsd into master

Reviewed-on: https://codeberg.org/ziglang/zig/pulls/30609 Reviewed-by: Andrew Kelley <andrewrk@noreply.codeberg.org>

3 files changed, 15 insertions(+), 6 deletions(-)

lib/std/Io/Threaded.zig+3-3
...@@ -7209,7 +7209,7 @@ fn processExecutablePath(userdata: ?*anyopaque, out_buffer: []u8) std.process.Ex...@@ -7209,7 +7209,7 @@ fn processExecutablePath(userdata: ?*anyopaque, out_buffer: []u8) std.process.Ex
7209 .openbsd, .haiku => {7209 .openbsd, .haiku => {
7210 // The best we can do on these operating systems is check based on7210 // The best we can do on these operating systems is check based on
7211 // the first process argument.7211 // the first process argument.
7212 const argv0 = t.argv0.value orelse return error.OperationUnsupported;7212 const argv0 = std.mem.span(t.argv0.value orelse return error.OperationUnsupported);
7213 if (std.mem.findScalar(u8, argv0, '/') != null) {7213 if (std.mem.findScalar(u8, argv0, '/') != null) {
7214 // argv[0] is a path (relative or absolute): use realpath(3) directly7214 // argv[0] is a path (relative or absolute): use realpath(3) directly
7215 const current_thread = Thread.getCurrent(t);7215 const current_thread = Thread.getCurrent(t);
...@@ -12153,7 +12153,7 @@ fn scanEnviron(t: *Threaded) void {...@@ -12153,7 +12153,7 @@ fn scanEnviron(t: *Threaded) void {
1215312153
12154 var end_i: usize = line_i;12154 var end_i: usize = line_i;
12155 while (line[end_i] != 0) : (end_i += 1) {}12155 while (line[end_i] != 0) : (end_i += 1) {}
12156 const value = line[line_i + 1 .. end_i];12156 const value = line[line_i + 1 .. end_i :0];
1215712157
12158 if (std.mem.eql(u8, key, "NO_COLOR")) {12158 if (std.mem.eql(u8, key, "NO_COLOR")) {
12159 t.environ.exist.NO_COLOR = true;12159 t.environ.exist.NO_COLOR = true;
...@@ -12171,7 +12171,7 @@ fn scanEnviron(t: *Threaded) void {...@@ -12171,7 +12171,7 @@ fn scanEnviron(t: *Threaded) void {
1217112171
12172 var end_i: usize = line_i;12172 var end_i: usize = line_i;
12173 while (line[end_i] != 0) : (end_i += 1) {}12173 while (line[end_i] != 0) : (end_i += 1) {}
12174 const value = line[line_i + 1 .. end_i];12174 const value = line[line_i + 1 .. end_i :0];
1217512175
12176 if (std.mem.eql(u8, key, "NO_COLOR")) {12176 if (std.mem.eql(u8, key, "NO_COLOR")) {
12177 t.environ.exist.NO_COLOR = true;12177 t.environ.exist.NO_COLOR = true;
lib/std/c.zig+8-1
...@@ -10651,7 +10651,12 @@ pub extern "c" fn unlink(path: [*:0]const u8) c_int;...@@ -10651,7 +10651,12 @@ pub extern "c" fn unlink(path: [*:0]const u8) c_int;
10651pub extern "c" fn unlinkat(dirfd: fd_t, path: [*:0]const u8, flags: c_uint) c_int;10651pub extern "c" fn unlinkat(dirfd: fd_t, path: [*:0]const u8, flags: c_uint) c_int;
10652pub extern "c" fn getcwd(buf: [*]u8, size: usize) ?[*]u8;10652pub extern "c" fn getcwd(buf: [*]u8, size: usize) ?[*]u8;
10653pub extern "c" fn waitpid(pid: pid_t, status: ?*c_int, options: c_int) pid_t;10653pub extern "c" fn waitpid(pid: pid_t, status: ?*c_int, options: c_int) pid_t;
10654pub extern "c" fn wait4(pid: pid_t, status: ?*c_int, options: c_int, ru: ?*rusage) pid_t;10654
10655pub const wait4 = switch (native_os) {
10656 .netbsd => private.__wait450,
10657 else => private.wait4,
10658};
10659
10655pub const fork = switch (native_os) {10660pub const fork = switch (native_os) {
10656 .dragonfly,10661 .dragonfly,
10657 .freebsd,10662 .freebsd,
...@@ -11440,6 +11445,7 @@ const private = struct {...@@ -11440,6 +11445,7 @@ const private = struct {
11440 extern "c" fn sigaltstack(ss: ?*stack_t, old_ss: ?*stack_t) c_int;11445 extern "c" fn sigaltstack(ss: ?*stack_t, old_ss: ?*stack_t) c_int;
11441 extern "c" fn sysconf(sc: c_int) c_long;11446 extern "c" fn sysconf(sc: c_int) c_long;
11442 extern "c" fn shm_open(name: [*:0]const u8, flag: c_int, mode: mode_t) c_int;11447 extern "c" fn shm_open(name: [*:0]const u8, flag: c_int, mode: mode_t) c_int;
11448 extern "c" fn wait4(pid: pid_t, status: ?*c_int, options: c_int, ru: ?*rusage) pid_t;
1144311449
11444 extern "c" fn pthread_setname_np(thread: pthread_t, name: [*:0]const u8) c_int;11450 extern "c" fn pthread_setname_np(thread: pthread_t, name: [*:0]const u8) c_int;
1144511451
...@@ -11492,6 +11498,7 @@ const private = struct {...@@ -11492,6 +11498,7 @@ const private = struct {
11492 extern "c" fn __stat50(path: [*:0]const u8, buf: *Stat) c_int;11498 extern "c" fn __stat50(path: [*:0]const u8, buf: *Stat) c_int;
11493 extern "c" fn __getdents30(fd: c_int, buf_ptr: [*]u8, nbytes: usize) c_int;11499 extern "c" fn __getdents30(fd: c_int, buf_ptr: [*]u8, nbytes: usize) c_int;
11494 extern "c" fn __sigaltstack14(ss: ?*stack_t, old_ss: ?*stack_t) c_int;11500 extern "c" fn __sigaltstack14(ss: ?*stack_t, old_ss: ?*stack_t) c_int;
11501 extern "c" fn __wait450(pid: pid_t, status: ?*c_int, options: c_int, ru: ?*rusage) pid_t;
1149511502
11496 extern "c" fn __libc_current_sigrtmin() c_int;11503 extern "c" fn __libc_current_sigrtmin() c_int;
11497 extern "c" fn __libc_current_sigrtmax() c_int;11504 extern "c" fn __libc_current_sigrtmax() c_int;
src/main.zig+4-2
...@@ -198,7 +198,7 @@ pub fn main() anyerror!void {...@@ -198,7 +198,7 @@ pub fn main() anyerror!void {
198 return mainArgs(gpa, arena, args);198 return mainArgs(gpa, arena, args);
199}199}
200200
201fn mainArgs(gpa: Allocator, arena: Allocator, args: []const []const u8) !void {201fn mainArgs(gpa: Allocator, arena: Allocator, args: []const [:0]const u8) !void {
202 const tr = tracy.trace(@src());202 const tr = tracy.trace(@src());
203 defer tr.end();203 defer tr.end();
204204
...@@ -241,7 +241,9 @@ fn mainArgs(gpa: Allocator, arena: Allocator, args: []const []const u8) !void {...@@ -241,7 +241,9 @@ fn mainArgs(gpa: Allocator, arena: Allocator, args: []const []const u8) !void {
241 }241 }
242 }242 }
243243
244 var threaded: Io.Threaded = .init(gpa, .{});244 var threaded: Io.Threaded = .init(gpa, .{
245 .argv0 = if (@hasField(Io.Threaded.Argv0, "value")) .{ .value = args[0] } else .{},
246 });
245 defer threaded.deinit();247 defer threaded.deinit();
246 threaded_impl_ptr = &threaded;248 threaded_impl_ptr = &threaded;
247 threaded.stack_size = thread_stack_size;249 threaded.stack_size = thread_stack_size;