From 30a56cdb4680f90e6c371c75c27c6ecec2d7aeec Mon Sep 17 00:00:00 2001 From: Christian Ruppert Date: Sun, 15 Jan 2012 02:10:35 +0100 Subject: Add "ifstopped" command to runscript Signed-off-by: Christian Ruppert --- man/runscript.8 | 3 +++ src/rc/runscript.c | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/man/runscript.8 b/man/runscript.8 index 6ad6031..dbc0b7d 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 2f66971..8e0ced9 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; -- cgit v1.2.3