public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/openrc:master commit in: src/librc/, man/, sh/
@ 2011-11-17 15:12 William Hubbs
  0 siblings, 0 replies; only message in thread
From: William Hubbs @ 2011-11-17 15:12 UTC (permalink / raw
  To: gentoo-commits

commit:     5b1aaf8cc803e9f21f8a0c94236ab5dddba4b2fc
Author:     William Hubbs <williamh <AT> gentoo <DOT> org>
AuthorDate: Mon Oct 17 18:47:45 2011 +0000
Commit:     William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Wed Nov 16 19:56:55 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/openrc.git;a=commit;h=5b1aaf8c

add support for extra_stopped_commands

---
 man/runscript.8    |    3 +++
 sh/runscript.sh.in |   17 ++++++++++++++---
 src/librc/librc.c  |    4 +++-
 3 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/man/runscript.8 b/man/runscript.8
index bf06d7b..b28bec2 100644
--- a/man/runscript.8
+++ b/man/runscript.8
@@ -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

diff --git a/sh/runscript.sh.in b/sh/runscript.sh.in
index 010c794..f86a510 100644
--- a/sh/runscript.sh.in
+++ b/sh/runscript.sh.in
@@ -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

diff --git a/src/librc/librc.c b/src/librc/librc.c
index c66c944..13c1973 100644
--- a/src/librc/librc.c
+++ b/src/librc/librc.c
@@ -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)
 {



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2011-11-17 15:12 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-17 15:12 [gentoo-commits] proj/openrc:master commit in: src/librc/, man/, sh/ William Hubbs

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox