#!/bin/sh
#
# License: Copyright 2019 SpinetiX. This file is licensed
#          under the terms of the GNU General Public License version 2.
#          This program is licensed "as is" without any warranty of any
#          kind, whether express or implied.
#
# Copyright 1999-2003 MontaVista Software, Inc.
# Copyright 2002, 2003, 2004 Sony Corporation
# Copyright 2002, 2003, 2004 Matsushita Electric Industrial Co., Ltd.
#
### BEGIN INIT INFO
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 5
# Default-Stop:
# Short-Description: Starting/stopping PulseAudio daemon in system mode
# Description: Starting/stopping PulseAudio daemon in system mode
### END INIT INFO

# Init script information
NAME=pulseaudio
DESC="PulseAudio"

# Individual Daemon information
DAEMON=/usr/bin/pulseaudio
ARGS="--daemonize --system --disallow-exit --log-target=syslog"
BASENAME=pulseaudio

# Load init script configuration
[ -f /etc/default/$NAME ] && . /etc/default/$NAME

# Source the init script functions
. /etc/init.d/functions

# Verify daemons are installed
if [ ! -x $DAEMON -a "$1" != "stop" ]; then
    echo -n "Not starting $DESC $NAME, $DAEMON not installed"
    warning
    echo
    exit 0
fi

start() {
    local RET

    echo -n "Starting $DESC: "

    echo -n "$NAME "

    start-stop-daemon --start -u pulse -n pulseaudio -p /run/pulse/pid -x $DAEMON -- $ARGS
    RET=$?
    if [ $RET -eq 0 ]; then
        success; echo
    else
        failure; echo
        return 1
    fi
        
    return 0
}

stop () {
    local RET

    echo -n "Stopping $DESC: $NAME "
    start-stop-daemon --stop -u pulse -n pulseaudio -p /run/pulse/pid -q
    RET=$?
    if [ $RET -eq 0 ]; then
        success; echo
    else
        failure; echo
        return 1
    fi

    return 0
}

restart() {
    local RET

    echo "Restarting $DESC..."
    stop
    start
    RET=$?

    return $RET
}

condrestart() {
    local RET

    pidofproc $BASENAME >/dev/null
    RET=$?
    if [ $RET -eq 0 ]; then
        restart
        RET=$?
    else
        RET=1
    fi

    return $RET
}

reload() {
    local RET pid

    # spxiot has no support for HUP, so just restart
    condrestart
}

forcereload() {
    local RET

    reload
    RET=$?
    if [ $RET -ne 0 ]; then
        restart
        RET=$?
    fi

    return $RET
}

parse() {
    case "$1" in
        start)
            start
            return $?
            ;;
        stop)
            stop
            return $?
            ;;
        restart)
            restart
            return $?
            ;;
        cnodrestart|try-restart)
            condrestart
            return $?
            ;;
        reload)
            reload
            return $?
            ;;
        force-reload)
            forcereload
            return $?
            ;;
        status)
            status $BASENAME
            return $?
            ;;
        *)
            echo "Usage: $NAME " \
                "{start|stop|restart|condrestart|reload|force-reload|status}" >&2
            ;;
    esac

    return 1
}

parse $@
