Fix bug in foregrounding in /etc/init.d/rcS
[openwrt/openwrt.git] / package / base-files / files / etc / init.d / rcS
index 61c1d6dab7ab1e3d11de2d9036b778e3f1ab0da6..3b804320963764f89ace55daebb337217e4f9b17 100755 (executable)
@@ -1,8 +1,26 @@
 #!/bin/sh
 # Copyright (C) 2006 OpenWrt.org
 
-{
+run_scripts() {
        for i in /etc/rc.d/$1*; do
-               $i $2 2>&1
-       done 
-} | logger -s -p 6 -t '' &
+               [ -x $i ] && $i $2 2>&1
+       done | $LOGGER
+}
+
+system_config() {
+       config_get_bool foreground $1 foreground 0
+}
+
+LOGGER="cat"
+[ -x /usr/bin/logger ] && LOGGER="logger -s -p 6 -t sysinit"
+
+. /etc/functions.sh
+
+config_load system
+config_foreach system_config system
+
+if [ "$1" = "S" -a "$foreground" != "1" ]; then
+       run_scripts "$1" "$2" &
+else
+       run_scripts "$1" "$2"
+fi