From 001e859a97654566728acc4b3b13762fbc766d4d Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Fri, 26 Feb 2021 12:47:47 +0100 Subject: [PATCH] initctl: add create command, no template yet Signed-off-by: Joachim Wiberg --- src/initctl.c | 4 +++- src/serv.c | 20 +++++++++++++++++--- src/serv.h | 1 + 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/initctl.c b/src/initctl.c index 1ade2b0b..59d86fb5 100644 --- a/src/initctl.c +++ b/src/initctl.c @@ -655,7 +655,8 @@ static int usage(int rc) " help This help text\n" " version Show Finit version\n" "\n" - " ls|list List all .conf in /etc/finit.d/\n" + " ls | list List all .conf in /etc/finit.d/\n" + " create Create .conf in /etc/finit.d/available/\n" " enable Enable .conf in /etc/finit.d/available/\n" " disable Disable .conf in /etc/finit.d/[enabled/]\n" " touch Mark .conf in /etc/finit.d/ for reload\n" @@ -712,6 +713,7 @@ int main(int argc, char *argv[]) { "disable", serv_disable }, { "touch", serv_touch }, { "edit", serv_edit }, + { "create", serv_creat }, { "reload", do_reload }, { "cond", do_cond }, diff --git a/src/serv.c b/src/serv.c index a78ca674..a07dd7e2 100644 --- a/src/serv.c +++ b/src/serv.c @@ -200,7 +200,7 @@ int serv_touch(char *arg) return 0; } -int serv_edit(char *arg) +static int do_edit(char *arg, int creat) { char *editor[] = { "sensible-editor", @@ -225,8 +225,12 @@ int serv_edit(char *arg) err(1, "Failed creating %s/available directory", FINIT_RCSD); snprintf(path, sizeof(path), "%s/%s", available, arg); - if (!fexist(path)) - return serv_list(NULL); + if (!fexist(path)) { + if (!creat) + return serv_list(NULL); + + /* XXX: fill with template/commented-out examples */ + } for (size_t i = 0; i < NELEMS(editor); i++) { if (systemf("%s %s 2>/dev/null", editor[i], path)) @@ -237,6 +241,16 @@ int serv_edit(char *arg) return 1; } +int serv_edit(char *arg) +{ + return do_edit(arg, 0); +} + +int serv_creat(char *arg) +{ + return do_edit(arg, 1); +} + /** * Local Variables: * indent-tabs-mode: t diff --git a/src/serv.h b/src/serv.h index f5e41753..be9febd4 100644 --- a/src/serv.h +++ b/src/serv.h @@ -29,6 +29,7 @@ int serv_enable (char *arg); int serv_disable (char *arg); int serv_touch (char *arg); int serv_edit (char *arg); +int serv_creat (char *arg); #endif /* FINIT_SERV_H_ */