diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/s6-frontend/deps-exe/s6-frontend | 1 | ||||
| -rw-r--r-- | src/s6-frontend/live_startstop.c | 2 | ||||
| -rw-r--r-- | src/s6-frontend/repository.c | 1 | ||||
| -rw-r--r-- | src/s6-frontend/repository_check.c | 2 | ||||
| -rw-r--r-- | src/s6-frontend/s6-frontend-internal.h | 1 | ||||
| -rw-r--r-- | src/s6-frontend/set.c | 1 | ||||
| -rw-r--r-- | src/s6-frontend/set_check.c | 2 | ||||
| -rw-r--r-- | src/s6-frontend/set_delete.c | 38 |
8 files changed, 44 insertions, 4 deletions
diff --git a/src/s6-frontend/deps-exe/s6-frontend b/src/s6-frontend/deps-exe/s6-frontend index 9f08747..9be433a 100644 --- a/src/s6-frontend/deps-exe/s6-frontend +++ b/src/s6-frontend/deps-exe/s6-frontend @@ -24,6 +24,7 @@ set_change.o set_check.o set_commit.o set_copy.o +set_delete.o set_help.o set_list.o set_status.o diff --git a/src/s6-frontend/live_startstop.c b/src/s6-frontend/live_startstop.c index ea66ba0..f3bcb06 100644 --- a/src/s6-frontend/live_startstop.c +++ b/src/s6-frontend/live_startstop.c @@ -11,7 +11,6 @@ #include <skalibs/gol.h> #include <skalibs/env.h> #include <skalibs/djbunix.h> -#include <skalibs/lolstdio.h> #include <s6-rc/config.h> #include <s6-rc/s6rc-utils.h> @@ -61,7 +60,6 @@ static int run_s6rc_change (char const *const *services, unsigned int n, int h, if (!s6rc_live_state_read(g->dirs.live, oldstate, nstate)) strerr_diefu2sys(111, "read state in ", g->dirs.live) ; - LOLDEBUG("n is %u, h is %d, dryrun is %d, timeout is %u, nstate is %u", n, h, dryrun, timeout, nstate) ; argv[m++] = S6RC_EXTBINPREFIX "s6-rc" ; argv[m++] = "-X" ; /* we already hold the lock */ argv[m++] = "-v" ; diff --git a/src/s6-frontend/repository.c b/src/s6-frontend/repository.c index 923bf68..97064ac 100644 --- a/src/s6-frontend/repository.c +++ b/src/s6-frontend/repository.c @@ -13,6 +13,7 @@ void repository (char const *const *argv) { static struct command_s const commands[] = { + { .s = "check", .f = &repository_check }, { .s = "help", .f = &repository_help }, { .s = "init", .f = &repository_init }, { .s = "list", .f = &repository_list }, diff --git a/src/s6-frontend/repository_check.c b/src/s6-frontend/repository_check.c index 525d874..6e83a38 100644 --- a/src/s6-frontend/repository_check.c +++ b/src/s6-frontend/repository_check.c @@ -33,7 +33,7 @@ void repository_check (char const *const *argv) char const *newargv[9] ; char fmtv[UINT_FMT] = " " ; - argv += gol_argv(argv, rgolb, 4, 0, 0, &wgolb, 0) ; + argv += gol_argv(argv, rgolb, 5, 0, 0, &wgolb, 0) ; newargv[m++] = S6RC_EXTBINPREFIX "s6-rc-set-fix" ; if (g->verbosity != 1) diff --git a/src/s6-frontend/s6-frontend-internal.h b/src/s6-frontend/s6-frontend-internal.h index d763024..32e0240 100644 --- a/src/s6-frontend/s6-frontend-internal.h +++ b/src/s6-frontend/s6-frontend-internal.h @@ -76,6 +76,7 @@ extern void set_status (char const *const *) gccattr_noreturn ; extern void set_load (char const *const *) gccattr_noreturn ; extern void set_save (char const *const *) gccattr_noreturn ; +extern void set_delete (char const *const *) gccattr_noreturn ; extern void set_mask (char const *const *) gccattr_noreturn ; extern void set_unmask (char const *const *) gccattr_noreturn ; diff --git a/src/s6-frontend/set.c b/src/s6-frontend/set.c index b013c35..8123371 100644 --- a/src/s6-frontend/set.c +++ b/src/s6-frontend/set.c @@ -25,6 +25,7 @@ void set (char const *const *argv) { { .s = "check", .f = &set_check }, { .s = "commit", .f = &set_commit }, + { .s = "delete", .f = &set_delete }, { .s = "disable", .f = &set_disable }, { .s = "enable", .f = &set_enable }, { .s = "help", .f = &set_help }, diff --git a/src/s6-frontend/set_check.c b/src/s6-frontend/set_check.c index 54c8a7c..a76d538 100644 --- a/src/s6-frontend/set_check.c +++ b/src/s6-frontend/set_check.c @@ -33,7 +33,7 @@ void set_check (char const *const *argv) char const *newargv[11] ; char fmtv[UINT_FMT] = " " ; - argv += gol_argv(argv, rgolb, 4, 0, 0, &wgolb, 0) ; + argv += gol_argv(argv, rgolb, 5, 0, 0, &wgolb, 0) ; newargv[m++] = S6RC_EXTBINPREFIX "s6-rc-set-fix" ; if (g->verbosity != 1) diff --git a/src/s6-frontend/set_delete.c b/src/s6-frontend/set_delete.c new file mode 100644 index 0000000..f5e5e37 --- /dev/null +++ b/src/s6-frontend/set_delete.c @@ -0,0 +1,38 @@ +/* ISC license. */ + +#include <string.h> + +#include <skalibs/types.h> +#include <skalibs/envexec.h> + +#include <s6-rc/config.h> + +#include "s6-frontend-internal.h" + +void set_delete (char const *const *argv) +{ + unsigned int argc ; + argv += gol_argv(argv, 0, 0, 0, 0, 0, 0) ; + if (!*argv) strerr_die(100, "usage: s6 set delete names...") ; + + argc = env_len(argv) ; + for (unsigned int i = 0 ; i < argc ; i++) + if (argv[i][0] == '.' || strchr(argv[i], '/') || strchr(argv[i], '\n') + || !strcmp(argv[i], "current")) + strerr_dief(100, "invalid set name: ", argv[i]) ; + + unsigned int m = 0 ; + char const *newargv[7 + argc] ; + char fmtv[UINT_FMT] ; + + newargv[m++] = S6RC_EXTBINPREFIX "s6-rc-set-delete" ; + fmtv[uint_fmt(fmtv, g->verbosity)] = 0 ; + newargv[m++] = "-v" ; + newargv[m++] = fmtv ; + newargv[m++] = "-r" ; + newargv[m++] = g->dirs.repo ; + newargv[m++] = "--" ; + while (argc--) newargv[m++] = *argv++ ; + newargv[m++] = 0 ; + main_exec(newargv) ; +} |
