std.os.changeCurDir no longer needs an allocator

This commit is contained in:
Andrew Kelley 2019-03-05 18:43:39 -05:00
parent 9c5852aa86
commit e2f4df6065
No known key found for this signature in database
GPG Key ID: 7C5F548F728501A9
2 changed files with 15 additions and 21 deletions

View File

@ -1825,26 +1825,20 @@ pub const Dir = struct {
}
};
pub fn changeCurDir(allocator: *Allocator, dir_path: []const u8) !void {
const path_buf = try allocator.alloc(u8, dir_path.len + 1);
defer allocator.free(path_buf);
mem.copy(u8, path_buf, dir_path);
path_buf[dir_path.len] = 0;
const err = posix.getErrno(posix.chdir(path_buf.ptr));
if (err > 0) {
return switch (err) {
posix.EACCES => error.AccessDenied,
posix.EFAULT => unreachable,
posix.EIO => error.FileSystem,
posix.ELOOP => error.SymLinkLoop,
posix.ENAMETOOLONG => error.NameTooLong,
posix.ENOENT => error.FileNotFound,
posix.ENOMEM => error.SystemResources,
posix.ENOTDIR => error.NotDir,
else => unexpectedErrorPosix(err),
};
pub fn changeCurDir(dir_path: []const u8) !void {
const dir_path_c = try toPosixPath(dir_path);
const err = posix.getErrno(posix.chdir(&dir_path_c));
switch (err) {
0 => return,
posix.EACCES => return error.AccessDenied,
posix.EFAULT => unreachable,
posix.EIO => return error.FileSystem,
posix.ELOOP => return error.SymLinkLoop,
posix.ENAMETOOLONG => return error.NameTooLong,
posix.ENOENT => return error.FileNotFound,
posix.ENOMEM => return error.SystemResources,
posix.ENOTDIR => return error.NotDir,
else => return unexpectedErrorPosix(err),
}
}

View File

@ -404,7 +404,7 @@ pub const ChildProcess = struct {
}
if (self.cwd) |cwd| {
os.changeCurDir(self.allocator, cwd) catch |err| forkChildErrReport(err_pipe[1], err);
os.changeCurDir(cwd) catch |err| forkChildErrReport(err_pipe[1], err);
}
if (self.gid) |gid| {