Merge pull request #225 from sce/logind_socket_path

ipc: Put socket into proper user runtime dir.
This commit is contained in:
Drew DeVault 2015-11-13 08:15:14 -05:00
commit f3fc48f692

View file

@ -94,14 +94,15 @@ struct sockaddr_un *ipc_user_sockaddr(void) {
} }
ipc_sockaddr->sun_family = AF_UNIX; ipc_sockaddr->sun_family = AF_UNIX;
int path_size = sizeof(ipc_sockaddr->sun_path); int path_size = sizeof(ipc_sockaddr->sun_path);
// Without logind: // Env var typically set by logind, e.g. "/run/user/<user-id>"
int allocating_path_size = snprintf(ipc_sockaddr->sun_path, path_size, const char *dir = getenv("XDG_RUNTIME_DIR");
"/tmp/sway-ipc.%i.%i.sock", getuid(), getpid()); if (!dir) {
dir = "/tmp";
if (allocating_path_size >= path_size) { }
if (path_size <= snprintf(ipc_sockaddr->sun_path, path_size,
"%s/sway-ipc.%i.%i.sock", dir, getuid(), getpid())) {
sway_abort("socket path won't fit into ipc_sockaddr->sun_path"); sway_abort("socket path won't fit into ipc_sockaddr->sun_path");
} }