core/splashy/splash-initscripts
2011-02-21 17:01:44 +00:00

311 lines
6.3 KiB
Plaintext

#
# initscripts-splash functions
#
. /etc/splash.conf
if [ "$SPLASH_DEBUG" = "true" ]; then
if ! [ -d /var/log/splash ]; then
mkdir -p /var/log/splash
fi
if ! [ -f /var/log/splash/splash.log ]; then
mount -ns -t tmpfs -o size=1M tmpfs /var/log/splash
echo "Hello damned debugger" > /var/log/splash/splash.log
fi
fi
debug_log() {
[ "$SPLASH_DEBUG" = "true" ] || return 1
echo "$1" >> /var/log/splash/splash.log
}
splash_enabled_cmdline() { debug_log "$0 ${FUNCNAME}"
local ENABLE=false
local SINGLE=false
for x in $CMDLINE; do
case $x in
single)
SINGLE=true
;;
splash)
ENABLE=true
;;
nosplash)
ENABLE=false
;;
esac
done
[ "${SINGLE}" = "false" ] || return 1
[ "${ENABLE}" = "true" ] || return 1
return 0
}
splash_enabled_config() { debug_log "$0 ${FUNCNAME}"
if [[ -n ${SPLASH} && -f /etc/rc.d/${SPLASH}-functions ]]; then
return 0
else
if [[ -f /etc/rc.d/splashy-functions ]]; then
SPLASH="splashy"
return 0
else
return 1
fi
fi
}
if [ -z "$RUNLEVEL" ]; then
return 0
fi
if ! splash_enabled_cmdline; then
return 0
fi
if ! splash_enabled_config; then
return 0
fi
count_daemons() {
local COUNT=0
for daemon in "${DAEMONS[@]}"; do
if [ "$daemon" = "${daemon#!}" ]; then
((COUNT++))
fi
done
echo ${COUNT}
}
count_stats() {
local COUNT=$(grep -e status -e stat_busy /etc/${1} | grep -c -v \#)
if ! [ "$USELVM" = "yes" -o "$USELVM" = "YES" ]; then
((COUNT--))
fi
if ! [ -f /etc/crypttab -a -n "$(/bin/grep -v ^# /etc/crypttab | /bin/grep -v ^$)" ]; then
((COUNT--))
fi
echo ${COUNT}
}
set_sysinit() { debug_log "$0 ${FUNCNAME}"
SPLASH_PROGRESS_STATS=$(count_stats rc.sysinit)
SPLASH_PROGRESS_DAEMONS=$(count_daemons)
SPLASH_PROGRESS_TOTAL=$(($SPLASH_PROGRESS_STATS+$SPLASH_PROGRESS_DAEMONS))
SPLASH_PROGRESS_COUNT=0
SPLASH_AUTORUN_COMMAND="splash_sysinit"
debug_log "SPLASH_PROGRESS_TOTAL=$SPLASH_PROGRESS_TOTAL SPLASH_AUTORUN_COMMAND=$SPLASH_AUTORUN_COMMAND"
}
set_multi() { debug_log "$0 ${FUNCNAME}"
SPLASH_PROGRESS_STATS=$(count_stats rc.sysinit)
SPLASH_PROGRESS_DAEMONS=$(count_daemons)
SPLASH_PROGRESS_TOTAL=$(($SPLASH_PROGRESS_STATS+$SPLASH_PROGRESS_DAEMONS))
SPLASH_PROGRESS_COUNT=$(($SPLASH_PROGRESS_STATS-1))
SPLASH_AUTORUN_COMMAND="splash_multi"
debug_log "SPLASH_PROGRESS_TOTAL=$SPLASH_PROGRESS_TOTAL SPLASH_AUTORUN_COMMAND=$SPLASH_AUTORUN_COMMAND"
}
set_shutdown() { debug_log "$0 ${FUNCNAME}"
SPLASH_PROGRESS_STATS=$(count_stats rc.shutdown)
SPLASH_RUNNING_DAEMONS=(`/bin/ls /var/run/daemons`)
SPLASH_PROGRESS_DAEMONS=${#SPLASH_RUNNING_DAEMONS[*]}
SPLASH_PROGRESS_TOTAL=$(($SPLASH_PROGRESS_STATS+$SPLASH_PROGRESS_DAEMONS))
SPLASH_PROGRESS_COUNT=0
SPLASH_AUTORUN_COMMAND="splash_shutdown"
debug_log "SPLASH_PROGRESS_TOTAL=$SPLASH_PROGRESS_TOTAL SPLASH_AUTORUN_COMMAND=$SPLASH_AUTORUN_COMMAND"
}
if [ -z "${SPLASH_INIT_DONE}" ]; then
export SPLASH_INIT_DONE="true"
debug_log "$0 Running initscript..."
case "$RUNLEVEL" in
S)
set_sysinit
SPLASH_STATUS_MESSAGE="Booting Chakra GNU/Linux..."
;;
3)
set_multi
SPLASH_STATUS_MESSAGE="Loading daemons..."
;;
5)
set_multi
SPLASH_STATUS_MESSAGE="Loading daemons..."
;;
6)
set_shutdown
SPLASH_STATUS_MESSAGE="Rebooting Chakra GNU/Linux..."
;;
0)
set_shutdown
SPLASH_STATUS_MESSAGE="Shutting down Chakra GNU/Linux..."
;;
esac
fi
. /etc/rc.d/${SPLASH}-functions
# splash functions:
splash_progress() { debug_log "$0 ${FUNCNAME}"
if [ -n "$SPLASH_PROGRESS_COUNT" ]; then
${SPLASH}_progress $SPLASH_PROGRESS_COUNT $SPLASH_PROGRESS_TOTAL
((SPLASH_PROGRESS_COUNT++))
fi
}
splash_print() { debug_log "$0 ${FUNCNAME}"
${SPLASH}_print "${1}"
debug_log "$1"
}
splash_exit() { debug_log "$0 ${FUNCNAME}"
${SPLASH}_exit ${DEFAULT_TTY} ${SWITCH_TTY}
}
splash_sysinit() { debug_log "$0 ${FUNCNAME}"
${SPLASH}_sysinit ${DEFAULT_TTY}
}
splash_multi() { debug_log "$0 ${FUNCNAME}"
${SPLASH}_multi
trap splash_exit 0
splash_progress
}
splash_shutdown() { debug_log "$0 ${FUNCNAME}"
${SPLASH}_shutdown ${DEFAULT_TTY}
if [ -n "`pidof $SPLASH`" ]; then
export KILLALL5_OPTS="-o `pidof $SPLASH`"
fi
}
if [ -n "${SPLASH_AUTORUN_COMMAND}" ]; then
$SPLASH_AUTORUN_COMMAND
splash_print "${SPLASH_STATUS_MESSAGE}"
sleep 0.5
fi
# functions:
deltext() { debug_log "$0 ${FUNCNAME}"
if [ "$CONSOLE_PRINT" == "true" ]; then
printf "${DEL_TEXT}"
else
return 0
fi
}
printhl() { debug_log "$0 ${FUNCNAME}"
if [ "$CONSOLE_PRINT" == "true" ]; then
printf "${C_OTHER}${PREFIX_HL} ${C_H1}${1}${C_CLEAR} \n"
else
return 0
fi
}
printsep() { debug_log "$0 ${FUNCNAME}"
if [ "$CONSOLE_PRINT" == "true" ]; then
printf "\n${C_SEPARATOR} ------------------------------\n"
else
return 0
fi
}
stat_bkgd() { debug_log "$0 ${FUNCNAME}"
if [ "$CONSOLE_PRINT" == "true" ]; then
printf "${C_OTHER}${PREFIX_REG} ${C_MAIN}${1}${C_CLEAR} "
deltext
printf " ${C_OTHER}[${C_BKGD}BKGD${C_OTHER}]${C_CLEAR} "
fi
}
stat_busy() { debug_log "$0 ${FUNCNAME}"
if [ "$CONSOLE_PRINT" == "true" ]; then
printf "${C_OTHER}${PREFIX_REG} ${C_MAIN}${1}${C_CLEAR} "
printf "${SAVE_POSITION}"
deltext
printf " ${C_OTHER}[${C_BUSY}BUSY${C_OTHER}]${C_CLEAR} "
fi
splash_print "${1}"
}
stat_append() { debug_log "$0 ${FUNCNAME}"
if [ "$CONSOLE_PRINT" == "true" ]; then
printf "${RESTORE_POSITION}"
printf "${C_MAIN}${1}${C_CLEAR}"
printf "${SAVE_POSITION}"
else
return 0
fi
}
stat_done() { debug_log "$0 ${FUNCNAME}"
if [ "$CONSOLE_PRINT" == "true" ]; then
deltext
printf " ${C_OTHER}[${C_DONE}DONE${C_OTHER}]${C_CLEAR} \n"
fi
splash_progress
}
stat_fail() { debug_log "$0 ${FUNCNAME}"
if [ "$CONSOLE_PRINT" == "true" ]; then
printf " ${C_OTHER}[${C_FAIL}FAIL${C_OTHER}]${C_CLEAR} \n"
fi
splash_print "Something failed, killing splash..."
sleep 2
splash_exit
}
#daemons:
log_daemon() { debug_log "$0 ${FUNCNAME}"
case $1 in
?dm|slim)
splash_exit
;;
esac
}
start_daemon() { debug_log "$0 ${FUNCNAME}"
log_daemon $1
splash_progress
/etc/rc.d/$1 start
}
start_daemon_bkgd() { debug_log "$0 ${FUNCNAME}"
if [ "$CONSOLE_PRINT" == "true" ]; then
stat_bkgd "Starting $1"
fi
log_daemon $1
(/etc/rc.d/$1 start) &>/dev/null &
splash_progress
}
stop_daemon() { debug_log "$0 ${FUNCNAME}"
/etc/rc.d/$1 stop
for daemon in ${SPLASH_RUNNING_DAEMONS[@]}; do
if [ "$daemon" = "$1" ]; then
splash_progress
break
fi
done
}
# End of file
# vim: set ts=2 noet: