aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Ruppert <idl0r@gentoo.org>2012-01-15 02:10:35 +0100
committerChristian Ruppert <idl0r@gentoo.org>2012-01-15 02:10:35 +0100
commit30a56cdb4680f90e6c371c75c27c6ecec2d7aeec (patch)
treeff9d19dcc2503bcf3ca7600d7cbad00725b69cdf
parent14625346c07a2a66fe77ce578c9423918bec1d97 (diff)
Add "ifstopped" command to runscript
Signed-off-by: Christian Ruppert <idl0r@gentoo.org>
-rw-r--r--man/runscript.83
-rw-r--r--src/rc/runscript.c8
2 files changed, 10 insertions, 1 deletions
diff --git a/man/runscript.8 b/man/runscript.8
index 6ad6031b..dbc0b7dc 100644
--- a/man/runscript.8
+++ b/man/runscript.8
@@ -32,6 +32,7 @@
.Op Fl D , -nodeps
.Op Fl d , -debug
.Op Fl s , -ifstarted
+.Op Fl S , -ifstopped
.Op Fl Z , -dry-run
.Op Ar command ...
.Sh DESCRIPTION
@@ -76,6 +77,8 @@ Set xtrace on in the shell to assist in debugging.
Ignore all dependency information the service supplies.
.It Fl s , -ifstarted
Only run the command if the service has been started.
+.It Fl S , -ifstopped
+Only run the command if the service has been stopped.
.It Fl q , -quiet
Turns off all informational output the service generates.
Output from any non OpenRC commands is not affected.
diff --git a/src/rc/runscript.c b/src/rc/runscript.c
index 2f66971c..8e0ced98 100644
--- a/src/rc/runscript.c
+++ b/src/rc/runscript.c
@@ -1079,12 +1079,13 @@ service_plugable(void)
}
#include "_usage.h"
-#define getoptstring "dDsvl:Z" getoptstring_COMMON
+#define getoptstring "dDsSvl:Z" getoptstring_COMMON
#define extraopts "stop | start | restart | describe | zap"
static const struct option longopts[] = {
{ "debug", 0, NULL, 'd'},
{ "dry-run", 0, NULL, 'Z'},
{ "ifstarted", 0, NULL, 's'},
+ { "ifstopped", 0, NULL, 'S'},
{ "nodeps", 0, NULL, 'D'},
{ "lockfd", 1, NULL, 'l'},
longopts_COMMON
@@ -1093,6 +1094,7 @@ static const char *const longopts_help[] = {
"set xtrace when running the script",
"show what would be done",
"only run commands when started",
+ "only run commands when stopped",
"ignore dependencies",
"fd of the exclusive lock from rc",
longopts_help_COMMON
@@ -1235,6 +1237,10 @@ runscript(int argc, char **argv)
if (!(rc_service_state(service) & RC_SERVICE_STARTED))
exit(EXIT_FAILURE);
break;
+ case 'S':
+ if (!(rc_service_state(service) & RC_SERVICE_STOPPED))
+ exit(EXIT_FAILURE);
+ break;
case 'D':
deps = false;
break;