zig

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

commit 034ccb4e4e64dda2626535d46a4bc0367bcc1ad2 (tree)
parent 413f9a5cfc9e867e3bc69b47b38c62b52a52d5e9
Author: Andrew Kelley <andrew@ziglang.org>
Date:   Sat, 30 Nov 2019 16:58:32 -0500

add missing error code handling on Windows

Diffstat:
Mlib/std/fs.zig | 1+
Mlib/std/fs/file.zig | 1+
Mlib/std/io/test.zig | 2+-
Mlib/std/os.zig | 7++++++-
4 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/lib/std/fs.zig b/lib/std/fs.zig @@ -841,6 +841,7 @@ pub const Dir = struct { w.STATUS.ACCESS_DENIED => return error.AccessDenied, w.STATUS.PIPE_BUSY => return error.PipeBusy, w.STATUS.OBJECT_PATH_SYNTAX_BAD => unreachable, + w.STATUS.OBJECT_NAME_COLLISION => return error.PathAlreadyExists, else => return w.unexpectedStatus(rc), } } diff --git a/lib/std/fs/file.zig b/lib/std/fs/file.zig @@ -228,6 +228,7 @@ pub const File = struct { windows.STATUS.SUCCESS => {}, windows.STATUS.BUFFER_OVERFLOW => {}, windows.STATUS.INVALID_PARAMETER => unreachable, + windows.STATUS.ACCESS_DENIED => return error.AccessDenied, else => return windows.unexpectedStatus(rc), } return Stat{ diff --git a/lib/std/io/test.zig b/lib/std/io/test.zig @@ -634,7 +634,7 @@ test "File seek ops" { test "updateTimes" { const tmp_file_name = "just_a_temporary_file.txt"; - var file = try fs.cwd().createFile(tmp_file_name, .{}); + var file = try fs.cwd().createFile(tmp_file_name, .{ .read = true }); defer { file.close(); std.fs.cwd().deleteFile(tmp_file_name) catch {}; diff --git a/lib/std/os.zig b/lib/std/os.zig @@ -2028,7 +2028,10 @@ pub fn waitpid(pid: i32, flags: u32) u32 { } } -pub const FStatError = error{SystemResources} || UnexpectedError; +pub const FStatError = error{ + SystemResources, + AccessDenied, +} || UnexpectedError; pub fn fstat(fd: fd_t) FStatError!Stat { var stat: Stat = undefined; @@ -2038,6 +2041,7 @@ pub fn fstat(fd: fd_t) FStatError!Stat { EINVAL => unreachable, EBADF => unreachable, // Always a race condition. ENOMEM => return error.SystemResources, + EACCES => return error.AccessDenied, else => |err| return unexpectedErrno(err), } } @@ -2047,6 +2051,7 @@ pub fn fstat(fd: fd_t) FStatError!Stat { EINVAL => unreachable, EBADF => unreachable, // Always a race condition. ENOMEM => return error.SystemResources, + EACCES => return error.AccessDenied, else => |err| return unexpectedErrno(err), } }