#
# send a message
#
+# this should handle
+#
+# send <call> [<call> .. ]
+# send private <call> [<call> .. ]
+# send private rr <call> [<call> .. ]
+# send rr <call> [<call> .. ]
+# send noprivate <call> [<call> .. ]
+# send b <call> [<call> .. ]
+# send copy <call> [<call> .. ]
+# send copy rr <call> [<call> .. ]
+#
# Copyright (c) Dirk Koopman G1TLH
#
# $Id$
#
+my ($self, $line) = @_;
+my @out;
+my $loc;
+
+#$DB::single = 1;
+
+if ($self->state eq "prompt") {
+
+ my @f = split /\s+/, $line;
+
+ # any thing after send?
+ return (1, $self->msg('e6')) if !@f;
+
+ $f[0] = uc $f[0];
+
+ # first deal with copies
+ if ($f[0] eq 'C' || $f[0] eq 'CC' || $f[0] eq 'COPY') {
+ my $i = 1;
+ my $rr = '0';
+ if (uc $f[$i] eq 'RR') {
+ $rr = '1';
+ $i++;
+ }
+ my $oref = DXMsg::get($f[$i]);
+ #return (0, $self->msg('esend1', $f[$i])) if !$oref;
+ #return (0, $self->msg('esend2')) if $i+1 > @f;
+ return (0, "msgno $f[$i] not found") if !$oref;
+ return (0, "need a callsign") if $i+1 > @f;
+
+ # separate copy to everyone listed
+ for ($i++ ; $i < @f; $i++) {
+ my $msgno = DXMsg::next_transno('Msgno');
+ my $newsubj = "CC: " . $oref->subject;
+ my $nref = DXMsg->alloc($msgno,
+ uc $f[$i],
+ $self->call,
+ $main::systime,
+ '1',
+ $newsubj,
+ $main::mycall,
+ '0',
+ $rr);
+ my @list;
+ my $from = $oref->from;
+ my $to = $oref->to;
+ my $date = cldate($oref->t);
+ my $time = ztime($oref->t);
+ my $buf = "Original from: $from To: $to Date: $date $time";
+ push @list, $buf;
+ push @list, $oref->read_msg_body();
+ $nref->store(\@list);
+ $nref->add_dir();
+ #push @out, $self->msg('sendcc', $oref->msgno, $f[$i]);
+ push @out, "copy of msg $oref->{msgno} sent to $to";
+ }
+ DXMsg::queue_msg();
+ return (1, @out);
+ }
+
+ # 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++;
+ }
+
+ # check we have some callsigns
+ if ($i >= @f) {
+ delete $self->{loc};
+ return (1, $self->msg('e6'));
+ }
+
+ # now save all the 'to' callsigns for later
+ my @to = map {uc $_} @f[ $i..$#f ];
+ $loc->{to} = \@to;
+
+ # 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('send1');
+ #push @out, $self->msg('sendsubj');
+ push @out, "Enter Subject (30 characters) >";
+}
+
+return (1, @out);