print_all_fields cltounix unpad is_callsign is_latlong
is_qra is_freq is_digits is_pctext is_pcflag insertitem deleteitem
is_prefix dd is_ipaddr $pi $d2r $r2d localdata localdata_mv
- diffms _diffms difft parraydifft is_ztime
+ diffms _diffms _diffus difft parraydifft is_ztime basecall
);
return $_[0] =~ m!^
(?:\d?[A-Z]{1,2}\d{0,2}/)? # out of area prefix /
(?:\d?[A-Z]{1,2}\d{1,5}) # main prefix one (required) - lengthened for special calls
- [A-Z]{1,5} # callsign letters (required)
+ [A-Z]{1,8} # callsign letters (required)
(?:-(?:\d{1,2}))? # - nn possibly (eg G8BPQ-8)
(?:/[0-9A-Z]{1,7})? # / another prefix, callsign or special label (including /MM, /P as well as /EURO or /LGT) possibly
$!x;
sub localdata
{
my $ifn = shift;
- my $ofn = "$main::local_data/$ifn";
- my $tfn;
+ my $lfn = "$main::local_data/$ifn";
+ my $dfn = "$main::data/$ifn";
if (-e "$main::local_data") {
- $tfn = "$main::data/$ifn";
- if ((-e $tfn) && (-e $ofn)) {
- $ofn = $tfn if -M $ofn < -M $tfn;
+ if ((-e $dfn) && (-e $lfn)) {
+ $lfn = $dfn if -M $dfn < -M $lfn;
} else {
- $ofn = $tfn if -e $tfn;
+ $lfn = $dfn if -e $dfn;
}
+ } else {
+ $lfn = $dfn;
}
- return $ofn;
+ return $lfn;
}
# move a file or a directory from data -> local_data if isn't there already
return $b - $a;
}
+# and in microseconds
+sub _diffus
+{
+ my $ta = shift;
+ my $tb = shift || [gettimeofday];
+ my $a = int($ta->[0] * 1000000) + int($ta->[1]);
+ my $b = int($tb->[0] * 1000000) + int($tb->[1]);
+ return $b - $a;
+}
+
sub diffms
{
my $call = shift;
if (ref $b eq 'ARRAY') {
$t = $b->[1] - $b->[0];
} else {
- if ($adds >= $b) {
+ if ($adds && $adds =~ /^\d+$/ && $adds >= $b) {
$t = $adds - $b;
$adds = shift;
} else {
$out .= sprintf ("%s${s}s", $adds?' ':'') if $s;
$out ||= sprintf ("%s0s", $adds?' ':'');
}
+ $out = '0s' unless length $out;
return $out;
}
$out =~ s/,\s*$//;
return $out;
}
+
+sub basecall
+{
+ $_[0] =~ m|^(?:[\w\d]+/)?([\w\d]+).*$|;
+ return $1;
+}