/* ISC license. */ #include #include #include #include #include #include "s6-internal.h" #define USAGE "s6 process start [ -W|--nowait | -w|--wait ] services..." #define dieusage() strerr_dieusage(100, USAGE) enum process_start_golb_e { PROCESS_START_GOLB_WAIT, PROCESS_START_GOLB_N } ; static gol_bool const process_start_golb[2] = { { .so = 'W', .lo = "nowait", .set = 0, .mask = 1 << PROCESS_START_GOLB_WAIT }, { .so = 'w', .lo = "wait", .set = 1, .mask = 1 << PROCESS_START_GOLB_WAIT } } ; int process_start (char const *const *argv) { uint64_t golb = 1 << PROCESS_START_GOLB_WAIT ; size_t argc ; PROG = "s6 process start" ; argv += gol_argv(argv, process_start_golb, 2, 0, 0, &golb, 0) ; if (!argv) dieusage() ; argc = env_len(argv) ; process_check_services(argv, argc) ; return process_send_svc(golb & 1 << PROCESS_START_GOLB_WAIT ? "-uwU" : "-u", argv, argc) ; }