From d3094d461e9ff1ae3274e612f33863dc17f35da6 Mon Sep 17 00:00:00 2001 From: Ketan Reynolds Date: Wed, 1 May 2024 21:00:33 +0200 Subject: [PATCH] std.posix: handle INVAL in openZ and openatZ Contributes to #15607 Although the case is not handled in `openatWasi` (as I could not get a working wasi environment to test the change) I have added a FIXME addressing it and linking to the issue. --- lib/std/posix.zig | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/std/posix.zig b/lib/std/posix.zig index 73634ab1c77d..9b44503d3475 100644 --- a/lib/std/posix.zig +++ b/lib/std/posix.zig @@ -1585,7 +1585,7 @@ pub fn openZ(file_path: [*:0]const u8, flags: O, perm: mode_t) OpenError!fd_t { .INTR => continue, .FAULT => unreachable, - .INVAL => unreachable, + .INVAL => return error.BadPathName, .ACCES => return error.AccessDenied, .FBIG => return error.FileTooBig, .OVERFLOW => return error.FileTooBig, @@ -1663,6 +1663,9 @@ pub fn openatWasi( .INTR => continue, .FAULT => unreachable, + // FIXME: It is worth looking into returning a `error.BadPathName` + // here if wasi follows other posix behavior + // see: https://github.com/ziglang/zig/issues/15607 .INVAL => unreachable, .BADF => unreachable, .ACCES => return error.AccessDenied, @@ -1754,7 +1757,7 @@ pub fn openatZ(dir_fd: fd_t, file_path: [*:0]const u8, flags: O, mode: mode_t) O .INTR => continue, .FAULT => unreachable, - .INVAL => unreachable, + .INVAL => return error.BadPathName, .BADF => unreachable, .ACCES => return error.AccessDenied, .FBIG => return error.FileTooBig,