fix silly indirect-through-zero bug
[unix-history] / usr / src / usr.sbin / traceroute / median.awk
CommitLineData
296ce596
KB
1#!/bin/awk -f
2#
3# Copyright (c) 1990 The Regents of the University of California.
4# All rights reserved.
5#
6# This code is derived from software contributed to Berkeley by
7# Van Jacobson.
8#
9# %sccs.include.redist.sh%
10#
11# @(#)median.awk 5.2 (Berkeley) %G%
12#
565cd2c8
KB
13/^ *[0-9]/ {
14 # print out the median time to each hop along a route.
15 tottime = 0; n = 0;
16 for (f = 5; f <= NF; ++f) {
17 if ($f == "ms") {
18 ++n
19 time[n] = $(f - 1)
20 }
21 }
22 if (n > 0) {
23 # insertion sort the times to find the median
24 for (i = 2; i <= n; ++i) {
25 v = time[i]; j = i - 1;
26 while (time[j] > v) {
27 time[j+1] = time[j];
28 j = j - 1;
29 if (j < 0)
30 break;
31 }
32 time[j+1] = v;
33 }
34 if (n > 1 && (n % 2) == 0)
35 median = (time[n/2] + time[(n/2) + 1]) / 2
36 else
37 median = time[(n+1)/2]
38
39 print $1, median
40 }
41}