From 7d717a323bbc1558ee7710b3598c681388748652 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Wed, 11 Jun 2025 18:01:29 +0000 Subject: More config dir options Signed-off-by: Laurent Bercot --- src/s6/service_start.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'src/s6/service_start.c') diff --git a/src/s6/service_start.c b/src/s6/service_start.c index f9b5039..4b8c3a6 100644 --- a/src/s6/service_start.c +++ b/src/s6/service_start.c @@ -3,6 +3,9 @@ #include #include #include +#include + +#include #include "s6-internal.h" @@ -11,22 +14,41 @@ enum service_start_golb_e { + SERVICE_START_GOLB_DRYRUN, SERVICE_START_GOLB_WAIT, SERVICE_START_GOLB_N } ; -static gol_bool const service_start_golb[2] = +static gol_bool const service_start_golb[3] = { + { .so = 'n', .lo = "dryrun", .set = 1, .mask = 1 << SERVICE_START_GOLB_DRYRUN }, { .so = 'W', .lo = "nowait", .set = 0, .mask = 1 << SERVICE_START_GOLB_WAIT }, { .so = 'w', .lo = "wait", .set = 1, .mask = 1 << SERVICE_START_GOLB_WAIT } } ; int service_start (char const *const *argv) { + size_t argc = env_len(argv) ; uint64_t golb = 0 ; PROG = "s6 service start" ; argv += gol_argv(argv, service_start_golb, 0, 0, 0, &golb, 0) ; if (!argv) dieusage() ; + + { + size_t m = 0 ; + char const *newargv[10 + argc] ; + char fmtv[UINT_FMT] ; + + newargv[m++] = S6RC_EXTBINPREFIX "s6-rc" ; + newargv[m++] = "-v" ; + newargv[m++] = fmtv ; + fmtv[uint_fmt(fmtv, g->verbosity)] = 0 ; + if (golb & 1 << SERVICE_START_GOLB_DRYRUN) + { + newargv[m++] = "-n" ; + newargv[m++] = "1" ; + } + } return 0 ; } -- cgit v1.3.1