pub fn posixGetUserInfo(io: Io, name: []const u8) !UserInfo io: Ioname: []const u8126
127
128
129
130
131
132
133
134
135
136pub fn posixGetUserInfo(io: Io, name: []const u8) !UserInfo {
const file = try Io.Dir.openFileAbsolute(io, "/etc/passwd", .{});
defer file.close(io);
var buffer: [4096]u8 = undefined;
var file_reader = file.reader(io, &buffer);
return posixGetUserInfoPasswdStream(name, &file_reader.interface) catch |err| switch (err) {
error.ReadFailed => return file_reader.err.?,
error.EndOfStream => return error.UserNotFound,
error.CorruptPasswordFile => |e| return e,
};
}
TODO this reads /etc/passwd. But sometimes the user/id mapping is in something else like NIS, AD, etc. See
man nssor look at an strace forid myuser.