more precision for F_TIMING64

This commit is contained in:
yamt 2013-03-06 11:33:08 +00:00
parent a74bc62145
commit 4398e962ce

View File

@ -1,4 +1,4 @@
/* $NetBSD: ping.c,v 1.105 2012/12/30 03:19:24 christos Exp $ */
/* $NetBSD: ping.c,v 1.106 2013/03/06 11:33:08 yamt Exp $ */
/*
* Copyright (c) 1989, 1993
@ -58,7 +58,7 @@
#include <sys/cdefs.h>
#ifndef lint
__RCSID("$NetBSD: ping.c,v 1.105 2012/12/30 03:19:24 christos Exp $");
__RCSID("$NetBSD: ping.c,v 1.106 2013/03/06 11:33:08 yamt Exp $");
#endif
#include <stdio.h>
@ -953,8 +953,11 @@ pr_pack_sub(int cc,
if (dupflag)
(void)printf(" DUP!");
(void)printf(" ttl=%d", ttl);
if (pingflags & (F_TIMING|F_TIMING64))
(void)printf(" time=%.3f ms", triptime*1000.0);
if (pingflags & (F_TIMING|F_TIMING64)) {
const unsigned int prec = (pingflags & F_TIMING64) != 0 ? 6 : 3;
(void)printf(" time=%.*f ms", prec, triptime*1000.0);
}
/*
* Send beep to stderr, since that's more likely than stdout
@ -1340,13 +1343,16 @@ summary(int header)
double n = nreceived + nrepeats;
double avg = (tsum / n);
double variance = 0.0;
const unsigned int prec = (pingflags & F_TIMING64) != 0 ? 6 : 3;
if (n>1)
variance = (tsumsq - n*avg*avg) /(n-1);
printf("round-trip min/avg/max/stddev = "
"%.3f/%.3f/%.3f/%.3f ms\n",
tmin * 1000.0, avg * 1000.0,
tmax * 1000.0, sqrt(variance) * 1000.0);
"%.*f/%.*f/%.*f/%.*f ms\n",
prec, tmin * 1000.0,
prec, avg * 1000.0,
prec, tmax * 1000.0,
prec, sqrt(variance) * 1000.0);
if (pingflags & F_FLOOD) {
double r = diffsec(&last_rx, &first_rx);
double t = diffsec(&last_tx, &first_tx);