chiark / gitweb /
Prep v232.2: cg_shift_path() : With other controllers, elogind might end up in name...
[elogind.git] / src / basic / cgroup-util.c
index 424c2b69bb1bc4f730f16a06b509309c9812a500..44ab535cca2b488303da05a65c4a895499b19d1b 100644 (file)
@@ -889,7 +889,6 @@ int cg_set_task_access(
 
         return 0;
 }
-#endif // 0
 
 int cg_set_xattr(const char *controller, const char *path, const char *name, const void *value, size_t size, int flags) {
         _cleanup_free_ char *fs = NULL;
@@ -927,6 +926,7 @@ int cg_get_xattr(const char *controller, const char *path, const char *name, voi
 
         return (int) n;
 }
+#endif // 0
 
 int cg_pid_get_path(const char *controller, pid_t pid, char **path) {
         _cleanup_fclose_ FILE *f = NULL;
@@ -1329,7 +1329,11 @@ int cg_shift_path(const char *cgroup, const char *root, const char **shifted) {
         }
 
         p = path_startswith(cgroup, root);
+#if 0 /// With other controllers, elogind might end up in /elogind, and *p is 0
         if (p && p > cgroup)
+#else
+        if (p && p[0] && (p > cgroup))
+#endif // 0
                 *shifted = p - 1;
         else
                 *shifted = cgroup;
@@ -2331,14 +2335,6 @@ static int cg_update_unified(void) {
 
 #if 0 /// UNNEEDED by elogind
         if (F_TYPE_EQUAL(fs.f_type, CGROUP2_SUPER_MAGIC))
-#else
-        /* elogind can not support the unified hierarchy as a controller,
-         * so always assume a classical hierarchy.
-         * If, and only *if*, someone really wants to substitute systemd-login
-         * in an environment managed by systemd with elogind, we might have to
-         * add such a support. */
-        if (F_TYPE_EQUAL(fs.f_type, TMPFS_MAGIC)) {
-#endif // 0
                 unified_cache = CGROUP_UNIFIED_ALL;
         else if (F_TYPE_EQUAL(fs.f_type, TMPFS_MAGIC)) {
                 if (statfs("/sys/fs/cgroup/systemd/", &fs) < 0)
@@ -2348,6 +2344,14 @@ static int cg_update_unified(void) {
                         CGROUP_UNIFIED_SYSTEMD : CGROUP_UNIFIED_NONE;
         } else
                 return -ENOMEDIUM;
+#else
+        /* elogind can not support the unified hierarchy as a controller,
+         * so always assume a classical hierarchy.
+         * If, and only *if*, someone really wants to substitute systemd-login
+         * in an environment managed by systemd with elogind, we might have to
+         * add such a support. */
+        unified_cache = CGROUP_UNIFIED_NONE;
+#endif // 0
 
         return 0;
 }
@@ -2454,9 +2458,6 @@ bool cg_is_unified_wanted(void) {
 bool cg_is_legacy_wanted(void) {
         return !cg_is_unified_wanted();
 }
-#else
-bool cg_is_legacy_wanted(void) {
-        return true;
 
 bool cg_is_unified_systemd_controller_wanted(void) {
         static thread_local int wanted = -1;
@@ -2503,6 +2504,10 @@ bool cg_is_unified_systemd_controller_wanted(void) {
 bool cg_is_legacy_systemd_controller_wanted(void) {
         return cg_is_legacy_wanted() && !cg_is_unified_systemd_controller_wanted();
 }
+#else
+bool cg_is_legacy_wanted(void) {
+        return true;
+}
 #endif // 0
 
 #if 0 /// UNNEEDED by elogind