aboutsummaryrefslogtreecommitdiff
path: root/std/os.zig
diff options
context:
space:
mode:
authorSahnvour <sahnvour@pm.me>2019-07-28 17:31:40 +0200
committerSahnvour <sahnvour@pm.me>2019-07-29 23:33:58 +0200
commitd08425a0a5b15fa903d379ea5547fbb5dfecda62 (patch)
treedd5055b34bd635c522aa86ce89b7b779b0b0ac60 /std/os.zig
parentbc982e65cf77aa6551029620ceaec8f3ae49202f (diff)
downloadzig-d08425a0a5b15fa903d379ea5547fbb5dfecda62.tar.gz
zig-d08425a0a5b15fa903d379ea5547fbb5dfecda62.zip
os: missing accessW since recent refactoring
Diffstat (limited to 'std/os.zig')
-rw-r--r--std/os.zig16
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,