#! /bin/bash

#
# startup/shutdown script for the Sybase component of the CM
# on Solaris.
# put this file (or a symlink to it) in /etc/init.d, and make
# the appropriate "K" and "S" symlinks in /etc/rc?.d
#
# Author: Ron Koren
# Date: Nov 23, 2003
#

exec 1> >(logger -p daemon.notice -t sybase_init) 2>&1

export LANG=en_US

SYB_USER=sybase
SYB_GROUP=sybase
DFLT_SERVER=pqbsyb1
SAPSWD=pcube2001

INTERF_SCRIPT=~scmscm/setup/syb_interfaces.sh

 add_threshold () {
   THRESHOLD=~scmscm/setup/tempdb.sh
  $THRESHOLD
}
SYBDIR="$(grep '^sybase:' /etc/passwd | cut -d: -f6)"

[ -w /etc/passwd ] || {
    echo Fatal: This script must be run by the root user - aborting
    exit 15
}

if [ ! "$SYBDIR" ]; then
    echo Fatal: Cannot find Sybase home in /etc/passwd - aborting
    exit 1
fi

if ! . "$SYBDIR/SYBASE.sh"; then
    echo Fatal: Cannot execute Sybase environment setting script $SYBDIR/SYBASE.sh - aborting
    exit 2
fi

SERVER=$DFLT_SERVER

is_syb_up () {
    # this function returns true iff sybase processes seem to be up:
    [ "$(pgrep -U $SYB_USER dataserver)" ]
}

sa_isql () {
    while [ "$1" ]; do
        echo "$1"
        shift
    done | "$SYBASE/$SYBASE_OCS/bin/isql" -Usa -P$SAPSWD -S$SERVER
}

sybase_start () {
    find "$SYBASE" -name '*.[sk]rg' \
            -exec echo WARNING - deleting '{}' \;  \
            -exec rm '{}' \;

    [ -x $INTERF_SCRIPT ] &&
        $INTERF_SCRIPT ||
        echo warning - cannot execute $INTERF_SCRIPT
        
    chown -R $SYB_USER:$SYB_GROUP "$SYBASE"

    INST="$SYBASE/$SYBASE_ASE/install"

    if [ ! -r "$INST/RUN_$SERVER" ]; then
        echo "Fatal - cannot find Sybase server run file $INST/RUN_$SERVER - aborting"
        return 1
    fi
        su $SYB_USER -c ". $SYBASE/SYBASE.sh; $INST/startserver -f $INST/RUN_$SERVER"
}

sybase_stop () {
    (sa_isql shutdown go) &
    sleep 60
    is_syb_up || return 0
    (sa_isql "use apricot" go checkpoint go) &
    sleep 30
    (sa_isql "shutdown with nowait" go) &
    sleep 10
    is_syb_up || return 0
    echo "Warning: shutting down Sybase with kill"
    pkill -U $SYB_USER dataserver
    sleep 10
    is_syb_up || return 0
    echo "Warning: shutting down Sybase with kill -9"
    pkill -9 $SYB_USER dataserver
}

case "$1" in
        'start')
                sybase_start
                add_threshold
                ;;
        'stop')
                sybase_stop
                ;;
    *)
        echo "Usage: $0 start/stop"
        exit 99
esac
