]> git.pld-linux.org Git - projects/rc-scripts.git/blobdiff - rc.d/rc
usbfs is deprecated for some time.
[projects/rc-scripts.git] / rc.d / rc
diff --git a/rc.d/rc b/rc.d/rc
index 9033116c5920ea0fdec068a5131f72e6634eb28c..7d7297f6877b136a684b8d709cf01e3b6b8aa197 100755 (executable)
--- a/rc.d/rc
+++ b/rc.d/rc
@@ -1,15 +1,14 @@
 #!/bin/sh
 #
-# rc            This file is responsible for starting/stopping
-#               services when the runlevel changes. It is also
-#               responsible for the very first setup of basic
-#               things, such as setting the hostname.
+# rc           This file is responsible for starting/stopping
+#              services when the runlevel changes. It is also
+#              responsible for the very first setup of basic
+#              things, such as setting the hostname.
 #
 # $Id$
 #
-# Original Author:       
-#               Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
-# Changes:      Arkadiusz Mi¶kiewicz <misiek@pld-linux.org>
+# Original Author:
+#              Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
 #
 
 # avoid being interrupted by child or keyboard
@@ -17,60 +16,61 @@ trap ":" INT QUIT TSTP
 
 # Save argument
 argv1="$1"
+argv2="$2"
 
 # Get terminal size of standard input of the system console
 [ -z "$CONSOLE" ] && CONSOLE=/dev/console
-set -- $(stty size < $CONSOLE)
-  LINES=$1
-COLUMNS=$2
+if [ -c $CONSOLE ]; then
+       set -- $(stty size < $CONSOLE 2>/dev/null)
+       LINES=$1
+       COLUMNS=$2
+else
+       LINES=
+       COLUMNS=
+fi
 export LINES COLUMNS CONSOLE
-  
+
 # NLS
 if [ -f /etc/sysconfig/i18n ]; then
-        . /etc/sysconfig/i18n
-        [ -n "$LANG" ] && export LANG || unset LANG
-        [ -n "$LC_CTYPE" ] && export LC_CTYPE || unset LC_CTYPE
-        [ -n "$LC_COLLATE" ] && export LC_COLLATE || unset LC_COLLATE
-        [ -n "$LC_MESSAGES" ] && export LC_MESSAGES || unset LC_MESSAGES
-        [ -n "$LC_NUMERIC" ] && export LC_NUMERIC || unset LC_NUMERIC
-        [ -n "$LC_MONETARY" ] && export LC_MONETARY || unset LC_MONETARY
-        [ -n "$LC_TIME" ] && export LC_TIME || unset LC_TIME
-        [ -n "$LC_ALL" ] && export LC_ALL || unset LC_ALL
-        [ -n "$LANGUAGE" ] && export LANGUAGE || unset LANGUAGE
-        [ -n "$LINGUAS" ] && export LINGUAS || unset LINGUAS
+       . /etc/sysconfig/i18n
+       [ -n "$LANG" ] && export LANG || unset LANG
+       [ -n "$LC_CTYPE" ] && export LC_CTYPE || unset LC_CTYPE
+       [ -n "$LC_COLLATE" ] && export LC_COLLATE || unset LC_COLLATE
+       [ -n "$LC_MESSAGES" ] && export LC_MESSAGES || unset LC_MESSAGES
+       [ -n "$LC_NUMERIC" ] && export LC_NUMERIC || unset LC_NUMERIC
+       [ -n "$LC_MONETARY" ] && export LC_MONETARY || unset LC_MONETARY
+       [ -n "$LC_TIME" ] && export LC_TIME || unset LC_TIME
+       [ -n "$LC_ALL" ] && export LC_ALL || unset LC_ALL
+       [ -n "$LANGUAGE" ] && export LANGUAGE || unset LANGUAGE
+       [ -n "$LINGUAS" ] && export LINGUAS || unset LINGUAS
 fi
 
 # Source function library.
 . /etc/rc.d/init.d/functions
 
-# Read system config data.
-if [ -f /etc/sysconfig/system ]; then
-       . /etc/sysconfig/system
-else
-       RUN_SULOGIN_ON_ERR=yes
-       RUN_ISAPNP=yes
-       PANIC_REBOOT_TIME=0
-       DELAY_LOGIN=yes
-       CLEAN_TMP=no
-       CONSOLE_LOGLEVEL=1
-       SET_SLINKS=yes
-       RUN_LDCONFIG=yes
+if [ "$argv2" != "chroot" ]; then
+       # Now find out what the current and what the previous runlevel are.
+       set $(runlevel)
+       runlevel=$2
+       previous=$1
+       export runlevel previous
 fi
 
