summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2013-09-26 19:57:58 +0200
committerLennart Poettering <lennart@poettering.net>2013-09-26 20:20:30 +0200
commitbaa89da40a1d42242c9c62603501ada7e9e52613 (patch)
tree12578bcc99d29522614a16e03b4daaf625d52bf0
parentMove part of logind.c into a separate file (diff)
downloadsystemd-baa89da40a1d42242c9c62603501ada7e9e52613.tar.xz
systemd-baa89da40a1d42242c9c62603501ada7e9e52613.zip
cgroup: when referencing cgroup controller trees allow omission of the path
-rw-r--r--TODO2
-rw-r--r--src/cgls/cgls.c4
-rw-r--r--src/shared/cgroup-util.c33
3 files changed, 26 insertions, 13 deletions
diff --git a/TODO b/TODO
index 0f2398a7ab..474532164b 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 c3229ad2d3..c689b5c471 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 dc0fe85ee2..f57f2b2c42 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;