-#!/usr/bin/perl
+#!/usr/bin/env perl
# a program to create a prefix file from a wpxloc.raw file
#
# Copyright (c) - Dirk Koopman G1TLH
#
#
-require 5.004;
+use 5.10.1;
# search local then perl directories
BEGIN {
# root of directory tree for this system
$root = "/spider";
$root = $ENV{'DXSPIDER_ROOT'} if $ENV{'DXSPIDER_ROOT'};
-
+
+ mkdir "$root/local_data", 02777 unless -d "$root/local_data";
+
unshift @INC, "$root/perl"; # this IS the right way round!
unshift @INC, "$root/local";
+ $data = "$root/data";
}
use DXVars;
+use SysVar;
+
use Data::Dumper;
+use DXUtil;
+use DXBearing;
+
use strict;
my %loc = (); # the location unique hash
my %pre = (); # the prefix hash
my %pren = (); # the inverse
-# open the input file
-my $ifn = $ARGV[0] if $ARGV[0];
-$ifn = "$main::data/wpxloc.raw" if !$ifn;
-open (IN, $ifn) or die "can't open $ifn ($!)";
+my $prefix;
+my $system;
+
+if (@ARGV && $ARGV[0] =~ /^-?-?syst?e?m?$/) {
+ $prefix = $main::data;
+ ++$system;
+ shift;
+ say "create_prefix.pl: creating SYSTEM prefix files";
+} else {
+ $prefix = $main::local_data;
+ say "create_prefix.pl: creating LOCAL prefix files";
+}
+
+my $ifn;
+
+$ifn = $system ? "$main::data/wpxloc.raw" : "$prefix/wpxloc.raw";
+unless (open (IN, $ifn)) {
+ $ifn = "$main::data/wpxloc.raw";
+ open(IN, $ifn) or die "can't open $ifn ($!)";
+}
# first pass, find all the 'master' location records
while (<IN>) {
#print Data::Dumper->Dump([\%pre, \%locn], [qw(pre locn)]);
# now open the cty.dat file if it is there
+my $r;
+$ifn = $system ? "$main::data/cty.dat" : "$prefix/cty.dat";
+unless ($r = open (IN, $ifn)) {
+ $ifn = "$main::data/cty.dat";
+ $r = open(IN, $ifn);
+}
+
my @f;
my @a;
$line = 0;
-if (open(IN, "$main::data/cty.dat")) {
+if ($r) {
my $state = 0;
while (<IN>) {
$line++;
close IN;
-open(OUT, ">$main::data/prefix_data.pl") or die "Can't open $main::data/prefix_data.pl ($!)";
+open(OUT, ">$prefix/prefix_data.pl") or die "Can't open $prefix/prefix_data.pl ($!)";
print OUT "\%pre = (\n";
foreach my $k (sort keys %pre) {
$longd = 0-$longd if (uc $longl) eq 'W';
$latd += ($latm/60);
$latd = 0-$latd if (uc $latl) eq 'S';
+ my $qra = DXBearing::lltoqra($latd, $longd);
print OUT " name => '$name',";
print OUT " dxcc => $dxcc,";
print OUT " itu => $itu,";
print OUT " cq => $cq,";
print OUT " utcoff => $utcoff,";
print OUT " lat => $latd,";
- print OUT " long => $longd";
+ print OUT " long => $longd,";
+ print OUT " qra => '$qra'";
print OUT " }, 'Prefix'),\n";
}
print OUT ");\n\n";