X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fcgroup-util.c;h=8c2ef455304518d9164fbf70530e21abd7347761;hb=2f79c10e9aef916efbcf29315eea8c25d0a50ac4;hp=1366f5865f418f7a89fdfcb0de5b1027c098fc97;hpb=8af8afd6b3a34d1218826f55ada8ece8b4e36fed;p=elogind.git diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index 1366f5865..8c2ef4553 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -1146,17 +1146,22 @@ int cg_get_user_path(char **path) { return 0; } -int cg_get_machine_path(char **path) { - _cleanup_free_ char *root = NULL; +int cg_get_machine_path(const char *machine, char **path) { + _cleanup_free_ char *root = NULL, *escaped = NULL; char *p; assert(path); - if (cg_get_root_path(&root) < 0 || streq(root, "/")) - p = strdup("/machine"); - else - p = strappend(root, "/machine"); + if (machine) { + const char *name = strappenda(machine, ".nspawn"); + + escaped = cg_escape(name); + if (!escaped) + return -ENOMEM; + } + p = strjoin(cg_get_root_path(&root) >= 0 && !streq(root, "/") ? root : "", + "/machine", machine ? "/" : "", machine ? escaped : "", NULL); if (!p) return -ENOMEM;