limited the length of announces that are views for deduping
[spider.git] / cmd / send.pl
index 9717c3afa3e4b578cc8bbde8858f17cb28edf812..1ff843859e3d5b17cf800dc0c037dadc6d1fb5b1 100644 (file)
@@ -20,7 +20,7 @@ my ($self, $line) = @_;
 my @out;
 my $loc;
 
-#$DB::single = 1;
+# $DB::single = 1;
 
 if ($self->state eq "prompt") {
 
@@ -49,8 +49,9 @@ if ($self->state eq "prompt") {
                for ($i++ ; $i < @f; $i++) {
                        my $msgno = DXMsg::next_transno('Msgno');
                        my $newsubj = "CC: " . $oref->subject;
+                       my $newcall = uc $f[$i];
                        my $nref = DXMsg->alloc($msgno, 
-                                                                       uc $f[$i]
+                                                                       $newcall
                                                                        $self->call,  
                                                                        $main::systime, 
                                                                        '1',  
@@ -68,8 +69,7 @@ if ($self->state eq "prompt") {
                        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";
+                       push @out, $self->msg('m2', $oref->msgno, $newcall);
                }
                DXMsg::queue_msg();
                return (1, @out);
@@ -100,17 +100,49 @@ if ($self->state eq "prompt") {
                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;
+       # first check the 'to' addresses for 'badness'
+    my $t;
+       my @to;
+       splice @f, 0, $i-1 if $i > 0;
+       foreach  $t (@f) {
+               $t = uc $t;
+
+        # is this callsign a distro?
+               my $fn = "/spider/msg/distro/$t.pl";
+               if (-e $fn) {
+                       my $fh = new IO::File $fn;
+                       if ($fh) {
+                               local $/ = undef;
+                               my $s = <$fh>;
+                               $fh->close;
+                               my @call;
+                @call = eval $s;
+                               return (1, "Error in Distro $t.pl:", $@) if $@;
+                               if (@call > 0) {
+                                       push @f, @call;
+                                       next;
+                               }
+                       }
+               }
+               if (grep $_ eq $t, @DXMsg::badmsg) {
+                       push @out, $self->msg('m3', $t);
+               } else {
+                       push @to, $t;
+               }
+       }
+       if (@to) {
+               $loc->{to} = \@to;
+       } else {
+               return (1, @out);
+       }
 
        # 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) >";
+       push @out, $self->msg('m1');
 }
 
 return (1, @out);