Am 26.11.2014 um 23:39 schrieb Michael Biebl: > diff --git a/src/sysv-generator/sysv-generator.c > b/src/sysv-generator/sysv-generator.c > index 677fac4..da6b4f6 100644 > --- a/src/sysv-generator/sysv-generator.c > +++ b/src/sysv-generator/sysv-generator.c > @@ -768,6 +768,10 @@ static int enumerate_sysv(LookupPaths lp, Hashmap > *all_services) { > service->name = name; > service->path = fpath; > > + r = load_sysv(service); > + if (r < 0) > + continue; > + > r = hashmap_put(all_services, service->name, > service); > if (r < 0) > return log_oom(); > @@ -960,10 +964,6 @@ int main(int argc, char *argv[]) { > } > > HASHMAP_FOREACH(service, all_services, j) { > - q = load_sysv(service); > - if (q < 0) > - continue; > - > q = fix_order(service, all_services); > if (q < 0) > continue;
To provide a more detailed explanation of the patch: If a service fails to load, we skip fix_order(), which is results in the wrong ordering. So instead, just don't add a service to the all_services hash_map, if it fails to load. Uoti has a developed his own, more elaborate patch, which handles this a bit differently and actually adds orderings against such non-existent services. I don't think we actually need that and it doesn't make a difference in practice. I've attached Uoti's patch for completeness sake. Michael -- Why is it that all of the instruments seeking intelligent life in the universe are pointed away from Earth?
diff --git a/src/sysv-generator/sysv-generator.c b/src/sysv-generator/sysv-generator.c index 677fac4..fdd1a7c 100644 --- a/src/sysv-generator/sysv-generator.c +++ b/src/sysv-generator/sysv-generator.c @@ -87,6 +87,7 @@ typedef struct SysvStub { char **conflicts; bool has_lsb; bool reload; + bool loaded_ok; } SysvStub; const char *arg_dest = "/tmp"; @@ -961,7 +962,11 @@ int main(int argc, char *argv[]) { HASHMAP_FOREACH(service, all_services, j) { q = load_sysv(service); - if (q < 0) + service->loaded_ok = q >= 0; + } + + HASHMAP_FOREACH(service, all_services, j) { + if (!service->loaded_ok) continue; q = fix_order(service, all_services);
signature.asc
Description: OpenPGP digital signature