commit: a7f475ca04856ef8232364c5b0c3191566b0696c
Author: William Hubbs <w.d.hubbs <AT> gmail <DOT> com>
AuthorDate: Tue May 15 00:00:04 2018 +0000
Commit: William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Tue May 15 00:00:04 2018 +0000
URL: https://gitweb.gentoo.org/proj/openrc.git/commit/?id=a7f475ca
rc-service: add a --dry-run option
This is for #225.
man/rc-service.8 | 6 ++++++
src/rc/rc-service.c | 7 ++++++-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/man/rc-service.8 b/man/rc-service.8
index 8f075de4..a0202a8e 100644
--- a/man/rc-service.8
+++ b/man/rc-service.8
@@ -35,6 +35,9 @@
.Fl e , -exists
.Ar service
.Nm
+.Fl Z , -dry-run
+.Ar service
+.Nm
.Fl l , -list
.Nm
.Fl r , -resolve
@@ -68,6 +71,9 @@ return 0 if it can find
otherwise -1.
.Fl r , -resolve
does the same and also prints the full path of the service to stdout.
+.Pp
+.Fl Z , -dry-run
+prints out the commands it would execute rather than executing them.
.Sh SEE ALSO
.Xr openrc 8 ,
.Xr stdout 3
diff --git a/src/rc/rc-service.c b/src/rc/rc-service.c
index 8e7b00dc..77f0336b 100644
--- a/src/rc/rc-service.c
+++ b/src/rc/rc-service.c
@@ -29,7 +29,7 @@
const char *applet = NULL;
const char *extraopts = NULL;
-const char *getoptstring = "ce:ilr:IN" getoptstring_COMMON;
+const char *getoptstring = "ce:ilr:INZ" getoptstring_COMMON;
const struct option longopts[] = {
{ "exists", 1, NULL, 'e' },
{ "ifcrashed", 0, NULL, 'c' },
@@ -38,6 +38,7 @@ const struct option longopts[] = {
{ "ifnotstarted", 0, NULL, 'N' },
{ "list", 0, NULL, 'l' },
{ "resolve", 1, NULL, 'r' },
+ { "dry-run", 0, NULL, 'Z' },
longopts_COMMON
};
const char * const longopts_help[] = {
@@ -48,6 +49,7 @@ const char * const longopts_help[] = {
"if the service is not started then run the command",
"list all available services",
"resolve the service name to an init script",
+ "dry run (show what would happen)",
longopts_help_COMMON
};
const char *usagestring = ""
\
@@ -112,6 +114,9 @@ int main(int argc, char **argv)
free(service);
return EXIT_SUCCESS;
/* NOTREACHED */
+ case 'Z':
+ setenv("IN_DRYRUN", "yes", 1);
+ break;
case_RC_COMMON_GETOPT
}