Fix remaining uses of hardcoded /tmp to get the socket paths

Fixes #1097
This commit is contained in:
Maxime Coste 2017-01-01 13:10:08 +00:00
parent 968e573d80
commit e42881fa38
4 changed files with 17 additions and 12 deletions

View File

@ -133,6 +133,15 @@ String compact_path(StringView filename)
return filename.str();
}
StringView tmpdir()
{
StringView tmpdir = getenv("TMPDIR");
if (not tmpdir.empty())
return tmpdir.back() == '/' ? tmpdir.substr(0_byte, tmpdir.length()-1)
: tmpdir;
return "/tmp";
}
bool fd_readable(int fd)
{
fd_set rfds;

View File

@ -24,6 +24,8 @@ String parse_filename(StringView filename);
String real_path(StringView filename);
String compact_path(StringView filename);
StringView tmpdir();
// returns pair { directory, filename }
std::pair<StringView, StringView> split_path(StringView path);

View File

@ -761,8 +761,10 @@ int main(int argc, char* argv[])
const bool clear_sessions = (bool)parser.get_switch("clear");
if (list_sessions or clear_sessions)
{
StringView username = getpwuid(geteuid())->pw_name;
for (auto& session : list_files(format("/tmp/kakoune/{}/", username)))
const StringView username = getpwuid(geteuid())->pw_name;
const StringView tmp_dir = tmpdir();
for (auto& session : list_files(format("{}/kakoune/{}/", tmp_dir,
username)))
{
const bool valid = check_session(session);
if (list_sessions)
@ -770,7 +772,8 @@ int main(int argc, char* argv[])
if (not valid and clear_sessions)
{
char socket_file[128];
format_to(socket_file, "/tmp/kakoune/{}/{}", username, session);
format_to(socket_file, "{}/kakoune/{}/{}", tmp_dir,
username, session);
unlink(socket_file);
}
}

View File

@ -480,15 +480,6 @@ void RemoteUI::set_ui_options(const Options& options)
m_socket_watcher.events() |= FdEvents::Write;
}
static StringView tmpdir()
{
StringView tmpdir = getenv("TMPDIR");
if (not tmpdir.empty())
return tmpdir.back() == '/' ? tmpdir.substr(0_byte, tmpdir.length()-1)
: tmpdir;
return "/tmp";
}
static sockaddr_un session_addr(StringView session)
{
sockaddr_un addr;