#!/bin/sh
VERSION='$Id: sm_db_main,v 1.1 2003/11/17 16:13:37 sesam Exp $'

trap 'echo "Signal recived";stop_db;exit 0' 1 2 3 4 5 6 15

# READ INI
read_ini()
{
  source `grep -i '^sm_ini=' /etc/sesam2000.ini|cut -d"=" -f2` 2>/dev/null
}

stop_db_pg()
{
      echo "Stopping ${POSTMASTER}"
      su - sesam -c "pg_ctl -m fast -D ${gv_rw_db} stop"
      [ -r /tmp/.s.PGSQL.${gv_port_db} ] && fuser -9 -sk /tmp/.s.PGSQL.${gv_port_db}
      [ -r /tmp/.s.PGSQL.${gv_port_db} ] && rm -f /tmp/.s.PGSQL.${gv_port_db}
      [ -r ${gv_rw_db}/postmaster.pid ] && rm -f ${gv_rw_db}/postmaster.pid 
      echo "Done"
}

stop_db_oa()
{
    echo "Stopping ${OASERVER}"
    killall sm_oa_main
}

stop_db()
{
  [ "$gv_db_type" == "postgres" ] && stop_db_pg
  [ "$gv_db_type" == "OpenAccess" ] && stop_db_oa
}

start_db_pg()
{
  PM=postmaster
  OA=sm_oa_main
    echo "Try to start ${PM}"
    if ! fuser /tmp/.s.PGSQL.${gv_db_port} 2>/dev/null; then
      [ -r /tmp/.s.PGSQL.${gv_db_port} ] && rm -f /tmp/.s.PGSQL.${gv_db_port}
      [ -r ${gv_rw_db}/postmaster.pid ] && rm -f ${gv_rw_db}/postmaster.pid 
    fi  
    su - sesam -c "${PM} -p ${gv_port_db} -i -D ${gv_rw_db} " >${gv_rw_lgc}sm_pgdb.lgc 2>&1 &
    echo "${PM} started"
    wait 
    STATUS=$?
    if [ "$STATUS" = "0" ]
    then
      echo "DONE"
      exit 0
    else
      echo "Fail to start ${MYPRG}"
      exit 1
    fi
}

start_db_oa()
{
  OA=sm_oa_main
  echo "Try to start ${OA}"
  ${gv_ro_db}/sm_oa_main >${gv_rw_lgc}/sm_oadb.lgc 2>&1 
  echo $! >${gv_rw_work}/sm_oa_main.pid
}

# MAIN PROCEDURE
sub_main()
{
  # MY MODULE
  PM=postmaster
  OA=sm_oa_main
  if [ "$SWITCH" = "start" -o "$SWITCH" = "" ] 
  then
    [ "$gv_db_type" == "postgres" ] && start_db_pg
    [ "$gv_db_type" == "OpenAccess" ] && start_db_oa
  fi

  if [ "$SWITCH" = "stop" ] 
  then
    stop_db
  fi
}

# MAIN
MYSELF=$0
read_ini
SWITCH=${1:-start}
sub_main

