about summary refs log tree commit diff
path: root/nitroctl.c
diff options
context:
space:
mode:
authorLeah Neukirchen <leah@vuxu.org>2024-02-07 17:03:23 +0100
committerLeah Neukirchen <leah@vuxu.org>2024-02-07 17:03:23 +0100
commitd6e27ae923575f0aa59875af6a4f2e7d7b0bb93c (patch)
treee6ace1001d574b033176297080d0bd880cf221b8 /nitroctl.c
parentaa0310ff716ea0ecd20a3c0994be68e4fcf311d0 (diff)
downloadnitro-d6e27ae923575f0aa59875af6a4f2e7d7b0bb93c.tar.gz
nitro-d6e27ae923575f0aa59875af6a4f2e7d7b0bb93c.tar.xz
nitro-d6e27ae923575f0aa59875af6a4f2e7d7b0bb93c.zip
make nitroctl work with / in service names
Diffstat (limited to 'nitroctl.c')
-rw-r--r--nitroctl.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/nitroctl.c b/nitroctl.c
index 27d0780..1fa2b0b 100644
--- a/nitroctl.c
+++ b/nitroctl.c
@@ -60,9 +60,14 @@ notifysock(const char *service)
 	char *path = strdup(sockpath);
 	if (!path || !*path)
 		path = default_sock;
+	path = dirname(path);
 
 	snprintf(notifypath, sizeof notifypath,
-	    "%s/notify/%s,%ld", dirname(path), service, (long)getpid());
+	    "%s/notify/%s,%ld", path, service, (long)getpid());
+
+	for (char *s = notifypath + strlen(path) + strlen("/notify/"); *s; s++)
+		if (*s == '/')
+			*s = ',';
 
 	struct sockaddr_un my_addr = { 0 };
 	my_addr.sun_family = AF_UNIX;