]> granicus.if.org Git - procps-ng/commitdiff
ps: sort by cgroup
authorCraig Small <csmall@enc.com.au>
Sat, 15 Aug 2015 06:23:37 +0000 (16:23 +1000)
committerCraig Small <csmall@enc.com.au>
Sat, 15 Aug 2015 06:23:37 +0000 (16:23 +1000)
A rather small fix to sort by cgroup. This sorting function
could be used for other string vector entries, but I can't
see why you want to for, say, environment.

Reference:
 https://bugs.debian.org/692279

Signed-off-by: Craig Small <csmall@enc.com.au>
NEWS
ps/output.c

diff --git a/NEWS b/NEWS
index 43552c83bf52d155e48b931ff944ff3018c47eb3..50c7b7aed2c673cc4cc83db18d016a13cf4c7b9e 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,6 @@
 procps-ng-NEXT
 ----------------
+  * ps: sort by cgroup Debian #692279
 
 procps-ng-3.3.11
 ----------------
index 63ba26888ff9d13112e0f38843afc7c07d24bf3c..35286c0b2dc4a8722e8afaebee4764563d76afab 100644 (file)
@@ -96,6 +96,18 @@ static int sr_nop(const proc_t* a, const proc_t* b){
   return 0;
 }
 
+static int sr_cgroup(const proc_t* a, const proc_t* b)
+{
+    int i;
+    int cmpval;
+    for (i=0; a->cgroup[i] != NULL && b->cgroup[i] != NULL; i++) {
+        if ((cmpval = strcmp(a->cgroup[i], b->cgroup[i])) != 0)
+            return cmpval;
+    }
+    return 0;
+}
+
+
 #define CMP_STR(NAME) \
 static int sr_ ## NAME(const proc_t* P, const proc_t* Q) { \
     return strcmp(P->NAME, Q->NAME); \
@@ -1439,7 +1451,7 @@ static const format_struct format_array[] = {
 {"bsdtime",   "TIME",    pr_bsdtime,  sr_nop,     6,   0,    LNX, ET|RIGHT},
 {"c",         "C",       pr_c,        sr_pcpu,    2,   0,    SUN, ET|RIGHT},
 {"caught",    "CAUGHT",  pr_sigcatch, sr_nop,     9,   0,    BSD, TO|SIGNAL}, /*sigcatch*/
-{"cgroup",    "CGROUP",  pr_cgroup,   sr_nop,    27,CGRP,    LNX, PO|UNLIMITED},
+{"cgroup",    "CGROUP",  pr_cgroup,   sr_cgroup, 27,CGRP,    LNX, PO|UNLIMITED},
 {"class",     "CLS",     pr_class,    sr_sched,   3,   0,    XXX, TO|LEFT},
 {"cls",       "CLS",     pr_class,    sr_sched,   3,   0,    HPU, TO|RIGHT}, /*says HPUX or RT*/
 {"cmaj_flt",  "-",       pr_nop,      sr_cmaj_flt, 1,  0,    LNX, AN|RIGHT},