summaryrefslogtreecommitdiff
path: root/src/remote.cc
diff options
context:
space:
mode:
authorMatt Peterson <ricochet1k@gmail.com>2018-08-24 10:47:11 -0400
committerMatt Peterson <ricochet1k@gmail.com>2018-08-24 10:50:59 -0400
commitd0a8426272eeb905ea2ac2aaadaf74b01fb47d48 (patch)
tree977de1e8505fc8b09c322fbfc773e6019837688f /src/remote.cc
parenta91fc83bfe21bb5a70fdb2b0725316fb7c407858 (diff)
Use $USER if getpwuid fails
Diffstat (limited to 'src/remote.cc')
-rw-r--r--src/remote.cc15
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();