dune_base='/opt/lsts/dune'

if [ -z "$cfg_dune" ]; then
    cfg_dune="$(hostname)"
fi

maybe_upgrade()
{
    if ! [ -f $dune_base/dune-*.tar.bz2 ]; then
        return 1
    fi

    echo -n "* Starting DUNE upgrade... "
    rm -rf $dune_base/.dune-upgrade &&
    mkdir $dune_base/.dune-upgrade &&
    tar -x -C $dune_base/.dune-upgrade -f $dune_base/dune-*.tar.bz2 &&
    cp "$dune_base/etc/"*-saved.ini "$dune_base/.dune-upgrade/"dune-*/etc 2> /dev/null &&
    rm $dune_base/dune-*.tar.bz2 &&
    for dir in $dune_base/.dune-upgrade/dune-*/*; do
        d="$(basename "$dir")"
        rm -rf "$dune_base/$d"
        mv "$dir" $dune_base
    done

    rm -rf $dune_base/.dune-upgrade
    echo "done"
}

start()
{
    echo "$dune_base/log/core.%t" > /proc/sys/kernel/core_pattern
    maybe_upgrade
    if [ -n "$cfg_dune_i18n" ]; then
        export LC_MESSAGES="$cfg_dune_i18n"
    fi

    $dune_base/bin/dune-launcher -m -p Hardware -c "$cfg_dune" < /dev/null > /dev/null 2>&1 &
}

stop()
{
    while [ 1 ]; do
        echo "* Stopping process..."
        killall dune-launcher > /dev/null 2>&1
        killall dune > /dev/null 2>&1

        for r in 0 1 2 3 4 5 6 7 8 9; do
            if [ -n "$(pidof dune)" ]; then
                echo "* Waiting for process to exit ($r)..."
                sleep 1
            else
                echo "* Process not running."
                return 1
            fi
        done

        echo "* Forcing exit..."
        killall -9 dune-launcher > /dev/null 2>&1
        killall -9 dune > /dev/null 2>&1
        sleep 1
    done
}