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.
This commit is contained in:
parent
6a5ca2ab36
commit
b0a077a35f
@ -253,7 +253,7 @@ void parse_schedule(const char *applet, const char *string, int timeout)
|
|||||||
|
|
||||||
/* return number of processes killed, -1 on error */
|
/* return number of processes killed, -1 on error */
|
||||||
int do_stop(const char *applet, const char *exec, const char *const *argv,
|
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_PIDLIST *pids;
|
||||||
RC_PID *pi;
|
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);
|
einfo("Would send signal %d to PID %d", sig, pi->pid);
|
||||||
nkilled++;
|
nkilled++;
|
||||||
} else {
|
} 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;
|
errno = 0;
|
||||||
killed = (kill(pi->pid, sig) == 0 ||
|
killed = (kill(pi->pid, sig) == 0 ||
|
||||||
errno == ESRCH ? true : false);
|
errno == ESRCH ? true : false);
|
||||||
eendv(killed ? 0 : 1,
|
if (! quiet)
|
||||||
|
eendv(killed ? 0 : 1,
|
||||||
"%s: failed to send signal %d to PID %d: %s",
|
"%s: failed to send signal %d to PID %d: %s",
|
||||||
applet, sig, pi->pid, strerror(errno));
|
applet, sig, pi->pid, strerror(errno));
|
||||||
if (!killed) {
|
if (!killed) {
|
||||||
@ -335,7 +337,8 @@ int run_stop_schedule(const char *applet,
|
|||||||
|
|
||||||
case SC_SIGNAL:
|
case SC_SIGNAL:
|
||||||
nrunning = 0;
|
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 (nkilled == 0) {
|
||||||
if (tkilled == 0) {
|
if (tkilled == 0) {
|
||||||
if (progressed)
|
if (progressed)
|
||||||
@ -364,7 +367,7 @@ int run_stop_schedule(const char *applet,
|
|||||||
nloops++)
|
nloops++)
|
||||||
{
|
{
|
||||||
if ((nrunning = do_stop(applet, exec, argv,
|
if ((nrunning = do_stop(applet, exec, argv,
|
||||||
pid, uid, 0, test)) == 0)
|
pid, uid, 0, test, quiet)) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ void free_schedulelist(void);
|
|||||||
int parse_signal(const char *applet, const char *sig);
|
int parse_signal(const char *applet, const char *sig);
|
||||||
void parse_schedule(const char *applet, const char *string, int timeout);
|
void parse_schedule(const char *applet, const char *string, int timeout);
|
||||||
int do_stop(const char *applet, const char *exec, const char *const *argv,
|
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,
|
int run_stop_schedule(const char *applet,
|
||||||
const char *exec, const char *const *argv,
|
const char *exec, const char *const *argv,
|
||||||
pid_t pid, uid_t uid,
|
pid_t pid, uid_t uid,
|
||||||
|
@ -684,7 +684,7 @@ int main(int argc, char **argv)
|
|||||||
pid = 0;
|
pid = 0;
|
||||||
|
|
||||||
if (do_stop(applet, exec, (const char * const *)margv, pid, uid,
|
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);
|
eerrorx("%s: %s is already running", applet, exec);
|
||||||
|
|
||||||
if (test) {
|
if (test) {
|
||||||
@ -964,7 +964,7 @@ int main(int argc, char **argv)
|
|||||||
} else
|
} else
|
||||||
pid = 0;
|
pid = 0;
|
||||||
if (do_stop(applet, exec, (const char *const *)margv,
|
if (do_stop(applet, exec, (const char *const *)margv,
|
||||||
pid, uid, 0, test) > 0)
|
pid, uid, 0, test, false) > 0)
|
||||||
alive = true;
|
alive = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -440,11 +440,6 @@ int main(int argc, char **argv)
|
|||||||
applet = basename_c(argv[0]);
|
applet = basename_c(argv[0]);
|
||||||
atexit(cleanup);
|
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 ((tmp = getenv("SSD_NICELEVEL")))
|
||||||
if (sscanf(tmp, "%d", &nicelevel) != 1)
|
if (sscanf(tmp, "%d", &nicelevel) != 1)
|
||||||
eerror("%s: invalid nice level `%s' (SSD_NICELEVEL)",
|
eerror("%s: invalid nice level `%s' (SSD_NICELEVEL)",
|
||||||
@ -729,6 +724,8 @@ int main(int argc, char **argv)
|
|||||||
if (child_pid != 0) {
|
if (child_pid != 0) {
|
||||||
/* this is the supervisor */
|
/* this is the supervisor */
|
||||||
umask(numask);
|
umask(numask);
|
||||||
|
openlog(applet, LOG_PID, LOG_DAEMON);
|
||||||
|
signal_setup(SIGTERM, handle_signal);
|
||||||
|
|
||||||
fp = fopen(pidfile, "w");
|
fp = fopen(pidfile, "w");
|
||||||
if (! fp)
|
if (! fp)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user