Go back to getpwuid call to get user name from user id
Unfortunately, reading /etc/passwd is not enough.
This commit is contained in:
parent
cafecda230
commit
d8dc7d7f39
|
@ -530,23 +530,7 @@ void RemoteUI::exit(int status)
|
||||||
|
|
||||||
String get_user_name(int uid)
|
String get_user_name(int uid)
|
||||||
{
|
{
|
||||||
#if defined(__APPLE__)
|
|
||||||
return getpwuid(uid)->pw_name;
|
return getpwuid(uid)->pw_name;
|
||||||
#else // Do not use getpwuid to avoid dependency on dynamic glibc
|
|
||||||
struct invalid_index : runtime_error
|
|
||||||
{
|
|
||||||
invalid_index(size_t i) : runtime_error{format("invalid index '{}'", i)} {}
|
|
||||||
};
|
|
||||||
|
|
||||||
MappedFile passwd{"/etc/passwd"};
|
|
||||||
for (auto entry : (StringView)passwd | split<StringView>('\n'))
|
|
||||||
{
|
|
||||||
auto name_and_id = entry | split<StringView>(':') | elements<invalid_index, 0, 2>();
|
|
||||||
if (str_to_int(name_and_id[1]) == uid)
|
|
||||||
return name_and_id[0].str();
|
|
||||||
}
|
|
||||||
throw runtime_error(format("Cannot find user name for uid '{}'", uid));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static sockaddr_un session_addr(StringView session)
|
static sockaddr_un session_addr(StringView session)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user