X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXDb.pm;h=6ee8f939de92e235ebd0144350c79c79550fbd47;hb=66efc9cee6be378f570c0f08f0f41ba739a3d8d2;hp=bccfb6ddac951140481687ca9f36cad5e6f50541;hpb=88c2b296ba903fdd356e351b83fcb844e2d6eacd;p=spider.git diff --git a/perl/DXDb.pm b/perl/DXDb.pm index bccfb6dd..6ee8f939 100644 --- a/perl/DXDb.pm +++ b/perl/DXDb.pm @@ -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); @@ -21,24 +20,27 @@ $opentime = 5*60; # length of time a database stays open after last access $dbbase = "$main::root/db"; # where all the databases are kept; %avail = (); # The hash contains a list of all the databases %valid = ( - accesst => '9,Last Access Time,atime', + accesst => '9,Last Accs Time,atime', createt => '9,Create Time,atime', - lastt => '9,Last Update Time,atime', + lastt => '9,Last Upd Time,atime', name => '0,Name', db => '9,DB Tied hash', remote => '0,Remote Database', - pre => '0,Heading text', - post => '0,Tail text', + pre => '0,Heading txt', + post => '0,Tail txt', chain => '0,Search these,parray', disable => '0,Disabled?,yesno', - nf => '0,Not Found text', - cal => '0,No Key text', - allowread => '9,Allowed to read,parray', - denyread => '9,Deny to read,parray', - allowupd => '9,Allow to update,parray', - denyupd => '9,Deny to update,parray', - fwdupd => '9,Forward updates to,parray', + nf => '0,Not Found txt', + cal => '0,No Key txt', + allowread => '9,Allowed read,parray', + denyread => '9,Deny read,parray', + allowupd => '9,Allow upd,parray', + denyupd => '9,Deny upd,parray', + fwdupd => '9,Forw upd to,parray', template => '9,Upd Templates,parray', + te => '9,End Upd txt', + tae => '9,End App txt', + atemplate => '9,App Templates,parray', help => '0,Help txt,parray', ); @@ -46,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; +$main::build += $VERSION; +$main::branch += $BRANCH; + # allocate a new stream for this request sub newstream { @@ -74,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; } } @@ -97,7 +106,7 @@ sub getdesc # search for a partial if not found direct unless ($r) { - for (values %avail) { + for (sort { $a->{name} cmp $b->{name} }values %avail) { if ($_->{name} =~ /^$name/) { $r = $_; last; @@ -345,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} ; }