+$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;
+ }
+}
+