136 lines
3.5 KiB
Bash
136 lines
3.5 KiB
Bash
#!/bin/sh
|
|
|
|
# iAnywhere Solutions, Inc. One Sybase Drive, Dublin, CA 94568, USA
|
|
# Copyright (c) 2001-2008, iAnywhere Solutions, Inc. Portions copyright (c)
|
|
# 1988-2008, Sybase, Inc. All rights preserved. All unpublished rights reserved.
|
|
|
|
START_DAEMON=start_daemon
|
|
KILLPROC=killproc
|
|
PIDOFPROC=pidofproc
|
|
LOG_SUCCESS_MSG=log_success_msg
|
|
LOG_FAILURE_MSG=log_failure_msg
|
|
LOG_WARNING_MSG=log_warning_msg
|
|
|
|
dbsvc_iface_getiface()
|
|
######################
|
|
# We rely on lsb; the others are placeholders that are currently unused
|
|
{
|
|
if [ -r "/lib/lsb/init-functions" ]; then
|
|
echo "lsb"
|
|
elif [ -r "/etc/rc.status" ]; then
|
|
echo "suse"
|
|
elif [ -r "/etc/init.d/functions" ]; then
|
|
echo "rh"
|
|
fi
|
|
}
|
|
|
|
dbsvc_iface_init()
|
|
##################
|
|
# can pass optional $1 to force lsb|rh|suse
|
|
{
|
|
RUNLEVEL="235"
|
|
[ -z "$PRIORITY" ] && PRIORITY="+00"
|
|
STARTUP="Manual"
|
|
SVCDIR=/etc/init.d
|
|
PREFIX=${SVCDIR}/${SVCNAME_PFX}
|
|
|
|
dbsvc_iface_load $1
|
|
}
|
|
|
|
dbsvc_iface_load()
|
|
##################
|
|
# Allow $1 to override which interface functions we load
|
|
{
|
|
if [ -n "$1" ]; then
|
|
SVC_IFACE=$1
|
|
else
|
|
SVC_IFACE=`dbsvc_iface_getiface`
|
|
fi
|
|
|
|
# Load common init-functions (only LSB currently used)
|
|
if [ -r "/lib/lsb/init-functions" ]; then
|
|
. /lib/lsb/init-functions
|
|
elif [ -r "/etc/rc.status" ]; then
|
|
. /etc/rc.status
|
|
elif [ -r "/etc/init.d/functions" ]; then
|
|
. /etc/init.d/functions
|
|
fi
|
|
# Load interface-specific procdures (only LSB currently used)
|
|
if [ -r "${DBSVC_DIR}/dbsvc_scripts/dbsvc_iface_${SVC_IFACE}" ]; then
|
|
. "${DBSVC_DIR}/dbsvc_scripts/dbsvc_iface_${SVC_IFACE}"
|
|
dbsvc_iface_init_${SVC_IFACE}
|
|
fi
|
|
# Need to override aliases on RedHat
|
|
if is_redhat || is_redflag ; then
|
|
. "${DBSVC_DIR}/dbsvc_scripts/dbsvc_iface_rh"
|
|
fi
|
|
|
|
# Check whether we have chkconfig or update-rc.d for installing services
|
|
HAS_CHKCONFIG=0
|
|
HAS_UPDATE_RC=0
|
|
|
|
CHKCONFIG_BIN=/sbin/chkconfig
|
|
if [ -r $CHKCONFIG_BIN ]; then
|
|
HAS_CHKCONFIG=1
|
|
else
|
|
# Try PATH
|
|
CHKCONFIG_BIN=`/bin/which chkconfig 2>/dev/null`
|
|
if [ -n $CHKCONFIG_BIN ] && [ -r "$CHKCONFIG_BIN" ]; then
|
|
HAS_CHKCONFIG=1
|
|
else
|
|
CHKCONFIG_BIN=""
|
|
fi
|
|
fi
|
|
UPDATE_RC_BIN=/usr/sbin/update-rc.d
|
|
if [ -r "$UPDATE_RC_BIN" ]; then
|
|
HAS_UPDATE_RC=1
|
|
else
|
|
# Try PATH
|
|
UPDATE_RC_BIN=`/bin/which update-rc.d 2>/dev/null`
|
|
if [ -n $UPDATE_RC_BIN ] && [ -r "$UPDATE_RC_BIN" ]; then
|
|
HAS_UPDATE_RC=1
|
|
else
|
|
UPDATE_RC_BIN=""
|
|
fi
|
|
fi
|
|
}
|
|
|
|
dbsvc_iface_installsvc()
|
|
########################
|
|
{
|
|
if [ ${HAS_CHKCONFIG:-0} -ne 0 ]; then
|
|
$CHKCONFIG_BIN --add $SVCNAME_PFX$SERVICENAME > /dev/null
|
|
$CHKCONFIG_BIN --level $RUNLEVEL $SVCNAME_PFX$SERVICENAME on > /dev/null
|
|
elif [ ${HAS_UPDATE_RC:-0} -ne 0 ]; then
|
|
$UPDATE_RC_BIN $SVCNAME_PFX$SERVICENAME start 60 $RUNLEVELS . stop 80 $STOPLEVELS .
|
|
fi
|
|
}
|
|
|
|
|
|
dbsvc_iface_uninstallsvc()
|
|
##########################
|
|
{
|
|
if [ ${HAS_CHKCONFIG:-0} -ne 0 ]; then
|
|
$CHKCONFIG_BIN $SVCNAME_PFX$SERVICENAME off > /dev/null
|
|
$CHKCONFIG_BIN --del $SVCNAME_PFX$SERVICENAME > /dev/null
|
|
elif [ ${HAS_UPDATE_RC:-0} -ne 0 ]; then
|
|
$UPDATE_RC_BIN -f $SVCNAME_PFX$SERVICENAME remove
|
|
fi
|
|
}
|
|
|
|
dbsvc_iface_checkdeletedsvc()
|
|
#############################
|
|
{
|
|
if [ ${HAS_CHKCONFIG:-0} -ne 0 ]; then
|
|
ISTHERE=`$CHKCONFIG_BIN --list | grep $SVCNAME_PFX$SERVICENAME`
|
|
if [ -r $SVCNAME_PFX$SERVICENAME ] || [ "$ISTHERE" != "" ]; then
|
|
output_msg "${ERR_NODELETE}" # $SERVICENAME
|
|
fi
|
|
elif [ ${HAS_UPDATE_RC:-0} -ne 0 ]; then
|
|
if [ -r $SVCNAME_PFX$SERVICENAME ]; then
|
|
output_msg "${ERR_NODELETE}" # $SERVICENAME
|
|
fi
|
|
fi
|
|
}
|
|
|