From owner-svn-src-head@freebsd.org Sat Jun 9 02:47:03 2018 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 604D5FF4DD5; Sat, 9 Jun 2018 02:47:03 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 05B797F961; Sat, 9 Jun 2018 02:47:03 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D610E17E14; Sat, 9 Jun 2018 02:47:02 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w592l28n071662; Sat, 9 Jun 2018 02:47:02 GMT (envelope-from eadler@FreeBSD.org) Received: (from eadler@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w592l2b2071661; Sat, 9 Jun 2018 02:47:02 GMT (envelope-from eadler@FreeBSD.org) Message-Id: <201806090247.w592l2b2071661@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: eadler set sender to eadler@FreeBSD.org using -f From: Eitan Adler Date: Sat, 9 Jun 2018 02:47:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r334869 - head/usr.bin/top X-SVN-Group: head X-SVN-Commit-Author: eadler X-SVN-Commit-Paths: head/usr.bin/top X-SVN-Commit-Revision: 334869 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 09 Jun 2018 02:47:03 -0000 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@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;