fn fchdir(sync: *CancelRegion.Sync, dir: fd_t) process.SetCurrentDirError!void sync: *CancelRegion.Syncdir: fd_t5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386fn fchdir(sync: *CancelRegion.Sync, dir: fd_t) process.SetCurrentDirError!void {
if (dir == linux.AT.FDCWD) return;
while (true) {
try sync.cancel_region.await(.nothing);
switch (linux.errno(linux.fchdir(dir))) {
.SUCCESS => return,
.INTR => {},
.ACCES => return error.AccessDenied,
.NOTDIR => return error.NotDir,
.IO => return error.FileSystem,
.BADF => |err| return errnoBug(err),
else => |err| return unexpectedErrno(err),
}
}
}