X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=unit-name.c;h=5d428dd446af79e1049846e3491dacf4309c804c;hb=8d025b231b97da7b5cf908309f23e5af78bae4a4;hp=5053d30f29a4721a6b5b43671a8400cacff93de8;hpb=8d567588cad053f79abe603ab113e1b85a92f1da;p=elogind.git diff --git a/unit-name.c b/unit-name.c index 5053d30f2..5d428dd44 100644 --- a/unit-name.c +++ b/unit-name.c @@ -371,3 +371,43 @@ char *unit_name_template(const char *f) { return r; } + +char *unit_name_from_path(const char *path, const char *suffix) { + assert(path); + assert(suffix); + + if (path[0] == '/') + path++; + + if (path[0] == 0) + return strappend("-", suffix); + + return unit_name_build_escape(path, NULL, suffix); +} + +char *unit_name_to_path(const char *name) { + char *w, *e; + + assert(name); + + if (!(w = unit_name_to_prefix(name))) + return NULL; + + e = unit_name_unescape(w); + free(w); + + if (!e) + return NULL; + + if (e[0] != '/') { + w = strappend("/", e); + free(e); + + if (!w) + return NULL; + + e = w; + } + + return e; +}