Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 13 Jun 2018 08:52:09 +0000 (UTC)
From:      Eitan Adler <eadler@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r335038 - head/usr.bin/top
Message-ID:  <201806130852.w5D8q9Qs093623@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: eadler
Date: Wed Jun 13 08:52:09 2018
New Revision: 335038
URL: https://svnweb.freebsd.org/changeset/base/335038

Log:
  top(1): format_time, format_k, etc.
  
  - Use humanize_number for format_k and format_k2
  - Fix some style nits in format_time

Modified:
  head/usr.bin/top/Makefile
  head/usr.bin/top/machine.c
  head/usr.bin/top/utils.c
  head/usr.bin/top/utils.h

Modified: head/usr.bin/top/Makefile
==============================================================================
--- head/usr.bin/top/Makefile	Wed Jun 13 08:52:06 2018	(r335037)
+++ head/usr.bin/top/Makefile	Wed Jun 13 08:52:09 2018	(r335038)
@@ -16,5 +16,5 @@ NO_WERROR=
 .endif
 CFLAGS.clang=-Wno-error=incompatible-pointer-types-discards-qualifiers -Wno-error=cast-qual
 
-LIBADD=	ncursesw m kvm jail
+LIBADD=	ncursesw m kvm jail util
 .include <bsd.prog.mk>

Modified: head/usr.bin/top/machine.c
==============================================================================
--- head/usr.bin/top/machine.c	Wed Jun 13 08:52:06 2018	(r335037)
+++ head/usr.bin/top/machine.c	Wed Jun 13 08:52:09 2018	(r335038)
@@ -1087,7 +1087,7 @@ format_next_process(void* xhandle, char *(*get_userid)
 	else
 		snprintf(swap_buf, sizeof(swap_buf), "%*s",
 		    swaplength - 1,
-		    format_k2(pagetok(ki_swap(pp)))); /* XXX */
+		    format_k(pagetok(ki_swap(pp)))); /* XXX */
 
 	if (displaymode == DISP_IO) {
 		oldp = get_old_proc(pp);
@@ -1148,8 +1148,8 @@ format_next_process(void* xhandle, char *(*get_userid)
 	    thr_buf,
 	    pp->ki_pri.pri_level - PZERO,
 	    format_nice(pp),
-	    format_k2(PROCSIZE(pp)),
-	    format_k2(pagetok(pp->ki_rssize)),
+	    format_k(PROCSIZE(pp)),
+	    format_k(pagetok(pp->ki_rssize)),
 	    swaplength, swaplength, swap_buf,
 	    status,
 	    cpu,

Modified: head/usr.bin/top/utils.c
==============================================================================
--- head/usr.bin/top/utils.c	Wed Jun 13 08:52:06 2018	(r335037)
+++ head/usr.bin/top/utils.c	Wed Jun 13 08:52:09 2018	(r335038)
@@ -19,6 +19,7 @@
 #include <sys/sysctl.h>
 #include <sys/user.h>
 
+#include <libutil.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -262,35 +263,34 @@ percentages(int cnt, int *out, long *new, long *old, l
    exceed 9999.9, we use "???".
  */
 
-char *
+const char *
 format_time(long seconds)
 {
-    static char result[10];
+	static char result[10];
 
-    /* sanity protection */
-    if (seconds < 0 || seconds > (99999l * 360l))
-    {
-	strcpy(result, "   ???");
-    }
-    else if (seconds >= (1000l * 60l))
-    {
-	/* alternate (slow) method displaying hours and tenths */
-	sprintf(result, "%5.1fH", (double)seconds / (double)(60l * 60l));
+	/* sanity protection */
+	if (seconds < 0 || seconds > (99999l * 360l))
+	{
+		strcpy(result, "   ???");
+	}
+	else if (seconds >= (1000l * 60l))
+	{
+		/* alternate (slow) method displaying hours and tenths */
+		sprintf(result, "%5.1fH", (double)seconds / (double)(60l * 60l));
 
-	/* It is possible that the sprintf took more than 6 characters.
-	   If so, then the "H" appears as result[6].  If not, then there
-	   is a \0 in result[6].  Either way, it is safe to step on.
-	 */
-	result[6] = '\0';
-    }
-    else
-    {
-	/* standard method produces MMM:SS */
-	/* we avoid printf as must as possible to make this quick */
-	sprintf(result, "%3ld:%02ld",
-	    (long)(seconds / 60), (long)(seconds % 60));
-    }
-    return(result);
+		/* It is possible that the sprintf took more than 6 characters.
+		   If so, then the "H" appears as result[6].  If not, then there
+		   is a \0 in result[6].  Either way, it is safe to step on.
+		   */
+		result[6] = '\0';
+	}
+	else
+	{
+		/* standard method produces MMM:SS */
+		sprintf(result, "%3ld:%02ld",
+				seconds / 60l, seconds % 60l);
+	}
+	return(result);
 }
 
 /*
@@ -319,63 +319,16 @@ format_time(long seconds)
 #define NUM_STRINGS 8
 
 char *
-format_k(long amt)
+format_k(int64_t amt)
 {
     static char retarray[NUM_STRINGS][16];
     static int index = 0;
-    char *p;
     char *ret;
-    char tag = 'K';
 
-    p = ret = retarray[index];
-    index = (index + 1) % NUM_STRINGS;
-
-    if (amt >= 10000)
-    {
-	amt = (amt + 512) / 1024;
-	tag = 'M';
-	if (amt >= 10000)
-	{
-	    amt = (amt + 512) / 1024;
-	    tag = 'G';
-	}
-    }
-
-    p = stpcpy(p, itoa(amt));
-    *p++ = tag;
-    *p = '\0';
-
-    return(ret);
-}
-
-char *
-format_k2(unsigned long long amt)
-{
-    static char retarray[NUM_STRINGS][16];
-    static int index = 0;
-    char *p;
-    char *ret;
-    char tag = 'K';
-
-    p = ret = retarray[index];
-    index = (index + 1) % NUM_STRINGS;
-
-    if (amt >= 100000)
-    {
-	amt = (amt + 512) / 1024;
-	tag = 'M';
-	if (amt >= 100000)
-	{
-	    amt = (amt + 512) / 1024;
-	    tag = 'G';
-	}
-    }
-
-    p = stpcpy(p, itoa((int)amt));
-    *p++ = tag;
-    *p = '\0';
-
-    return(ret);
+    ret = retarray[index];
+	index = (index + 1) % NUM_STRINGS;
+	humanize_number(ret, 6, amt * 1024, "", HN_AUTOSCALE, HN_NOSPACE);
+	return (ret);
 }
 
 int

Modified: head/usr.bin/top/utils.h
==============================================================================
--- head/usr.bin/top/utils.h	Wed Jun 13 08:52:06 2018	(r335037)
+++ head/usr.bin/top/utils.h	Wed Jun 13 08:52:09 2018	(r335038)
@@ -18,9 +18,8 @@ char *itoa7(int);
 int digits(int);
 const char * const *argparse(char *, int *);
 long percentages(int, int *, long *, long *, long *);
-char *format_time(long);
-char *format_k(long);
-char *format_k2(unsigned long long);
+const char *format_time(long);
+char *format_k(int64_t);
 int string_index(const char *string, const char * const *array);
 int find_pid(pid_t pid);
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201806130852.w5D8q9Qs093623>