diff --git a/lib/std/fs/File.zig b/lib/std/fs/File.zig index 68dc6360a8..69c3553ac3 100644 --- a/lib/std/fs/File.zig +++ b/lib/std/fs/File.zig @@ -39,6 +39,7 @@ pub const OpenError = error{ FileNotFound, AccessDenied, PipeBusy, + NoDevice, NameTooLong, /// WASI-only; file paths must be valid UTF-8. InvalidUtf8, diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig index 8cd54409b2..c56e27d8ec 100644 --- a/lib/std/os/windows.zig +++ b/lib/std/os/windows.zig @@ -132,6 +132,7 @@ pub fn OpenFile(sub_path_w: []const u16, options: OpenFileOptions) OpenError!HAN .SHARING_VIOLATION => return error.AccessDenied, .ACCESS_DENIED => return error.AccessDenied, .PIPE_BUSY => return error.PipeBusy, + .PIPE_NOT_AVAILABLE => return error.NoDevice, .OBJECT_PATH_SYNTAX_BAD => unreachable, .OBJECT_NAME_COLLISION => return error.PathAlreadyExists, .FILE_IS_A_DIRECTORY => return error.IsDir, @@ -801,6 +802,7 @@ pub fn CreateSymbolicLink( error.NotDir => return error.Unexpected, error.WouldBlock => return error.Unexpected, error.PipeBusy => return error.Unexpected, + error.NoDevice => return error.Unexpected, error.AntivirusInterference => return error.Unexpected, else => |e| return e, }; diff --git a/lib/std/posix.zig b/lib/std/posix.zig index 3ca5e1ae59..39b29ea76f 100644 --- a/lib/std/posix.zig +++ b/lib/std/posix.zig @@ -2946,6 +2946,7 @@ pub fn mkdiratW(dir_fd: fd_t, sub_path_w: []const u16, mode: u32) MakeDirError!v }) catch |err| switch (err) { error.IsDir => return error.Unexpected, error.PipeBusy => return error.Unexpected, + error.NoDevice => return error.Unexpected, error.WouldBlock => return error.Unexpected, error.AntivirusInterference => return error.Unexpected, else => |e| return e, @@ -3040,6 +3041,7 @@ pub fn mkdirW(dir_path_w: []const u16, mode: u32) MakeDirError!void { }) catch |err| switch (err) { error.IsDir => return error.Unexpected, error.PipeBusy => return error.Unexpected, + error.NoDevice => return error.Unexpected, error.WouldBlock => return error.Unexpected, error.AntivirusInterference => return error.Unexpected, else => |e| return e, diff --git a/lib/std/process/Child.zig b/lib/std/process/Child.zig index bb2c4c09a8..72277c2e62 100644 --- a/lib/std/process/Child.zig +++ b/lib/std/process/Child.zig @@ -743,6 +743,7 @@ fn spawnWindows(self: *ChildProcess) SpawnError!void { }) catch |err| switch (err) { error.PathAlreadyExists => return error.Unexpected, // not possible for "NUL" error.PipeBusy => return error.Unexpected, // not possible for "NUL" + error.NoDevice => return error.Unexpected, // not possible for "NUL" error.FileNotFound => return error.Unexpected, // not possible for "NUL" error.AccessDenied => return error.Unexpected, // not possible for "NUL" error.NameTooLong => return error.Unexpected, // not possible for "NUL" diff --git a/src/Builtin.zig b/src/Builtin.zig index f3018d3023..c6609e3e39 100644 --- a/src/Builtin.zig +++ b/src/Builtin.zig @@ -250,6 +250,7 @@ pub fn populateFile(comp: *Compilation, mod: *Module, file: *File) !void { error.BadPathName => unreachable, // it's always "builtin.zig" error.NameTooLong => unreachable, // it's always "builtin.zig" error.PipeBusy => unreachable, // it's not a pipe + error.NoDevice => unreachable, // it's not a pipe error.WouldBlock => unreachable, // not asking for non-blocking I/O error.FileNotFound => try writeFile(file, mod), diff --git a/src/Zcu/PerThread.zig b/src/Zcu/PerThread.zig index 29b9716152..c6a8b58f41 100644 --- a/src/Zcu/PerThread.zig +++ b/src/Zcu/PerThread.zig @@ -133,6 +133,7 @@ pub fn astGenFile( error.BadPathName => unreachable, // it's a hex encoded name error.NameTooLong => unreachable, // it's a fixed size name error.PipeBusy => unreachable, // it's not a pipe + error.NoDevice => unreachable, // it's not a pipe error.WouldBlock => unreachable, // not asking for non-blocking I/O // There are no dir components, so you would think that this was // unreachable, however we have observed on macOS two processes racing