diff --git a/src/includes/rc-misc.h b/src/includes/rc-misc.h index 95ccbc33..9a55c413 100644 --- a/src/includes/rc-misc.h +++ b/src/includes/rc-misc.h @@ -71,5 +71,6 @@ bool _rc_can_find_pids(void); RC_SERVICE lookup_service_state(const char *service); void from_time_t(char *time_string, time_t tv); time_t to_time_t(char *timestring); +pid_t get_pid(const char *applet, const char *pidfile); #endif diff --git a/src/rc/rc-misc.c b/src/rc/rc-misc.c index a6cc788e..d43f1274 100644 --- a/src/rc/rc-misc.c +++ b/src/rc/rc-misc.c @@ -474,3 +474,27 @@ time_t to_time_t(char *timestring) } return result; } + +pid_t get_pid(const char *applet,const char *pidfile) +{ + FILE *fp; + pid_t pid; + + if (! pidfile) + return -1; + + if ((fp = fopen(pidfile, "r")) == NULL) { + ewarnv("%s: fopen `%s': %s", applet, pidfile, strerror(errno)); + return -1; + } + + if (fscanf(fp, "%d", &pid) != 1) { + ewarnv("%s: no pid found in `%s'", applet, pidfile); + fclose(fp); + return -1; + } + + fclose(fp); + + return pid; +} diff --git a/src/rc/start-stop-daemon.c b/src/rc/start-stop-daemon.c index c88bc962..451d4a5c 100644 --- a/src/rc/start-stop-daemon.c +++ b/src/rc/start-stop-daemon.c @@ -368,31 +368,6 @@ parse_schedule(const char *string, int timeout) return; } -static pid_t -get_pid(const char *pidfile) -{ - FILE *fp; - pid_t pid; - - if (! pidfile) - return -1; - - if ((fp = fopen(pidfile, "r")) == NULL) { - ewarnv("%s: fopen `%s': %s", applet, pidfile, strerror(errno)); - return -1; - } - - if (fscanf(fp, "%d", &pid) != 1) { - ewarnv("%s: no pid found in `%s'", applet, pidfile); - fclose(fp); - return -1; - } - - fclose(fp); - - return pid; -} - /* return number of processed killed, -1 on error */ static int do_stop(const char *exec, const char *const *argv, @@ -472,7 +447,7 @@ run_stop_schedule(const char *exec, const char *const *argv, } if (pidfile) { - pid = get_pid(pidfile); + pid = get_pid(applet, pidfile); if (pid == -1) return 0; } @@ -1090,7 +1065,7 @@ int main(int argc, char **argv) } if (pidfile) - pid = get_pid(pidfile); + pid = get_pid(applet, pidfile); else pid = 0; @@ -1365,7 +1340,7 @@ int main(int argc, char **argv) alive = true; } else { if (pidfile) { - pid = get_pid(pidfile); + pid = get_pid(applet, pidfile); if (pid == -1) { eerrorx("%s: did not " "create a valid" diff --git a/src/rc/supervise-daemon.c b/src/rc/supervise-daemon.c index dc6d6c12..c59fb099 100644 --- a/src/rc/supervise-daemon.c +++ b/src/rc/supervise-daemon.c @@ -147,30 +147,6 @@ static void cleanup(void) free(changeuser); } -static pid_t get_pid(const char *pidfile) -{ - FILE *fp; - pid_t pid; - - if (! pidfile) - return -1; - - if ((fp = fopen(pidfile, "r")) == NULL) { - ewarnv("%s: fopen `%s': %s", applet, pidfile, strerror(errno)); - return -1; - } - - if (fscanf(fp, "%d", &pid) != 1) { - ewarnv("%s: no pid found in `%s'", applet, pidfile); - fclose(fp); - return -1; - } - - fclose(fp); - - return pid; -} - static void child_process(char *exec, char **argv, char *svcname, int start_count) { @@ -673,7 +649,7 @@ int main(int argc, char **argv) *exec_file ? exec_file : exec); if (stop) { - pid = get_pid(pidfile); + pid = get_pid(applet, pidfile); if (pid == -1) i = pid; else @@ -697,7 +673,7 @@ int main(int argc, char **argv) exit(EXIT_SUCCESS); } - pid = get_pid(pidfile); + pid = get_pid(applet, pidfile); if (pid != -1) if (kill(pid, 0) == 0) eerrorx("%s: %s is already running", applet, exec);