chiark / gitweb /
bash-completion: --property support
[elogind.git] / src / login / sd-login.c
index f433e3e80b15fc5b87f742d0f6a6627876a6dbf9..c97d75c000f5883b425b0c321a06da2aa7996c7f 100644 (file)
 #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) {
@@ -95,7 +83,7 @@ _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;