+15Oct02=======================================================================
+1. made some detail changes to the raw USDB data and the routines that
+generate and operate on them. There were some bugs involving a few 'missing'
+callsigns which been fixed. Also there were some, for our purposes, invalid
+callsigns in the database which have been removed (down to about 820,000
+entries now). You should really update your database.
14Oct02=======================================================================
1. added show/usdb command as a simple, direct interface to the information
available in the USDB stuff.
my ($self, $line) = @_;
my @out;
return (1, $self->msg('e5')) if $self->priv < 9;
-return (1, $self->msg('e3', "load/usdb", $line)) if $line && !-r $line;
-$line = "$main::data/usdbraw" unless $line;
-push @out, (USDB::load($line));
-USDB::init() unless @OUT;
-@out = ($self->msg('ok')) unless @out;
+my $r = USDB::load($line) if $line;
+USDB::init() if undef $r || $r =~ /^\d+ rec/;
return (1, @out);
tie %dbn, 'DB_File', "$dbfn.new", O_RDWR|O_CREAT, 0664, $a or return "cannot tie $dbfn.new $!";
# now write away all the files
+ my $count = 0;
for (@_) {
my $ofn = shift;
+
+ # conditionally handle compressed files (don't cha just lurv live code, this is
+ # a rave from the grave and is "in memoriam Flossie" the ICT 1301G I learnt on.
+ # {for pedant computer historians a 1301G is an ICT 1301A that has been
+ # Galdorised[tm] (for instance had decent IOs and a 24 pre-modify instruction)}
+ my $nfn = $ofn;
+ if ($nfn =~ /.gz$/i) {
+ my $gz;
+ eval qq{use Compress::Zlib; \$gz = gzopen(\$ofn, "rb")};
+ return "Cannot read compressed files $@" if $@;
+ $nfn =~ s/.gz$//i;
+ my $of = new IO::File ">$nfn" or return "Cannot write to $nfn $!";
+ my ($l, $buf);
+ $of->write($buf, $l) while ($l = $gz->gzread($buf));
+ $gz->gzclose;
+ $of->close;
+ $ofn = $nfn;
+ }
+
my $of = new IO::File "$ofn" or return "Cannot read $ofn $!";
while (<$of>) {
$dbn{'##'} = "$no";
}
$dbn{$call} = $ctyn;
+ $count++;
}
$of->close;
- unlink $ofn;
+ unlink $nfn;
}
untie %dbn;
rename "$dbfn.new", $dbfn;
- return ();
+ return "$count records";
}
1;
die "no input (usdbraw?) files specified\n" unless @ARGV;
-USDB::load(@ARGV);
+print "\n", USDB::load(@ARGV), "\n";
exit(0);
}
$gzfh->gzclose;
-print "$ctycount Cities found\n";
exit(0);
$l =~ s/[\r\n]+$//;
my ($rt,$usi,$ulsfn,$ebfno,$call,$type,$lid,$name,$first,$middle,$last,$suffix,
$phone,$fax,$email,$street,$city,$state,$zip,$pobox,$attl,$sgin,$frn) = split /\|/, $l;
-
- my $rec = uc join '|', $call,$city,$state if $city && $state;
- $buf .= "$rec\n";
- if (length $buf > $blksize) {
- $gzfh->gzwrite($buf);
- undef $buf;
+
+# print "ERR: $l\n" unless $call && $city && $state;
+
+ if ($call && $city && $state) {
+ my $rec = uc join '|', $call,$city,$state if $city && $state;
+ $buf .= "$rec\n";
+ if (length $buf > $blksize) {
+ $gzfh->gzwrite($buf);
+ undef $buf;
+ }
+ $count++;
}
- my $c = uc "$city|$state";
- $count++;
- }
- if (length $buf > $blksize) {
- $gzfh->gzwrite($buf);
}
+ $gzfh->gzwrite($buf) if length $buf;
print ", $count records\n";
$fh->close;
}