37 lines
1.0 KiB
Diff
37 lines
1.0 KiB
Diff
--- 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)
|