patches/finit: backport silencing of noisy log messages

When an optional service doesn't exist, and the run/task/service stanza
clearly list `nowarn`, we should not log missing/skipping messages. This
patch-set is backported from the upcoming Finit v4.7

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
Joachim Wiberg
2023-12-14 16:40:41 +01:00
committed by Mattias Walström
parent b6f8ec04b8
commit e2e36d6439
2 changed files with 112 additions and 0 deletions
@@ -0,0 +1,78 @@
From cbf96a1de0feee85f8a4014f29f9f3b7558dbff0 Mon Sep 17 00:00:00 2001
From: Joachim Wiberg <troglobit@gmail.com>
Date: Sun, 10 Dec 2023 16:42:29 +0100
Subject: [PATCH 1/2] Silence 'not available' log messages for nowarn
run/task/service
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
---
src/service.c | 4 ++--
src/svc.c | 5 +++--
src/svc.h | 2 +-
3 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/service.c b/src/service.c
index c6ee18d0..1ee54e5a 100644
--- a/src/service.c
+++ b/src/service.c
@@ -1620,7 +1620,7 @@ int service_register(int type, char *cfg, struct rlimit rlimit[], char *file)
strlcat(ident, id, sizeof(ident));
}
- if (ifstmt && !svc_ifthen(1, ident, ifstmt))
+ if (ifstmt && !svc_ifthen(1, ident, ifstmt, nowarn))
return 0;
levels = conf_parse_runlevels(runlevels);
@@ -2027,7 +2027,7 @@ void service_mark_unavail(void)
if (!svc->ifstmt[0])
continue;
- if (!svc_ifthen(1, svc_ident(svc, buf, sizeof(buf)), svc->ifstmt))
+ if (!svc_ifthen(1, svc_ident(svc, buf, sizeof(buf)), svc->ifstmt, svc->nowarn))
svc_mark(svc);
}
}
diff --git a/src/svc.c b/src/svc.c
index 001993de..6bb90049 100644
--- a/src/svc.c
+++ b/src/svc.c
@@ -649,7 +649,7 @@ int svc_enabled(svc_t *svc)
return 0;
}
- if (!svc_ifthen(0, NULL, svc->ifstmt)) {
+ if (!svc_ifthen(0, NULL, svc->ifstmt, svc->nowarn)) {
// dbg("ifthen:%s>", svc->ifstmt[0] ? svc->ifstmt : "<");
return 0;
}
@@ -704,11 +704,12 @@ int svc_conflicts(svc_t *svc)
* @is_conf: Set when called by service_mark_unavail()
* @ident: svc_t identififcation (name:id)
* @stmt: if: statement from .conf file
+ * @quiet: If non-zero, do not warn in syslog
*
* Returns:
* %TRUE(1) yes, use this svc_t, %FALSE(0) prune
*/
-int svc_ifthen(int is_conf, const char *ident, char *stmt)
+int svc_ifthen(int is_conf, const char *ident, char *stmt, int quiet)
{
char stmts[MAX_IDENT_LEN];
int not = 0;
diff --git a/src/svc.h b/src/svc.h
index f94a30e5..520aabcc 100644
--- a/src/svc.h
+++ b/src/svc.h
@@ -249,7 +249,7 @@ void svc_prune_bootstrap (void);
void svc_enable (svc_t *svc);
int svc_enabled (svc_t *svc);
int svc_conflicts (svc_t *svc);
-int svc_ifthen (int is_conf, const char *ident, char *stmt);
+int svc_ifthen (int is_conf, const char *ident, char *stmt, int quiet);
int svc_parse_jobstr (char *str, size_t len, void *user_data, int (*found)(svc_t *, void *), int (not_found)(char *, char *, void *));
--
2.34.1
@@ -0,0 +1,34 @@
From ed88469276c569acd9ef16bcc38cd80afd8dea52 Mon Sep 17 00:00:00 2001
From: Joachim Wiberg <troglobit@gmail.com>
Date: Sun, 10 Dec 2023 17:32:19 +0100
Subject: [PATCH 2/2] Actually silence the log message, missing hunk for
previous change
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
---
src/svc.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/svc.c b/src/svc.c
index 6bb90049..773f0ab6 100644
--- a/src/svc.c
+++ b/src/svc.c
@@ -759,11 +759,13 @@ int svc_ifthen(int is_conf, const char *ident, char *stmt, int quiet)
svc = svc_find_by_str(stmt);
if (not && svc) {
- logit(LOG_NOTICE, "skipping %s, %s already loaded.", ident, svc_ident(svc, NULL, 0));
+ if (!quiet)
+ logit(LOG_NOTICE, "skipping %s, %s already loaded.", ident, svc_ident(svc, NULL, 0));
return 0;
}
if (!not && !svc) {
- logit(LOG_NOTICE, "skipping %s, %s not available.", ident, stmt);
+ if (!quiet)
+ logit(LOG_NOTICE, "skipping %s, %s not available.", ident, stmt);
return 0;
}
}
--
2.34.1