aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Hubbs <w.d.hubbs@gmail.com>2017-11-07 15:30:21 -0600
committerWilliam Hubbs <w.d.hubbs@gmail.com>2017-11-07 15:30:34 -0600
commit90d9ea656ff7c6b5d618df4e4261ebfa4033f1a8 (patch)
tree85d9ffb3c2f7a90eff03df6874444995768a4956
parenta3d1c8a0e7d5586be13e2cd9b5029fd729bc1594 (diff)
start-stop-daemon: do not use do_stop to verify whether a daemon is running
X-Gentoo-Bug: 636574 X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=636574
-rw-r--r--src/rc/start-stop-daemon.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/rc/start-stop-daemon.c b/src/rc/start-stop-daemon.c
index dab8b3b1..e98f8ba3 100644
--- a/src/rc/start-stop-daemon.c
+++ b/src/rc/start-stop-daemon.c
@@ -279,6 +279,7 @@ int main(int argc, char **argv)
int stdout_fd;
int stderr_fd;
pid_t pid, spid;
+ RC_PIDLIST *pids;
int i;
char *svcname = getenv("RC_SVCNAME");
RC_STRINGLIST *env_list;
@@ -683,10 +684,14 @@ int main(int argc, char **argv)
else
pid = 0;
- if (do_stop(applet, exec, (const char * const *)margv, pid, uid,
- 0, test, false) > 0)
+ if (pid)
+ pids = rc_find_pids(NULL, NULL, 0, pid);
+ else
+ pids = rc_find_pids(exec, (const char * const *) argv, uid, 0);
+ if (pids)
eerrorx("%s: %s is already running", applet, exec);
+ free(pids);
if (test) {
if (rc_yesno(getenv("EINFO_QUIET")))
exit (EXIT_SUCCESS);