remove warnings from $BRANCH lines for 5.8.0
[spider.git] / perl / DXDb.pm
index 25e7c0827d3f0d2d0d7fd7f30d32c59ab60640ca..03e84e0cf9ad7c1c43c056fa5dfb393751146002 100644 (file)
@@ -12,8 +12,7 @@ use DXVars;
 use DXLog;
 use DXUtil;
 use DB_File;
-
-use Carp;
+use DXDebug;
 
 use vars qw($opentime $dbbase %avail %valid $lastprocesstime $nextstream %stream);
 
@@ -49,6 +48,12 @@ $lastprocesstime = time;
 $nextstream = 0;
 %stream = ();
 
+use vars qw($VERSION $BRANCH);
+$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
+$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/  || (0,0));
+$main::build += $VERSION;
+$main::branch += $BRANCH;
+
 # allocate a new stream for this request
 sub newstream
 {
@@ -77,9 +82,10 @@ sub load
 {
        my $s = readfilestr($dbbase, "dbs", "pl");
        if ($s) {
-               my $a = { eval $s } ;
+               my $a;
+               eval "\$a = $s";
                confess $@ if $@;
-               %avail = %{$a} if $a
+               %avail = ( %$a ) if ref $a;
        }
 }
 
@@ -256,18 +262,18 @@ sub process
                        my $db = getdesc($f[4]);
                        if ($db) {
                                if ($db->{remote}) {
-                                       sendremote($dxchan, $f[2], $f[3], $dxchan->msg('dx1', $db->{remote}));
+                                       sendremote($dxchan, $f[2], $f[3], $dxchan->msg('db1', $db->{remote}));
                                } else {
                                        my $value = $db->getkey($f[5]);
                                        if ($value) {
                                                my @out = split /\n/, $value;
                                                sendremote($dxchan, $f[2], $f[3], @out);
                                        } else {
-                                               sendremote($dxchan, $f[2], $f[3], $dxchan->msg('dx2', $f[5], $db->{name}));
+                                               sendremote($dxchan, $f[2], $f[3], $dxchan->msg('db2', $f[5], $db->{name}));
                                        }
                                }
                        } else {
-                               sendremote($dxchan, $f[2], $f[3], $dxchan->msg('dx3', $f[4]));
+                               sendremote($dxchan, $f[2], $f[3], $dxchan->msg('db3', $f[4]));
                        }
                        last SWITCH;
                }
@@ -348,6 +354,9 @@ sub AUTOLOAD
        $name =~ s/.*:://o;
   
        confess "Non-existant field '$AUTOLOAD'" if !$valid{$name};
+       # this clever line of code creates a subroutine which takes over from autoload
+       # from OO Perl - Conway
+       *{$AUTOLOAD} = sub {@_ > 1 ? $_[0]->{$name} = $_[1] : $_[0]->{$name}} ;
        @_ ? $self->{$name} = shift : $self->{$name} ;
 }