From 66d826026e34d52e84ccacecc18a009244632607 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Thu, 21 Mar 2024 18:29:07 +0800 Subject: [PATCH] cgroup-util: use path_find_first_component where appropriate Prompted by 8922a728f732a716ecd17dd67cd39bc1a0fc4aa5 --- src/basic/cgroup-util.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c index 60b4e3f2269..6991460f86e 100644 --- a/src/basic/cgroup-util.c +++ b/src/basic/cgroup-util.c @@ -1500,22 +1500,25 @@ int cg_path_get_slice(const char *p, char **ret_slice) { assert(p); assert(ret_slice); - /* Finds the right-most slice unit from the beginning, but - * stops before we come to the first non-slice unit. */ + /* Finds the right-most slice unit from the beginning, but stops before we come to + * the first non-slice unit. */ for (;;) { - p += strspn(p, "/"); + const char *s; + int n; - size_t n = strcspn(p, "/"); - if (!valid_slice_name(p, n)) + n = path_find_first_component(&p, /* accept_dot_dot = */ false, &s); + if (n < 0) + return n; + if (!valid_slice_name(s, n)) break; - e = p; - p += n; + e = s; } if (e) return cg_path_decode_unit(e, ret_slice); + return strdup_to(ret_slice, SPECIAL_ROOT_SLICE); } -- 2.47.3