#!/bin/bash
#
#############################
#
#  Start gkmid
#
#    Release shared memory and semaphore if not released at gkmid termination
#
#

# environ ---------------------------
GKMID="/usr/local/ner485/gkmid"
IPCS="/usr/bin/ipcs"
IPCRM="/usr/bin/ipcrm"
GREP="/bin/grep"
AWK="/usr/bin/awk"
ECHO="/bin/echo"
SEQ="/usr/bin/seq"
WC="/usr/bin/wc"
PKILL="/usr/bin/pkill"
BASENAME="/usr/bin/basename"

PROG="/usr/local/ner485/gkmid"
KILL_PROG="`${BASENAME} ${PROG}`"
SH_IPCSCLEAN="/usr/local/ner485/ipc_clean.sh"
DISP_MSG=1


## function ------

receive_signal() {
  ${PKILL} -15 ${KILL_PROG}
}

## main ------

# execute clean up shmem and semaphore
sh_msg=`${SH_IPCSCLEAN}`
sh_ret=`${ECHO} $?`
if [ ${DISP_MSG} -eq 1 ]; then
  ${ECHO} ${sh_msg}
fi

if [ "x${sh_ret}" != "x0" ]; then
  if [ ${DISP_MSG} -eq 1 ]; then
    ${ECHO} "failed to clean up shmem or semaphore"
  fi 
  exit 1
fi

# catch signals
trap receive_signal 2
trap receive_signal 10
trap receive_signal 15

LOG_FILE_POST=`date "+%Y%m%d-%H%M%S"`
${PROG} > /var/tmp/gkmid_${LOG_FILE_POST}

sh_disp=`${SH_IPCSCLEAN}`
sh_ret=`${ECHO} $?`
if [ ${DISP_MSG} -eq 1 ]; then
  ${ECHO} ${sh_disp}
fi

if [ "x${sh_ret}" != "x0" ]; then
  if [ ${DISP_MSG} -eq 1 ]; then
    ${ECHO} "failed to clean up shmem or semaphore at finish"
  fi
  exit 2
fi
exit 0

