X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fshow%2Fdx.pl;h=2af75e7ce09a21ae897bec57ee75f6424ed1e7c6;hb=d7338541ed3f380b0d10e0676bb5d64e6e5e4d7a;hp=c98699969ad095cc4518eab077ee5bf936009821;hpb=8942c27356acc5d5f5a20134461bcf7e6bd6a044;p=spider.git diff --git a/cmd/show/dx.pl b/cmd/show/dx.pl index c9869996..2af75e7c 100644 --- a/cmd/show/dx.pl +++ b/cmd/show/dx.pl @@ -18,6 +18,7 @@ my $pre; my $spotter; my $info; my $expr; +my ($doqsl, $doiota, $doqra); while ($f = shift @list) { # next field # print "f: $f list: ", join(',', @list), "\n"; @@ -56,6 +57,27 @@ while ($f = shift @list) { # next field $spotter = uc shift @list; next; } + if (lc $f eq 'qsl') { + $doqsl = 1; + next; + } + if (lc $f eq 'iota') { + my ($a, $b); +# $DB::single =1; + + if ($list[0] && (($a, $b) = $list[0] =~ /(AF|AN|NA|SA|EU|AS|OC)-?(\d?\d\d)/oi)) { + $a = uc $a; + $doiota = "\\b$a\[\-\ \]\?$b\\b"; + shift @list; + } + $doiota = '\b(IOTA|(AF|AN|NA|SA|EU|AS|OC)[- ]?\d?\d\d)\b' unless $doiota; + next; + } + if (lc $f eq 'qra') { + $doqra = uc shift @list if $list[0] =~ /[A-Z][A-Z]\d\d/oi; + $doqra = '\b([A-Z][A-Z]\d\d|[A-Z][A-Z]\d\d[A-Z][A-Z])\b' unless $doqra; + next; + } if (!$pre) { $pre = uc $f; } @@ -63,14 +85,9 @@ while ($f = shift @list) { # next field # first deal with the prefix if ($pre) { - $expr = "\$f1 =~ /"; - $pre =~ s|/|\\/|; # change the slashes to \/ - if ($pre =~ /^\*/o) { - $pre =~ s/^\*//;; - $expr .= "$pre\$/o"; - } else { - $expr .= "^$pre/o"; - } + $pre .= '*' unless $pre =~ /[\*\?\[]/o; + $pre = shellregex($pre); + $expr = "\$f1 =~ m{$pre}o"; } else { $expr = "1"; # match anything } @@ -90,15 +107,33 @@ if (@freq) { # any info if ($info) { $expr .= " && " if $expr; - $info =~ s|/|\\/|; - $expr .= "\$f3 =~ /$info/io"; + $info =~ s{(.)}{"\Q$1"}ge; + $expr .= "\$f3 =~ m{$info}io"; } # any spotter if ($spotter) { $expr .= " && " if $expr; - $spotter =~ s|/|\\/|; - $expr .= "\$f4 =~ /$spotter/o"; + $spotter = shellregex($spotter); + $expr .= "\$f4 =~ m{$spotter}o"; +} + +# qsl requests +if ($doqsl) { + $expr .= " && " if $expr; + $expr .= "\$f3 =~ m{(\@|>|QSL|VIA)}io"; +} + +# iota requests +if ($doiota) { + $expr .= " && " if $expr; + $expr .= "\$f3 =~ m{$doiota}io"; +} + +# iota requests +if ($doqra) { + $expr .= " && " if $expr; + $expr .= "\$f3 =~ m{$doqra}io"; } #print "expr: $expr from: $from to: $to fromday: $fromday today: $today\n";