X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Freply.pl;h=22f04b85bd98d9570318a4f861566c0f0887768e;hb=4b207544da78b182bd12e94eab01451694749012;hp=c655b50588464f18b47e5614d06b0860d1d29efe;hpb=6a0068ec3df1dca0c6ae2714af3c0a4a62998dcf;p=spider.git diff --git a/cmd/reply.pl b/cmd/reply.pl index c655b505..22f04b85 100644 --- a/cmd/reply.pl +++ b/cmd/reply.pl @@ -14,7 +14,7 @@ # # Copyright (c) Dirk Koopman G1TLH # -# $Id$ +# # my ($self, $line) = @_; my @out; @@ -23,60 +23,64 @@ my $loc; #$DB::single = 1; if ($self->state eq "prompt") { - - my @f = split /\s+/, $line; - - # now deal with real message inputs - # parse out send line for various possibilities - $loc = $self->{loc} = {}; - - my $i = 0; - $f[0] = uc $f[0]; - $loc->{private} = '1'; - if ($f[0] eq 'B' || $f[0] =~ /^NOP/oi) { - $loc->{private} = '0'; - $i += 1; - } elsif ($f[0] eq 'P' || $f[0] =~ /^PRI/oi) { - $i += 1; - } - - $loc->{rrreq} = '0'; - if (uc $f[$i] eq 'RR') { - $loc->{rrreq} = '1'; - $i++; - } - - my $oref; - - # check we have a reply number - if ($i > @f) { - if (!($oref = DXMsg::get($self->lastread))) { - delete $self->{loc}; - #return (0, $self->msg('esend2')); - return (0, "need a message number"); - } - } else { - $oref = DXMsg::get($f[$i]); - if (!$oref) { - delete $self->{loc}; - return (0, "can't access message $i"); + + my @f = split /\s+/, $line if $line; + + # now deal with real message inputs + # parse out send line for various possibilities + $loc = {}; + + my $i = 0; + my @extra = (); + my $msgno = $self->lastread; + $loc->{private} = '1'; + $loc->{rrreq} = '0'; + while (@f) { + my $w = shift @f; + if ($w =~ /^\d+$/) { + $msgno = $w; + } elsif ($w =~ /^(B|NOP)/i) { + $loc->{private} = '0'; + } elsif ($w =~ /^P/i) { + ; + } elsif (uc $w eq 'RR') { + $loc->{rrreq} = '1'; + } else { + push @extra, uc $w; + } } - } - - # now save all the 'to' callsigns for later - my $to = $oref->from; - $loc->{to} = [ $to ]; # to is an array - $loc->{subject} = $oref->subject; - $loc->{subject} = "Re: " . $loc->{subject} if !($loc->{subject} =~ /^Re/io); + + my $oref; + + # check we have a reply number + # $DB::single = 1; + + $oref = DXMsg::get($msgno) if $msgno; + return (1, $self->msg('m4', $i)) unless $oref; + + # now save all the 'to' callsigns for later + my $to; + if ($loc->{private}) { + $to = $oref->from; + } else { + $to = $oref->to; + @extra = (); + } - # find me and set the state and the function on my state variable to - # keep calling me for every line until I relinquish control - $self->func("DXMsg::do_send_stuff"); - $self->state('sendbody'); - #push @out, $self->msg('sendsubj'); - push @out, "Reply to: $to"; - push @out, "Subject : $loc->{subject}"; - push @out, "Enter Message /EX (^Z) to send or /ABORT (^Y) to exit"; + return (1, $self->msg('e28')) unless $self->isregistered || $to eq $main::myalias; + + $loc->{to} = [ $to, @extra ]; # to is an array + $loc->{subject} = $oref->subject; + $loc->{subject} = "Re: " . $loc->{subject} if !($loc->{subject} =~ /^Re:\s/io); + + # find me and set the state and the function on my state variable to + # keep calling me for every line until I relinquish control + $self->func("DXMsg::do_send_stuff"); + $self->state('sendbody'); + $self->loc($loc); + push @out, $self->msg('m6', join(',', $to, @extra)); + push @out, $self->msg('m7', $loc->{subject}); + push @out, $self->msg('m8'); } return (1, @out);