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 .It Ar extra_started_commands
Space separated list of extra commands the service defines. These only work if Space separated list of extra commands the service defines. These only work if
the service has already been started. 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 .It Ar description
String describing the service. String describing the service.
.It Ar description_$command .It Ar description_$command

View File

@ -98,7 +98,8 @@ describe()
fi fi
local svc= desc= 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 eval desc=\$description_$svc
if [ -n "$desc" ]; then if [ -n "$desc" ]; then
einfo "$HILITE$svc$NORMAL: $desc" einfo "$HILITE$svc$NORMAL: $desc"
@ -213,7 +214,7 @@ unset _f
if [ -n "$opts" ]; then if [ -n "$opts" ]; then
ewarn "Use of the opts variable is deprecated and will be" ewarn "Use of the opts variable is deprecated and will be"
ewarn "removed in the future." 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 fi
while [ -n "$1" ]; do while [ -n "$1" ]; do
@ -225,7 +226,7 @@ while [ -n "$1" ]; do
fi fi
# See if we have the required function and run it # See if we have the required function and run it
for _cmd in describe start stop status ${extra_commands:-$opts} \ for _cmd in describe start stop status ${extra_commands:-$opts} \
$extra_started_commands $extra_started_commands $extra_stopped_commands
do do
if [ "$_cmd" = "$1" ]; then if [ "$_cmd" = "$1" ]; then
if [ "$(command -v "$1")" = "$1" ]; then if [ "$(command -v "$1")" = "$1" ]; then
@ -253,6 +254,16 @@ while [ -n "$1" ]; do
fi fi
fi fi
done 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 unset _cmd
if [ "$(command -v "$1_pre")" = "$1_pre" ] if [ "$(command -v "$1_pre")" = "$1_pre" ]
then then

View File

@ -526,7 +526,9 @@ rc_service_exists(const char *service)
} }
librc_hidden_def(rc_service_exists) 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_STRINGLIST *
rc_service_extra_commands(const char *service) rc_service_extra_commands(const char *service)
{ {