Sophie

Sophie

distrib > Mandriva > 2010.0 > x86_64 > media > main-release > by-pkgid > 1df9f03b3fdb3533663bd13d46c0b3d0 > files > 49

initscripts-8.99-6mdv2010.0.x86_64.rpm

#! /bin/bash
#
# rc            This file is responsible for starting/stopping
#               services when the runlevel changes.
#
# Original Author:       
#               Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
#

set -m

# check a file to be a correct runlevel script
check_runlevel ()
{
	# Check if the file exists at all.
	[ -x "$1" ] || return 1
	is_ignored_file "$1" && return 1
	return 0
}

# Now find out what the current and what the previous runlevel are.
argv1="$1"
set $(/sbin/runlevel)
runlevel=$2
previous=$1
export runlevel previous

# Get first argument. Set new runlevel to this argument.
if [ "$argv1" != "" ] ; then
 newrunlevel="$argv1"
else
 newrunlevel="$runlevel"
fi

if [ "$previous" = "N" ];then
    if [ -e /var/run/failsafe ];then
        rm -f /var/run/failsafe
	if [ -x /sbin/askrunlevel ];then
		/sbin/askrunlevel --interactive && ASKRUNLEVEL=no
	else
	    init 1 #jump to init 1 if not aksrunlevel.
       fi
    fi
fi

. /etc/init.d/functions

export CONSOLETYPE
do_confirm="no"
if [ -f /var/run/confirm ]; then
	do_confirm="yes"
fi
UPSTART=
[ -x /sbin/initctl ] && UPSTART=yes
# See if we want to be in user confirmation mode
if [ "$previous" = "N" ]; then
	if [ "$do_confirm" = "yes" ]; then
		gprintf "Entering interactive startup\n"
	else
		gprintf "Entering non-interactive startup\n"
	fi
elif [[ "$newrunlevel" = "0" || "$newrunlevel" = "6" ]]; then
    [ -x /etc/rc.d/init.d/dm -a -f /var/lock/subsys/dm ] && /etc/init.d/dm stop 2> /dev/null
    chvt 1
    exec &> /dev/console
fi

# Get first argument. Set new runlevel to this argument.
[ -n "$argv1" ] && runlevel="$argv1"

# Is there an rc directory for this new runlevel?
[ -d /etc/rc$runlevel.d ] || exit 0

# Set language, vc settings once to avoid doing it for every init script
# through functions
if [ -f /etc/sysconfig/i18n -a -z "${NOLOCALE:-}" ] ; then
  . /etc/profile.d/10lang.sh 2>/dev/null
  export LANGSH_SOURCED=1
fi

initsplash
[[ "$newrunlevel" = "0" || "$newrunlevel" = "6" ]] && [ "$splash_mode" = "plymouth" ] && rc_splash start $newrunlevel

nopinit=`grep nopinit /proc/cmdline`

rc_mode=K
export rc_mode

# First, run the KILL scripts.
if [ -z "$nopinit" ]; then
    /sbin/prcsys K /etc/rc$runlevel.d/
else
    for i in /etc/rc$runlevel.d/K* ; do

	# Check if the subsystem is already up.
	subsys=${i#/etc/rc$runlevel.d/K??}
	[ -f /var/lock/subsys/$subsys -o -f /var/lock/subsys/$subsys.init ] || continue
	check_runlevel "$i" || continue

	update_boot_stage "$subsys"
	# Bring the subsystem down.
	[ -n "$UPSTART" ] && initctl emit --quiet stopping $subsys
	action "Stopping %s: " $subsys $i stop
	[ -n "$UPSTART" ] && initctl emit --quiet stopped $subsys
    done
fi

rc_mode=S

if [ -z "$nopinit" ] && [ "$do_confirm" != "yes" -a "$runlevel" != "0" -a "$runlevel" != "1" -a "$runlevel" != "6" ]; then
    /sbin/prcsys S /etc/rc$runlevel.d/
else
    # Now run the START scripts.
    for i in /etc/rc$runlevel.d/S* ; do

	# Check if the subsystem is already up.
	subsys=${i#/etc/rc$runlevel.d/S??}
	[ -f /var/lock/subsys/$subsys ] && continue
	[ -f /var/lock/subsys/$subsys.init ] && continue
	check_runlevel "$i" || continue
		    
	# If we're in confirmation mode, get user confirmation
	if [ "$do_confirm" = "yes" ]; then
		confirm $subsys
		rc=$?
		if [ "$rc" = "1" ]; then
			continue
		elif [ "$rc" = "2" ]; then
			do_confirm="no"
		fi
	fi

	update_boot_stage "$subsys"
	# Bring the subsystem up.
	[ -n "$UPSTART" ] && initctl emit --quiet starting $subsys
	if [ "$subsys" = "halt" -o "$subsys" = "reboot" ]; then
		export LC_ALL=C
		exec $i start
	fi
	action "Starting %s: " $subsys $i start
	[ -n "$UPSTART" ] && initctl emit --quiet started $subsys

   done
fi

if [[ "$newrunlevel" != "0" && "$newrunlevel" != "6" ]]; then
    rc_splash stop
fi
[ "$do_confirm" = "yes" ] && rm -f /var/run/confirm
exit 0