summarylogtreecommitdiffstats
path: root/splash-initscripts
diff options
context:
space:
mode:
Diffstat (limited to 'splash-initscripts')
-rw-r--r--splash-initscripts310
1 files changed, 310 insertions, 0 deletions
diff --git a/splash-initscripts b/splash-initscripts
new file mode 100644
index 000000000000..a3e49a4a9216
--- /dev/null
+++ b/splash-initscripts
@@ -0,0 +1,310 @@
+#
+# 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 Arch Linux..."
+ ;;
+ 3)
+ set_multi
+ SPLASH_STATUS_MESSAGE="Loading daemons..."
+ ;;
+ 5)
+ set_multi
+ SPLASH_STATUS_MESSAGE="Loading daemons..."
+ ;;
+ 6)
+ set_shutdown
+ SPLASH_STATUS_MESSAGE="Rebooting Arch Linux..."
+ ;;
+ 0)
+ set_shutdown
+ SPLASH_STATUS_MESSAGE="Shutting down Arch 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: