commit:     b0a077a35f85e266fdb82a245dcbda18664a8567
Author:     William Hubbs <w.d.hubbs <AT> gmail <DOT> com>
AuthorDate: Thu Sep 14 23:24:31 2017 +0000
Commit:     William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Thu Sep 14 23:24:39 2017 +0000
URL:        https://gitweb.gentoo.org/proj/openrc.git/commit/?id=b0a077a3

add quiet switch to do_stop in src-schedules.c

This allows supervise-daemon to run this code without attempting to
print some status messages used by start-stop-daemon.

 src/rc/rc-schedules.c      | 13 ++++++++-----
 src/rc/rc-schedules.h      |  2 +-
 src/rc/start-stop-daemon.c |  4 ++--
 src/rc/supervise-daemon.c  |  7 ++-----
 4 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/rc/rc-schedules.c b/src/rc/rc-schedules.c
index 1b235a8d..13f615ee 100644
--- a/src/rc/rc-schedules.c
+++ b/src/rc/rc-schedules.c
@@ -253,7 +253,7 @@ void parse_schedule(const char *applet, const char *string, 
int timeout)
 
 /* return number of processes killed, -1 on error */
 int do_stop(const char *applet, const char *exec, const char *const *argv,
-    pid_t pid, uid_t uid,int sig, bool test)
+    pid_t pid, uid_t uid,int sig, bool test, bool quiet)
 {
        RC_PIDLIST *pids;
        RC_PID *pi;
@@ -274,11 +274,13 @@ int do_stop(const char *applet, const char *exec, const 
char *const *argv,
                        einfo("Would send signal %d to PID %d", sig, pi->pid);
                        nkilled++;
                } else {
-                       ebeginv("Sending signal %d to PID %d", sig, pi->pid);
+                       if (!quiet)
+                               ebeginv("Sending signal %d to PID %d", sig, 
pi->pid);
                        errno = 0;
                        killed = (kill(pi->pid, sig) == 0 ||
                            errno == ESRCH ? true : false);
-                       eendv(killed ? 0 : 1,
+                       if (! quiet)
+                               eendv(killed ? 0 : 1,
                                "%s: failed to send signal %d to PID %d: %s",
                                applet, sig, pi->pid, strerror(errno));
                        if (!killed) {
@@ -335,7 +337,8 @@ int run_stop_schedule(const char *applet,
 
                case SC_SIGNAL:
                        nrunning = 0;
-                       nkilled = do_stop(applet, exec, argv, pid, uid, 
item->value, test);
+                       nkilled = do_stop(applet, exec, argv, pid, uid, 
item->value, test,
+                                       quiet);
                        if (nkilled == 0) {
                                if (tkilled == 0) {
                                        if (progressed)
@@ -364,7 +367,7 @@ int run_stop_schedule(const char *applet,
                                     nloops++)
                                {
                                        if ((nrunning = do_stop(applet, exec, 
argv,
-                                                   pid, uid, 0, test)) == 0)
+                                                   pid, uid, 0, test, quiet)) 
== 0)
                                                return 0;
 
 

diff --git a/src/rc/rc-schedules.h b/src/rc/rc-schedules.h
index a42ea0e3..234e62df 100644
--- a/src/rc/rc-schedules.h
+++ b/src/rc/rc-schedules.h
@@ -18,7 +18,7 @@ void free_schedulelist(void);
 int parse_signal(const char *applet, const char *sig);
 void parse_schedule(const char *applet, const char *string, int timeout);
 int do_stop(const char *applet, const char *exec, const char *const *argv,
-               pid_t pid, uid_t uid,int sig, bool test);
+               pid_t pid, uid_t uid,int sig, bool test, bool quiet);
 int run_stop_schedule(const char *applet,
                const char *exec, const char *const *argv,
                pid_t pid, uid_t uid,

diff --git a/src/rc/start-stop-daemon.c b/src/rc/start-stop-daemon.c
index 46784b26..dab8b3b1 100644
--- a/src/rc/start-stop-daemon.c
+++ b/src/rc/start-stop-daemon.c
@@ -684,7 +684,7 @@ int main(int argc, char **argv)
                pid = 0;
 
        if (do_stop(applet, exec, (const char * const *)margv, pid, uid,
-               0, test) > 0)
+               0, test, false) > 0)
                eerrorx("%s: %s is already running", applet, exec);
 
        if (test) {
@@ -964,7 +964,7 @@ int main(int argc, char **argv)
                        } else
                                pid = 0;
                        if (do_stop(applet, exec, (const char *const *)margv,
-                               pid, uid, 0, test) > 0)
+                               pid, uid, 0, test, false) > 0)
                                alive = true;
                }
 

diff --git a/src/rc/supervise-daemon.c b/src/rc/supervise-daemon.c
index a702a25c..7b894e7b 100644
--- a/src/rc/supervise-daemon.c
+++ b/src/rc/supervise-daemon.c
@@ -440,11 +440,6 @@ int main(int argc, char **argv)
        applet = basename_c(argv[0]);
        atexit(cleanup);
 
-       signal_setup(SIGINT, handle_signal);
-       signal_setup(SIGQUIT, handle_signal);
-       signal_setup(SIGTERM, handle_signal);
-       openlog(applet, LOG_PID, LOG_DAEMON);
-
        if ((tmp = getenv("SSD_NICELEVEL")))
                if (sscanf(tmp, "%d", &nicelevel) != 1)
                        eerror("%s: invalid nice level `%s' (SSD_NICELEVEL)",
@@ -729,6 +724,8 @@ int main(int argc, char **argv)
        if (child_pid != 0) {
                /* this is the supervisor */
                umask(numask);
+               openlog(applet, LOG_PID, LOG_DAEMON);
+               signal_setup(SIGTERM, handle_signal);
 
                fp = fopen(pidfile, "w");
                if (! fp)

Reply via email to