zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 1a62cfffa79917d930b77f2598b1bfc93efeede5 (tree)
parent 1418c8a5d49ecc38a20df07151a7fe942992aea4
Author: Ryan Liptak <squeek502@hotmail.com>
Date:   Sat, 13 Jul 2024 17:25:06 -0700

Replace GetCommandLineW with PEB access, delete GetCommandLine bindings

Diffstat:
Mlib/std/os/windows/kernel32.zig | 3---
Mlib/std/process.zig | 5+++--
2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/lib/std/os/windows/kernel32.zig b/lib/std/os/windows/kernel32.zig @@ -161,9 +161,6 @@ pub extern "kernel32" fn FormatMessageW(dwFlags: DWORD, lpSource: ?LPVOID, dwMes pub extern "kernel32" fn FreeEnvironmentStringsW(penv: [*:0]u16) callconv(WINAPI) BOOL; -pub extern "kernel32" fn GetCommandLineA() callconv(WINAPI) LPSTR; -pub extern "kernel32" fn GetCommandLineW() callconv(WINAPI) LPWSTR; - pub extern "kernel32" fn GetConsoleMode(in_hConsoleHandle: HANDLE, out_lpMode: *DWORD) callconv(WINAPI) BOOL; pub extern "kernel32" fn SetConsoleMode(in_hConsoleHandle: HANDLE, in_dwMode: DWORD) callconv(WINAPI) BOOL; diff --git a/lib/std/process.zig b/lib/std/process.zig @@ -1150,8 +1150,9 @@ pub const ArgIterator = struct { return ArgIterator{ .inner = try InnerType.init(allocator) }; } if (native_os == .windows) { - const cmd_line_w = windows.kernel32.GetCommandLineW(); - return ArgIterator{ .inner = try InnerType.init(allocator, cmd_line_w) }; + const cmd_line = std.os.windows.peb().ProcessParameters.CommandLine; + const cmd_line_w = cmd_line.Buffer.?[0 .. cmd_line.Length / 2 :0]; + return ArgIterator{ .inner = try InnerType.init(allocator, cmd_line_w.ptr) }; } return ArgIterator{ .inner = InnerType.init() };