X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fshared%2Funit-name.c;h=1baa6eb7e573bc9ba8de903dac0b4d5e721e987b;hp=7733aae0e72689192f7f4dad899271cea8f49226;hb=442e00839e4fc3c11506f5c8a9477b465865aecc;hpb=ede3a7967560506486e1e25d09ef4e74600851ff diff --git a/src/shared/unit-name.c b/src/shared/unit-name.c index 7733aae0e..1baa6eb7e 100644 --- a/src/shared/unit-name.c +++ b/src/shared/unit-name.c @@ -565,3 +565,30 @@ UnitType unit_name_to_type(const char *n) { return unit_type_from_string(e + 1); } + +int build_subslice(const char *slice, const char*name, char **subslice) { + char *ret; + + assert(slice); + assert(name); + assert(subslice); + + if (streq(slice, "-.slice")) + ret = strappend(name, ".slice"); + else { + char *e; + + e = endswith(slice, ".slice"); + if (!e) + return -EINVAL; + + ret = new(char, (e - slice) + 1 + strlen(name) + 6 + 1); + if (!ret) + return -ENOMEM; + + stpcpy(stpcpy(stpcpy(mempcpy(ret, slice, e - slice), "-"), name), ".slice"); + } + + *subslice = ret; + return 0; +}