X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fcgroup-util.c;h=af5227848df998ebc6a18a30292496226e2e7278;hb=3f98659cce700fea91959312297950f15011b07b;hp=3d12233a1b394bd8b04a2ff0e5ed4ab1410b6fac;hpb=ef1673d16907726d83bdff2e57b5261997a85020;p=elogind.git diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index 3d12233a1..af5227848 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -1277,9 +1277,9 @@ static int cgroup_to_unit(char *cgroup, char **unit){ return 0; } -int cg_pid_get_unit(pid_t pid, char **unit) { +static int cg_pid_get(const char *prefix, pid_t pid, char **unit) { int r; - char *cgroup; + char _cleanup_free_ *cgroup = NULL; assert(pid >= 0); assert(unit); @@ -1288,45 +1288,17 @@ int cg_pid_get_unit(pid_t pid, char **unit) { if (r < 0) return r; - if (!startswith(cgroup, "/system/")) { - free(cgroup); + if (!startswith(cgroup, prefix)) return -ENOENT; - } r = cgroup_to_unit(cgroup, unit); - if (r < 0){ - free(cgroup); - return r; - } - - free(cgroup); + return r; +} - return 0; +int cg_pid_get_unit(pid_t pid, char **unit) { + return cg_pid_get("/system/", pid, unit); } int cg_pid_get_user_unit(pid_t pid, char **unit) { - int r; - char *cgroup; - - assert(pid >= 0); - assert(unit); - - r = cg_pid_get_cgroup(pid, NULL, &cgroup); - if (r < 0) - return r; - - if (!startswith(cgroup, "/user/")) { - free(cgroup); - return -ENOENT; - } - - r = cgroup_to_unit(cgroup, unit); - if (r < 0) { - free(cgroup); - return r; - } - - free(cgroup); - - return 0; + return cg_pid_get("/user/", pid, unit); }