diff options
| author | daurnimator <quae@daurnimator.com> | 2020-01-15 18:11:54 +1000 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2020-03-03 13:25:43 -0500 |
| commit | 627618a38d291d9cc76c8e30e33cad60dc26cf11 (patch) | |
| tree | 147fb6c132985cb88461abb58fcf1d18a36ce5eb /lib/std/os.zig | |
| parent | dfb420e6d779b9b6d60a277401aadba2800e3572 (diff) | |
| download | zig-627618a38d291d9cc76c8e30e33cad60dc26cf11.tar.gz zig-627618a38d291d9cc76c8e30e33cad60dc26cf11.zip | |
std: add Dir.changeDir as wrapper around fchdir
Diffstat (limited to 'lib/std/os.zig')
| -rw-r--r-- | lib/std/os.zig | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/std/os.zig b/lib/std/os.zig index f97676a821..7563a34f21 100644 --- a/lib/std/os.zig +++ b/lib/std/os.zig @@ -1706,6 +1706,20 @@ pub fn chdirC(dir_path: [*:0]const u8) ChangeCurDirError!void { } } +pub fn fchdir(dirfd: fd_t) ChangeCurDirError!void { + while (true) { + switch (errno(system.fchdir(dirfd))) { + 0 => return, + EACCES => return error.AccessDenied, + EBADF => unreachable, + ENOTDIR => return error.NotDir, + EINTR => continue, + EIO => return error.FileSystem, + else => |err| return unexpectedErrno(err), + } + } +} + pub const ReadLinkError = error{ AccessDenied, FileSystem, |
