#!/bin/sh . /etc/rc.config size=$(stty size 2>/dev/null || echo 37 93) export RIGHT=${RIGHT-$((${size#* }-10))} export PATH=/sbin:/usr/sbin:/bin:/usr/bin failed() { touch /var/spool/failed } check_status() { status=$? if [ -n "$1" ]; then status=$1 elif [ -e /var/spool/failed ]; then status=1 fi rm -f /var/spool/failed echo -en "\\033[1A\\033[${RIGHT}G" if [ $status = 0 ]; then echo -en "\\033[1;32mdone" else if [ -n "$2" ]; then echo -en "\\033[1;37m$2" else echo -en "\\033[1;31mfailed" touch /var/spool/error fi fi echo -e "\\033[0;39m" echo $(($(cat /var/spool/bootstep 2>/dev/null || echo 0) + 1)) > /var/spool/bootstep echo 0 > /var/spool/subbootstep show_bootstep return $status } show_step() { subbootstep=$(($(cat /var/spool/subbootstep 2>/dev/null || echo 0) + 1)) echo $subbootstep > /var/spool/subbootstep echo -n "$(echo '|/-\' | cut -b $(($subbootstep%4+1)))" show_bootstep } show_bootstep() { bootstep=$(cat /var/spool/bootstep 2>/dev/null || echo 0) subbootstep=$(cat /var/spool/subbootstep 2>/dev/null || echo 0) if [ "$splash" = "silent" ]; then if [ -e /proc/splash ]; then echo "show $((65534 * $bootstep / ${BOOTSTEPS:-100} + ($subbootstep * 100)))" 2>/dev/null > /proc/splash else psplash-write "PROGRESS $((100 * $bootstep / ${BOOTSTEPS:-100} + ($subbootstep/6)))" fi fi } hide_splash() { if [ -e /proc/splash ]; then if echo "verbose" 2>/dev/null >/proc/splash && test -z "$1"; then # scroll one page down yes "" | head -n $(stty -F /dev/tty1 size | cut -d ' ' -f 1) > /dev/tty1 usleep 10000 fi else psplash-write "QUIT" fi } show_splash() { if [ "$splash" = "silent" ]; then if [ -e /proc/splash ]; then show_bootstep echo "silent" 2>/dev/null >/proc/splash else killall -q psplash psplash >/dev/null 2>&1 & fi fi } tr() { export LC_ALL=$LANG export TEXTDOMAIN eval echo -en "$(gettext "$1")" } register_setting() { name=$1 value=$2 description=$3 if [ -z "`grep -e "^$name=" /etc/rc.config`" ]; then if [ -z "$registerSetting" ]; then echo >> /etc/rc.config fi if [ -n "$description" ]; then echo "# $description" >> /etc/rc.config fi echo "$name=\"$value\"" >> /etc/rc.config eval "$name=\"$value\"" fi registerSetting=1 } update_setting() { name=$1 value=$2 description=$3 register_setting "$name" "$value" "$description" sed -i "s|^$name=.*|$name=\"$value\"|g" /etc/rc.config eval "$name=\"$value\"" } register_config() { update_config "$1" "$2" "$3" } update_config() { search=$1 value=$2 file=$3 if grep -qs "$search" $file; then sed -i "s|.*\($search\).*|$value|g" $file else echo -e "$value" >> $file fi } remove_leftover() { # move from static /var/{run,lock} to /run if [[ ! -L /var/lock ]]; then rm -rf /var/lock ln -s /run/lock /var/lock fi if [[ ! -L /var/run ]]; then rm -rf /var/run ln -s /run /var/run fi if [[ ! -L /dev/shm ]]; then rm -rf /dev/shm ln -s /run/shm /dev/shm fi } make_dev() { # create some files test -e /dev/net || mkdir -m 755 /dev/net mknod -m 660 /dev/net/tun c 10 200 mkdir -m 755 /run/lock mkdir -m 755 /run/shm remove_leftover touch /run/utmp chmod 664 /run/utmp chgrp utmp /run/utmp # module_init chown root:mail /var/mail chmod 2755 /var/mail # test -e /dev/pts || mkdir -m 755 /dev/pts # mount /dev/pts } module_init() { # Load modules listed in /etc/modules grep '^[^#]' /etc/modules | while read module args; do [ "$module" ] || continue modprobe $module $args || : done } udevd_restart() { killall udevd 2>/dev/null module_init udevd --daemon udevadm trigger --action=add --type=subsystems udevadm trigger --action=add --type=devices udevadm settle } register_application() { /etc/applications/rc.register add "$1" "$2" "$3" } unregister_application() { /etc/applications/rc.register del "$1" "$2" "$3" }