#include "fileio.h"
_public_ int sd_pid_get_session(pid_t pid, char **session) {
- int r;
- char *cgroup, *p;
-
if (pid < 0)
return -EINVAL;
if (!session)
return -EINVAL;
- r = cg_pid_get_cgroup(pid, NULL, &cgroup);
- if (r < 0)
- return r;
+ return cg_pid_get_session(pid, session);
+}
- if (!startswith(cgroup, "/user/")) {
- free(cgroup);
- return -ENOENT;
- }
+_public_ int sd_pid_get_unit(pid_t pid, char **unit) {
- p = strchr(cgroup + 6, '/');
- if (!p) {
- free(cgroup);
- return -ENOENT;
- }
+ if (pid < 0)
+ return -EINVAL;
+ if (!unit)
+ return -EINVAL;
- p++;
- if (startswith(p, "shared/") || streq(p, "shared")) {
- free(cgroup);
- return -ENOENT;
- }
+ return cg_pid_get_unit(pid, unit);
+}
- p = strndup(p, strcspn(p, "/"));
- free(cgroup);
+_public_ int sd_pid_get_user_unit(pid_t pid, char **unit) {
- if (!p)
- return -ENOMEM;
+ if (pid < 0)
+ return -EINVAL;
+ if (!unit)
+ return -EINVAL;
- *session = p;
- return 0;
+ return cg_pid_get_user_unit(pid, unit);
}
-_public_ int sd_pid_get_unit(pid_t pid, char **unit) {
+_public_ int sd_pid_get_machine_name(pid_t pid, char **name) {
if (pid < 0)
return -EINVAL;
-
- if (!unit)
+ if (!name)
return -EINVAL;
- return cg_pid_get_unit(pid, unit);
+ return cg_pid_get_machine_name(pid, name);
}
_public_ int sd_pid_get_owner_uid(pid_t pid, uid_t *uid) {
if (!uid)
return -EINVAL;
- r = cg_pid_get_cgroup(pid, &root, &cgroup);
+ r = cg_pid_get_path_shifted(pid, &root, &cgroup);
if (r < 0)
return r;