Author: eadler
Date: Sat Jun  9 02:47:02 2018
New Revision: 334869
URL: https://svnweb.freebsd.org/changeset/base/334869

Log:
  top(1): correct header, align it.
  
  THR is always 6 digits or longer. Now that the PID/THR change is
  separated, use correct headers.
  
  PR:           228823
  Reported by:  trond.endres...@ximalas.info

Modified:
  head/usr.bin/top/machine.c

Modified: head/usr.bin/top/machine.c
==============================================================================
--- head/usr.bin/top/machine.c  Sat Jun  9 02:41:51 2018        (r334868)
+++ head/usr.bin/top/machine.c  Sat Jun  9 02:47:02 2018        (r334869)
@@ -94,17 +94,20 @@ static const char io_header[] =
 static const char io_Proc_format[] =
     "%5d%*s %-*.*s %6ld %6ld %6ld %6ld %6ld %6ld %6.2f%% %.*s";
 
+/* XXX: build up header instead of statically defining them.
+ * This will also allow for a "format string" to be supplied
+ * as an argument to top(1) instead of having predefined options */
 static const char smp_header_thr_and_pid[] =
-    "  PID%*s %-*.*s  THR PRI NICE   SIZE    RES%*s STATE   C   TIME %7s 
COMMAND";
-static const char smp_header_tid_only[] =
-    "  THR%*s %-*.*s "   "PRI NICE   SIZE    RES%*s STATE   C   TIME %7s 
COMMAND";
+    "  %s%*s %-*.*s  THR PRI NICE   SIZE    RES%*s STATE   C   TIME %7s 
COMMAND";
+static const char smp_header_id_only[] =
+    "  %s%*s %-*.*s  PRI NICE   SIZE    RES%*s STATE   C   TIME %7s COMMAND";
 static const char smp_Proc_format[] =
     "%5d%*s %-*.*s %s%3d %4s%7s %6s%*.*s %-6.6s %2d%7s %6.2f%% %.*s";
 
 static char up_header_thr_and_pid[] =
     "  PID%*s %-*.*s  THR PRI NICE   SIZE    RES%*s STATE    TIME %7s COMMAND";
-static char up_header_tid_only[] =
-    "  THR%*s %-*.*s "   "PRI NICE   SIZE    RES%*s STATE    TIME %7s COMMAND";
+static char up_header_id_only[] =
+    "  %s%*s %-*.*s   PRI NICE   SIZE    RES%*s STATE    TIME %7s COMMAND";
 static char up_Proc_format[] =
     "%5d%*s %-*.*s %s%3d %4s%7s %6s%*.*s %-6.6s%.0d%7s %6.2f%% %.*s";
 
@@ -425,19 +428,31 @@ format_header(const char *uname_field)
        switch (displaymode) {
        case DISP_CPU:
                /*
-                * The logic of picking the right header format seems reverse
-                * here because we only want to display a THR column when
-                * "thread mode" is off (and threads are not listed as
-                * separate lines).
+                * The logic of picking the right header is confusing, and
+                * depends on too much. We should instead have a struct of
+                * "header name", and "header format" which we build up.
+                * This would also fix the duplicate of effort into up vs smp
+                * mode.
                 */
-               prehead = smpmode ?
-                   (ps.thread_id ? smp_header_tid_only : 
smp_header_thr_and_pid) :
-                   (ps.thread_id ? up_header_tid_only : up_header_thr_and_pid);
-               snprintf(Header, sizeof(Header), prehead,
-                   jidlength, ps.jail ? " JID" : "",
-                   namelength, namelength, uname_field,
-                   swaplength, ps.swap ? " SWAP" : "",
-                   ps.wcpu ? "WCPU" : "CPU");
+               if (smpmode) {
+                       prehead = ps.thread ?
+                               smp_header_id_only : smp_header_thr_and_pid;
+                       snprintf(Header, sizeof(Header), prehead,
+                                       ps.thread_id ? " THR" : "PID",
+                                       jidlength, ps.jail ? " JID" : "",
+                                       namelength, namelength, uname_field,
+                                       swaplength, ps.swap ? " SWAP" : "",
+                                       ps.wcpu ? "WCPU" : "CPU");
+               } else {
+                       prehead = ps.thread ?
+                               up_header_id_only : up_header_thr_and_pid;
+                       snprintf(Header, sizeof(Header), prehead,
+                                       ps.thread_id ? " THR" : "PID",
+                                       jidlength, ps.jail ? " JID" : "",
+                                       namelength, namelength, uname_field,
+                                       swaplength, ps.swap ? " SWAP" : "",
+                                       ps.wcpu ? "WCPU" : "CPU");
+               }
                break;
        case DISP_IO:
                prehead = io_header;
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to