X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=unit-name.c;h=c5901cacfa3bf9c14fd95b91e6a2c8e1a3d42110;hb=136337ff74f05be3d42a769d9f0cb99716c5c40f;hp=5053d30f29a4721a6b5b43671a8400cacff93de8;hpb=8d567588cad053f79abe603ab113e1b85a92f1da;p=elogind.git diff --git a/unit-name.c b/unit-name.c index 5053d30f2..c5901cacf 100644 --- a/unit-name.c +++ b/unit-name.c @@ -371,3 +371,54 @@ char *unit_name_template(const char *f) { return r; } + +char *unit_name_from_path(const char *path, const char *suffix) { + char *p, *r; + + assert(path); + assert(suffix); + + if (!(p = strdup(path))) + return NULL; + + path_kill_slashes(p); + + path = p[0] == '/' ? p + 1 : p; + + if (path[0] == 0) { + free(p); + return strappend("-", suffix); + } + + r = unit_name_build_escape(path, NULL, suffix); + free(p); + + return r; +} + +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; +}