#!/bin/sh
VERSION='$Id: sm_postgres,v 1.9 2013/11/20 15:11:40 kha Exp $'

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

# READ INI
read_ini()
{
  SM_INI=`grep -i '^sm_ini=' /etc/sesam2000.ini|cut -d"=" -f2`
  echo `grep -i "$1=" "$SM_INI"|cut -d"=" -f2-`
}

sub_getparam()
{
  GV_RO=`read_ini gv_ro`
  GV_RW_DB=`read_ini gv_rw_db`
  GV_RW_LGC=`read_ini gv_rw_lgc`
  GV_PORT_DB=`read_ini gv_port_db`

  # PRE SETTING FOR DAEMON
  SWITCH=""  

  if [ "$1" = "stop" -o "$1" = "STOP" ]
  then
    SWITCH="stop"
  fi

  if [ "$1" = "start" -o "$1" = "START" ]
  then
    SWITCH="start"
  fi  
}

stop_db()
{
    echo "Stopping ${POSTMASTER}"
    su - sesam -c "pg_ctl -m fast -D ${GV_RW_DB} stop"
    echo "Done"
}

# MAIN PROCEDURE
sub_main()
{
  # MY MODULE
  PM=postmaster
  su - sesam -c "$PM -V" | grep ' 8\.[2-9]' >/dev/null 2>&1 
  [ "$?" = "0" ] && add_db_switch=" -c standard_conforming_strings=on"
  # The silent-mode switch is no longer supported in postgres version 9.2 or higher
  su - sesam -c "$PM -V" | grep ' [7-8]\.' >/dev/null 2>&1 
  [ "$?" = "0" ] && add_db_switch=" -c silent-mode=false"${add_db_switch}
  su - sesam -c "$PM -V" | grep ' 9\.[0-1]' >/dev/null 2>&1 
  [ "$?" = "0" ] && add_db_switch=" -c silent-mode=false"${add_db_switch}
  
  if [ "$SWITCH" = "start" -o "$SWITCH" = "" ] 
  then
    if [ -d "/var/run/postgresql" ]
    then
       echo "chmod socket directory"
       chmod a+w "/var/run/postgresql"
    fi
    echo "TRY TO START ${MYPRG}"
    echo "Executing 'su - sesam -c \"postmaster -p ${GV_PORT_DB} -i -D ${GV_RW_DB}${add_db_switch}\"'"
    su - sesam -c "postmaster -p ${GV_PORT_DB} -i -D ${GV_RW_DB}${add_db_switch}" >${GV_RW_LGC}sm_pgdb_`sm_glbv r gv_daylbl 2>/dev/null`.log 2>&1 &
    wait
    STATUS=$?
    if [ "$STATUS" = "0" ]
    then
      echo "DONE"
      exit 0
    else
      echo "FAIL TO START ${MYPRG}"
      exit 1
    fi
  fi

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

# MAIN
MYSELF=$0

# RUN SUB
sub_getparam $1
sub_main

