From 2425f4a78154d95e7bf8545bd8d993db26143ffb Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Thu, 28 Jul 2016 00:16:41 +0100 Subject: [PATCH] Tweak session renaming code --- src/commands.cc | 12 ++++-------- src/remote.cc | 8 +++----- src/remote.hh | 2 +- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/commands.cc b/src/commands.cc index 6f17c023..28574a90 100644 --- a/src/commands.cc +++ b/src/commands.cc @@ -1902,10 +1902,10 @@ const CommandDesc change_working_directory_cmd = { } }; -const CommandDesc change_session_name = { - "session", +const CommandDesc set_session_name = { + "namesession", nullptr, - "session : change remote session name", + "namesession : change remote session name", ParameterDesc{{}, ParameterDesc::Flags::None, 1, 1}, CommandFlags::None, CommandHelper{}, @@ -1914,10 +1914,6 @@ const CommandDesc change_session_name = { { if (not Server::instance().rename_session(parser[0])) throw runtime_error(format("Cannot rename current session: '{}' may be already in use", parser[0])); - - // update modeline - for (auto& client : ClientManager::instance()) - client->redraw_ifn(); } }; @@ -1978,7 +1974,7 @@ void register_commands() register_command(set_register_cmd); register_command(select_cmd); register_command(change_working_directory_cmd); - register_command(change_session_name); + register_command(set_session_name); } } diff --git a/src/remote.cc b/src/remote.cc index 1130e120..798b14ee 100644 --- a/src/remote.cc +++ b/src/remote.cc @@ -651,17 +651,15 @@ Server::Server(String session_name) m_listener.reset(new FDWatcher{listen_sock, accepter}); } -bool Server::rename_session(const String& name) +bool Server::rename_session(StringView name) { String old_socket_file = format("/tmp/kakoune/{}/{}", getpwuid(geteuid())->pw_name, m_session); String new_socket_file = format("/tmp/kakoune/{}/{}", getpwuid(geteuid())->pw_name, name); - if (link(old_socket_file.c_str(), new_socket_file.c_str()) != 0) + if (rename(old_socket_file.c_str(), new_socket_file.c_str()) != 0) return false; - unlink(old_socket_file.c_str()); - - m_session = name; + m_session = name.str(); return true; } diff --git a/src/remote.hh b/src/remote.hh index fd214b3d..e396b47a 100644 --- a/src/remote.hh +++ b/src/remote.hh @@ -48,7 +48,7 @@ struct Server : public Singleton ~Server(); const String& session() const { return m_session; } - bool rename_session(const String& name); + bool rename_session(StringView name); void close_session(bool do_unlink = true); private: