aboutsummaryrefslogtreecommitdiffstats
path: root/src/s6/process_startstop.c
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2025-06-30 14:41:53 +0000
committerLaurent Bercot <ska@appnovation.com>2025-06-30 14:41:53 +0000
commit6d953b22ae50261812b27ba84ecd6dc33b2007de (patch)
tree82d61de117f1e8ec02522c3d2eb40bd78877c543 /src/s6/process_startstop.c
parent8a6eaed305dbe4ec6a87fe37000f7461bf563937 (diff)
downloads6-frontend-6d953b22ae50261812b27ba84ecd6dc33b2007de.tar.gz
Adapt to new gol
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/s6/process_startstop.c')
-rw-r--r--src/s6/process_startstop.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/s6/process_startstop.c b/src/s6/process_startstop.c
new file mode 100644
index 0000000..8a5089e
--- /dev/null
+++ b/src/s6/process_startstop.c
@@ -0,0 +1,45 @@
+/* ISC license. */
+
+#include <stddef.h>
+
+#include <skalibs/uint64.h>
+#include <skalibs/env.h>
+#include <skalibs/strerr.h>
+#include <skalibs/gol.h>
+
+#include "s6-internal.h"
+
+enum golb_e
+{
+ GOLB_WAIT,
+ GOLB_N
+} ;
+
+static gol_bool const rgolb[2] =
+{
+ { .so = 'W', .lo = "nowait", .clear = 1 << GOLB_WAIT, .set = 0 },
+ { .so = 'w', .lo = "wait", .clear = 0, .set = 1 << GOLB_WAIT }
+} ;
+
+static int process_startstop (char const *const *argv, int h)
+{
+ uint64_t wgolb = 1 << GOLB_WAIT ;
+ size_t argc ;
+ PROG = h ? "s6 process start" : "s6 process stop" ;
+
+ argv += gol_argv(argv, rgolb, 2, 0, 0, &wgolb, 0) ;
+ if (!argv) strerr_dien(100, 4, PROG, ": usage: ", PROG, " [ -W|--nowait | -w|--wait ] services...") ;
+ argc = env_len(argv) ;
+ process_check_services(argv, argc) ;
+ return process_send_svc(wgolb & 1 << GOLB_WAIT ? h ? "-uwU" : "-dwD" : h ? "-u" : "-d", argv, argc) ;
+}
+
+int process_start (char const *const *argv)
+{
+ return process_startstop(argv, 1) ;
+}
+
+int process_stop (char const *const *argv)
+{
+ return process_startstop(argv, 0) ;
+}