Author: tuexen
Date: Mon Nov 12 13:26:13 2018
New Revision: 340361
URL: https://svnweb.freebsd.org/changeset/base/340361

Log:
  Fix printing of 64-bit counters on 32-bit ppc platforms.
  
  Several statistic counters are uint64_t values and are printed by systat
  using %lu. This results in displaying wrong numbers. Use PRIu64 instead.
  While there, print variables of size_t using %zd.
  
  MFC after:i           3 days
  Differential Revision:        https://reviews.freebsd.org/D17838

Modified:
  head/usr.bin/systat/fetch.c
  head/usr.bin/systat/icmp6.c
  head/usr.bin/systat/ip.c
  head/usr.bin/systat/ip6.c
  head/usr.bin/systat/tcp.c
  head/usr.bin/systat/zarc.c

Modified: head/usr.bin/systat/fetch.c
==============================================================================
--- head/usr.bin/systat/fetch.c Mon Nov 12 11:20:59 2018        (r340360)
+++ head/usr.bin/systat/fetch.c Mon Nov 12 13:26:13 2018        (r340361)
@@ -68,9 +68,8 @@ void getsysctl(const char *name, void *ptr, size_t len
                    strerror(errno));
        }
        if (nlen != len) {
-               error("sysctl(%s...) expected %lu, got %lu", name,
-                   (unsigned long)len, (unsigned long)nlen);
-    }
+               error("sysctl(%s...) expected %zu, got %zu", name, len, nlen);
+       }
 }
 
 /*

Modified: head/usr.bin/systat/icmp6.c
==============================================================================
--- head/usr.bin/systat/icmp6.c Mon Nov 12 11:20:59 2018        (r340360)
+++ head/usr.bin/systat/icmp6.c Mon Nov 12 13:26:13 2018        (r340361)
@@ -50,6 +50,7 @@ static char sccsid[] = "@(#)mbufs.c   8.1 (Berkeley) 6/6
 #include <netinet/in.h>
 #include <netinet/icmp6.h>
 
+#include <inttypes.h>
 #include <stdlib.h>
 #include <string.h>
 #include <paths.h>
@@ -173,7 +174,7 @@ void
 showicmp6(void)
 {
        struct icmp6stat stats;
-       u_long totalin, totalout;
+       uint64_t totalin, totalout;
        int i;
 
        memset(&stats, 0, sizeof stats);
@@ -184,11 +185,11 @@ showicmp6(void)
        }
        totalin += stats.icp6s_badcode + stats.icp6s_badlen +
                stats.icp6s_checksum + stats.icp6s_tooshort;
-       mvwprintw(wnd, 1, 0, "%9lu", totalin);
-       mvwprintw(wnd, 1, 35, "%9lu", totalout);
+       mvwprintw(wnd, 1, 0, "%9"PRIu64, totalin);
+       mvwprintw(wnd, 1, 35, "%9"PRIu64, totalout);
 
 #define DO(stat, row, col) \
-       mvwprintw(wnd, row, col, "%9lu", stats.stat)
+       mvwprintw(wnd, row, col, "%9"PRIu64, stats.stat)
 
        DO(icp6s_badcode, 2, 0);
        DO(icp6s_badlen, 3, 0);

Modified: head/usr.bin/systat/ip.c
==============================================================================
--- head/usr.bin/systat/ip.c    Mon Nov 12 11:20:59 2018        (r340360)
+++ head/usr.bin/systat/ip.c    Mon Nov 12 13:26:13 2018        (r340361)
@@ -53,6 +53,7 @@ static const char sccsid[] = "@(#)mbufs.c     8.1 (Berkele
 #include <netinet/udp.h>
 #include <netinet/udp_var.h>
 
+#include <inttypes.h>
 #include <stdlib.h>
 #include <string.h>
 #include <paths.h>
@@ -203,16 +204,16 @@ void
 showip(void)
 {
        struct stat stats;
-       u_long totalout;
+       uint64_t totalout;
 
        domode(&stats);
        totalout = stats.i.ips_forward + stats.i.ips_localout;
 
 #define DO(stat, row, col) \
-       mvwprintw(wnd, row, col, "%9lu", stats.stat)
+       mvwprintw(wnd, row, col, "%9"PRIu64, stats.stat)
 
        DO(i.ips_total, 1, 0);
-       mvwprintw(wnd, 1, 35, "%9lu", totalout);
+       mvwprintw(wnd, 1, 35, "%9"PRIu64, totalout);
        DO(i.ips_badsum, 2, 0);
        DO(i.ips_localout, 2, 35);
        DO(i.ips_tooshort, 3, 0);

Modified: head/usr.bin/systat/ip6.c
==============================================================================
--- head/usr.bin/systat/ip6.c   Mon Nov 12 11:20:59 2018        (r340360)
+++ head/usr.bin/systat/ip6.c   Mon Nov 12 13:26:13 2018        (r340361)
@@ -52,6 +52,7 @@ static const char sccsid[] = "@(#)mbufs.c     8.1 (Berkele
 #include <netinet/ip.h>
 #include <netinet6/ip6_var.h>
 
+#include <inttypes.h>
 #include <stdlib.h>
 #include <string.h>
 #include <paths.h>
@@ -190,16 +191,16 @@ void
 showip6(void)
 {
        struct ip6stat stats;
-       u_long totalout;
+       uint64_t totalout;
 
        domode(&stats);
        totalout = stats.ip6s_forward + stats.ip6s_localout;
 
 #define DO(stat, row, col) \
-       mvwprintw(wnd, row, col, "%9lu", stats.stat)
+       mvwprintw(wnd, row, col, "%9"PRIu64, stats.stat)
 
        DO(ip6s_total, 1, 0);
-       mvwprintw(wnd, 1, 35, "%9lu", totalout);
+       mvwprintw(wnd, 1, 35, "%9"PRIu64, totalout);
        DO(ip6s_tooshort, 2, 0);
        DO(ip6s_localout, 2, 35);
        DO(ip6s_toosmall, 3, 0);

Modified: head/usr.bin/systat/tcp.c
==============================================================================
--- head/usr.bin/systat/tcp.c   Mon Nov 12 11:20:59 2018        (r340360)
+++ head/usr.bin/systat/tcp.c   Mon Nov 12 13:26:13 2018        (r340361)
@@ -56,6 +56,7 @@ __FBSDID("$FreeBSD$");
 #include <netinet/tcp_timer.h>
 #include <netinet/tcp_var.h>
 
+#include <inttypes.h>
 #include <stdlib.h>
 #include <string.h>
 #include <paths.h>
@@ -237,7 +238,7 @@ showtcp(void)
        domode(&stats);
 
 #define DO(stat, row, col) \
-       mvwprintw(wnd, row, col, "%12lu", stats.stat)
+       mvwprintw(wnd, row, col, "%12"PRIu64, stats.stat)
 #define        L(row, stat) DO(stat, row, 0)
 #define        R(row, stat) DO(stat, row, 38)
        L(1, tcps_connattempt);         R(1, tcps_sndtotal);

Modified: head/usr.bin/systat/zarc.c
==============================================================================
--- head/usr.bin/systat/zarc.c  Mon Nov 12 11:20:59 2018        (r340360)
+++ head/usr.bin/systat/zarc.c  Mon Nov 12 13:26:13 2018        (r340361)
@@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/types.h>
 #include <sys/sysctl.h>
 
+#include <inttypes.h>
 #include <string.h>
 
 #include "systat.h"
@@ -139,11 +140,11 @@ showzarc(void)
 
 #define DO(stat, row, col, fmt) \
        mvwprintw(wnd, row, col, fmt, stat)
-#define        R(row, stat) DO(rate.hits.stat, row, 31+1, "%3lu")
-#define        H(row, stat) DO(delta.hits.stat, row, 31+1+5, "%7lu"); \
-       DO(curstat.hits.stat, row, 31+1+5+8+8, "%12lu")
-#define        M(row, stat) DO(delta.misses.stat, row, 31+1+5+8, "%7lu"); \
-       DO(curstat.misses.stat, row, 31+1+5+8+8+13, "%12lu")
+#define        R(row, stat) DO(rate.hits.stat, row, 31+1, "%3"PRIu64)
+#define        H(row, stat) DO(delta.hits.stat, row, 31+1+5, "%7"PRIu64); \
+       DO(curstat.hits.stat, row, 31+1+5+8+8, "%12"PRIu64)
+#define        M(row, stat) DO(delta.misses.stat, row, 31+1+5+8, "%7"PRIu64); \
+       DO(curstat.misses.stat, row, 31+1+5+8+8+13, "%12"PRIu64)
 #define        E(row, stat) R(row, stat); H(row, stat); M(row, stat); 
        E(1, arcstats);
        E(2, arcstats_demand_data);
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to