diff --git a/doc/langref.html.in b/doc/langref.html.in index 19839904b1..45b85abad8 100644 --- a/doc/langref.html.in +++ b/doc/langref.html.in @@ -9012,8 +9012,8 @@ export fn add(a: i32, b: i32) void { const std = @import("std"); pub fn main() !void { - const args = try std.os.argsAlloc(std.heap.wasm_allocator); - defer std.os.argsFree(std.heap.wasm_allocator, args); + const args = try std.process.argsAlloc(std.heap.wasm_allocator); + defer std.process.argsFree(std.heap.wasm_allocator, args); for (args) |arg, i| { std.debug.warn("{}: {}\n", i, arg); diff --git a/std/child_process.zig b/std/child_process.zig index 2209b2acc3..e9bfa61b6f 100644 --- a/std/child_process.zig +++ b/std/child_process.zig @@ -217,11 +217,11 @@ pub const ChildProcess = struct { } fn waitUnwrappedWindows(self: *ChildProcess) !void { - const result = os.windowsWaitSingle(self.handle, windows.INFINITE); + const result = windows.WaitForSingleObject(self.handle, windows.INFINITE); self.term = (SpawnError!Term)(x: { var exit_code: windows.DWORD = undefined; - if (windows.GetExitCodeProcess(self.handle, &exit_code) == 0) { + if (windows.kernel32.GetExitCodeProcess(self.handle, &exit_code) == 0) { break :x Term{ .Unknown = 0 }; } else { break :x Term{ .Exited = exit_code }; @@ -412,7 +412,7 @@ pub const ChildProcess = struct { const any_ignore = (self.stdin_behavior == StdIo.Ignore or self.stdout_behavior == StdIo.Ignore or self.stderr_behavior == StdIo.Ignore); const nul_handle = if (any_ignore) blk: { - break :blk try os.windowsOpen("NUL", windows.GENERIC_READ, windows.FILE_SHARE_READ, windows.OPEN_EXISTING, windows.FILE_ATTRIBUTE_NORMAL); + break :blk try windows.CreateFile("NUL", windows.GENERIC_READ, windows.FILE_SHARE_READ, windows.OPEN_EXISTING, windows.FILE_ATTRIBUTE_NORMAL); } else blk: { break :blk undefined; }; @@ -420,7 +420,7 @@ pub const ChildProcess = struct { if (any_ignore) os.close(nul_handle); } if (any_ignore) { - try windowsSetHandleInfo(nul_handle, windows.HANDLE_FLAG_INHERIT, 0); + try windows.SetHandleInformation(nul_handle, windows.HANDLE_FLAG_INHERIT, 0); } var g_hChildStd_IN_Rd: ?windows.HANDLE = null; @@ -433,7 +433,7 @@ pub const ChildProcess = struct { g_hChildStd_IN_Rd = nul_handle; }, StdIo.Inherit => { - g_hChildStd_IN_Rd = windows.GetStdHandle(windows.STD_INPUT_HANDLE); + g_hChildStd_IN_Rd = windows.GetStdHandle(windows.STD_INPUT_HANDLE) catch null; }, StdIo.Close => { g_hChildStd_IN_Rd = null; @@ -453,7 +453,7 @@ pub const ChildProcess = struct { g_hChildStd_OUT_Wr = nul_handle; }, StdIo.Inherit => { - g_hChildStd_OUT_Wr = windows.GetStdHandle(windows.STD_OUTPUT_HANDLE); + g_hChildStd_OUT_Wr = windows.GetStdHandle(windows.STD_OUTPUT_HANDLE) catch null; }, StdIo.Close => { g_hChildStd_OUT_Wr = null; @@ -473,7 +473,7 @@ pub const ChildProcess = struct { g_hChildStd_ERR_Wr = nul_handle; }, StdIo.Inherit => { - g_hChildStd_ERR_Wr = windows.GetStdHandle(windows.STD_ERROR_HANDLE); + g_hChildStd_ERR_Wr = windows.GetStdHandle(windows.STD_ERROR_HANDLE) catch null; }, StdIo.Close => { g_hChildStd_ERR_Wr = null; @@ -681,22 +681,22 @@ fn windowsDestroyPipe(rd: ?windows.HANDLE, wr: ?windows.HANDLE) void { if (wr) |h| os.close(h); } -fn windowsMakePipeIn(rd: *?windows.HANDLE, wr: *?windows.HANDLE, sattr: *const SECURITY_ATTRIBUTES) !void { +fn windowsMakePipeIn(rd: *?windows.HANDLE, wr: *?windows.HANDLE, sattr: *const windows.SECURITY_ATTRIBUTES) !void { var rd_h: windows.HANDLE = undefined; var wr_h: windows.HANDLE = undefined; try windows.CreatePipe(&rd_h, &wr_h, sattr); errdefer windowsDestroyPipe(rd_h, wr_h); - try windowsSetHandleInfo(wr_h, windows.HANDLE_FLAG_INHERIT, 0); + try windows.SetHandleInformation(wr_h, windows.HANDLE_FLAG_INHERIT, 0); rd.* = rd_h; wr.* = wr_h; } -fn windowsMakePipeOut(rd: *?windows.HANDLE, wr: *?windows.HANDLE, sattr: *const SECURITY_ATTRIBUTES) !void { +fn windowsMakePipeOut(rd: *?windows.HANDLE, wr: *?windows.HANDLE, sattr: *const windows.SECURITY_ATTRIBUTES) !void { var rd_h: windows.HANDLE = undefined; var wr_h: windows.HANDLE = undefined; try windows.CreatePipe(&rd_h, &wr_h, sattr); errdefer windowsDestroyPipe(rd_h, wr_h); - try windowsSetHandleInfo(rd_h, windows.HANDLE_FLAG_INHERIT, 0); + try windows.SetHandleInformation(rd_h, windows.HANDLE_FLAG_INHERIT, 0); rd.* = rd_h; wr.* = wr_h; } diff --git a/std/os.zig b/std/os.zig index 63977312d4..e8d0bcb5ef 100644 --- a/std/os.zig +++ b/std/os.zig @@ -893,6 +893,8 @@ const RenameError = error{ PathAlreadyExists, ReadOnlyFileSystem, RenameAcrossMountPoints, + InvalidUtf8, + BadPathName, Unexpected, }; diff --git a/std/os/windows.zig b/std/os/windows.zig index 54e7840f31..07758bd195 100644 --- a/std/os/windows.zig +++ b/std/os/windows.zig @@ -83,7 +83,7 @@ pub fn CreateFileW( pub const CreatePipeError = error{Unexpected}; -fn CreatePipe(rd: *HANDLE, wr: *HANDLE, sattr: *const SECURITY_ATTRIBUTES) CreatePipeError!void { +pub fn CreatePipe(rd: *HANDLE, wr: *HANDLE, sattr: *const SECURITY_ATTRIBUTES) CreatePipeError!void { if (kernel32.CreatePipe(rd, wr, sattr, 0) == 0) { switch (kernel32.GetLastError()) { else => |err| return unexpectedError(err), @@ -93,8 +93,8 @@ fn CreatePipe(rd: *HANDLE, wr: *HANDLE, sattr: *const SECURITY_ATTRIBUTES) Creat pub const SetHandleInformationError = error{Unexpected}; -fn SetHandleInformation(h: HANDLE, mask: DWORD, flags: DWORD) SetHandleInformationError!void { - if (SetHandleInformation(h, mask, flags) == 0) { +pub fn SetHandleInformation(h: HANDLE, mask: DWORD, flags: DWORD) SetHandleInformationError!void { + if (kernel32.SetHandleInformation(h, mask, flags) == 0) { switch (kernel32.GetLastError()) { else => |err| return unexpectedError(err), } @@ -335,7 +335,7 @@ pub fn CreateSymbolicLinkW( ) CreateSymbolicLinkError!void { if (kernel32.CreateSymbolicLinkW(sym_link_path, target_path, flags) == 0) { switch (kernel32.GetLastError()) { - else => |err| return kernel32.unexpectedError(err), + else => |err| return unexpectedError(err), } } } @@ -649,7 +649,7 @@ pub fn CreateProcessW( lpCommandLine, lpProcessAttributes, lpThreadAttributes, - bInheritHandle, + bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory,