#!/bin/sh

INITDDIR=/etc/init.d
RCDIR=/var/lib/alterator-hotstandby/rc.d
SERVICE=/sbin/service
CHKCONFIG=/sbin/chkconfig
NAME="${0##*/}"

usage()
{
    cat << USAGE
    Usage: $NAME --add|--del SERVICE [SERVICE ...]
           $NAME --stopall|--startall
           $NAME --offall|--onall <runlevel>
USAGE
}

onoff_services()
{
    if [ -z "$1" ]; then
        usage
        return 1
    fi
    for i in "$RCDIR"/S*; do
        s="${i#*/S[0-9][0-9]}"
        [ -n "$s" ] && "$CHKCONFIG" --level "$1" "$s" "$2"
    done
}

opt="$1"
shift
case "$opt" in
    --add|-a)
    for i in $*; do
        if [ -f "$INITDDIR/$i" ]; then
            priorities="$(sed -n 's;^#[[:blank:]]*chkconfig:[[:blank:]]\+[[:digit:]-]\+[[:blank:]]\+\([[:digit:]]\+\)[[:blank:]]\+\([[:digit:]]\+\).*$;\1|\2;p' "$INITDDIR/$i")"
            if [ -n "$priorities" ]; then
                s="$RCDIR/S${priorities%%|*}$i"
                [ -e "$s" ] || ln -s "$INITDDIR/$i" "$s"
                s="$RCDIR/K${priorities##*|}$i"
                [ -e "$s" ] || ln -s "$INITDDIR/$i" "$s"
            fi
        fi
    done
    ;;
    --del|-d)
    for i in $*; do
        rm -f "$RCDIR"/S*"$i" "$RCDIR"/K*"$i"
    done
    ;;
    --startall)
    for i in "$RCDIR"/S*; do
        "$SERVICE" "${i#*/S[0-9][0-9]}" start >/dev/null 2>&1
    done
    ;;
    --stopall)
    for i in "$RCDIR"/K*; do
        "$SERVICE" "${i#*/K[0-9][0-9]}" stop >/dev/null 2>&1
    done
    ;;
    --offall)
    onoff_services "$1" off
    ;;
    --onall)
    onoff_services "$1" on
    ;;
    *)
    usage
    ;;
esac


