X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fkill.pl;h=8c8e275cbdb6c19bd801c0b1b02e4de0720bea6f;hb=refs%2Fheads%2Fip_address;hp=c2062ba4bd69e0327ad98fac206f5e1b66f75279;hpb=3eb722692c2c1e9de84752391d5b6330e062c7e6;p=spider.git diff --git a/cmd/kill.pl b/cmd/kill.pl index c2062ba4..8c8e275c 100644 --- a/cmd/kill.pl +++ b/cmd/kill.pl @@ -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) { @@ -40,7 +44,7 @@ while (@f) { my $from = $1; my $to = $2; @refs = grep { !($self->priv < 5 && $_->to ne $call && $_->from ne $call) } DXMsg::get_all() unless @refs; - @refs = grep { $_->msgno >= $from && $_->msgno < $to } @refs; + @refs = grep { $_->msgno >= $from && $_->msgno <= $to } @refs; } elsif ($f =~ /^fr/io) { $f = shift @f; if ($f) { @@ -62,12 +66,18 @@ while (@f) { } foreach $ref ( @refs) { + if ($ref->keep) { + push @out, $self->msg('m18', $ref->msgno); + next; + } + my $tonode = $ref->tonode; + $ref->stop_msg($tonode) if $tonode; + $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) { - DXProt::broadcast_ak1a(DXProt::pc49($ref->{from}, $ref->{subject}), $DXProt::me); + DXChannel::broadcast_nodes(DXProt::pc49($ref->{from}, $ref->{subject}), $main::me); } - $ref->del_msg; - push @out, $self->msg('m12', $ref->msgno); } return (1, @out);