$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 txt',
+ post => '0,Tail txt',
+ chain => '0,Search these,parray',
+ disable => '0,Disabled?,yesno',
+ 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',
);
$lastprocesstime = time;
# save all the database descriptors
sub save
{
- my $date = cldatetime($main::systime);
-
- writefilestr($dbbase, "dbs", "pl", \%avail, "#\n# database descriptor file\n# Don't alter this by hand unless you know what you are doing\n# last modified $date\n#\n");
+ closeall();
+ writefilestr($dbbase, "dbs", "pl", \%avail);
}
# get the descriptor of the database you want.
# 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;
{
my $self = shift;
if ($self->{db}) {
- untie $self->{db};
+ undef $self->{db};
+ delete $self->{db};
}
}
my $self = bless {};
my $name = shift;
my $remote = shift;
+ my $chain = shift;
$self->{name} = lc $name;
$self->{remote} = uc $remote if $remote;
+ $self->{chain} = $chain if $chain && ref $chain;
$self->{accesst} = $self->{createt} = $self->{lastt} = $main::systime;
$avail{$self->{name}} = $self;
mkdir $dbbase, 02775 unless -e $dbbase;
my $n = getstream($f[3]);
if ($n) {
my $mchan = DXChannel->get($n->{call});
- $mchan->send($f[2] . ":$f[4]");
+ $mchan->send($f[2] . ":$f[4]") if $mchan;
}
last SWITCH;
}
$dxchan->send(DXProt::pc46($main::mycall, $tonode, $stream));
}
+# print a value from the db reference
+sub print
+{
+ my $self = shift;
+ my $s = shift;
+ return $self->{$s} ? $self->{$s} : undef;
+}
+
# various access routines
#