diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2025-06-30 14:41:53 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska@appnovation.com> | 2025-06-30 14:41:53 +0000 |
| commit | 6d953b22ae50261812b27ba84ecd6dc33b2007de (patch) | |
| tree | 82d61de117f1e8ec02522c3d2eb40bd78877c543 /src/s6/process_startstop.c | |
| parent | 8a6eaed305dbe4ec6a87fe37000f7461bf563937 (diff) | |
| download | s6-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.c | 45 |
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) ; +} |
