X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fcreate_prefix.pl;h=411b2cb84113b96d573f6c8b832b39215e5c9f45;hb=f63d598af3f797b56b8d5e23ec4ff5254192eee9;hp=9c98a46c81ebdf0bfd617fd686d9bd4382360be0;hpb=7101f92654a7a2bffbe5d3fb80de89710ee3951e;p=spider.git diff --git a/perl/create_prefix.pl b/perl/create_prefix.pl index 9c98a46c..411b2cb8 100755 --- a/perl/create_prefix.pl +++ b/perl/create_prefix.pl @@ -3,7 +3,7 @@ # # Copyright (c) - Dirk Koopman G1TLH # -# $Id$ +# # require 5.004; @@ -16,6 +16,7 @@ BEGIN { unshift @INC, "$root/perl"; # this IS the right way round! unshift @INC, "$root/local"; + $data = "$root/data"; } use DXVars; @@ -90,31 +91,40 @@ close(IN); #print Data::Dumper->Dump([\%pre, \%locn], [qw(pre locn)]); -# now open the rsgb.cty file and process that again the prefix file we have -open(IN, "$main::data/rsgb.cty") or die "Can't open $main::data/rsgb.cty ($!)"; +# now open the cty.dat file if it is there +my @f; +my @a; $line = 0; -while () { - $line++; - next if /^\s*#/; - next if /^\s*$/; - my $l = $_; - chomp; - my @f = split /:\s+|;/; - my $p = uc $f[4]; - my $ref = $pre{$p}; - if ($ref) { - # split up the alias string - my @alias = split /=/, $f[5]; - my $a; - foreach $a (@alias) { - next if $a eq $p; # ignore if we have it already - my $nref = $pre{$a}; - $pre{$a} = $ref if !$nref; # copy the original ref if new +if (open(IN, "$main::data/cty.dat")) { + my $state = 0; + while () { + $line++; + s/\r$//; + next if /^\s*\#/; + next if /^\s*$/; + chomp; + if ($state == 0) { + s/:$//; + @f = split /:\s+/; + @a = (); + $state = 1; + } elsif ($state == 1) { + s/^\s+//; + if (/;$/) { + $state = 0; + s/[,;]$//; + push @a, split /\s*,/; + $f[7] =~ s/^\*\s*//; # remove any preceeding '*' before a callsign + ct($_, uc $f[7], @a) if @a; + } else { + s/,$//; + push @a, split /\s*,/; + } } - } else { - print "line $line: unknown prefix '$p' on $l in rsgb.cty\n"; } } +close IN; + open(OUT, ">$main::data/prefix_data.pl") or die "Can't open $main::data/prefix_data.pl ($!)"; @@ -169,6 +179,34 @@ sub printpre return $out; } +sub ct +{ + my $l = shift; + my $p = shift; + my @a = @_; + my $ref = $pre{$p}; + if ($ref) { + my $a; + foreach $a (@a) { + # for now remove (nn) [nn] + my ($itu) = $a =~ /(\(\d+\))/; $a =~ s/(\(\d+\))//g; + my ($cq) = $a =~ /(\[\d+\])/; $a =~ s/(\[\d+\])//g; + my ($lat, $long) = $a =~ m{(<[-+\d.]+/[-+\d.]+>)}; $a =~ s{(<[-+\d.]+/[-+\d.]+>)}{}g; + my ($cont) = $a =~ /(\{[A-Z]{2}\})/; $a =~ s/(\{[A-Z]{2}\})//g; + + unless ($a) { + print "line $line: blank prefix on $l in cty.dat\n"; + next; + } + next if $a eq $p; # ignore if we have it already + my $nref = $pre{$a}; + $pre{$a} = $ref if !$nref; # copy the original ref if new + } + } else { + print "line $line: unknown prefix '$p' on $l in cty.dat\n"; + } +} + sub addloc { my $locstr = shift; @@ -177,3 +215,4 @@ sub addloc $locn{$loc} = $locstr; return $loc; } +