#$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->registered || $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);