From deada0fa89c179aa277f6e2076fd522f0f3aebc7 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Wed, 3 Apr 2024 08:10:35 +0200 Subject: [PATCH] initctl: refactor to use new suffix() function Reduce code duplication and use suffix() function to check and append a suffix to a path. Signed-off-by: Joachim Wiberg --- src/serv.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/serv.c b/src/serv.c index 6344ce35..659a5603 100644 --- a/src/serv.c +++ b/src/serv.c @@ -224,18 +224,11 @@ int serv_list(char *arg) .*/ static char *conf(char *path, size_t len, char *name, int creat) { - char corr[40]; - if (!name || !name[0] || !strcmp(name, "finit") || !strcmp(name, "finit.conf")) { strlcpy(path, finit_conf, len); return path; } - if (!strstr(name, ".conf")) { - snprintf(corr, sizeof(corr), "%s.conf", name); - name = corr; - } - if (!fisdir(finit_rcsd)) return NULL; @@ -243,14 +236,19 @@ static char *conf(char *path, size_t len, char *name, int creat) if (!fisdir(path)) { if (creat && mkdir(path, 0755) && errno != EEXIST) return NULL; - else - paste(path, len, finit_rcsd, name); + paste(path, len, finit_rcsd, name); } else strlcat(path, name, len); + if (suffix(path, len, ".conf")) + return NULL; + /* fall back to static service unless edit/create */ - if (!creat && !fexist(path)) + if (!creat && !fexist(path)) { paste(path, len, finit_rcsd, name); + if (suffix(path, len, ".conf")) + return NULL; + } return path; } @@ -336,14 +334,14 @@ int do_disable(char *arg, int check) return serv_list("available"); } - len = strlen(arg); - serv = alloca(len + 6); + len = strlen(arg) + 7; + serv = alloca(len); if (!serv) ERR(71, "failed allocating stack"); - strlcpy(serv, arg, len + 6); - if (len < 6 || strcmp(&serv[len - 5], ".conf")) - strlcat(serv, ".conf", len + 6); + strlcpy(serv, arg, len); + if (suffix(serv, len, ".conf")) + ERR(71, "failed composing service name (%s)", serv); if (chdir(finit_rcsd)) ERR(72, "failed cd %s", finit_rcsd);