From bd5cf7c9eb1c5108b7e59953f517b026f1b6a2d7 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Tue, 8 Nov 2022 22:37:13 +0100 Subject: [PATCH] Drop confusing leading / in sig2str() and code2str() This was added for the benefit of `initctl status foo`, but we have other users of these functions that don't expect a leading slash. Signed-off-by: Joachim Wiberg --- src/initctl.c | 14 ++++++++++---- src/util.c | 10 ++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/initctl.c b/src/initctl.c index b080bf02..3cfbb637 100644 --- a/src/initctl.c +++ b/src/initctl.c @@ -738,15 +738,21 @@ static char *svc_environ(svc_t *svc, char *buf, size_t len) static char *exit_status(svc_t *svc, char *buf, size_t len) { int rc, sig; + char *str; rc = WEXITSTATUS(svc->status); sig = WTERMSIG(svc->status); - if (WIFEXITED(svc->status)) - snprintf(buf, len, " (code=exited, status=%d%s%s)", rc, code2str(rc), + if (WIFEXITED(svc->status)) { + str = code2str(rc); + snprintf(buf, len, " (code=exited, status=%d%s%s%s)", rc, + str[0] ? "/" : "", str, svc->manual ? ", manual=yes" : ""); - else if (WIFSIGNALED(svc->status)) - snprintf(buf, len, " (code=signal, status=%d%s)", sig, sig2str(sig)); + } + else if (WIFSIGNALED(svc->status)) { + str = sig2str(sig); + snprintf(buf, len, " (code=signal, status=%d%s%s)", sig, str[0] ? "/" : "", str); + } return buf; } diff --git a/src/util.c b/src/util.c index d03fffc6..e90d1999 100644 --- a/src/util.c +++ b/src/util.c @@ -304,13 +304,10 @@ int strtobytes(char *arg) char *sig2str(int signo) { - static char signame[8]; - if (signo < 1 || signo >= (int)NELEMS(signames)) return ""; - snprintf(signame, sizeof(signame), "/%s", signames[signo]); - return signame; + return signames[signo]; } /** @@ -337,13 +334,10 @@ int str2sig(char *sig) char *code2str(int code) { - static char codename[20]; - if (code < 0 || code >= (int)NELEMS(exitcodes)) return ""; - snprintf(codename, sizeof(codename), "/%s", exitcodes[code]); - return codename; + return exitcodes[code]; }