diff --git a/src/main.cpp b/src/main.cpp index 681cd6e8a..35746319f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -549,18 +549,20 @@ int main(int argc, char **argv) { codegen_build_and_link(g); - ZigList args = {0}; - for (int i = 2; i < argc; i += 1) { - args.append(argv[i]); - } - args.append(nullptr); + // TODO standardize os.cpp so that the args are supposed to have the exe + ZigList args_with_exe = {0}; + ZigList args_without_exe = {0}; const char *exec_path = buf_ptr(&g->output_file_path); + args_with_exe.append(exec_path); + for (int i = 2; i < argc; i += 1) { + args_with_exe.append(argv[i]); + args_without_exe.append(argv[i]); + } + args_with_exe.append(nullptr); + os_execv(exec_path, args_with_exe.items); - os_execv(exec_path, args.items); - - args.pop(); Termination term; - os_spawn_process(exec_path, args, &term); + os_spawn_process(exec_path, args_without_exe, &term); return term.code; } diff --git a/std/special/fmt_runner.zig b/std/special/fmt_runner.zig index 46ced0e13..f0ed6704e 100644 --- a/std/special/fmt_runner.zig +++ b/std/special/fmt_runner.zig @@ -37,7 +37,7 @@ pub fn main() !void { stderr = &stderr_out_stream.stream; const args = try std.os.argsAlloc(allocator); - var flags = try Args.parse(allocator, self_hosted_main.args_fmt_spec, args); + var flags = try Args.parse(allocator, self_hosted_main.args_fmt_spec, args[1..]); defer flags.deinit(); if (flags.present("help")) {