diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2025-12-22 14:37:41 -0800 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2025-12-23 22:15:12 -0800 |
| commit | 3c2f5adf41f0e75fd5e8f6661891dd7d4fa770a9 (patch) | |
| tree | 5ae7765b93dfde9f5638b83ba2436fbbdd0da24d /lib/std/start.zig | |
| parent | 86e9e32cf0d5a028d6ebb32f8d0f3d0a23e717b6 (diff) | |
| download | zig-3c2f5adf41f0e75fd5e8f6661891dd7d4fa770a9.tar.gz zig-3c2f5adf41f0e75fd5e8f6661891dd7d4fa770a9.zip | |
std: integrate Io.Threaded with environment variables
* std.option allows overriding the debug Io instance
* if the default is used, start code initializes environ and argv0
also fix some places that needed recancel(), thanks mlugg!
See #30562
Diffstat (limited to 'lib/std/start.zig')
| -rw-r--r-- | lib/std/start.zig | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/std/start.zig b/lib/std/start.zig index 64a1c17175..5a3e39e24a 100644 --- a/lib/std/start.zig +++ b/lib/std/start.zig @@ -669,6 +669,11 @@ inline fn callMainWithArgs(argc: usize, argv: [*][*:0]u8, envp: [][*:0]u8) u8 { std.os.argv = argv[0..argc]; std.os.environ = envp; + if (std.io_options.debug_threaded_io) |t| { + if (@sizeOf(std.Io.Threaded.Argv0) != 0) t.argv0.value = argv[0]; + t.environ = .{ .block = envp }; + } + std.debug.maybeEnableSegfaultHandler(); return callMain(); @@ -691,6 +696,11 @@ fn main(c_argc: c_int, c_argv: [*][*:0]c_char, c_envp: [*:null]?[*:0]c_char) cal fn mainWithoutEnv(c_argc: c_int, c_argv: [*][*:0]c_char) callconv(.c) c_int { std.os.argv = @as([*][*:0]u8, @ptrCast(c_argv))[0..@intCast(c_argc)]; + + if (@sizeOf(std.Io.Threaded.Argv0) != 0) { + if (std.io_options.debug_threaded_io) |t| t.argv0.value = std.os.argv[0]; + } + return callMain(); } |
