#!/bin/sh +e

LOCKDIR=$(mountpoint -q /run && echo /run/splash/splash.lock || echo /var/run/splash/splash.lock)

cleanup_lock()
{
    rmdir $LOCKDIR
}

#trap '' 2 20
trap "cleanup_lock || :" EXIT TERM

[ "$(id -u)" -eq 0 ] || sdc=sudo

d=''

$sdc mkdir -p -m 777 /run/splash
while ! mkdir $LOCKDIR 2> /dev/null ; do sleep 0.5; done

if [ "$1" = "--exit" -o "$1" = '-e' ]; then
    /usr/local/bin/splash-send -e
    while pgrep splash-daemon >/dev/null; do sleep 0.2; done
    $sdc rm -fr /run/splash/splash.pid
    $sdc /sbin/initctl emit -n splash ACTION=stop
    exit 0
fi
[ -e /run/nosplash -a "$1" != '--force' ] && exit 0

renice -n +3 -p $$ 
if ! $sdc /bin/fuser -s 9999/tcp; then
    d=$(pwd)
    cd /etc/default
    $sdc /usr/local/sbin/splash-daemon
    cd /
fi

while test $# -gt 0; do
    shi=2
    if echo "$1" | grep -q '\='; then
        c=$(echo "$1" | awk -F'=' '{print $1}')
        p=$(echo "$1" | awk -F'=' '{print $2}')
        shi=1
    else
        c="$1"; p="$2"
        [ -z "$p" ] && shi=1
    fi

    case $c in
        '--msgtxt'|'-m')
            cmdline="$cmdline -m $(echo $p | sed 's/ /\\ /g')"
            shift $shi
            ;;
        '--infinitebar'|'-i')
            cmdline="$cmdline -i"
            shift
            ;;
        '--percentage'|'-p')
            [ -z "$p" ] && p=100
            cmdline="$cmdline -p $p"
            shift $shi
            ;;
        '--black'|'-b'|'--blank') 
            cmdline="$cmdline -b"
            shift
            ;;
        *)
            shift
            ;;
    esac

done

$sdc /sbin/initctl emit splash ACTION=start
eval /usr/local/bin/splash-send $cmdline
[ -n "$d" ] && cd "$d"

exit 0

