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:
parent
46f25b2a72
commit
df523ccfee
@ -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"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user