aboutsummaryrefslogtreecommitdiff
path: root/lib/std/start.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2025-12-22 14:37:41 -0800
committerAndrew Kelley <andrew@ziglang.org>2025-12-23 22:15:12 -0800
commit3c2f5adf41f0e75fd5e8f6661891dd7d4fa770a9 (patch)
tree5ae7765b93dfde9f5638b83ba2436fbbdd0da24d /lib/std/start.zig
parent86e9e32cf0d5a028d6ebb32f8d0f3d0a23e717b6 (diff)
downloadzig-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.zig10
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();
}