umount them all
[util-vserver.git] / src / vserver-stat.c
index 43e15f3..a444d99 100644 (file)
@@ -308,7 +308,7 @@ registerXidCgroups(struct Vector *vec, struct process_info *process)
     int                                cpu;
     char                       vhi_name[65],
                                filename[128],
-                               cgroup[65],
+                               cgroup[129],
                                buf[30];
     int                                fd;
     ssize_t                    cgroup_len;
@@ -341,10 +341,33 @@ registerXidCgroups(struct Vector *vec, struct process_info *process)
         perror("read(cgroup/mnt)");
         return;
       }
+      if (cgroup_len > 0) {
+       close(fd);
+       while (cgroup[cgroup_len - 1] == '\n' || cgroup[cgroup_len - 1] == '\r')
+         cgroup_len--;
+       cgroup[cgroup_len] = '/';
+       cgroup_len += 1;
+       cgroup[cgroup_len] = 0;
+      }
+    }
+
+    if ((fd = open(DEFAULTCONFDIR "/cgroup/base", O_RDONLY)) != -1) {
+      len = read(fd, cgroup + cgroup_len, sizeof(cgroup) - cgroup_len);
+      if (len == -1) {
+        perror("read(cgroup/base)");
+        return;
+      }
       close(fd);
-      cgroup[cgroup_len] = '/';
-      cgroup_len += 1;
-      cgroup[cgroup_len] = 0;
+      if (len > 0) {
+       while (cgroup[cgroup_len + len - 1] == '\n' || cgroup[cgroup_len + len - 1] == '\r')
+         len--;
+       cgroup_len += len;
+       if (cgroup[cgroup_len - 1] != '/') {
+         cgroup[cgroup_len] = '/';
+         cgroup_len += 1;
+       }
+       cgroup[cgroup_len] = 0;
+      }
     }
 
     len = strlen(vhi_name);