#!/bin/sh
#
# Copyright (c) 2003 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#

# Detect the Path and OS.
default_path="/bin:/usr/bin"
if [ -z "$PATH" ]
then
  PATH="$default_path"
else
  PATH="$PATH:$default_path"
fi
uname_bin=`uname -s` 
if [ -z "$uname_bin" -o "x$uname_bin" = "x" ]
then
  echo "WARNING:Unable to detect current OS" 
fi

SERVER_ROOT=%%%SERVER_ROOT%%%
INSTANCE_ROOT=%%%INSTANCE_ROOT%%%
INSTANCE_NAME=%%%INSTANCE_NAME%%%
PRODUCT_BIN=%%%PRODUCT_BIN%%%

INSTANCE_CONFIG_DIR=${INSTANCE_ROOT}/${INSTANCE_NAME}/config

MPS_LIB_DIRS=/usr/lib/mps/secv1:/usr/lib/mps:/usr/lib/mps/sasl2

#Set the LD_LIBRARY PATH to Sun shared lib locations for Linux.
if [ "$uname_bin" = "Linux" ]; then
  LD_LIBRARY_PATH=/opt/sun/private/lib:/opt/sun/private/share/lib:/opt/sun/lib
  export LD_LIBRARY_PATH
fi

cd $SERVER_ROOT/%%%BIN_SUBDIR%%%

#parse JAVA_HOME
JAVA_HOME=`./parsexml ${INSTANCE_CONFIG_DIR} JAVA javahome`; export JAVA_HOME
JAVA_RUNTIME_LIBPATH=%%%JAVA_RUNTIME_LIBPATH%%%

#parse Java nativelibrarypathprefix from server.xml
JAVA_RUNTIME_LIBPATH_PREFIX=`./parsexml ${INSTANCE_CONFIG_DIR} JAVA nativelibrarypathprefix`
JAVA_RUNTIME_LIBPATH_PREFIX=${JAVA_RUNTIME_LIBPATH_PREFIX:+$JAVA_RUNTIME_LIBPATH_PREFIX:}

#parse Java nativelibrarypathsuffix from server.xml
JAVA_RUNTIME_LIBPATH_SUFFIX=`./parsexml ${INSTANCE_CONFIG_DIR} JAVA nativelibrarypathsuffix`
JAVA_RUNTIME_LIBPATH_SUFFIX=${JAVA_RUNTIME_LIBPATH_SUFFIX:+:$JAVA_RUNTIME_LIBPATH_SUFFIX}

#parse any Java profiler nativelibrarypath if present
JAVA_PROFILER_LIBPATH=`./parsexml ${INSTANCE_CONFIG_DIR} JAVA/PROFILER nativelibrarypath`
JAVA_PROFILER_LIBPATH=${JAVA_PROFILER_LIBPATH:+:$JAVA_PROFILER_LIBPATH}

#build the server library path
SERVER_LIBPATH=${SERVER_ROOT}/%%%LIB_SUBDIR%%%:${JAVA_RUNTIME_LIBPATH_PREFIX}${JAVA_RUNTIME_LIBPATH}${JAVA_PROFILER_LIBPATH}${JAVA_RUNTIME_LIBPATH_SUFFIX}

#set LD_LIBRARY_PATH
LD_LIBRARY_PATH=/usr/lib/lwp:${SERVER_LIBPATH}:${LD_LIBRARY_PATH}:${MPS_LIB_DIRS}; export LD_LIBRARY_PATH

#set LIBPATH for AIX
LIBPATH=${SERVER_LIBPATH}:${LIBPATH}:/usr/lib/threads:/usr/lib:/lib; export LIBPATH

#set SHLIB_PATH for HP-UX
SHLIB_PATH=${SERVER_LIBPATH}:${SHLIB_PATH}; export SHLIB_PATH

#preload libCld to resolve -compat=4/-compat=5 C++ ABI issues on Solaris
LIBCLD=$SERVER_ROOT/%%%LIB_SUBDIR%%%/libCld.so
if [ -f "${LIBCLD}" ]
then
	LD_PRELOAD="${LIBCLD} ${LD_PRELOAD}"; export LD_PRELOAD
fi

#preload libmtmalloc on Solaris 9 and higher to improve performance
if [ "$uname_bin" = "SunOS" ]
then
  LIBMTMALLOC=/usr/lib/libmtmalloc.so
  if [ -f "${LIBMTMALLOC}" -a `uname` = "SunOS" -a `uname -r | sed -e 's/^5\.//' -e 's/[^0-9].*//'` -ge 9 ]
  then
	LD_PRELOAD="${LIBMTMALLOC} ${LD_PRELOAD}"; export LD_PRELOAD
  fi
fi

NSES_SERVER_HOME=${SERVER_ROOT}; export NSES_SERVER_HOME
PATH=${SERVER_ROOT}/%%%BIN_SUBDIR%%%:${PATH}; export PATH

if [ $# -eq 0 ]
then
	arg="-start";
elif [ $# -eq 1 -a x$1 = x-e -o x$1 = x-i ]
then
        arg="-start";
else
	arg=$1;
	shift;
fi

case $arg in
        -start)
		./$PRODUCT_BIN -r $SERVER_ROOT -d $INSTANCE_CONFIG_DIR -n $INSTANCE_NAME $@
		if test $? -ne 0 ; then
			exit 1
		fi
		;;
        -version)
		./$PRODUCT_BIN -r $SERVER_ROOT -d $INSTANCE_CONFIG_DIR -n $INSTANCE_NAME -v $@
		if test $? -ne 0 ; then
			exit 1
		fi
		;;
        -configtest)
		./$PRODUCT_BIN -r $SERVER_ROOT -d $INSTANCE_CONFIG_DIR -n $INSTANCE_NAME -i -c $@
		if test $? -ne 0 ; then
			echo 'failure: configuration test failed'
			exit 1
		fi
		echo 'success: configuration was parsed successfully'
		;;
	-shell)
		/bin/sh
		;;
	*)
		echo "Usage: `basename $0` [-start|-shell|-configtest|-version]"
		exit 1
		;;
esac

exit 0
