6331N/A#! /bin/ksh93
6331N/A
6331N/A# $Id$
6331N/A#
6331N/A# License: CDDL 1.0 (see http://opensource.org/licenses/cddl-1.0)
6331N/A# Copyright 2013 Jens Elkner
6331N/A
6331N/A. /lib/svc/share/smf_include.sh
6331N/A
6331N/ABASEDIR='@CLIENT_BASEDIR@'
6331N/A
6413N/Atypeset -a PROPVAL=( )
6413N/Afunction getprop {
6331N/A svcprop -q -p $1 ${SMF_FMRI}
6331N/A if (( $? == 0 )); then
6413N/A typeset X=${ svcprop -p $1 ${SMF_FMRI}; } V LAST=''
6413N/A [[ ${X} == '""' ]] && X=""
6413N/A X=( ${X//\\} )
6413N/A PROPVAL=( )
6413N/A integer IN=0
6413N/A # to allow a double quoted string as arg, we need to parse ourselves
6413N/A for V in ${X[@]} ; do
6413N/A if (( IN )); then
6413N/A if [[ ${V: -1:1} == '"' ]]; then
6413N/A PROPVAL+=( "${LAST} ${V:0:${#V}-1}" )
6413N/A LAST=''
6413N/A IN=0
6413N/A else
6413N/A LAST+=" ${V}"
6413N/A fi
6413N/A elif [[ ${V:0:1} == '"' ]]; then
6413N/A V="${V:1}"
6413N/A if [[ ${V: -1:1} == '"' ]]; then
6413N/A PROPVAL+=( "${V:0:${#V}-1}" )
6413N/A else
6413N/A IN=1
6413N/A LAST="${V}"
6413N/A fi
6413N/A else
6413N/A PROPVAL+=( "${V}" )
6413N/A fi
6413N/A done
6331N/A fi
6331N/A}
6331N/A
6331N/Acase "$1" in
6331N/A 'start')
6331N/A # per default open files is limited to 256
6331N/A ulimit -S -n ${ ulimit -H -n ; }
6331N/A getprop config/server_start_args
6413N/A ${BASEDIR}/opendj@VERS@/bin/start-ds "${PROPVAL[@]}"
6331N/A RC=$?
6331N/A (( ${RC} == 98 )) && exit ${SMF_EXIT_OK} # Already started
6331N/A (( ${RC} == 999 )) && exit ${SMF_EXIT_ERR_CONFIG}
6331N/A (( ${RC} != 0 )) && exit ${SMF_EXIT_ERR_FATAL}
6331N/A ;;
6331N/A 'stop')
6413N/A getprop config/server_stop_args
6413N/A ${BASEDIR}/opendj@VERS@/bin/stop-ds "${PROPVAL[@]}"
6331N/A RC=$?
6331N/A (( ${RC} == 999 )) && exit ${SMF_EXIT_ERR_CONFIG}
6331N/A (( ${RC} != 0 )) && exit ${SMF_EXIT_ERR_FATAL}
6331N/A ;;
6331N/A *)
6331N/A print -u2 "Usage: $0 { start | stop }"
6331N/A exit ${SMF_EXIT_ERR_FATAL}
6331N/A ;;
6331N/Aesac
6331N/Aexit ${SMF_EXIT_OK}