summaryrefslogtreecommitdiffstats
path: root/source/a/procps/procps-3.2.8-ps-cgroup-suppress-root-group.patch
blob: 4b192c1fb4aa7684b7e57606713ca68690d77845 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
--- procps-3.2.8/ps/output.c	2010-05-18 06:00:18.000000000 +0200
+++ procps-3.2.8.lennart/ps/output.c	2010-05-18 05:59:46.000000000 +0200
@@ -1109,7 +1109,7 @@
 static int pr_cgroup(char *restrict const outbuf, const proc_t *restrict const pp){
   char filename[48];
   FILE *fd;
-  int counter = 0;
+  int counter = 0, last_begin = 0, slash = 0;
   int c;
   int is_cgroup = 0;
 
@@ -1121,15 +1121,22 @@
     if (is_cgroup == 0) {
       if (c == ':') {
         is_cgroup = 1;
+        slash = 0;
         if (counter>0)
           outbuf[counter++]=';';
       }
     }else
-      if ((c == '\n') || (c == '\0'))
-        is_cgroup = 0;
+      if ((c == '\n') || (c == '\0')){
+        if (slash)  /* if the last char was a / this process is in the root cgroup which we should suppress */
+            counter = last_begin;
       else
+            last_begin = counter;
+        is_cgroup = 0;
+      } else {
+        slash = c == '/';
         outbuf[counter++]=c;
   }
+  }
   outbuf[counter]='\0';
   close(fd);
   if (counter>0)