cgroup: when referencing cgroup controller trees allow omission of the path

This commit is contained in:
Lennart Poettering 2013-09-26 19:57:58 +02:00
parent 2b3ab29de4
commit baa89da40a
3 changed files with 26 additions and 13 deletions

2
TODO
View File

@ -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

View File

@ -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);

View File

@ -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;