X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fshow%2Fwm7d.pl;h=5df379a3e7676db9e0f426ab27d304be9dcd232c;hb=refs%2Fheads%2Fnewusers;hp=068097cac1a47f9ff92851ae845a2ecf2b84ed90;hpb=9fc2ec17088fbff22e825133a4b9b3efe5384df3;p=spider.git diff --git a/cmd/show/wm7d.pl b/cmd/show/wm7d.pl index 068097ca..5df379a3 100644 --- a/cmd/show/wm7d.pl +++ b/cmd/show/wm7d.pl @@ -1,7 +1,7 @@ # # Query the WM7D Database server for a callsign # -# Was Largely based on "sh/qrz" and info in the Net::Telnet documentation +# Was Largely based on "sh/qrz" # # Original Copyright (c) 2002 Charlie Carroll K1XX # @@ -17,7 +17,10 @@ sub waitfor my $buf = $conn->{msg}; $buf =~ s/\r/\\r/g; $buf =~ s/\n/\\n/g; - dbg "state $conn->{state} '$msg' '$buf'"; + + dbg "state $conn->{state} '$msg' '$buf'" if isdbg('wm7d'); + + $conn->{_wm7d} ||= []; if ($conn->{state} eq 'waitfor') { if ($msg =~ /utc$/ ) { @@ -30,13 +33,23 @@ sub waitfor $conn->{state} = 'ending'; } return if $msg =~ /^query->/; - $conn->handle_raw($msg); + push @{$conn->{_wm7d}}, $msg; } else { return if $msg =~ /^query->/ || $msg =~ /bye/; - $conn->handle_raw($msg); +# $conn->handle_raw($msg); + push @{$conn->{_wm7d}}, $msg; } } +sub on_disc +{ + my $conn = shift; + my $dxchan = shift; + $DB::single = 1; + + $dxchan->send(map {"$conn->{prefix}$_"} @{$conn->{_wm7d}}); +} + # wm7d accepts only single callsign sub handle { @@ -58,7 +71,7 @@ sub handle Log('call', "$call: show/wm7d \U$line"); my $conn = AsyncMsg->raw($self, $target, $port, - handler => \&waitfor, prefix=>'wm7d> '); + handler => \&waitfor, prefix=>'wm7d> ', on_disc =>\&on_disc); if ($conn) { $conn->{state} = 'waitfor'; $conn->{target_call} = $line;