$hits = $misses = $matchtotal = 1; # cache stats
$lrusize = 1000; # size of prefix LRU cache
+sub init
+{
+ my $r = load();
+ return $r if $r;
+
+ # fix up the node's default country codes
+ unless (@main::my_cc) {
+ push @main::my_cc, (61..67) if $main::mycall =~ /^GB/;
+ push @main::my_cc, qw(EA EA6 EA8 EA9) if $main::mycall =~ /^E[ABCD]/;
+ push @main::my_cc, qw(I IT IS) if $main::mycall =~ /^I/;
+ push @main::my_cc, qw(SV SV5 SV9) if $main::mycall =~ /^SV/;
+
+ # catchall
+ push @main::my_cc, $main::mycall unless @main::my_cc;
+ }
+
+ my @c;
+ for (@main::my_cc) {
+ if (/^\d+$/) {
+ push @c, $_;
+ } else {
+ my @dxcc = extract($_);
+ push @c, $dxcc[1]->dxcc if @dxcc > 1;
+ }
+ }
+ return "\@main::my_cc does not contain a valid prefix or callsign (" . join(',', @main::my_cc) . ")" unless @c;
+ @main::my_cc = @c;
+ return undef;
+}
+
sub load
{
# untie every thing
return $out;
}
+sub loaded
+{
+ return $db;
+}
+
sub store
{
my ($k, $l);
return @out;
}
+# get the full country data (dxcc, itu, cq, state, city) as a list
+# from a callsign.
+sub cty_data
+{
+ my $call = shift;
+
+ my @dxcc = extract($call);
+ if (@dxcc) {
+ return ($dxcc[1]->dxcc, $dxcc[1]->itu, $dxcc[1]->cq, ($dxcc[1]->state||''), ($dxcc[1]->city||''));
+ }
+ return (666,0,0,'','');
+}
+
my %valid = (
lat => '0,Latitude,slat',
long => '0,Longitude,slong',