use DXLog;
use DXUtil;
use DB_File;
-
-use Carp;
+use DXDebug;
use vars qw($opentime $dbbase %avail %valid $lastprocesstime $nextstream %stream);
$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
{
{
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;
}
}
$avail{$self->{name}} = $self;
mkdir $dbbase, 02775 unless -e $dbbase;
save();
+ return $self;
}
# delete a database
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;
}
return $valid{$ele};
}
-no strict;
+#no strict;
sub AUTOLOAD
{
- my $self = shift;
+ no strict;
my $name = $AUTOLOAD;
return if $name =~ /::DESTROY$/;
- $name =~ s/.*:://o;
+ $name =~ s/^.*:://o;
confess "Non-existant field '$AUTOLOAD'" if !$valid{$name};
- @_ ? $self->{$name} = shift : $self->{$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}};
+ goto &$AUTOLOAD;
}
1;