commit:     4d47ce440c3e8f193cff82a77e6691ee6e7fac33
Author:     William Hubbs <w.d.hubbs <AT> gmail <DOT> com>
AuthorDate: Tue May 15 21:59:21 2018 +0000
Commit:     William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Tue May 15 21:59:21 2018 +0000
URL:        https://gitweb.gentoo.org/proj/openrc.git/commit/?id=4d47ce44

rc-service: add -d/--debug and -D/--nodeps options

 man/rc-service.8    | 14 ++++++++++++++
 src/rc/rc-service.c | 12 +++++++++++-
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/man/rc-service.8 b/man/rc-service.8
index a0202a8e..3613f8b8 100644
--- a/man/rc-service.8
+++ b/man/rc-service.8
@@ -20,6 +20,14 @@
 .Ar service cmd
 .Op Ar ...
 .Nm
+.Fl d , -debug
+.Ar service cmd
+.Op Ar ...
+.Nm
+.Fl D , -nodeps
+.Ar service cmd
+.Op Ar ...
+.Nm
 .Op Fl i , -ifexists
 .Ar service cmd
 .Op Ar ...
@@ -72,6 +80,12 @@ otherwise -1.
 .Fl r , -resolve
 does the same and also prints the full path of the service to stdout.
 .Pp
+.Fl d , -debug
+sets -x when running the service script(s).
+.Pp
+.Fl D , -nodeps
+ignores dependencies when running the service.
+.Pp
 .Fl Z , -dry-run
 prints out the commands it would execute rather than executing them.
 .Sh SEE ALSO

diff --git a/src/rc/rc-service.c b/src/rc/rc-service.c
index 77f0336b..ea69dab5 100644
--- a/src/rc/rc-service.c
+++ b/src/rc/rc-service.c
@@ -29,8 +29,10 @@
 
 const char *applet = NULL;
 const char *extraopts = NULL;
-const char *getoptstring = "ce:ilr:INZ" getoptstring_COMMON;
+const char *getoptstring = "cdDe:ilr:INZ" getoptstring_COMMON;
 const struct option longopts[] = {
+       { "debug",     0, NULL, 'd' },
+       { "nodeps",     0, NULL, 'D' },
        { "exists",   1, NULL, 'e' },
        { "ifcrashed", 0, NULL, 'c' },
        { "ifexists", 0, NULL, 'i' },
@@ -42,6 +44,8 @@ const struct option longopts[] = {
        longopts_COMMON
 };
 const char * const longopts_help[] = {
+       "set xtrace when running the command",
+       "ignore dependencies",
        "tests if the service exists or not",
        "if the service is crashed then run the command",
        "if the service exists then run the command",
@@ -78,6 +82,12 @@ int main(int argc, char **argv)
                    longopts, (int *) 0)) != -1)
        {
                switch (opt) {
+               case 'd':
+                       setenv("RC_DEBUG", "yes", 1);
+                       break;
+               case 'D':
+                       setenv("RC_NODEPS", "yes", 1);
+                       break;
                case 'e':
                        service = rc_service_resolve(optarg);
                        opt = service ? EXIT_SUCCESS : EXIT_FAILURE;

Reply via email to