diff options
| author | Sahnvour <sahnvour@pm.me> | 2019-07-28 17:31:40 +0200 |
|---|---|---|
| committer | Sahnvour <sahnvour@pm.me> | 2019-07-29 23:33:58 +0200 |
| commit | d08425a0a5b15fa903d379ea5547fbb5dfecda62 (patch) | |
| tree | dd5055b34bd635c522aa86ce89b7b779b0b0ac60 /std/os.zig | |
| parent | bc982e65cf77aa6551029620ceaec8f3ae49202f (diff) | |
| download | zig-d08425a0a5b15fa903d379ea5547fbb5dfecda62.tar.gz zig-d08425a0a5b15fa903d379ea5547fbb5dfecda62.zip | |
os: missing accessW since recent refactoring
Diffstat (limited to 'std/os.zig')
| -rw-r--r-- | std/os.zig | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/std/os.zig b/std/os.zig index 190f02101e..9ff2e8f87f 100644 --- a/std/os.zig +++ b/std/os.zig @@ -2053,6 +2053,22 @@ pub fn accessC(path: [*]const u8, mode: u32) AccessError!void { } } +/// Call from Windows-specific code if you already have a UTF-16LE encoded, null terminated string. +/// Otherwise use `access` or `accessC`. +/// TODO currently this ignores `mode`. +pub fn accessW(path: [*]const u16, mode: u32) windows.GetFileAttributesError!void { + const ret = try windows.GetFileAttributesW(path); + if (ret != windows.INVALID_FILE_ATTRIBUTES) { + return; + } + switch (windows.kernel32.GetLastError()) { + windows.ERROR.FILE_NOT_FOUND => return error.FileNotFound, + windows.ERROR.PATH_NOT_FOUND => return error.FileNotFound, + windows.ERROR.ACCESS_DENIED => return error.PermissionDenied, + else => |err| return windows.unexpectedError(err), + } +} + pub const PipeError = error{ SystemFdQuotaExceeded, ProcessFdQuotaExceeded, |
