diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2013-04-30 00:35:38 -0400 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2013-05-01 10:15:25 -0400 |
commit | 38158b920e772ea3a7cc9dfcf705666ce3aa5ce3 (patch) | |
tree | 4106a88cbf6f55cb41694c6e7d85dd08f3108089 /src/shared | |
parent | 57277cbe40bc9a1421c810cee39c606f11d39008 (diff) |
cgls: add --machine/-M
cg_get_machine_path is modified to include the escaped machine name
+ ".nspawn" if the machine argument is nonnull.
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/cgroup-util.c | 17 | ||||
-rw-r--r-- | src/shared/cgroup-util.h | 2 |
2 files changed, 12 insertions, 7 deletions
diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index 1366f5865f..8c2ef45530 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; diff --git a/src/shared/cgroup-util.h b/src/shared/cgroup-util.h index 7bd02c1008..92caa0c448 100644 --- a/src/shared/cgroup-util.h +++ b/src/shared/cgroup-util.h @@ -87,7 +87,7 @@ int cg_is_empty_recursive(const char *controller, const char *path, bool ignore_ int cg_get_root_path(char **path); int cg_get_system_path(char **path); int cg_get_user_path(char **path); -int cg_get_machine_path(char **path); +int cg_get_machine_path(const char *machine, char **path); int cg_path_get_session(const char *path, char **session); int cg_path_get_owner_uid(const char *path, uid_t *uid); |