]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
cgls: correctly ellipsize command lines for PIDs >= 1000000
authorMantas Mikulėnas <grawity@gmail.com>
Fri, 19 Oct 2012 17:15:25 +0000 (20:15 +0300)
committerLennart Poettering <lennart@poettering.net>
Tue, 23 Oct 2012 15:13:20 +0000 (17:13 +0200)
src/shared/cgroup-show.c

index 9003a1228e1443d920777fe4f1b22f83065b7db8..2ffed8b739acc2d36cd44a655e14642e4d1281dd 100644 (file)
@@ -52,7 +52,7 @@ static unsigned ilog10(unsigned long ul) {
 }
 
 static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsigned n_columns, bool extra, bool more, bool kernel_threads) {
-        unsigned i, m;
+        unsigned i, m, pid_width;
         pid_t biggest = 0;
 
         /* Filter duplicates */
@@ -71,12 +71,13 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi
                         pids[m++] = pids[i];
         }
         n_pids = m;
+        pid_width = ilog10(biggest);
 
         /* And sort */
         qsort(pids, n_pids, sizeof(pid_t), compare);
 
-        if (n_columns > 8)
-                n_columns -= 8;
+        if (n_columns > pid_width+2)
+                n_columns -= pid_width+2;
         else
                 n_columns = 20;
 
@@ -88,7 +89,7 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi
                 printf("%s%s %*lu %s\n",
                        prefix,
                        extra ? "\342\200\243" : ((more || i < n_pids-1) ? "\342\224\234" : "\342\224\224"),
-                       (int) ilog10(biggest),
+                       pid_width,
                        (unsigned long) pids[i],
                        strna(t));