attempt to get rid of some of the useless messages on program exit
[spider.git] / perl / DXDebug.pm
index c03f92af8b18308c1c32d52bd8affeae59024377..c44ba35920f5d049291a4021b78b845c1406a606 100644 (file)
@@ -11,8 +11,8 @@ package DXDebug;
 
 require Exporter;
 @ISA = qw(Exporter);
-@EXPORT = qw(dbg dbgadd dbgsub dbglist isdbg);
-@EXPORT_OK = qw(dbg dbgadd dbgsub dbglist isdbg);
+@EXPORT = qw(dbg dbgadd dbgsub dbglist isdbg dbgclose);
+@EXPORT_OK = qw(dbg dbgadd dbgsub dbglist isdbg dbgclose);
 
 use strict;
 use vars qw(%dbglevel $fp);
@@ -25,17 +25,35 @@ use Carp;
 %dbglevel = ();
 $fp = DXLog::new('debug', 'dat', 'd');
 
+# add sig{__DIE__} handling
+if (!defined $DB::VERSION) {
+       $SIG{__WARN__} = $SIG{__DIE__} = sub { 
+               my $t = time; 
+               for (@_) {
+                       $fp->writeunix($t, "$t^$_"); 
+#                      print STDERR $_;
+               }
+       };
+}
+
+sub dbgclose
+{
+       $SIG{__DIE__} = $SIG{__WARN__} = 'DEFAULT';
+       $fp->close();
+}
+
 sub dbg
 {
        my $l = shift;
        if ($dbglevel{$l}) {
-               for (@_) {
-                       s/\n$//og;
+           my @in = @_;
+               my $t = time;
+               for (@in) {
+                   s/\n$//o;
                        s/\a//og;   # beeps
+                       print "$_\n" if defined \*STDOUT;
+                       $fp->writeunix($t, "$t^$_");
                }
-               print "@_\n" if defined \*STDOUT;
-               my $t = time;
-               $fp->writeunix($t, "$t^@_");
        }
 }