chiark / gitweb /
Prep 235: Enabled sd_bus_creds_get_slice(), sd_bus_creds_get_user_slice(), sd_peer_ge...
authorSven Eden <yamakuzure@gmx.net>
Tue, 9 Jan 2018 17:52:14 +0000 (18:52 +0100)
committerSven Eden <yamakuzure@gmx.net>
Tue, 9 Jan 2018 17:52:14 +0000 (18:52 +0100)
src/basic/cgroup-util.c
src/basic/cgroup-util.h
src/libelogind/libelogind.sym
src/libelogind/sd-bus/bus-creds.c
src/libelogind/sd-login/sd-login.c
src/systemd/sd-bus.h

index d909e29902b513edba16a76b8c4f5e94945e47d7..41a33899f991980179f771fcbc278098c76646bd 100644 (file)
@@ -1936,19 +1936,29 @@ int cg_pid_get_slice(pid_t pid, char **slice) {
         return cg_path_get_slice(cgroup, slice);
 }
 
-#if 0 /// UNNEEDED by elogind
 int cg_path_get_user_slice(const char *p, char **slice) {
+#if 0 /// UNNEEDED by elogind
         const char *t;
+#endif // 0
         assert(p);
         assert(slice);
 
+#if 0 // nothing to skip in elogind
         t = skip_user_prefix(p);
         if (!t)
                 return -ENXIO;
+#endif // 0
 
+#if 0 /// UNNEEDED by elogind
         /* And now it looks pretty much the same as for a system
          * slice, so let's just use the same parser from here on. */
         return cg_path_get_slice(t, slice);
+#else
+        /* In elogind there is nothing to skip, we can use the path
+         * directly. Generally speaking this is always a session id
+         * to user mapping. */
+        return cg_path_get_slice(p, slice);
+#endif // 0
 }
 
 int cg_pid_get_user_slice(pid_t pid, char **slice) {
@@ -1963,7 +1973,6 @@ int cg_pid_get_user_slice(pid_t pid, char **slice) {
 
         return cg_path_get_user_slice(cgroup, slice);
 }
-#endif // 0
 
 char *cg_escape(const char *p) {
         bool need_prefix = false;
index 419d5f4bd4109be4affb088ea1011c4ac90d7076..8bf232c1385988a64be8abe591ffb0af6ffe8b3c 100644 (file)
@@ -213,9 +213,7 @@ int cg_path_get_user_unit(const char *path, char **unit);
 int cg_path_get_machine_name(const char *path, char **machine);
 #endif // 0
 int cg_path_get_slice(const char *path, char **slice);
-#if 0 /// UNNEEDED by elogind
 int cg_path_get_user_slice(const char *path, char **slice);
-#endif // 0
 
 int cg_shift_path(const char *cgroup, const char *cached_root, const char **shifted);
 int cg_pid_get_path_shifted(pid_t pid, const char *cached_root, char **cgroup);
@@ -228,9 +226,9 @@ int cg_pid_get_user_unit(pid_t pid, char **unit);
 int cg_pid_get_machine_name(pid_t pid, char **machine);
 #endif // 0
 int cg_pid_get_slice(pid_t pid, char **slice);
-#if 0 /// UNNEEDED by elogind
 int cg_pid_get_user_slice(pid_t pid, char **slice);
 
+#if 0 /// UNNEEDED by elogind
 int cg_path_decode_unit(const char *cgroup, char **unit);
 #endif // 0
 
index f1537d5e98af683070a7510cf69c00b0beed6bb9..bc5a53daad95c7c52f0fc0ef46c1f6d99d32fe42 100644 (file)
@@ -363,9 +363,9 @@ global:
         sd_bus_creds_get_cmdline;
         sd_bus_creds_get_cgroup;
         /* sd_bus_creds_get_unit; */
-        /* sd_bus_creds_get_slice; */
+        sd_bus_creds_get_slice;
         /* sd_bus_creds_get_user_unit; */
-        /* sd_bus_creds_get_user_slice; */
+        sd_bus_creds_get_user_slice;
         sd_bus_creds_get_session;
         sd_bus_creds_get_owner_uid;
         sd_bus_creds_has_effective_cap;
index 28bbdf0da22db66e048a185688dba24a11900ce5..fcc3b501686d7135a20513278e3800b7faa7192a 100644 (file)
@@ -444,6 +444,7 @@ _public_ int sd_bus_creds_get_user_unit(sd_bus_creds *c, const char **ret) {
         *ret = c->user_unit;
         return 0;
 }
+#endif // 0
 
 _public_ int sd_bus_creds_get_slice(sd_bus_creds *c, const char **ret) {
         int r;
@@ -498,7 +499,6 @@ _public_ int sd_bus_creds_get_user_slice(sd_bus_creds *c, const char **ret) {
         *ret = c->user_slice;
         return 0;
 }
-#endif // 0
 
 _public_ int sd_bus_creds_get_session(sd_bus_creds *c, const char **ret) {
         int r;
index 0900f0fe6ddf0a1e3050995e72ed21f3f8c59b9e..f7692cd82b8246f6b8c0550b226357eec1c74d6d 100644 (file)
@@ -124,19 +124,13 @@ _public_ int sd_pid_get_slice(pid_t pid, char **slice) {
 }
 
 _public_ int sd_pid_get_user_slice(pid_t pid, char **slice) {
-#if 0 /// UNNEEDED by elogind
         int r;
-#endif // 0
 
         assert_return(pid >= 0, -EINVAL);
         assert_return(slice, -EINVAL);
 
-#if 0 /// elogind does not support systemd slices
         r = cg_pid_get_user_slice(pid, slice);
         return IN_SET(r, -ENXIO, -ENOMEDIUM) ? -ENODATA : r;
-#else
-        return -ESRCH;
-#endif // 0
 }
 
 _public_ int sd_pid_get_owner_uid(pid_t pid, uid_t *uid) {
@@ -290,11 +284,7 @@ _public_ int sd_peer_get_user_slice(int fd, char **slice) {
         if (r < 0)
                 return r;
 
-#if 0 /// elogind does not support systemd slices
         return cg_pid_get_user_slice(ucred.pid, slice);
-#else
-        return -ESRCH;
-#endif // 0
 }
 
 _public_ int sd_peer_get_cgroup(int fd, char **cgroup) {
index e75374dbb8b55f0272cbdef382681419ad6e8710..9b507eefbda96543d9597e3067ea7da80090e542 100644 (file)
@@ -360,10 +360,12 @@ int sd_bus_creds_get_cmdline(sd_bus_creds *c, char ***cmdline);
 int sd_bus_creds_get_cgroup(sd_bus_creds *c, const char **cgroup);
 #if 0 /** unsupported by elogind **/
 int sd_bus_creds_get_unit(sd_bus_creds *c, const char **unit);
+#endif // 0
 int sd_bus_creds_get_slice(sd_bus_creds *c, const char **slice);
+#if 0 /// UNNEEDED by elogind
 int sd_bus_creds_get_user_unit(sd_bus_creds *c, const char **unit);
-int sd_bus_creds_get_user_slice(sd_bus_creds *c, const char **slice);
 #endif /** 0 **/
+int sd_bus_creds_get_user_slice(sd_bus_creds *c, const char **slice);
 int sd_bus_creds_get_session(sd_bus_creds *c, const char **session);
 int sd_bus_creds_get_owner_uid(sd_bus_creds *c, uid_t *uid);
 int sd_bus_creds_has_effective_cap(sd_bus_creds *c, int capability);