X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fgrepdbg;h=5ab380f6de6d6638f1933ec2155a04f32cc5a5a0;hb=c32da9acc192ee726e1fad7425990a37ce7eb27f;hp=250a898b5701aed2647c9e1de1822909cb48207e;hpb=118cbdbcf7e06d022a3030670c0e70b05bd8c5b3;p=spider.git diff --git a/perl/grepdbg b/perl/grepdbg index 250a898b..5ab380f6 100755 --- a/perl/grepdbg +++ b/perl/grepdbg @@ -26,38 +26,48 @@ BEGIN { use DXVars; use DXUtil; use DXLog; +use Julian; use strict; -use vars qw(@list $fp @today $string); +use vars qw(@list $fp $today $string); $fp = DXLog::new('debug', 'dat', 'd'); -@today = Julian::unixtoj(time()); +$today = $fp->unixtoj(time()); +my $nolines = 1; +my @prev; for my $arg (@ARGV) { if ($arg =~ /^-/) { $arg =~ s/^-//o; push @list, $arg; + } elsif ($arg =~ /^\d+$/) { + $nolines = $arg; } else { $string = $arg; last; } } -die "usage: grepdbg [[-nnn] ..] \n" unless $string; +die "usage: grepdbg [nn] [[-nnn] ..] \n" unless $string; push @list, "0" unless @list; for my $entry (@list) { - my @now = Julian::sub(@today, $entry); - my $fh = $fp->open(@now); + my $now = $today->sub($entry); + my $fh = $fp->open($now); my $line; if ($fh) { while (<$fh>) { my $line = $_; chomp $line; + push @prev, $line; + shift @prev while @prev > $nolines; if ($line =~ m{$string}io) { - my @line = split '\^', $line; - my $t = shift @line; - print atime($t), ' ', join('^', @line), "\n"; + for (@prev) { + s/([\x00-\x1f\x7f-\xff])/sprintf("\\x%02X", ord($1))/eg; + my ($t, $l) = split /\^/, $_, 2; + print atime($t), ' ', $l, "\n"; + } + @prev = (); } } $fp->close();