#! /usr/bin/perl -w # # This file is part of DisOrder. # Copyright (C) 2007 Richard Kettlewell # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # use strict; our $last; my %start = (); my %end = (); while(<>) { if(/sequence (\d+) timestamp (\w+) length (\w+) end (\w+)/) { my $seq = $1; my $timestamp = hex($2); my $length = hex($3); my $end = hex($4); if(defined $last) { if($seq < $last) { print "$seq < $last\n"; } elsif($seq != $last + 1) { printf "%u when %u expected, missed %d\n", $seq, $last + 1, $seq - $last; } } if(exists $start{$seq}) { print "$seq: duplicate"; } $start{$seq} = $timestamp; $end{$seq} = $end; if(exists $start{$seq-1}) { if($end{$seq-1} != $start{$seq}) { printf "%u ends at %x but %u starts at %x (delta=%d)\n", $seq-1, $end{$seq-1}, $seq, $start{$seq}, $start{$seq}-$end{$seq-1}; } } $last = $seq; } }