X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fgrepdbg;h=f133a143448972d0e75e5f019fb9015665ef77ff;hb=520b5d73641f384e1ba59e4cb6b5ab84b54baf5a;hp=55d09788b8c28bf0f3c4f220951567fb9262dd9c;hpb=f0910da57e166acb22e83de4e4b771d175074c80;p=spider.git diff --git a/perl/grepdbg b/perl/grepdbg index 55d09788..f133a143 100755 --- a/perl/grepdbg +++ b/perl/grepdbg @@ -3,11 +3,17 @@ # Program to do a grep with dates and times on the debug # files # -# dispdbg [-nnn ...] +# grepdbg [nn] [-mm] # -# the -nnn is the day you what to look at -1 is yesterday -0 is today + +# nn - is the day you what to look at: 1 is yesterday, 0 is today # and is optional if there is only one argument -# is the string, a caseless search is done +# +# -mmm - print the mmm lines before the match. So -10 will print +# ten lines including the line matching the regular expression. +# +# is the regular expression you are searching for, +# a caseless search is done # # @@ -23,7 +29,7 @@ BEGIN { unshift @INC, "$root/local"; } -use DXVars; +use SysVar; use DXUtil; use DXLog; use Julian; @@ -32,6 +38,7 @@ use strict; use vars qw(@list $fp $today $string); + $fp = DXLog::new('debug', 'dat', 'd'); $today = $fp->unixtoj(time()); my $nolines = 1; @@ -40,6 +47,10 @@ my @prev; for my $arg (@ARGV) { if ($arg =~ /^-/) { $arg =~ s/^-//o; + if ($arg =~ /^\s*\-+(?:[h\?]e?l?p?)/) { + usage(); + exit(0); + } push @list, $arg; } elsif ($arg =~ /^\d+$/) { $nolines = $arg; @@ -48,7 +59,8 @@ for my $arg (@ARGV) { last; } } -die "usage: grepdbg [nn] [[-nnn] ..] \n" unless $string; + +$string ||= '.*'; push @list, "0" unless @list; for my $entry (@list) { @@ -57,20 +69,30 @@ for my $entry (@list) { my $line; if ($fh) { while (<$fh>) { - my $line = $_; - chomp $line; - push @prev, $line; - shift @prev while @prev > $nolines; - if ($line =~ m{$string}io) { - for (@prev) { - s/([\x00-\x1f\x7f-\xff])/sprintf("\\x%02X", ord($1))/eg; - my ($t, $l) = split /\^/, $line, 2; - print atime($t), ' ', $l, "\n"; - } - @prev = (); - } + process($_); } $fp->close(); } } + +sub process +{ + my $line = shift; + chomp $line; + push @prev, $line; + shift @prev while @prev > $nolines; + if ($line =~ m{$string}io) { + for (@prev) { + s/([\x00-\x1f\x7f-\xff])/sprintf("\\x%02X", ord($1))/eg; + my ($t, $l) = split /\^/, $_, 2; + print atime($t), ' ', $l, "\n"; + } + @prev = (); + } +} + +sub usage +{ + die "usage: grepdbg [nn] [[-nnn] ..] \n"; +} exit(0);