authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-05-27 02:00:39-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-05-27 02:00:39-04:00
logfda7e0bb01fc2fd5c9da55244bc509b6e36c50a9
tree040ff748cd53497986b4210f76d569c8f2ec3a60
parent129714d077ca6f3f6d09300b1fa2171915f7c839
signaturelock-open Commit is signed but in an unrecognized format.

std lib fixes for zig build on windows


4 files changed, 20 insertions(+), 18 deletions(-)

doc/langref.html.in+2-2
......@@ -9012,8 +9012,8 @@ export fn add(a: i32, b: i32) void {
90129012const std = @import("std");
90139013
90149014pub fn main() !void {
9015 const args = try std.os.argsAlloc(std.heap.wasm_allocator);
9016 defer std.os.argsFree(std.heap.wasm_allocator, args);
9015 const args = try std.process.argsAlloc(std.heap.wasm_allocator);
9016 defer std.process.argsFree(std.heap.wasm_allocator, args);
90179017
90189018 for (args) |arg, i| {
90199019 std.debug.warn("{}: {}\n", i, arg);
std/child_process.zig+11-11
......@@ -217,11 +217,11 @@ pub const ChildProcess = struct {
217217 }
218218
219219 fn waitUnwrappedWindows(self: *ChildProcess) !void {
220 const result = os.windowsWaitSingle(self.handle, windows.INFINITE);
220 const result = windows.WaitForSingleObject(self.handle, windows.INFINITE);
221221
222222 self.term = (SpawnError!Term)(x: {
223223 var exit_code: windows.DWORD = undefined;
224 if (windows.GetExitCodeProcess(self.handle, &exit_code) == 0) {
224 if (windows.kernel32.GetExitCodeProcess(self.handle, &exit_code) == 0) {
225225 break :x Term{ .Unknown = 0 };
226226 } else {
227227 break :x Term{ .Exited = exit_code };
......@@ -412,7 +412,7 @@ pub const ChildProcess = struct {
412412 const any_ignore = (self.stdin_behavior == StdIo.Ignore or self.stdout_behavior == StdIo.Ignore or self.stderr_behavior == StdIo.Ignore);
413413
414414 const nul_handle = if (any_ignore) blk: {
415 break :blk try os.windowsOpen("NUL", windows.GENERIC_READ, windows.FILE_SHARE_READ, windows.OPEN_EXISTING, windows.FILE_ATTRIBUTE_NORMAL);
415 break :blk try windows.CreateFile("NUL", windows.GENERIC_READ, windows.FILE_SHARE_READ, windows.OPEN_EXISTING, windows.FILE_ATTRIBUTE_NORMAL);
416416 } else blk: {
417417 break :blk undefined;
418418 };
......@@ -420,7 +420,7 @@ pub const ChildProcess = struct {
420420 if (any_ignore) os.close(nul_handle);
421421 }
422422 if (any_ignore) {
423 try windowsSetHandleInfo(nul_handle, windows.HANDLE_FLAG_INHERIT, 0);
423 try windows.SetHandleInformation(nul_handle, windows.HANDLE_FLAG_INHERIT, 0);
424424 }
425425
426426 var g_hChildStd_IN_Rd: ?windows.HANDLE = null;
......@@ -433,7 +433,7 @@ pub const ChildProcess = struct {
433433 g_hChildStd_IN_Rd = nul_handle;
434434 },
435435 StdIo.Inherit => {
436 g_hChildStd_IN_Rd = windows.GetStdHandle(windows.STD_INPUT_HANDLE);
436 g_hChildStd_IN_Rd = windows.GetStdHandle(windows.STD_INPUT_HANDLE) catch null;
437437 },
438438 StdIo.Close => {
439439 g_hChildStd_IN_Rd = null;
......@@ -453,7 +453,7 @@ pub const ChildProcess = struct {
453453 g_hChildStd_OUT_Wr = nul_handle;
454454 },
455455 StdIo.Inherit => {
456 g_hChildStd_OUT_Wr = windows.GetStdHandle(windows.STD_OUTPUT_HANDLE);
456 g_hChildStd_OUT_Wr = windows.GetStdHandle(windows.STD_OUTPUT_HANDLE) catch null;
457457 },
458458 StdIo.Close => {
459459 g_hChildStd_OUT_Wr = null;
......@@ -473,7 +473,7 @@ pub const ChildProcess = struct {
473473 g_hChildStd_ERR_Wr = nul_handle;
474474 },
475475 StdIo.Inherit => {
476 g_hChildStd_ERR_Wr = windows.GetStdHandle(windows.STD_ERROR_HANDLE);
476 g_hChildStd_ERR_Wr = windows.GetStdHandle(windows.STD_ERROR_HANDLE) catch null;
477477 },
478478 StdIo.Close => {
479479 g_hChildStd_ERR_Wr = null;
......@@ -681,22 +681,22 @@ fn windowsDestroyPipe(rd: ?windows.HANDLE, wr: ?windows.HANDLE) void {
681681 if (wr) |h| os.close(h);
682682}
683683
684fn windowsMakePipeIn(rd: *?windows.HANDLE, wr: *?windows.HANDLE, sattr: *const SECURITY_ATTRIBUTES) !void {
684fn windowsMakePipeIn(rd: *?windows.HANDLE, wr: *?windows.HANDLE, sattr: *const windows.SECURITY_ATTRIBUTES) !void {
685685 var rd_h: windows.HANDLE = undefined;
686686 var wr_h: windows.HANDLE = undefined;
687687 try windows.CreatePipe(&rd_h, &wr_h, sattr);
688688 errdefer windowsDestroyPipe(rd_h, wr_h);
689 try windowsSetHandleInfo(wr_h, windows.HANDLE_FLAG_INHERIT, 0);
689 try windows.SetHandleInformation(wr_h, windows.HANDLE_FLAG_INHERIT, 0);
690690 rd.* = rd_h;
691691 wr.* = wr_h;
692692}
693693
694fn windowsMakePipeOut(rd: *?windows.HANDLE, wr: *?windows.HANDLE, sattr: *const SECURITY_ATTRIBUTES) !void {
694fn windowsMakePipeOut(rd: *?windows.HANDLE, wr: *?windows.HANDLE, sattr: *const windows.SECURITY_ATTRIBUTES) !void {
695695 var rd_h: windows.HANDLE = undefined;
696696 var wr_h: windows.HANDLE = undefined;
697697 try windows.CreatePipe(&rd_h, &wr_h, sattr);
698698 errdefer windowsDestroyPipe(rd_h, wr_h);
699 try windowsSetHandleInfo(rd_h, windows.HANDLE_FLAG_INHERIT, 0);
699 try windows.SetHandleInformation(rd_h, windows.HANDLE_FLAG_INHERIT, 0);
700700 rd.* = rd_h;
701701 wr.* = wr_h;
702702}
std/os.zig+2
......@@ -893,6 +893,8 @@ const RenameError = error{
893893 PathAlreadyExists,
894894 ReadOnlyFileSystem,
895895 RenameAcrossMountPoints,
896 InvalidUtf8,
897 BadPathName,
896898 Unexpected,
897899};
898900
std/os/windows.zig+5-5
......@@ -83,7 +83,7 @@ pub fn CreateFileW(
8383
8484pub const CreatePipeError = error{Unexpected};
8585
86fn CreatePipe(rd: *HANDLE, wr: *HANDLE, sattr: *const SECURITY_ATTRIBUTES) CreatePipeError!void {
86pub fn CreatePipe(rd: *HANDLE, wr: *HANDLE, sattr: *const SECURITY_ATTRIBUTES) CreatePipeError!void {
8787 if (kernel32.CreatePipe(rd, wr, sattr, 0) == 0) {
8888 switch (kernel32.GetLastError()) {
8989 else => |err| return unexpectedError(err),
......@@ -93,8 +93,8 @@ fn CreatePipe(rd: *HANDLE, wr: *HANDLE, sattr: *const SECURITY_ATTRIBUTES) Creat
9393
9494pub const SetHandleInformationError = error{Unexpected};
9595
96fn SetHandleInformation(h: HANDLE, mask: DWORD, flags: DWORD) SetHandleInformationError!void {
97 if (SetHandleInformation(h, mask, flags) == 0) {
96pub fn SetHandleInformation(h: HANDLE, mask: DWORD, flags: DWORD) SetHandleInformationError!void {
97 if (kernel32.SetHandleInformation(h, mask, flags) == 0) {
9898 switch (kernel32.GetLastError()) {
9999 else => |err| return unexpectedError(err),
100100 }
......@@ -335,7 +335,7 @@ pub fn CreateSymbolicLinkW(
335335) CreateSymbolicLinkError!void {
336336 if (kernel32.CreateSymbolicLinkW(sym_link_path, target_path, flags) == 0) {
337337 switch (kernel32.GetLastError()) {
338 else => |err| return kernel32.unexpectedError(err),
338 else => |err| return unexpectedError(err),
339339 }
340340 }
341341}
......@@ -649,7 +649,7 @@ pub fn CreateProcessW(
649649 lpCommandLine,
650650 lpProcessAttributes,
651651 lpThreadAttributes,
652 bInheritHandle,
652 bInheritHandles,
653653 dwCreationFlags,
654654 lpEnvironment,
655655 lpCurrentDirectory,