From fab34800e1e2a3ceb96c1741704c654b6ae327f1 Mon Sep 17 00:00:00 2001
From: obarun <eric@obarun.org>
Date: Mon, 5 Jun 2023 21:28:34 +1100
Subject: [PATCH] allow to specify the signal to send

---
 src/include/66/svc.h                   |  2 +-
 src/lib66/sanitize/sanitize_fdholder.c |  2 +-
 src/lib66/svc/svc_send_fdholder.c      | 10 ++++++----
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/include/66/svc.h b/src/include/66/svc.h
index 99731c19..0c55293a 100644
--- a/src/include/66/svc.h
+++ b/src/include/66/svc.h
@@ -56,6 +56,6 @@ extern int svc_scandir_ok (char const *dir) ;
 extern int svc_scandir_send(char const *scandir,char const *signal) ;
 extern int svc_send_wait(char const *const *list, unsigned int nservice, char **sig, unsigned int siglen, ssexec_t *info) ;
 extern void svc_unsupervise(unsigned int *alist, unsigned int alen, graph_t *g, resolve_service_t *ares, unsigned int areslen) ;
-extern void svc_send_fdholder(char const *socket) ;
+extern void svc_send_fdholder(char const *socket, char const *signal) ;
 
 #endif
diff --git a/src/lib66/sanitize/sanitize_fdholder.c b/src/lib66/sanitize/sanitize_fdholder.c
index 57baaaa0..4c7fd7c0 100644
--- a/src/lib66/sanitize/sanitize_fdholder.c
+++ b/src/lib66/sanitize/sanitize_fdholder.c
@@ -170,7 +170,7 @@ void sanitize_fdholder(resolve_service_t *res, uint32_t flag)
         if (!openwritenclose_unsafe(file, list.s, list.len))
             log_dieusys(LOG_EXIT_SYS, "write file: ", file) ;
 
-        svc_send_fdholder(socket) ;
+        svc_send_fdholder(socket, "twR") ;
 
         stralloc_free(&list) ;
     }
diff --git a/src/lib66/svc/svc_send_fdholder.c b/src/lib66/svc/svc_send_fdholder.c
index 63124b8e..95179c2b 100644
--- a/src/lib66/svc/svc_send_fdholder.c
+++ b/src/lib66/svc/svc_send_fdholder.c
@@ -15,14 +15,14 @@
 #include <stdlib.h>
 
 #include <oblibs/log.h>
+#include <oblibs/string.h>
 
 #include <skalibs/types.h>
 #include <skalibs/djbunix.h>
 
 #include <66/svc.h>
 
-
-void svc_send_fdholder(char const *socket)
+void svc_send_fdholder(char const *socket, char const *signal)
 {
     log_flow() ;
 
@@ -33,16 +33,18 @@ void svc_send_fdholder(char const *socket)
 
     char const *newargv[8] ;
     unsigned int m = 0 ;
+    char sig[1 + strlen(signal) + 1] ;
+    auto_strings(sig, "-", signal) ;
 
     newargv[m++] = "s6-svc" ;
-    newargv[m++] = "-twR" ;
+    newargv[m++] = sig ;
     newargv[m++] = "-T" ;
     newargv[m++] = tfmt ;
     newargv[m++] = "--" ;
     newargv[m++] = socket ;
     newargv[m++] = 0 ;
 
-    log_trace("sending -twR signal to: ", socket) ;
+    log_trace("sending -", signal, " signal to: ", socket) ;
 
     pid = child_spawn0(newargv[0], newargv, (char const *const *) environ) ;
 
-- 
GitLab