X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=service.c;h=be23b57c4979556f8bc0615bc0a12696ad0c335f;hb=03d6ab854e2c20d2492df2a1dfd010db2be1dd5c;hp=28416894676591c940b2475ec862db211068380d;hpb=8e27452380193a5f81bfd08a59aab8b07008ba0b;p=elogind.git diff --git a/service.c b/service.c index 284168946..be23b57c4 100644 --- a/service.c +++ b/service.c @@ -370,7 +370,13 @@ static int service_load_sysv_path(Service *s, const char *path) { if (r == 0) continue; - r = unit_add_name(u, m); + if (unit_name_to_type(m) == UNIT_SERVICE) + r = unit_add_name(u, m); + else { + if ((r = unit_add_dependency_by_name_inverse(u, UNIT_REQUIRES, m)) >= 0) + r = unit_add_dependency_by_name(u, UNIT_BEFORE, m); + } + free(m); if (r < 0) @@ -504,7 +510,7 @@ static int service_load_sysv_name(Service *s, const char *name) { r = service_load_sysv_path(s, path); free(path); - if (r >= 0) + if (r != 0) return r; } @@ -568,7 +574,7 @@ static int service_init(Unit *u) { return r; } - /* Load a classic init script as a fallback, if we couldn*t find anything */ + /* Load a classic init script as a fallback, if we couldn't find anything */ if (r == 0) if ((r = service_load_sysv(s)) <= 0) { service_done(u); @@ -606,11 +612,13 @@ static void service_dump(Unit *u, FILE *f, const char *prefix) { "%sService State: %s\n" "%sPermissionsStartOnly: %s\n" "%sRootDirectoryStartOnly: %s\n" - "%sValidNoProcess: %s\n", + "%sValidNoProcess: %s\n" + "%sType: %s\n", prefix, service_state_to_string(s->state), prefix, yes_no(s->permissions_start_only), prefix, yes_no(s->root_directory_start_only), - prefix, yes_no(s->valid_no_process)); + prefix, yes_no(s->valid_no_process), + prefix, service_type_to_string(s->type)); if (s->pid_file) fprintf(f, @@ -1436,7 +1444,7 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) { * don't care about failing commands. */ if (s->control_command->command_next && - (success || (s->state == SERVICE_EXEC_STOP || s->state == SERVICE_EXEC_STOP_POST))) + (success || (s->state == SERVICE_STOP || s->state == SERVICE_STOP_POST))) /* There is another command to * * execute, so let's do that. */