aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/s6-frontend/deps-exe/s6-frontend1
-rw-r--r--src/s6-frontend/live_startstop.c2
-rw-r--r--src/s6-frontend/repository.c1
-rw-r--r--src/s6-frontend/repository_check.c2
-rw-r--r--src/s6-frontend/s6-frontend-internal.h1
-rw-r--r--src/s6-frontend/set.c1
-rw-r--r--src/s6-frontend/set_check.c2
-rw-r--r--src/s6-frontend/set_delete.c38
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) ;
+}