From baa89da40a1d42242c9c62603501ada7e9e52613 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 26 Sep 2013 19:57:58 +0200 Subject: [PATCH] cgroup: when referencing cgroup controller trees allow omission of the path --- TODO | 2 ++ src/cgls/cgls.c | 4 +++- src/shared/cgroup-util.c | 33 +++++++++++++++++++++------------ 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/TODO b/TODO index 0f2398a7a..474532164 100644 --- a/TODO +++ b/TODO @@ -56,6 +56,8 @@ CGroup Rework Completion: Features: +* move config_parse_path_strv() out of conf-parser.c + * libdsystemd-bus should expose utf8 validation calls * When using "systemd status" on a slice unit also show all messages diff --git a/src/cgls/cgls.c b/src/cgls/cgls.c index c3229ad2d..c689b5c47 100644 --- a/src/cgls/cgls.c +++ b/src/cgls/cgls.c @@ -156,7 +156,9 @@ int main(int argc, char *argv[]) { for (i = optind; i < argc; i++) { int q; - printf("%s:\n", argv[i]); + + fprintf(stdout, "%s:\n", argv[i]); + fflush(stdout); if (arg_machine) root = strjoin("machine/", arg_machine, "/", argv[i], NULL); diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index dc0fe85ee..f57f2b2c4 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -1003,19 +1003,28 @@ int cg_split_spec(const char *spec, char **controller, char **path) { return -EINVAL; } - u = strdup(e+1); - if (!u) { - free(t); - return -ENOMEM; - } - if (!path_is_safe(u) || - !path_is_absolute(u)) { - free(t); - free(u); - return -EINVAL; - } + if (streq(e+1, "")) { + u = strdup("/"); + if (!u) { + free(t); + return -ENOMEM; + } + } else { + u = strdup(e+1); + if (!u) { + free(t); + return -ENOMEM; + } - path_kill_slashes(u); + if (!path_is_safe(u) || + !path_is_absolute(u)) { + free(t); + free(u); + return -EINVAL; + } + + path_kill_slashes(u); + } if (controller) *controller = t; -- 2.30.2