#!/bin/sh
#
VERSION='$Id: sm_check_version,v 1.5 2006/01/03 12:08:21 sesam Exp $'
VERBOSE=$1
MYSELF=$0
#
trap '' 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`
}

#
# VERBOSE
my_echo()
{
  if [ "$VERBOSE" = "-v" ] 
  then
    echo `date +"%Y%m%d %H:%M:%S"`: "$1" >&2
  fi
}

check_version()
{
  my_echo "Check for new sesam version"
  insttype=`grep "^version=" ${GV_RW_INI}/sm.ini|cut -d "=" -f 2|cut -d ',' -f 1`
  newversion=`grep "^version=" \`ls ${GV_RO}/skel/*_???.?.?|tail -1 \`|cut -d "=" -f 2`
  oldversion=`grep "^version=" ${GV_RW_INI}/sm.ini|cut -d "," -f 2`
  my_echo "current version (sm.ini): $oldversion "
  my_echo "new version (skel)      : $newversion"
  if ! echo ${newversion}|grep '.\..\..*\.' >/dev/null; then
    my_echo "no correct format       : $newversion"
    my_echo "no update started"
    return 0
  fi
  my_echo "new version (skel)      : $newversion"
  if [ "$oldversion" != "$newversion" ]
    then
      awk -F "," '/^version=/ { print $1","newversion"," $3 $4
                  next }
                  /^gv_version=/ { next }
                  /^pre=/ { print "pre=" oldversion
                  next }
                  /^now=/ { print "now=" newversion
                  next }
                 { print }' oldversion=$oldversion newversion=$newversion ${GV_RW_INI}/sm.ini > ${GV_RW_INI}/sm.ini.new
    mv ${GV_RW_INI}/sm.ini ${GV_RW_INI}/sm.ini.${oldversion}
    mv ${GV_RW_INI}/sm.ini.new ${GV_RW_INI}/sm.ini
    if [ "$insttype" = "server" ]
      then
        $sql_cmd "UPDATE params_fix set version='$newversion';" 
        ${GV_RO_DB}/sm_db_main &
        dbPid=$!
        ${GV_RO_BIN}/sm_db_update update $oldversion $newversion
        kill $dbPid
        sleep 2
        kill -9 $dbPid
        my_echo "call sm_setup set_java_policy"
        ${GV_RO_BIN}/sm_setup set_java_policy 
      fi
  else
    my_echo "No new SEPsesam version found"
  fi
 
}
#
#
# USAGE
usage()
{
  echo "   $VERSION"
  echo "   usage: $0 [-v] start|stop"
  echo "   default mode start"
  exit 1
}
#
#
sub_env()
{
  LOGFILE="sm_check_version.lgc"
  my_echo "VERSION=$VERSION"
  GV_RO_BIN=`read_ini gv_ro_bin`
  GV_RO_SMS=`read_ini gv_ro_sms`
  GV_RO_DB=`read_ini gv_ro_db`
  GV_RW_GLBV=`read_ini gv_rw_glbv`
  GV_RW_DB=`read_ini gv_rw_db`
  GV_RW_LGC=`read_ini gv_rw_lgc`
  GV_RW_WORK=`read_ini gv_rw_work`
  GV_RW_SMS=`read_ini gv_rw_sms`
  GV_RW_STPD=`read_ini gv_rw_stpd`
  GV_RW_INI=`read_ini gv_rw_ini`
  GV_RO=`read_ini gv_ro`
  GV_RW=`read_ini gv_rw`

  GV_DB_TYPE=`read_ini gv_db_type`
  GV_DB_PORT=`read_ini gv_port_db`
  OPENRDA_INI=${GV_RW_INI}/openrda.ini
  export OPENRDA_INI
  export GV_RW
  export GV_RW
  if [ "$GV_DB_TYPE" != "postgres" ]
  then
     sql_cmd="${GV_RO_DB}/damisql -d sesam_db -q "
  else
     sql_cmd="psql -d sesam_db -p ${GV_DB_PORT} -c "
  fi
}
#
#

my_echo "$0 $*"
sub_env $1 $2
check_version 2>&1 </dev/null | tee -a $GV_RW_LGC/${LOGFILE}  2>&1 
exit $STATUS

