#!/bin/sh


# Shut down the server for a given database.
#
# $Revision: 1.6 $



# set -x
RootDir="CUBRID"

CUBRID_LANG=en_US
export CUBRID_LANG

usage() {
	echo "usage: $0 database" 1>&2
	echo "       $0 -a : stop all databases in this host" 1>&2
	exit 1
}

db=
stop_all=0

while [ $# -ne 0 ]
do
	case $1 in

		-a|-all)
			stop_all=1
			;;
		-*)
			usage
			;;
		*)
			if [ -z "${db}" ]
			then
				db=$1
			else
				usage
			fi
			;;
	esac
	shift
done

if [ -z "${db}" -a $stop_all -eq 0 ]
then
	usage
fi

# Checking prefix

for i in $RootDir
do
	seevar="echo \$$i"
	#echo $seevar
	dir=`eval $seevar`
	if  [ "$dir" !=  ""   ]
	then
		title=$dir
	fi

	seevar="echo \$${i}_DATABASES"
	dir=`eval $seevar`
	if [ "$dir" != "" ]
	then
		databases=$dir/databases.txt
	fi

	if [ "$title" != "" ]
	then
		break
	fi
done

if [ "$title" = "" ]
then
  echo "Database Root Directory is not set or is set to NULL\n"
fi
if [ "$databases" = "" ]
then
	echo "Environment variable for database location is not set"
	exit 1
fi

# CUBRID commands that we'll be using.
commdb=${title}/bin/cub_commdb


# Exits 0 if the master server is up and running.
ping_master() {
	if ${commdb} -P 2>&1 | egrep "Could not connect to master server on" >/dev/null
	then
		return 1
	else
		return 0
	fi
}

ping_server() {
	${commdb} -P 2>&1 | egrep " Server ${db}[ ,]" >/dev/null
}

stop_a_server() {

	if [ -z "${db}" ]
	then
		return 1
	fi

	echo "Stoping server for database $db ..."

	${commdb} -S ${db} 
}

if ping_master
then
	:
else
	echo "$0: master process is not running" 1>&2
	exit 1
fi

if [ $stop_all -eq 1 ]
then
	for db in `cut -d\  -f1 $databases`
	do
		stop_a_server
	done
else
        stop_a_server
fi
