package/finit: backport batch mode for runparts

Drop annoying escape characters from ixinit when logging to syslog.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
Joachim Wiberg
2024-06-25 17:22:36 +02:00
parent 067c911640
commit 3aead122ee
2 changed files with 65 additions and 1 deletions
@@ -1 +1 @@
task name:ixinit log:tag:ixinit [S] <pid/syslogd> /libexec/finit/runparts -p /libexec/infix/init.d -- Probing system
task name:ixinit log:tag:ixinit [S] <pid/syslogd> /libexec/finit/runparts -bp /libexec/infix/init.d -- Probing system
@@ -0,0 +1,64 @@
From ab62b5282b0461b14464a4a5de49f3b1fa0604fe Mon Sep 17 00:00:00 2001
From: Joachim Wiberg <troglobit@gmail.com>
Date: Sat, 25 May 2024 19:33:21 +0200
Subject: [PATCH 12/12] runparts: add -b (batch) mode for syslog output
Organization: Addiva Elektronik
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
---
src/runparts.c | 24 ++++++++++++++++++------
1 file changed, 18 insertions(+), 6 deletions(-)
diff --git a/src/runparts.c b/src/runparts.c
index 5af2c2d..c4225ce 100644
--- a/src/runparts.c
+++ b/src/runparts.c
@@ -26,18 +26,27 @@
#else
#include <sys/prctl.h>
+const char *active_msg = NULL;
+int interactive = 1;
int debug;
static void print_desc(const char *prefix, const char *msg)
{
- fprintf(stderr, "\e[1m[\e[0m\e[1;33m ⋯ \e[0m\e[1m]\e[0m %s %s", prefix, msg);
+ if (interactive)
+ fprintf(stderr, "\e[1m[\e[0m\e[1;33m ⋯ \e[0m\e[1m]\e[0m %s %s", prefix, msg);
+ else
+ fprintf(stderr, "%s %s ...\n", prefix, msg);
+ active_msg = msg;
}
static void print_result(int rc)
{
- if (rc)
- fputs("\r\e[1m[\e[0m\e[1;31mFAIL\e[0m\e[1m]\e[0m\n", stderr);
- else
- fputs("\r\e[1m[\e[0m\e[1;32m OK \e[0m\e[1m]\e[0m\n", stderr);
+ if (interactive) {
+ if (rc)
+ fputs("\r\e[1m[\e[0m\e[1;31mFAIL\e[0m\e[1m]\e[0m\n", stderr);
+ else
+ fputs("\r\e[1m[\e[0m\e[1;32m OK \e[0m\e[1m]\e[0m\n", stderr);
+ } else
+ fprintf(stderr, "[%s] %s\n", rc ? "FAIL" : " OK ", active_msg ?: "");
}
void sig_unblock(void)
@@ -193,8 +202,11 @@ int main(int argc, char *argv[])
int rc, c, progress = 0, sysv = 0;
char *dir;
- while ((c = getopt(argc, argv, "dh?ps")) != EOF) {
+ while ((c = getopt(argc, argv, "bdh?ps")) != EOF) {
switch(c) {
+ case 'b': /* batch mode */
+ interactive = 0;
+ break;
case 'd':
debug = 1;
break;
--
2.34.1