#!/bin/sh
#
# cpp-example        C++ Example Service
#
# chkconfig: 35 99 99
# description: C++ Example Service daemon
#

USER="cmake-example"
DAEMON="cmake-example"
DAEMON_PATH="/usr/bin/$DAEMON"
DAEMON_ARGS="--endless"
PIDFILE="/var/run/$DAEMON.pid"
LOCK_FILE="/var/lock/subsys/$DAEMON"

start() {
    if [ -f $PIDFILE ]; then
        echo "$DAEMON is already running."
        return 1
    fi

    echo -n "Starting $DAEMON: "
    start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \
        --background --chuid $USER --exec $DAEMON_PATH -- $DAEMON_ARGS
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then
        echo "OK"
        touch $LOCK_FILE
    else
        echo "FAILED"
    fi
    return $RETVAL
}

stop() {
    echo -n "Stopping $DAEMON: "
    start-stop-daemon --stop --quiet --pidfile $PIDFILE
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then
        echo "OK"
        rm -f $PIDFILE $LOCK_FILE
    else
        echo "FAILED"
    fi
    return $RETVAL
}

status() {
    if [ -f $PIDFILE ]; then
        PID=$(cat $PIDFILE)
        if ps -p $PID > /dev/null 2>&1; then
            echo "$DAEMON is running (PID: $PID)"
            return 0
        else
            echo "$DAEMON is not running (stale PID file)"
            return 1
        fi
    else
        echo "$DAEMON is not running"
        return 1
    fi
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        status
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac

exit $?
