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 64220ac085c0cbed5c5bcb12d76258e2ec0c4402..44ab535cca2b488303da05a65c4a895499b19d1b 100644 (file)
@@ -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;
@@ -2333,14 +2337,6 @@ static int cg_update_unified(void) {
         if (F_TYPE_EQUAL(fs.f_type, CGROUP2_SUPER_MAGIC))
                 unified_cache = CGROUP_UNIFIED_ALL;
         else if (F_TYPE_EQUAL(fs.f_type, TMPFS_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
                 if (statfs("/sys/fs/cgroup/systemd/", &fs) < 0)
                         return -errno;
 
@@ -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