add an RBN line to progress
[spider.git] / perl / grepdbg
index 55d09788b8c28bf0f3c4f220951567fb9262dd9c..f133a143448972d0e75e5f019fb9015665ef77ff 100755 (executable)
@@ -3,11 +3,17 @@
 # Program to do a grep with dates and times on the debug
 # files
 #
-# dispdbg [-nnn ...] <string>
+# grepdbg [nn] [-mm] <regular expression>
 #
-# 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
-# <string> 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. 
+#
+# <regexp> 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] ..] <regexp>\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] ..] <regexp>\n";
+}
 exit(0);