diff mbox series

package/mpd: rebase init script on layout introduced by openssh

Message ID 20240721065737.2744-1-br015@umbiko.net
State Changes Requested
Headers show
Series package/mpd: rebase init script on layout introduced by openssh | expand

Commit Message

Andreas Ziegler July 21, 2024, 6:57 a.m. UTC
Rebase S95mpd on commit 1f743f4 (package/openssh: tidy up init script)

$ utils/check-package package/mpd/S95mpd 
61 lines processed
0 warnings generated

Signed-off-by: Andreas Ziegler <br015@umbiko.net>
---
 package/mpd/S95mpd | 64 +++++++++++++++++++++++++++++++++-------------
 1 file changed, 46 insertions(+), 18 deletions(-)

Comments

Thomas Petazzoni July 21, 2024, 4:23 p.m. UTC | #1
Hello Andreas,

On Sun, 21 Jul 2024 08:57:37 +0200
Andreas Ziegler <br015@umbiko.net> wrote:

> +	printf "Starting %s: " "$DAEMON"
> +	# $DAEMON creates its own $PIDFILE, so do not use --pidfile

Not correct: you still need to use --pidfile. --pidfile does not tell
start-stop-daemon to create the PID file, but it will check whether the
process really created it.

OpenSSH also creates its own PID file, so could you rework to really
follow the S50sshd example?

Thanks a lot!

Thomas
diff mbox series

Patch

diff --git a/package/mpd/S95mpd b/package/mpd/S95mpd
index a258930b3e..8e5bac995a 100644
--- a/package/mpd/S95mpd
+++ b/package/mpd/S95mpd
@@ -1,33 +1,61 @@ 
 #!/bin/sh
+#
+# S95mpd	Starts Music Player daemon.
+#
+# shellcheck disable=SC2317 # functions are called via variable
+
+DAEMON="mpd"
+PIDFILE="/var/run/$DAEMON.pid"
 
 # Sanity checks
-test -f /etc/mpd.conf || exit 0
+[ -f /etc/$DAEMON.conf ] || exit 0
 
 start() {
-	printf "Starting mpd: "
-	start-stop-daemon --start --quiet --background --exec /usr/bin/mpd \
-		&& echo "OK" || echo "FAIL"
+	printf "Starting %s: " "$DAEMON"
+	# $DAEMON creates its own $PIDFILE, so do not use --pidfile
+	start-stop-daemon --start --exec "/usr/bin/$DAEMON"
+	status=$?
+	if [ "$status" -eq 0 ]; then
+		echo "OK"
+	else
+		echo "FAIL"
+	fi
+	return "$status"
 }
 
 stop() {
-	printf "Stopping mpd: "
-	start-stop-daemon --stop --quiet --pidfile /var/run/mpd.pid \
-		&& echo "OK" || echo "FAIL"
+	printf "Stopping %s: " "$DAEMON"
+	start-stop-daemon --stop --pidfile "$PIDFILE" \
+		--exec "/usr/bin/$DAEMON"
+	status=$?
+	if [ "$status" -eq 0 ]; then
+		echo "OK"
+	else
+		echo "FAIL"
+	fi
+	# $DAEMON deletes its PID file on exit, wait for it to be gone
+	while [ -f "$PIDFILE" ]; do
+		sleep 0.1
+	done
+	return "$status"
+}
+
+restart() {
+	stop
+	start
+}
+
+reload() {
+	restart
 }
 
 case "$1" in
-	start)
-		start
-		;;
-	stop)
-		stop
-		;;
-	restart|reload)
-		stop
-		sleep 1
-		start
+	start|stop|reload|restart)
+		"$1"
 		;;
 	*)
-		echo "Usage: $0 {start|stop|restart}"
+		echo "Usage: $0 {start|stop|reload|restart}"
 		exit 1
 esac
+
+exit $?