From 97a2ea9744dfc1946bc022389caae834b62a298f Mon Sep 17 00:00:00 2001 From: koekeishiya Date: Wed, 24 Apr 2019 17:57:44 +0200 Subject: #77 make pid-file user-specific --- src/skhd.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/skhd.c b/src/skhd.c index 63d2d3d..26334e8 100644 --- a/src/skhd.c +++ b/src/skhd.c @@ -43,7 +43,7 @@ extern bool CGSIsSecureEventInputSet(void); #define global static #define SKHD_CONFIG_FILE ".skhdrc" -#define SKHD_PID_FILE "/tmp/skhd.pid" +#define SKHD_PIDFILE_FMT "/tmp/skhd_%s.pid" global unsigned major_version = 0; global unsigned minor_version = 3; @@ -192,9 +192,17 @@ sigusr1_handler(int signal) internal pid_t read_pid_file(void) { + char pid_file[255] = {}; pid_t pid = 0; - int handle = open(SKHD_PID_FILE, O_RDWR); + char *user = getenv("USER"); + if (user) { + snprintf(pid_file, sizeof(pid_file), SKHD_PIDFILE_FMT, user); + } else { + error("skhd: could not create path to pid-file because 'env USER' was not set! abort..\n"); + } + + int handle = open(pid_file, O_RDWR); if (handle == -1) { error("skhd: could not open pid-file..\n"); } @@ -212,9 +220,17 @@ read_pid_file(void) internal void create_pid_file(void) { + char pid_file[255] = {}; pid_t pid = getpid(); - int handle = open(SKHD_PID_FILE, O_CREAT | O_WRONLY, 0644); + char *user = getenv("USER"); + if (user) { + snprintf(pid_file, sizeof(pid_file), SKHD_PIDFILE_FMT, user); + } else { + error("skhd: could not create path to pid-file because 'env USER' was not set! abort..\n"); + } + + int handle = open(pid_file, O_CREAT | O_WRONLY, 0644); if (handle == -1) { error("skhd: could not create pid-file! abort..\n"); } -- cgit v1.2.3