runscript.sh now provides default start/stop functions if command and pidfile variables are set. We also run $cmd_pre and $cmd_post commands and return accordingly.

This commit is contained in:
Roy Marples 2007-11-20 10:24:40 +00:00
parent 46f25b2a72
commit df523ccfee

View File

@ -30,28 +30,28 @@
. "${RC_LIBDIR}"/sh/rc-functions.sh . "${RC_LIBDIR}"/sh/rc-functions.sh
# Support LiveCD foo # Support LiveCD foo
if [ -r /sbin/livecd-functions.sh ] ; then if [ -r /sbin/livecd-functions.sh ]; then
. /sbin/livecd-functions.sh . /sbin/livecd-functions.sh
livecd_read_commandline livecd_read_commandline
fi fi
if [ -z "$1" -o -z "$2" ] ; then if [ -z "$1" -o -z "$2" ]; then
eerror "${SVCNAME}: not enough arguments" eerror "${SVCNAME}: not enough arguments"
exit 1 exit 1
fi fi
# Descript the init script to the user # Descript the init script to the user
describe() { describe() {
if [ -n "${description}" ] ; then if [ -n "${description}" ]; then
einfo "${description}" einfo "${description}"
else else
ewarn "No description for ${SVCNAME}" ewarn "No description for ${SVCNAME}"
fi fi
local svc= desc= local svc= desc=
for svc in ${opts} ; do for svc in ${opts}; do
eval desc=\$description_${svc} eval desc=\$description_${svc}
if [ -n "${desc}" ] ; then if [ -n "${desc}" ]; then
einfo "${HILITE}${svc}${NORMAL}: ${desc}" einfo "${HILITE}${svc}${NORMAL}: ${desc}"
else else
ewarn "${HILITE}${svc}${NORMAL}: no description" ewarn "${HILITE}${svc}${NORMAL}: no description"
@ -63,19 +63,19 @@ describe() {
# If we're net.eth0 or openvpn.work then load net or openvpn config # If we're net.eth0 or openvpn.work then load net or openvpn config
rc_c=${SVCNAME%%.*} rc_c=${SVCNAME%%.*}
if [ -n "${rc_c}" -a "${rc_c}" != "${SVCNAME}" ] ; then if [ -n "${rc_c}" -a "${rc_c}" != "${SVCNAME}" ]; then
if [ -e "/etc/conf.d/${rc_c}.${RC_SOFTLEVEL}" ] ; then if [ -e "/etc/conf.d/${rc_c}.${RC_SOFTLEVEL}" ]; then
. "/etc/conf.d/${rc_c}.${RC_SOFTLEVEL}" . "/etc/conf.d/${rc_c}.${RC_SOFTLEVEL}"
elif [ -e "/etc/conf.d/${rc_c}" ] ; then elif [ -e "/etc/conf.d/${rc_c}" ]; then
. "/etc/conf.d/${rc_c}" . "/etc/conf.d/${rc_c}"
fi fi
fi fi
unset rc_c unset rc_c
# Overlay with our specific config # Overlay with our specific config
if [ -e "/etc/conf.d/${SVCNAME}.${RC_SOFTLEVEL}" ] ; then if [ -e "/etc/conf.d/${SVCNAME}.${RC_SOFTLEVEL}" ]; then
. "/etc/conf.d/${SVCNAME}.${RC_SOFTLEVEL}" . "/etc/conf.d/${SVCNAME}.${RC_SOFTLEVEL}"
elif [ -e "/etc/conf.d/${SVCNAME}" ] ; then elif [ -e "/etc/conf.d/${SVCNAME}" ]; then
. "/etc/conf.d/${SVCNAME}" . "/etc/conf.d/${SVCNAME}"
fi fi
@ -90,17 +90,53 @@ fi
shift shift
while [ -n "$1" ] ; do # If we have a default command then supply a default start function
if [ -n "${command}" ]; then
if ! type start >/dev/null 2>&1; then
start() {
ebegin "Starting ${name:-${SVCNAME}}"
start-stop-daemon --start \
--exec ${command} \
${procname:+--name} ${procname} \
${pidfile:+--pidfile} ${pidfile} \
-- ${command_args}
eend $? "Failed to start ${SVCNAME}"
}
fi
fi
# If we have a default command, procname or pidfile then supply a default stop
# function
if [ -n "${command}" -o -n "${procname}" -o -n "${pidfile}" ]; then
if ! type stop >/dev/null 2>&1; then
stop() {
ebegin "Stopping ${name:-${SVCNAME}}"
start-stop-daemon --stop \
${command:+--exec} ${command} \
${procname:+--name} ${procname} \
${pidfile:+--pidfile} ${pidfile}
eend $? "Failed to start ${SVCNAME}"
}
fi
fi
while [ -n "$1" ]; do
# See if we have the required function and run it # See if we have the required function and run it
for rc_x in describe start stop ${opts} ; do for rc_x in describe start stop ${opts}; do
if [ "${rc_x}" = "$1" ] ; then if [ "${rc_x}" = "$1" ]; then
if type "$1" >/dev/null 2>/dev/null ; then if type "$1" >/dev/null 2>&1; then
unset rc_x unset rc_x
if type "$1"_pre >/dev/null 2>&1; then
"$1"_pre || exit $?
fi
"$1" || exit $? "$1" || exit $?
if type "$1"_post >/dev/null 2>&1; then
"$1"_post || exit $?
fi
shift shift
continue 2 continue 2
else else
if [ "${rc_x}" = "start" -o "${rc_x}" = "stop" ] ; then if [ "${rc_x}" = "start" -o "${rc_x}" = "stop" ]; then
exit 0 exit 0
else else
eerror "${SVCNAME}: function \`$1' defined but does not exist" eerror "${SVCNAME}: function \`$1' defined but does not exist"