-# Now find out what the current and what the previous runlevel are.
-set $(/sbin/runlevel)
-runlevel=$2
-previous=$1
-export runlevel previous
+# Get first argument. Set new runlevel to this argument.
+[ -n "$argv1" ] && runlevel="$argv1"
 
 # if previous runlevel = current runlevel do nothing
 [ "$runlevel" = "$previous" ] && exit 0
 
+# Tell linuxconf what runlevel we are in
+[ -d /var/run -a -w /var/run ] && echo "/etc/rc.d/rc$runlevel.d" > /var/run/runlevel.dir
+
 # if runlevel is 0 (halt) or 6 (reboot) change to first
-# virtual console, and send messages to /dev/console 
-# (it can be serial console too) 
+# virtual console, and send messages to /dev/console
+# (it can be serial console too)
 if [ "$COLUMNS" -gt 0 ]; then
-       if [ "$runlevel" = "0" -o "$runlevel" = "6" ]; then
+       if [ "$argv2" != "chroot" ] && ! is_yes "$VSERVER" && \
+               [ "$runlevel" = "0" -o "$runlevel" = "6" ]; then
                CONSOLE=/dev/tty1
                [ -x /usr/bin/chvt ] && /usr/bin/chvt 1 && echo > $CONSOLE
                exec 0<> /dev/console 1>&0 2>&0
@@ -83,7 +83,7 @@ fi
 
 # See if we want to be in user confirmation mode
 if [ "$previous" = "N" ]; then
-       if grep -qi confirm /proc/cmdline >/dev/null \
+       if ! is_yes "$VSERVER" && grep -qi confirm /proc/cmdline >/dev/null 2>/dev/null \
                || [ -f /var/run/confirm ]; then
                rm -f /var/run/confirm
                CONFIRM="yes"
@@ -95,41 +95,67 @@ if [ "$previous" = "N" ]; then
 fi
 
 # calculate bootsplash variables
