#!/bin/sh

KILL=kill
PID_FILE=/tmp/mon.pid
FIFO_FILE=/tmp/mon.fifo
MMAP_FILE=/tmp/mon.mmap
FREE_MUTEX_FILE=/tmp/mon.free.mutex
HASH_MUTEX_FILE=/tmp/mon.hash.mutex

if [ -d "/usr/include/linux" ]
then
	REMOVE_MUTEX="ipcrm sem "
else
	REMOVE_MUTEX="ipcrm -s "
fi

if [ ! -f "$PID_FILE" -a "$#" != "2" ] ; then
        echo "PID file $PID_FILE does not exist"
        exit
fi

case $# in
0)
        SIGNAL=-INT
        PID=`cat $PID_FILE`
        ;;
1)      SIGNAL=$1
        PID=`cat $PID_FILE`
        ;;
2)      SIGNAL=$1
        PID=$2
        ;;
*)
        echo "usage: $0 [signal] [pid]"
        exit 1;
        ;;
esac

case "$SIGNAL" in
'-INT')
        ${KILL} -2 ${PID}
        ;;
'-KILL')
        ${KILL} -2 ${PID}
        ${KILL} -9 ${PID}

        if [ -f "$FREE_MUTEX_FILE" ]
        then
	    SEMID=`cat $FREE_MUTEX_FILE`
	    ${REMOVE_MUTEX} ${SEMID}
	    rm $FREE_MUTEX_FILE
        fi

        if [ -f "$HASH_MUTEX_FILE" ]
        then
	    SEMID=`cat $HASH_MUTEX_FILE`
	    ${REMOVE_MUTEX} ${SEMID}
	    rm $HASH_MUTEX_FILE
        fi

        if [ -f "$MMAP_FILE" ]
        then
	    rm $MMAP_FILE
        fi

        if [ -p "$FIFO_FILE" ]
        then
	    rm $FIFO_FILE
        fi
        ;;
*)
        ${KILL} -${SIGNAL} ${PID}
        ;;
esac

kill -0 ${PID} > /dev/null 2>&1
