#!/bin/sh

GA_BIN=/usr/bin/qemu-ga

GA_PIDFILE=/var/run/qemu-ga.pid

PIDS=$(pidofproc $GA_BIN)

CMD="/usr/bin/qemu-ga-d-f/var/run/qemu-ga.pid"

function re_create_pidfile() {
    if [ ! -s $GA_PIDFILE ];then
        if [ ! -z "$PIDS" ];then
            for PID in $PIDS; do
                cmd=`cat /proc/$PID/cmdline`
                if [ "$CMD" == "$cmd" ];then
                    echo $PID >$GA_PIDFILE
                    break
                fi
            done
        fi
    fi
}

test -s /etc/rc.status && \
         . /etc/rc.status

test -x $GA_BIN || exit 5

rc_reset

case "$1" in
        start)
                echo -n "Starting qemu-ga "
                if [ -h "/dev/virtio-ports/org.qemu.guest_agent.0" ] ; then
                    re_create_pidfile
                    if ! checkproc -p $GA_PIDFILE $GA_BIN &> /dev/null; then
                        $GA_BIN -d -f $GA_PIDFILE
                        rc_status -v
                    else
                        echo
                        echo "qemu guest agent already running."
                    fi
                else
                    echo
                    echo "virtio serial org.qemu.guest_agent.0 not found."
                fi
                ;;
        stop)
                echo -n "Shutting down qemu-ga "
                re_create_pidfile
                killproc -p $GA_PIDFILE -TERM $GA_BIN
                rc_status -v
                ;;
        restart)
                $0 stop
                $0 start
                rc_status
                ;;
        status)
                echo -n "Checking for qemu-ga: "
                re_create_pidfile
                checkproc -p $GA_PIDFILE $GA_BIN
                rc_status -v
                ;;
        *)
                echo "Usage: $0 {start|stop|status|restart}"
                exit 1
                ;;
esac
