#
# kill or delete a message
#
-# Copyright (c) Dirk Koopman G1TLH
+# Copyright (c) 1998 Dirk Koopman G1TLH
+#
#
-# $Id$
#
use strict;
my @refs;
my $call = $self->call;
my $full;
+my $expunge;
# $DB::single = 1;
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) {
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) {
}
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);