-sscripts=$(ls -1 /etc/rc.d/rc${runlevel}.d/ 2> /dev/null | grep -c "^S")
+sscripts=0
+for i in /etc/rc.d/rc$runlevel.d/S*; do
+       [ ! -f $i ] && continue
+       [ "${1%.rpmsave}" != "${1}" ] && continue
+       [ "${1%.rpmorig}" != "${1}" ] && continue
+       [ "${1%.rpmnew}" != "${1}" ] && continue
+       subsys=${i#/etc/rc.d/rc$runlevel.d/S??}
+       [ -f /var/lock/subsys/$subsys ] && \
+               [ ! -f /var/lock/subsys/${subsys}.init ] && continue
+       sscripts=$(( sscripts + 1 ))
+done
 export sscripts
 
 if test "$previous" != "N" ; then
-       kscripts=$(ls -1 /etc/rc.d/rc${previous}.d/ 2> /dev/null | grep -c "^K")
+       kscripts=0
+       for i in /etc/rc.d/rc$runlevel.d/K*; do
+               [ ! -f $i ] && continue
+               [ "${1%.rpmsave}" != "${1}" ] && continue
+               [ "${1%.rpmorig}" != "${1}" ] && continue
+               [ "${1%.rpmnew}" != "${1}" ] && continue
+               subsys=${i#/etc/rc.d/rc$runlevel.d/K??}
+               [ ! -f /var/lock/subsys/$subsys ] && \
+               [ ! -f /var/lock/subsys/${subsys}.init ] && continue
+               kscripts=$(( kscripts + 1 ))
+       done
        export kscripts
 fi
 
-if test "$revious" == "N" -a "$runlevel" == "5" ; then
+if test "$previous" = "N" -a "$runlevel" = "5" ; then
        export progress=16
        sscripts=$(( $sscripts + 15 ))
 else
        export progress=0
 fi
 
+if is_yes "$VSERVER"; then
+       # if runlevel is not 0 (halt) or 6 (reboot) run rc.sysinit
+       # BUT only if rc is run standalone (not run by init, as init will run rc.sysinit)
+       if [ "$previous" != "N" -a "$runlevel" != "0" -a "$runlevel" != "6" ]; then
+               /etc/rc.d/rc.sysinit $runlevel
+       fi
+fi
 
 # set onlcr to avoid staircase effect and do not lock scrolling
-stty onlcr -ixon 0>&1
-
-# Get first argument. Set new runlevel to this argument.
-[ -n "$1" ] && runlevel="$argv1"
-
-# Tell linuxconf what runlevel we are in
-[ -d /var/run -a -w /var/run ] && echo "/etc/rc.d/rc$runlevel.d" > /var/run/runlevel.dir
-
+stty onlcr -ixon 0>&1 2>/dev/null
 
 # Say something ;)
-af2=$(termput setaf 2)
-af6=$(termput setaf 6)
-af7=$(termput setaf 7)
+af2=$(termput setaf $CRESMAN)
+af6=$(termput setaf $CBRACKETS)
+af7=$(termput op)
 text="$(termput op)$(nls '%sResource Manager: %sEntering runlevel number' "$af2" "$af7")"
 text_size="$(nls '%sResource Manager: %sEntering runlevel number' "" "")"
 resp_size="$(nls 'DONE')"
-echo -n "$text"
-awk "BEGIN { for (j=length(\"$text_size\"); j<$INIT_COL+${#resp_size}-${#runlevel}; j++) printf \".\" }"
+{
+       local _len=${#text_size}
+       local _last_col=$(($INIT_COL+${#resp_size}-${#runlevel}))
+       while [ $((_len++)) -lt $_last_col ]; do
+               text="$text."
+       done
+       echo -n "$text"
+}
 echo "${af6}[${af2} $runlevel ${af6}]${af7}"
 
 # Is there an rc directory for this new runlevel?
@@ -147,10 +173,10 @@ if [ -d /etc/rc.d/rc$runlevel.d ]; then
                # Check if the subsystem is already up.
                subsys=${i#/etc/rc.d/rc$runlevel.d/K??}
                [ ! -f /var/lock/subsys/$subsys ] && \
-                   [ ! -f /var/lock/subsys/${subsys}.init ] && continue
+               [ ! -f /var/lock/subsys/${subsys}.init ] && continue
 
                rc_splash "$i stop"
-               
+
                # Bring the subsystem down.
                $i stop
        done
@@ -168,22 +194,25 @@ if [ -d /etc/rc.d/rc$runlevel.d ]; then
                # Check if the subsystem is already up.
                subsys=${i#/etc/rc.d/rc$runlevel.d/S??}
                [ -f /var/lock/subsys/$subsys ] || \
-                   [ -f /var/lock/subsys/${subsys}.init ] && continue
+               [ -f /var/lock/subsys/${subsys}.init ] && continue
+
+               # Check if it is managed by upstart
+               use_upstart && [ -f /etc/init/${subsys}.conf ] && continue
 
                # If we're in confirmation mode, get user confirmation
-               [ -n "$CONFIRM" ]  &&
+               [ -n "$CONFIRM" ] &&
                {
                        confirm $subsys
                        case $? in
                          0)
                                :
-                         ;;
+                               ;;
                          2)
                                CONFIRM=
-                         ;;
+                               ;;
                          *)
                                continue
-                         ;;
+                               ;;
                        esac
                }
 
@@ -211,7 +240,11 @@ if [ "$runlevel" = "0" ] || [ "$runlevel" = "6" ]; then
        unset LC_ALL
        TMPDIR=/dev/null
        export TMPDIR
-       exec /etc/rc.d/rc.shutdown $runlevel
+       if [ "$argv2" != "chroot" ]; then
+               exec /etc/rc.d/rc.shutdown $runlevel $previous
+       else
+               exit 0
+       fi
 else
        if is_yes "$RUN_LDCONFIG" || [ ! -f /etc/ld.so.cache ] ; then
                if [ -x /sbin/ldconfig ]; then
@@ -225,12 +258,16 @@ rc_splash "master"
 # Say something ;)
 text="$(nls '%sResource Manager: %sRunlevel has been reached' "$af2" "$af7")"
 text_size="$(nls '%sResource Manager: %sRunlevel has been reached' "" "")"
+
+_len=${#text_size}
+_last_col=$(($INIT_COL+${#resp_size}-${#runlevel}))
+while [ $((_len++)) -lt $_last_col ]; do
+       text="$text."
+done
 echo -n "$text"
-awk "BEGIN { for (j=length(\"$text_size\"); j<$INIT_COL+${#resp_size}-${#runlevel}; j++) printf \".\" }"
+unset _len _last_col
+
 echo "${af6}[${af2} $runlevel ${af6}]${af7}"
 unset af2 af6 af7
 
 exit 0
-
-# This must be last line !
-# vi:syntax=sh:tw=78:ts=8:sw=4
This page took 0.042368 seconds and 4 git commands to generate.