X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fservice.c;h=547a55567abef7ea133d4cd3030739b94038d74e;hp=651f7c82ca484e730bc587c427c5cc15456bddf3;hb=17586c16bac1d5ecf7d60ef57d18e82e36c288c1;hpb=fc5df99e247b1bea9834b1e1e7b69ec6f955411e diff --git a/src/service.c b/src/service.c index 651f7c82c..547a55567 100644 --- a/src/service.c +++ b/src/service.c @@ -675,7 +675,7 @@ static int service_load_sysv_name(Service *s, const char *name) { endswith(name, ".sh.service")) return -ENOENT; - STRV_FOREACH(p, UNIT(s)->meta.manager->sysvinit_path) { + STRV_FOREACH(p, UNIT(s)->meta.manager->lookup_paths.sysvinit_path) { char *path; int r; @@ -726,7 +726,7 @@ static int service_load_sysv(Service *s) { /* Load service data from SysV init scripts, preferably with * LSB headers ... */ - if (strv_isempty(UNIT(s)->meta.manager->sysvinit_path)) + if (strv_isempty(UNIT(s)->meta.manager->lookup_paths.sysvinit_path)) return 0; if ((t = UNIT(s)->meta.id)) @@ -936,6 +936,9 @@ static int service_load_pid_file(Service *s) { if ((unsigned long) (pid_t) p != p) return -ERANGE; + if (p <= 1) + return -ERANGE; + if (kill((pid_t) p, 0) < 0 && errno != EPERM) { log_warning("PID %llu read from file %s does not exist. Your service or init script might be broken.", (unsigned long long) p, s->pid_file); @@ -1377,7 +1380,7 @@ static void service_enter_stop_post(Service *s, bool success) { return; fail: - log_warning("%s failed to run stop-post executable: %s", UNIT(s)->meta.id, strerror(-r)); + log_warning("%s failed to run 'stop-post' task: %s", UNIT(s)->meta.id, strerror(-r)); service_enter_signal(s, SERVICE_FINAL_SIGTERM, false); } @@ -1473,7 +1476,7 @@ static void service_enter_stop(Service *s, bool success) { return; fail: - log_warning("%s failed to run stop executable: %s", UNIT(s)->meta.id, strerror(-r)); + log_warning("%s failed to run 'stop' task: %s", UNIT(s)->meta.id, strerror(-r)); service_enter_signal(s, SERVICE_STOP_SIGTERM, false); } @@ -1518,7 +1521,7 @@ static void service_enter_start_post(Service *s) { return; fail: - log_warning("%s failed to run start-post executable: %s", UNIT(s)->meta.id, strerror(-r)); + log_warning("%s failed to run 'start-post' task: %s", UNIT(s)->meta.id, strerror(-r)); service_enter_stop(s, false); } @@ -1584,7 +1587,7 @@ static void service_enter_start(Service *s) { return; fail: - log_warning("%s failed to run start exectuable: %s", UNIT(s)->meta.id, strerror(-r)); + log_warning("%s failed to run 'start' task: %s", UNIT(s)->meta.id, strerror(-r)); service_enter_signal(s, SERVICE_FINAL_SIGTERM, false); } @@ -1613,7 +1616,7 @@ static void service_enter_start_pre(Service *s) { return; fail: - log_warning("%s failed to run start-pre executable: %s", UNIT(s)->meta.id, strerror(-r)); + log_warning("%s failed to run 'start-pre' task: %s", UNIT(s)->meta.id, strerror(-r)); service_enter_dead(s, false, true); } @@ -1660,7 +1663,7 @@ static void service_enter_reload(Service *s) { return; fail: - log_warning("%s failed to run reload executable: %s", UNIT(s)->meta.id, strerror(-r)); + log_warning("%s failed to run 'reload' task: %s", UNIT(s)->meta.id, strerror(-r)); service_enter_stop(s, false); } @@ -1690,7 +1693,7 @@ static void service_run_next(Service *s, bool success) { return; fail: - log_warning("%s failed to run spawn next executable: %s", UNIT(s)->meta.id, strerror(-r)); + log_warning("%s failed to run spawn next task: %s", UNIT(s)->meta.id, strerror(-r)); if (s->state == SERVICE_START_PRE) service_enter_signal(s, SERVICE_FINAL_SIGTERM, false); @@ -2201,7 +2204,7 @@ static int service_enumerate(Manager *m) { assert(m); - STRV_FOREACH(p, m->sysvrcnd_path) + STRV_FOREACH(p, m->lookup_paths.sysvrcnd_path) for (i = 0; i < ELEMENTSOF(rcnd_table); i ++) { struct dirent *de;