add support for extra_stopped_commands

This commit is contained in:
William Hubbs 2011-10-17 13:47:45 -05:00
parent 5994e55937
commit 5b1aaf8cc8
3 changed files with 20 additions and 4 deletions

View File

@ -93,6 +93,9 @@ Space separated list of extra commands the service defines.
.It Ar extra_started_commands
Space separated list of extra commands the service defines. These only work if
the service has already been started.
.It Ar extra_stopped_commands
Space separated list of extra commands the service defines. These only work if
the service has already been stopped.
.It Ar description
String describing the service.
.It Ar description_$command

View File

@ -98,7 +98,8 @@ describe()
fi
local svc= desc=
for svc in ${extra_commands:-$opts} $extra_started_commands; do
for svc in ${extra_commands:-$opts} $extra_started_commands \
$extra_stopped_commands; do
eval desc=\$description_$svc
if [ -n "$desc" ]; then
einfo "$HILITE$svc$NORMAL: $desc"
@ -213,7 +214,7 @@ unset _f
if [ -n "$opts" ]; then
ewarn "Use of the opts variable is deprecated and will be"
ewarn "removed in the future."
ewarn "Please use extra_commands or extra_started_commands."
ewarn "Please use extra_commands, extra_started_commands or extra_stopped_commands."
fi
while [ -n "$1" ]; do
@ -225,7 +226,7 @@ while [ -n "$1" ]; do
fi
# See if we have the required function and run it
for _cmd in describe start stop status ${extra_commands:-$opts} \
$extra_started_commands
$extra_started_commands $extra_stopped_commands
do
if [ "$_cmd" = "$1" ]; then
if [ "$(command -v "$1")" = "$1" ]; then
@ -253,6 +254,16 @@ while [ -n "$1" ]; do
fi
fi
done
# Check to see if we need to be stopped before
# we can run this command
for _cmd in $extra_stopped_commands; do
if [ "$_cmd" = "$1" ]; then
if ! service_stopped; then
eerror "$RC_SVCNAME: cannot \`$1' as it has not been stopped"
exit 1
fi
fi
done
unset _cmd
if [ "$(command -v "$1_pre")" = "$1_pre" ]
then

View File

@ -526,7 +526,9 @@ rc_service_exists(const char *service)
}
librc_hidden_def(rc_service_exists)
#define OPTSTR ". '%s'; echo $extra_commands $extra_started_commands"
#define OPTSTR \
". '%s'; echo $extra_commands $extra_started_commands $extra_stopped_commands"
RC_STRINGLIST *
rc_service_extra_commands(const char *service)
{