aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkoekeishiya <aasvi93@hotmail.com>2019-04-24 17:57:44 +0200
committerkoekeishiya <aasvi93@hotmail.com>2019-04-24 17:57:44 +0200
commit97a2ea9744dfc1946bc022389caae834b62a298f (patch)
tree5fc397060f63f5cbb6cea4943325569e9043c167
parentd487bd4c40b9a6c21c7d6c70707f09610b7d1129 (diff)
downloadskhd-97a2ea9744dfc1946bc022389caae834b62a298f.tar.gz
skhd-97a2ea9744dfc1946bc022389caae834b62a298f.zip
#77 make pid-file user-specific
-rw-r--r--src/skhd.c22
1 files changed, 19 insertions, 3 deletions
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");
}