#!/bin/sh
trap cleanup 2

cd  `dirname $0`
TOOLSDIR=`pwd`
cd ..
LIBDIR=`pwd`/lib
DATADIR=`pwd`/xData/
BACKUPDIR=`pwd`/backup/
cd $TOOLSDIR

JAVA_HOME=../jre
LD_LIBRARY_PATH=$LIBDIR:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
START="false"
ECHO="echo"
PROGRESS="."
LANG=POSIX
export LANG

#/usr/ucb/echo takes -n to suppress newline characters
if [ -s /usr/ucb/echo ]
	then ECHO="/usr/ucb/echo"
	PROGRESS="-n ."
fi

#kill the process if user hits CTRL-C
cleanup()
{
	if [ -s $LIBDIR/cxws.pid ]
		then kill `cat $LIBDIR/cxws.pid`
		rm $LIBDIR/cxws.pid
	fi
	$ECHO
	$ECHO "CIM Extension not started"
	exit 1
}

#you must be root 
id | grep uid=0\( 1>/dev/null 2>&1
if [ $? -ne 0 ]
	then $ECHO "You must be root to start the CIM Extension"
    exit 1
fi

#check if a CIM Extension is already running before start
if [ -s $LIBDIR/cxws.pid ]
    then PID=`cat $LIBDIR/cxws.pid`
	if kill -0 $PID 2>/dev/null
		then if [ -n "$1" ]
			then if [ $1 = "-version" -o $1 = "-help" -o $1 = "-helpall" -o $1 = "-authenticate" ]
				then $JAVA_HOME/bin/java -Dlocaldir=$DATADIR -Dbackupdir=$BACKUPDIR -jar $LIBDIR/cxws-solaris.jar $*
			else
				$ECHO "CIM Extension already running"
			fi
		else
			$ECHO "CIM Extension already running"
		fi
	else
        rm -f $LIBDIR/cxws.pid
		START="true"
	fi    
else
	START="true"
fi

J_OPTS=

while [ $# -gt 0 ]
do
    if [ $1 = -J ]
    then
        J_OPTS="$J_OPTS $2"
        shift 2
    else
        break
    fi
done

if [ $START = "true" ]
    then $ECHO "Starting CIM Extension for Solaris"

    nohup $JAVA_HOME/bin/java -Dlocaldir=$DATADIR -Dbackupdir=$BACKUPDIR -Djava.library.path=$LIBDIR $J_OPTS -jar $LIBDIR/cxws-solaris.jar $* > cxws.out 2>&1 &

    #background process id written to a file for use by stop command
	sleep 1
	$ECHO $PROGRESS

    $ECHO $! > $LIBDIR/cxws.pid

	#cxws does some validation before accepting connections. Display starting message.
    COUNT=0
	while [ $COUNT -lt 300 ]
	  do
	  sleep 3
	  COUNT=`expr $COUNT + 3`
	  if [ -s cxws.out ]
		  then cat cxws.out
		  break
	  fi
      $ECHO $PROGRESS
	done

fi
