diff options
| author | Matt Peterson <ricochet1k@gmail.com> | 2018-08-24 10:47:11 -0400 |
|---|---|---|
| committer | Matt Peterson <ricochet1k@gmail.com> | 2018-08-24 10:50:59 -0400 |
| commit | d0a8426272eeb905ea2ac2aaadaf74b01fb47d48 (patch) | |
| tree | 977de1e8505fc8b09c322fbfc773e6019837688f /src/remote.cc | |
| parent | a91fc83bfe21bb5a70fdb2b0725316fb7c407858 (diff) | |
Use $USER if getpwuid fails
Diffstat (limited to 'src/remote.cc')
| -rw-r--r-- | src/remote.cc | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/remote.cc b/src/remote.cc index da441bd8..fafda9d5 100644 --- a/src/remote.cc +++ b/src/remote.cc @@ -519,9 +519,12 @@ void RemoteUI::exit(int status) m_socket_watcher.events() |= FdEvents::Write; } -String get_user_name(int uid) +String get_user_name() { - return getpwuid(uid)->pw_name; + auto pw = getpwuid(geteuid()); + if (pw) + return pw->pw_name; + return getenv("USER"); } static sockaddr_un session_addr(StringView session) @@ -535,7 +538,7 @@ static sockaddr_un session_addr(StringView session) format_to(addr.sun_path, "{}/kakoune/{}", tmpdir(), session); else format_to(addr.sun_path, "{}/kakoune/{}/{}", tmpdir(), - get_user_name(geteuid()), session); + get_user_name(), session); return addr; } @@ -815,9 +818,9 @@ bool Server::rename_session(StringView name) throw runtime_error{format("invalid session name: '{}'", name)}; String old_socket_file = format("{}/kakoune/{}/{}", tmpdir(), - get_user_name(geteuid()), m_session); + get_user_name(), m_session); String new_socket_file = format("{}/kakoune/{}/{}", tmpdir(), - get_user_name(geteuid()), name); + get_user_name(), name); if (rename(old_socket_file.c_str(), new_socket_file.c_str()) != 0) return false; @@ -831,7 +834,7 @@ void Server::close_session(bool do_unlink) if (do_unlink) { String socket_file = format("{}/kakoune/{}/{}", tmpdir(), - get_user_name(geteuid()), m_session); + get_user_name(), m_session); unlink(socket_file.c_str()); } m_listener->close_fd(); |
