Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Carlos Santos <casantos@datacom.com.br>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 1/8] busybox: update S01logging
Date: Mon,  9 Jul 2018 00:31:27 -0300	[thread overview]
Message-ID: <20180709033134.22175-2-casantos@datacom.com.br> (raw)
In-Reply-To: <20180709033134.22175-1-casantos@datacom.com.br>

Reformat and fix syslogd/klogd startup script for better quality and
code style:

- Indent with tabs, not spaces.
- Use logic operators && and || to detect/handle errors, which provides
  better readability than nested if/then/else blocks.
- Use brackets for blocking, also improving readability.
- Detect and report start/stop errors (previous version ignored them and
  always reported OK).
- Use a separate function for restart and report the result of the whole
  operation instead of invoking stop, start and report OK twice.
- Implement reload as restart, but with a nickname to report the result
  of the expected operation.
- Support a configuration variable that completely disables the service
  and issues a warning message on any invocation.

The script still has a bug: if klogd fails to load it reports FAIL but
leaves syslogd running. This is partially attenuated because a "stop"
would kill syslogd, fail on klogd and report "FAIL", but still do its
job. We could fix this by means of more detailed logic or splitting the
script but lets leave as is, since it is not a regression compared to
the previous situation.

Signed-off-by: Carlos Santos <casantos@datacom.com.br>
---
 package/busybox/S01logging | 87 ++++++++++++++++++++++++++------------
 1 file changed, 59 insertions(+), 28 deletions(-)

diff --git a/package/busybox/S01logging b/package/busybox/S01logging
index fcb3e7d236..12f20933cc 100644
--- a/package/busybox/S01logging
+++ b/package/busybox/S01logging
@@ -1,40 +1,71 @@
 #!/bin/sh
-#
-# Start logging
-#
 
-SYSLOGD_ARGS=-n
-KLOGD_ARGS=-n
+SYSLOGD_ARGS=""
+KLOGD_ARGS=""
+ENABLED="yes"
+
+# shellcheck source=/dev/null
 [ -r /etc/default/logging ] && . /etc/default/logging
 
+DAEMON="logging"
+
+test "$ENABLED" = "yes" || {
+	printf '%s is disabled\n' "$DAEMON"
+	exit 0
+}
+
+# BusyBox' syslogd and klogd don't create pidfiles, so use "-m" to instruct
+# start-stop-daemon to create them.
 start() {
-	printf "Starting logging: "
-	start-stop-daemon -b -S -q -m -p /var/run/syslogd.pid --exec /sbin/syslogd -- $SYSLOGD_ARGS
-	start-stop-daemon -b -S -q -m -p /var/run/klogd.pid --exec /sbin/klogd -- $KLOGD_ARGS
-	echo "OK"
+	printf 'Starting %s: ' "$DAEMON"
+	{
+		# shellcheck disable=SC2086 # we need the word splitting
+		start-stop-daemon -b -S -q -m -p /var/run/syslogd.pid -x /sbin/syslogd -- -n $SYSLOGD_ARGS && \
+		start-stop-daemon -b -S -q -m -p /var/run/klogd.pid -x /sbin/klogd -- -n $KLOGD_ARGS && \
+		echo "OK"
+	} || {
+		echo "FAIL"
+		exit 1
+	}
 }
 
 stop() {
-	printf "Stopping logging: "
-	start-stop-daemon -K -q -p /var/run/syslogd.pid
-	start-stop-daemon -K -q -p /var/run/klogd.pid
-	echo "OK"
+	printf 'Stopping %s: ' "$DAEMON"
+	{
+		start-stop-daemon -K -q -p /var/run/syslogd.pid && \
+		start-stop-daemon -K -q -p /var/run/klogd.pid && \
+		echo "OK"
+	} || {
+		echo "FAIL"
+		exit 1
+	}
+}
+
+restart() {
+	printf '%s %s: ' "${1:-Restarting}" "$DAEMON"
+	{
+		# shellcheck disable=SC2086 # we need the word splitting
+		start-stop-daemon -K -q -p /var/run/syslogd.pid && \
+		start-stop-daemon -K -q -p /var/run/klogd.pid && \
+		sleep 1 && \
+		start-stop-daemon -b -S -q -m -p /var/run/syslogd.pid -x /sbin/syslogd -- -n $SYSLOGD_ARGS && \
+		start-stop-daemon -b -S -q -m -p /var/run/klogd.pid -x /sbin/klogd -- -n $KLOGD_ARGS && \
+		echo "OK"
+	} || {
+		echo "FAIL"
+		exit 1
+	}
+}
+
+# BusyBox' syslogd and klogd ignore SIGHUP, SIGUSRx, so simply restart.
+reload() {
+	restart "Reloading"
 }
 
 case "$1" in
-  start)
-	start
-	;;
-  stop)
-	stop
-	;;
-  restart|reload)
-	stop
-	start
-	;;
-  *)
-	echo "Usage: $0 {start|stop|restart|reload}"
-	exit 1
+        start|stop|restart|reload)
+                "$1";;
+        *)
+                echo "Usage: $0 {start|stop|restart|reload}"
+                exit 1
 esac
-
-exit $?
-- 
2.17.1

  reply	other threads:[~2018-07-09  3:31 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-09  3:31 [Buildroot] [PATCH 0/8] init scripts: rewrite S01logging Carlos Santos
2018-07-09  3:31 ` Carlos Santos [this message]
2018-07-09  8:33   ` [Buildroot] [PATCH 1/8] busybox: update S01logging Nicolas Cavallari
2018-07-09 21:23     ` Arnout Vandecappelle
2018-07-09 21:35   ` Arnout Vandecappelle
2018-07-09  3:31 ` [Buildroot] [PATCH 2/8] busybox: add logging configuration file Carlos Santos
2018-07-09  3:31 ` [Buildroot] [PATCH 3/8] rsyslog: update S01logging Carlos Santos
2018-07-09  8:03   ` Nicolas Cavallari
2018-07-09 23:31     ` Carlos Santos
2018-07-10  7:58       ` Arnout Vandecappelle
2018-07-09 21:52   ` Arnout Vandecappelle
2018-07-09  3:31 ` [Buildroot] [PATCH 4/8] rsyslog: add logging configuration file Carlos Santos
2018-07-09  3:31 ` [Buildroot] [PATCH 5/8] sysklogd: update S01logging Carlos Santos
2018-07-09 22:00   ` Arnout Vandecappelle
2018-07-09  3:31 ` [Buildroot] [PATCH 6/8] sysklogd: add logging configuration file Carlos Santos
2018-07-09 22:04   ` Arnout Vandecappelle
2018-07-09  3:31 ` [Buildroot] [PATCH 7/8] rsyslog: update S01logging Carlos Santos
2018-07-09 22:05   ` Arnout Vandecappelle
2018-07-09 23:37     ` Carlos Santos
2018-07-09  3:31 ` [Buildroot] [PATCH 8/8] syslog-ng: add logging configuration file Carlos Santos
2018-07-09 21:09 ` [Buildroot] [PATCH 0/8] init scripts: rewrite S01logging Arnout Vandecappelle
2018-07-10 21:04 ` Yann E. MORIN

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180709033134.22175-2-casantos@datacom.com.br \
    --to=casantos@datacom.com.br \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox