Irritation regarding precision of ping(8)...

Sean Chittenden sean at chittenden.org
Sun Oct 31 01:47:55 PST 2004


This has long bugged me and tonight I finally snapped and had to do 
something about it.  Example output:

64 bytes from a.b.c.d: icmp_seq=935 ttl=126 time=33.824 ms
64 bytes from a.b.c.d: icmp_seq=936 ttl=126 time=29.138 ms
64 bytes from a.b.c.d: icmp_seq=937 ttl=126 time=28.262 ms
64 bytes from a.b.c.d: icmp_seq=938 ttl=126 time=29.67 ms
64 bytes from a.b.c.d: icmp_seq=939 ttl=126 time=30.963 ms
64 bytes from a.b.c.d: icmp_seq=940 ttl=126 time=30.283 ms
64 bytes from a.b.c.d: icmp_seq=941 ttl=126 time=29.455 ms

The source of irritation being line seq 930.  The time should be 29.670 
since we are accurately measuring the precision to the thousands place.

On a less scientific basis (and the actual reason this bothered me), 
not having the trailing zero disrupts the continuity of a stream of 
ping times.  The attached patch simply fixes the various formatting 
statements introduced in version 1.2(!!!!) to use %.30f instead of 
%.3f.  It's now possible to see '28.200' ms ping times instead of just 
'28.2 ms'.

Anyone mind if I commit the attached patch?  I'm sure I'm not the only 
one who's wanted to commit the following.  -sc

-------------- next part --------------
Index: ping.c
===================================================================
RCS file: /home/ncvs/src/sbin/ping/ping.c,v
retrieving revision 1.106
diff -u -r1.106 ping.c
--- ping.c	30 Sep 2004 07:35:56 -0000	1.106
+++ ping.c	31 Oct 2004 09:40:35 -0000
@@ -998,7 +998,7 @@
 			   seq);
 			(void)printf(" ttl=%d", ip->ip_ttl);
 			if (timing)
-				(void)printf(" time=%.3f ms", triptime);
+				(void)printf(" time=%.30f ms", triptime);
 			if (dupflag)
 				(void)printf(" (DUP!)");
 			if (options & F_AUDIBLE)
@@ -1293,7 +1293,7 @@
 		double avg = tsum / n;
 		double vari = tsumsq / n - avg * avg;
 		(void)printf(
-		    "round-trip min/avg/max/stddev = %.3f/%.3f/%.3f/%.3f ms\n",
+		    "round-trip min/avg/max/stddev = %.30f/%.30f/%.30f/%.30f ms\n",
 		    tmin, avg, tmax, sqrt(vari));
 	}
 
-------------- next part --------------


-- 
Sean Chittenden


More information about the freebsd-net mailing list