From 5341c13d51c282a68cb9fdeb92b15711630d33e7 Mon Sep 17 00:00:00 2001 From: "Jan \"Yenya\" Kasprzak" Date: Sun, 13 Feb 2011 22:59:18 +0100 Subject: [PATCH] Log reading factored out. --- SCX/LogReader.pm | 46 ++++++++++++++++++++++++++++++++++++++++++++++ annotate_log | 14 ++++++-------- 2 files changed, 52 insertions(+), 8 deletions(-) create mode 100644 SCX/LogReader.pm diff --git a/SCX/LogReader.pm b/SCX/LogReader.pm new file mode 100644 index 0000000..78d2b50 --- /dev/null +++ b/SCX/LogReader.pm @@ -0,0 +1,46 @@ +#!/usr/bin/perl -w + +package SCX::LogReader; + +use strict; + +sub new { + my ($class, $args) = @_; + + open my $fh, '<', $args->{filename} + or die "Can't open $args->{filename}: $!"; + + my $self = { + begin_time => $args->{begin_time} || 0, + end_time => $args->{end_time} || (1<<32), + fh => $fh, + }; + + bless $self, $class; + + return $self; +} + +sub get_data { + my ($self) = @_; + + my $fh = $self->{fh}; + + my ($line, $l_time, @data); + do { + $line = <$fh>; + return undef if !defined $line; + + chomp $line; + $line =~ s/\A\s+//xms; + + ($l_time, @data) = split(/\s+/, $line); + } while ($l_time < $self->{begin_time}); + + return undef if $l_time > $self->{end_time}; + + return ($l_time, map { hex $_ } @data); +} + +1; + diff --git a/annotate_log b/annotate_log index 50d3683..3444e1b 100755 --- a/annotate_log +++ b/annotate_log @@ -3,6 +3,7 @@ use strict; use Getopt::Std; +use SCX::LogReader; use SCX::LogPrinter; my %opt; @@ -17,8 +18,9 @@ if (!getopts('abi:su', \%opt) || !$ARGV[0]) { my $logfile = shift @ARGV; -open my $logfh, '<', $logfile - or die "Can't open $logfile: $!"; +my $reader = SCX::LogReader->new({ + filename => $logfile, +}); my %args; @@ -37,11 +39,7 @@ $args{skip_types} = \%skip_types; my $printer = SCX::LogPrinter->new(\%args); -while (my $line = <$logfh>) { - chomp $line; - $line =~ s/\A\s+//xms; - my ($l_time, @data) = split(/\s+/, $line); - - $printer->add_data($l_time, map { hex $_ } @data); +while (my ($l_time, @data) = $reader->get_data()) { + $printer->add_data($l_time, @data); } -- 2.43.0