From f9532d11ba68bf7484b58ba79e1a2d2249c96db3 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Sat, 27 Feb 2021 19:27:58 +0100 Subject: [PATCH] initctl: only show enable/disable commands on compat systems The enable/disable commands require either both the available/ and enabled/ subdirectories in /etc/finit.d, or at least available/ Signed-off-by: Joachim Wiberg --- src/initctl.c | 52 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/src/initctl.c b/src/initctl.c index 4b15a959..87192067 100644 --- a/src/initctl.c +++ b/src/initctl.c @@ -639,8 +639,27 @@ static int transform(char *nm) return 0; } +static int has_conf(char *path, size_t len, char *name) +{ + paste(path, len, FINIT_RCSD, name); + if (!fisdir(path)) { + strlcpy(path, FINIT_RCSD, len); + return 0; + } + + return 1; +} + static int usage(int rc) { + int has_rcsd = fisdir(FINIT_RCSD); + int has_ena; + char avail[256]; + char ena[256]; + + has_conf(avail, sizeof(avail), "available"); + has_ena = has_conf(ena, sizeof(ena), "enabled"); + fprintf(stderr, "Usage: %s [OPTIONS] [COMMAND]\n" "\n" @@ -656,15 +675,30 @@ static int usage(int rc) " debug Toggle Finit (daemon) debug\n" " help This help text\n" " version Show Finit version\n" - "\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" - " reload Reload *.conf in /etc/finit.d/ (activates changes)\n" + "\n", prognm); + + if (has_rcsd) + fprintf(stderr, + " ls | list List all .conf in " FINIT_RCSD "\n" + " create Create .conf in %s\n" + " edit Edit .conf in %s\n" + " touch Change .conf in %s\n", + avail, avail, avail); + if (has_ena) + fprintf(stderr, + " enable Enable .conf in %s\n", avail); + if (has_ena) + fprintf(stderr, + " disable Disable .conf in %s\n", ena); + if (has_rcsd) + fprintf(stderr, + " reload Reload *.conf in " FINIT_RCSD " (activate changes)\n"); + else + fprintf(stderr, + " reload Reload " FINIT_CONF " (activate changes)\n"); + + fprintf(stderr, // " reload [:ID] Reload (SIGHUP) service by job# or name\n" - " edit Edit .conf in /etc/finit.d/available/\n" "\n" " cond show Show condition status\n" " cond dump Dump all conditions and their status\n" @@ -682,7 +716,7 @@ static int usage(int rc) " reboot Reboot system\n" " halt Halt system\n" " poweroff Halt and power off system\n" - " suspend Suspend system\n", prognm); + " suspend Suspend system\n"); if (has_utmp()) fprintf(stderr,