From: Lennart Poettering Date: Tue, 27 Jan 2015 22:11:01 +0000 (+0100) Subject: sysv-generator: minor simplifications X-Git-Tag: v219~262 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=4e4885553447f6f4c014bfa3e5b5837a76a0e612 sysv-generator: minor simplifications --- diff --git a/src/sysv-generator/sysv-generator.c b/src/sysv-generator/sysv-generator.c index b8b77aa03..1e4d54888 100644 --- a/src/sysv-generator/sysv-generator.c +++ b/src/sysv-generator/sysv-generator.c @@ -274,10 +274,9 @@ static int sysv_translate_facility(const char *name, const char *filename, char "time", SPECIAL_TIME_SYNC_TARGET, }; - unsigned i; - char *r; + char *filename_no_sh, *e, *r; const char *n; - _cleanup_free_ char *filename_no_sh = NULL; + unsigned i; assert(name); assert(_r); @@ -300,11 +299,12 @@ static int sysv_translate_facility(const char *name, const char *filename, char } /* strip ".sh" suffix from file name for comparison */ - filename_no_sh = strdup(filename); - if (!filename_no_sh) - return -ENOMEM; - if (endswith(filename, ".sh")) - filename_no_sh[strlen(filename)-3] = '\0'; + filename_no_sh = strdupa(filename); + e = endswith(filename, ".sh"); + if (e) { + *e = '\0'; + filename = filename_no_sh; + } /* If we don't know this name, fallback heuristics to figure * out whether something is a target or a service alias. */ @@ -315,7 +315,7 @@ static int sysv_translate_facility(const char *name, const char *filename, char /* Facilities starting with $ are most likely targets */ r = unit_name_build(n, NULL, ".target"); - } else if (filename && streq(name, filename_no_sh)) + } else if (filename && streq(name, filename)) /* Names equaling the file name of the services are redundant */ return 0; else @@ -495,10 +495,8 @@ static int load_sysv(SysvStub *s) { return -ENOMEM; r = sysv_translate_facility(n, basename(s->path), &m); - if (r < 0) return r; - if (r == 0) continue;