X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fshow%2Fqra.pl;h=f18b29b4b5af9da7b398886aba5fe7db3667d791;hb=be831ee07170ec1a936e1e3eee5a4e9ebc916ef7;hp=2bbb606f6206689fdbf27c4722781c13aed23aa0;hpb=fd598bf2c7b12871c8941ecff8242dbd2b12d62e;p=spider.git diff --git a/cmd/show/qra.pl b/cmd/show/qra.pl index 2bbb606f..f18b29b4 100644 --- a/cmd/show/qra.pl +++ b/cmd/show/qra.pl @@ -8,6 +8,7 @@ my ($self, $line) = @_; my @list = split /\s+/, $line; # generate a list of callsigns +return (1, $self->msg('qrashe1')) unless @list > 0; my @out; my $fll; @@ -22,39 +23,31 @@ if (!$long && !$lat) { my $fqra = DXBearing::is_qra($list[0]); my $sqra = $list[0] =~ /^[A-Za-z][A-Za-z]\d\d$/; -my $ll = $line =~ /^\d+\s+\d+\s*[NSns]\s+\d+\s+\d+\s*[EWew]/; -return (1, $self->msg('qrashe1')) unless @list > 0; +my $ll = $line =~ /^\d+\s+\d+\s+[NSns]\s+\d+\s+\d+\s+[EWew]/; return (1, $self->msg('qrae2', $list[0])) unless $fqra || $sqra || $ll; +# convert a lat/long into a qra locator if ($ll) { my ($llat, $llong) = DXBearing::stoll($line); return (1, "QRA $line = " . DXBearing::lltoqra($llat, $llong)); } -#print "$lat $long\n"; +unshift @list, $self->user->qra if @list == 1 && $self->user->qra; +unshift @list, DXBearing::lltoqra($lat, $long) unless @list > 1; -my $l = uc $list[0]; -my $f; +my $f = uc $list[0]; +$f .= 'MM' if $f =~ /^[A-Z][A-Z]\d\d$/; +($lat, $long) = DXBearing::qratoll($f); +return (1, $self->msg('qrae2', $list[1])) unless (DXBearing::is_qra($list[1]) || $list[1] =~ /^[A-Za-z][A-Za-z]\d\d$/); -if (@list > 1) { - $f = $l; - $f .= 'MM' if $f =~ /^[A-Z][A-Z]\d\d$/; - ($lat, $long) = DXBearing::qratoll($f); - $fll = DXBearing::lltos($lat, $long); - #print "$lat $long\n"; - - return (1, $self->msg('qrae2', $list[1])) unless (DXBearing::is_qra($list[1]) || $list[1] =~ /^[A-Za-z][A-Za-z]\d\d$/); - $l = uc $list[1]; -} +my $l = uc $list[1]; -$l .= 'MM' if $l =~ /^[A-Z][A-Z]\d\d$/; - -my ($qlat, $qlong) = DXBearing::qratoll($l); -#print "$qlat $qlong\n"; $fll = DXBearing::lltos($lat, $long); -$fll =~ s/\s+([NSEW])/$1/g; +my ($qlat, $qlong) = DXBearing::qratoll($l); $tll = DXBearing::lltos($qlat, $qlong); + $tll =~ s/\s+([NSEW])/$1/g; +$fll =~ s/\s+([NSEW])/$1/g; my ($b, $dx) = DXBearing::bdist($lat, $long, $qlat, $qlong); my ($r, $rdx) = DXBearing::bdist($qlat, $qlong, $lat, $long);