diff options
Diffstat (limited to 'recipes/sysvinit/sysvinit/rcS')
-rwxr-xr-x | recipes/sysvinit/sysvinit/rcS | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/recipes/sysvinit/sysvinit/rcS b/recipes/sysvinit/sysvinit/rcS new file mode 100755 index 0000000000..e7a7e617d0 --- /dev/null +++ b/recipes/sysvinit/sysvinit/rcS @@ -0,0 +1,110 @@ +#!/bin/sh +# +# rcS Call all S??* scripts in /etc/rcS.d in +# numerical/alphabetical order. +# +# Version: @(#)/etc/init.d/rcS 2.76 19-Apr-1999 miquels@cistron.nl +# + +PATH=/sbin:/bin:/usr/sbin:/usr/bin +runlevel=S +prevlevel=N +umask 022 +export PATH runlevel prevlevel + +# Make sure proc is mounted +# +[ -d "/proc/1" ] || mount /proc + +# +# See if system needs to be setup. This is ONLY meant to +# be used for the initial setup after a fresh installation! +# +if [ -x /sbin/unconfigured.sh ] +then + /sbin/unconfigured.sh +fi + +# +# Source defaults. +# +. /etc/default/rcS + +# +# Trap CTRL-C &c only in this shell so we can interrupt subprocesses. +# +trap ":" INT QUIT TSTP + +# +# Do we have /proc/progress and set VERBOSE to "no" ? +# If so, calculate the number of scripts and the incremental step +# +if [ "$VERBOSE" = no ]; then + if [ -e /proc/progress ]; then + set `ls -1 /etc/rc$runlevel.d/S* | wc` + numscripts=$1 + PROGRESS_incstep=`expr 90 / $1` + PROGRESS_value=10 + PROGRESS=yes + export PROGRESS_value PROGRESS_incstep + fi +fi +export VERBOSE PROGRESS + +# +# Call all parts in order. +# +for i in /etc/rcS.d/S??* +do + # Ignore dangling symlinks for now. + [ ! -f "$i" ] && continue + + # Handle verbosity + [ "$VERBOSE" = very ] && echo "INIT: Running $i..." + if [ "$PROGRESS" = yes ]; then + export PROGRESS_value=`expr $PROGRESS_value + $PROGRESS_incstep` + echo "$PROGRESS_value Starting $i..." >/proc/progress + fi + + case "$i" in + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + set start + . $i + ) + ;; + *) + # No sh extension, so fork subprocess. + $i start + ;; + esac + + # + # Report status based on result code + # + result=$? + if [ "$PROGRESS" = yes ]; then + if [ "$result" = 0 ]; then + echo "=s" >/proc/progress + else + echo "=f" >/proc/progress + fi + fi +done + +# +# For compatibility, run the files in /etc/rc.boot too. +# +[ -d /etc/rc.boot ] && run-parts /etc/rc.boot + +# +# Finish setup if needed. The comment above about +# /sbin/unconfigured.sh applies here as well! +# +if [ -x /sbin/setup.sh ] +then + /sbin/setup.sh +fi + |