2 # Copyright (c) 1999 Marius Gedminas <mgedmin@takas.lt>
3 # Shows the route of an Internet mail message
4 # Version 0.0.1pre-alpha
6 # Patched by Roland Rosenfeld <roland@spinnaker.de>
7 # $ Id: mailhops,v 1.3 2000/01/25 20:18:24 roland Exp roland $
35 my @headers = split("\n", $head);
40 next unless /^(>?Received|Date):/;
44 if (/^Date:\s+(.*)/) {
50 $host = $1 if /\sby\s+([a-z0-9\-_+.]+)\s/ && $1 ne "uid";
52 $from = $1 if /\sfrom\s+([a-z0-9\-_+.]+(?:\s+[(].+?[)]))\s/;
54 $time = $1 if /;\s+(.+)$/;
58 my $epoch = str2time ($time);
60 unshift @hops, { HOST => $host, FROM => $from, TIME => $epoch};
64 print " Host Date received (local) Lag Total lag\n";
68 my $host = $_->{HOST};
69 my $from = $_->{FROM};
70 my $time = $_->{TIME};
71 $first = $prev = $time unless defined $first;
72 printf "%2d. %-31.31s", ++$nr, $host;
73 do { print "\n"; next } unless defined $time;
75 my $delta = $time - $prev;
76 my $neg = $delta < 0; $delta = abs($delta);
77 my $delta_h = int($delta / 3600);
78 my $delta_m = int(($delta - $delta_h * 3600) / 60);
79 my $delta_s = ($delta - $delta_h * 3600 - $delta_m * 60);
81 my ($sec,$min,$hour,$day,$mon,$year,undef,undef,$dst) = localtime($time);
83 printf " %4d-%02d-%02d %02d:%02d:%02d %s%02d:%02d:%02d",
84 1900+$year, $mon+1, $day, $hour, $min, $sec,
85 $neg ? '-' : ' ', $delta_h, $delta_m, $delta_s;
87 $delta = $time - $first;
88 $neg = $delta < 0; $delta = abs($delta);
89 $delta_h = int($delta / 3600);
90 $delta_m = int(($delta - $delta_h * 3600) / 60);
91 $delta_s = ($delta - $delta_h * 3600 - $delta_m * 60);
92 printf " %s%02d:%02d:%02d\n",
93 $neg ? '-' : ' ', $delta_h, $delta_m, $delta_s;
94 print " from $from\n" if $verbose;