X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=unit-name.c;h=c5901cacfa3bf9c14fd95b91e6a2c8e1a3d42110;hb=f58eedd538b3a138814a54b94b0c2c89ef727d82;hp=5d428dd446af79e1049846e3491dacf4309c804c;hpb=a16e112358ea8fea381ee106b89e645aed8b0a8c;p=elogind.git diff --git a/unit-name.c b/unit-name.c index 5d428dd44..c5901cacf 100644 --- a/unit-name.c +++ b/unit-name.c @@ -373,16 +373,27 @@ char *unit_name_template(const char *f) { } char *unit_name_from_path(const char *path, const char *suffix) { + char *p, *r; + assert(path); assert(suffix); - if (path[0] == '/') - path++; + if (!(p = strdup(path))) + return NULL; + + path_kill_slashes(p); + + path = p[0] == '/' ? p + 1 : p; - if (path[0] == 0) + if (path[0] == 0) { + free(p); return strappend("-", suffix); + } + + r = unit_name_build_escape(path, NULL, suffix); + free(p); - return unit_name_build_escape(path, NULL, suffix); + return r; } char *unit_name_to_path(const char *name) {