fix console.pl max scroll depth
[spider.git] / cmd / kill.pl
index ab7bb511a9082f4902f10a1d0bc90a918504af18..8c8e275cbdb6c19bd801c0b1b02e4de0720bea6f 100644 (file)
@@ -1,9 +1,9 @@
 #
 # kill or delete a message
 #
-# Copyright (c) Dirk Koopman G1TLH
+# Copyright (c) 1998 Dirk Koopman G1TLH
+#
 #
-# $Id$
 #
 
 use strict;
@@ -17,6 +17,7 @@ my $ref;
 my @refs;
 my $call = $self->call;
 my $full;
+my $expunge;
 
 # $DB::single = 1;
 
@@ -25,6 +26,9 @@ while (@f) {
        if ($f =~ /^fu/io) {
                return (1, $self->msg('e5')) if $self->priv < 5;
                $full = 1;
+       } elsif ($f =~ /^ex/io) {
+               return (1, $self->msg('e5')) if $self->priv < 6;
+               $expunge = 1;
        } elsif ($f =~ /^\d+$/o) {
                $ref = DXMsg::get($f);
                if (!$ref) {
@@ -62,14 +66,18 @@ while (@f) {
 }
 
 foreach $ref ( @refs) {
-       Log('msg', "Message $ref->{msgno} from $ref->{from} to $ref->{to} deleted by $call");
-       if ($full) {
-               DXProt::broadcast_ak1a(DXProt::pc49($ref->{from}, $ref->{subject}), $DXProt::me);
+       if ($ref->keep) {
+               push @out, $self->msg('m18', $ref->msgno);
+               next;
        }
        my $tonode = $ref->tonode;
        $ref->stop_msg($tonode) if $tonode;
-       $ref->del_msg;
+       $ref->mark_delete($expunge ? 0 : undef);
        push @out, $self->msg('m12', $ref->msgno);
+       Log('msg', "Message $ref->{msgno} from $ref->{from} to $ref->{to} deleted by $call");
+       if ($full) {
+               DXChannel::broadcast_nodes(DXProt::pc49($ref->{from}, $ref->{subject}), $main::me);
+       }
 }
 
 return (1, @out);