summaryrefslogtreecommitdiff
path: root/src/core/slice.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2017-12-07 14:23:58 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2017-12-15 14:57:07 +0100
commita789420775d7b01249c71f5e472ab325bc0657c9 (patch)
tree257ad0f12df13b0f3fe0237fc39486e7acd29b92 /src/core/slice.c
parent8b5c4d167a82dc6458c447813dd39b4a4ef0fdac (diff)
downloadsystemd-a789420775d7b01249c71f5e472ab325bc0657c9.tar.gz
core: reuse slice_build_parent_slice
Diffstat (limited to 'src/core/slice.c')
-rw-r--r--src/core/slice.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/src/core/slice.c b/src/core/slice.c
index 5ab1e6f898..fef47b04fe 100644
--- a/src/core/slice.c
+++ b/src/core/slice.c
@@ -59,30 +59,24 @@ static void slice_set_state(Slice *t, SliceState state) {
}
static int slice_add_parent_slice(Slice *s) {
- char *a, *dash;
- Unit *parent;
+ Unit *u = UNIT(s), *parent;
+ _cleanup_free_ char *a = NULL;
int r;
assert(s);
- if (UNIT_ISSET(UNIT(s)->slice))
+ if (UNIT_ISSET(u->slice))
return 0;
- if (unit_has_name(UNIT(s), SPECIAL_ROOT_SLICE))
- return 0;
-
- a = strdupa(UNIT(s)->id);
- dash = strrchr(a, '-');
- if (dash)
- strcpy(dash, ".slice");
- else
- a = (char*) SPECIAL_ROOT_SLICE;
+ r = slice_build_parent_slice(u->id, &a);
+ if (r <= 0) /* 0 means root slice */
+ return r;
- r = manager_load_unit(UNIT(s)->manager, a, NULL, NULL, &parent);
+ r = manager_load_unit(u->manager, a, NULL, NULL, &parent);
if (r < 0)
return r;
- unit_ref_set(&UNIT(s)->slice, parent);
+ unit_ref_set(&u->slice, parent);
return 0;
}