svn commit: r334869 - head/usr.bin/top

Eitan Adler eadler at FreeBSD.org
Sat Jun 9 02:47:03 UTC 2018


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.Endrestol at 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;


More information about the svn-src-head mailing list