fix the issue in DXProt::add_thingy
[spider.git] / perl / DXDebug.pm
index c195fe2de01763f0025e655ab615dcd26799fe8e..d901c6b5b047bb5a7951bca67b3104d30229b672 100644 (file)
@@ -26,7 +26,7 @@ package DXDebug;
 
 require Exporter;
 @ISA = qw(Exporter);
-@EXPORT = qw(dbginit dbg dbgadd dbgsub dbglist dbgdump isdbg dbgclose confess croak cluck);
+@EXPORT = qw(dbginit dbg dbgadd dbgsub dbglist dbgdump isdbg dbgclose confess croak cluck carp);
 
 use strict;
 use vars qw(%dbglevel $fp $callback $cleandays $keepdays $dbgringlth);
@@ -83,11 +83,11 @@ if (!defined $DB::VERSION) {
 } 
 
 
-my $_isdbg;                                            # current dbg level we are processing
+my $_isdbg = '';                                               # current dbg level we are processing
 
 sub dbg
 {
-       return unless $fp;
+#      return unless $fp;
        my $t = time; 
        for (@_) {
                my $r = $_;
@@ -103,7 +103,7 @@ sub dbg
                                shift @dbgring while (@dbgring > $dbgringlth);
                                push @dbgring, $str;
                        }
-                       $fp->writeunix($t, $str) unless $dbglevel{"nolog$_isdbg"}
+                       $fp->writeunix($t, $str) unless !$fp || $dbglevel{"nolog$_isdbg"} 
                }
        }
        $_isdbg = '';
@@ -218,11 +218,13 @@ sub longmess
 sub dbgprintring
 {
        return unless $fp;
-       my $count = shift;
+       my $i = shift || 0;
+       my $count = @dbgring;
+       $i =  @dbgring-$i if $i;
+       return 0 unless $i < $count;    # do nothing if there is nothing to print
+
        my $first;
        my $l;
-       my $i = defined $count ? @dbgring-$count : 0;
-       $count = @dbgring;
        for ( ; $i < $count; ++$i) {
                my ($t, $str) = split /\^/, $dbgring[$i], 2;
                next unless $t;
@@ -235,11 +237,13 @@ sub dbgprintring
                }
                my $buf = sprintf "%02d:%02d:%02d", (gmtime($t))[2,1,0];
                $fp->writeunix($lt, "$lt^RING: $buf^$str");
+               ++$l;
        }
        my $et = time;
        $fp->writeunix($et, "$et^###");
-       $fp->writeunix($et, "$et^### RINGBUFFER END");
+       $fp->writeunix($et, "$et^### RINGBUFFER END $l debug lines written");
        $fp->writeunix($et, "$et^###");
+       return $l;
 }
 
 sub dbgclearring