X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fdirectory.pl;h=ab81798585a9008158abf54982f199ec1dad8e42;hb=6a0068ec3df1dca0c6ae2714af3c0a4a62998dcf;hp=d1b91ffa4c23c956756ba2853dd0fefb59f2363d;hpb=3f145290a93b39bf15b50269dd8be585d7b4bc9c;p=spider.git diff --git a/cmd/directory.pl b/cmd/directory.pl index d1b91ffa..ab817985 100644 --- a/cmd/directory.pl +++ b/cmd/directory.pl @@ -8,15 +8,37 @@ my ($self, $line) = @_; my @f = split /\s+/, $line; -my @ref = DXMsg::get_all(); +my @ref; my $ref; my @out; +$f[0] = uc $f[0]; +if ($f[0] eq 'ALL') { + foreach $ref (DXMsg::get_all()) { + next if $self->priv < 5 && $ref->private && $ref->to ne $self->call && $ref->from ne $self->call; + push @ref, $ref; + } +} elsif ($f[0] =~ /^O/o) { # dir/own + foreach $ref (DXMsg::get_all()) { + push @ref, $ref if $ref->private && ($ref->to eq $self->call || $ref->from eq $self->call); + } +} elsif ($f[0] =~ /^N/o) { # dir/new + foreach $ref (DXMsg::get_all()) { + push @ref, $ref if $ref->private && !$ref->read && $ref->to eq $self->call; + } +} else { + my @all = (DXMsg::get_all()); + my ($i, $count); + for ($i = $#all; $i > 0; $i--) { + $ref = $all[$i]; + next if $self->priv < 5 && $ref->private && $ref->to ne $self->call && $ref->from ne $self->call; + unshift @ref, $ref; + last if ++$count > 10; + } +} + foreach $ref (@ref) { - next if $self->priv < 5 && $ref->private && $ref->to ne $self->call; - push @out, sprintf "%6d %s%s%5d %8.8s %8.8s %-6.6s %5.5s %-30.30s", - $ref->msgno, $ref->private ? 'p' : ' ', $ref->read ? '-' : ' ', $ref->size, - $ref->to, $ref->from, cldate($ref->t), ztime($ref->t), $ref->subject; + push @out, $ref->dir; } return (1, @out);