![Adam Duskett](/assets/img/avatar_default.png)
Currently, the sysv-rcs script has two issues: - The return code of each RCS script is not checked. - The output does not match the formatting of the other openrc init scripts. Modify the script in the following ways to fix both issues: - Remove the "einfo "Starting sysv rc scripts"" at the top of the start function in favor of "einfo "Starting $i" in the loop itself. - Add a "> /dev/null" to the end of $i start; this suppresses stdout while still allowing for stderr messages to print to the terminal. - add an "eend $? to both the start and stop functions, this allows for openrc to show if an RCS script returned 0 or not. The following is the startup output of OpenRC on a minimal system with S01syslogd modified to exit with a return code 1 for testing purposes: Before: * Adding static routes ... [ ok ] Starting default runlevel * Starting sysv rc scripts Starting syslogd: OK Starting klogd: OK Running sysctl: OK After: * Adding static routes ... [ ok ] Starting default runlevel * Starting /etc/init.d/S01syslogd ... [ !! ] * Starting /etc/init.d/S02klogd ... [ ok ] * Starting /etc/init.d/S02sysctl ... [ ok ] Signed-off-by: Adam Duskett <aduskett@greenlots.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
28 lines
518 B
Plaintext
Executable file
28 lines
518 B
Plaintext
Executable file
#!/sbin/openrc-run
|
|
|
|
description="start or stop sysv rc[S,K] scripts"
|
|
|
|
depend() {
|
|
after local
|
|
}
|
|
|
|
start() {
|
|
for i in /etc/init.d/S??*; do
|
|
# Ignore dangling symlinks (if any).
|
|
[ -e "$i" ] || continue
|
|
einfo "Starting $i"
|
|
$i start > /dev/null
|
|
eend $?
|
|
done
|
|
}
|
|
|
|
stop() {
|
|
for i in $(ls -r /etc/init.d/S??*); do
|
|
# Ignore dangling symlinks (if any).
|
|
[ -e "$i" ] || continue
|
|
einfo "Stopping $i"
|
|
$i stop > /dev/null
|
|
eend $?
|
|
done
|
|
}
|