}
# get the freq and callsign either way round
-if ($f[0] =~ /[A-Za-z]/) {
+if (is_freq($f[1]) && $f[0] =~ m{^[\w\d]+(?:/[\w\d]+){0,2}$}) {
$spotted = uc $f[0];
$freq = $f[1];
-} elsif ($f[0] =~ /^[0-9\.\,]+$/) {
+} elsif (is_freq($f[0]) && $f[1] =~ m{^[\w\d]+(?:/[\w\d]+){0,2}$}) {
$freq = $f[0];
$spotted = uc $f[1];
} else {
- return (1, $self->msg('dx2'));
+ return (1, $self->msg('dx3'));
}
# make line the rest of the line
my $buf = Spot::formatb($self->user->wantgrid, $freq, $spotted, $main::systime, $line, $spotter);
push @out, $buf;
} else {
- return (1, $self->msg('dup')) if Spot::dup($freq, $spotted, (int ($main::systime/60)) * 60, $line);
- my @spot = Spot::add($freq, $spotted, $main::systime, $line, $spotter, $main::mycall);
+ my $t = (int ($main::systime/60)) * 60;
+ return (1, $self->msg('dup')) if Spot::dup($freq, $spotted, $t, $line);
+ my @spot = Spot::prepare($freq, $spotted, $t, $line, $spotter, $main::mycall);
if (@spot) {
+ # store it
+ Spot::add(@spot);
+
# send orf to the users
DXProt::send_dx_spot($self, DXProt::pc11($spotter, $freq, $spotted, $line), @spot);
}