diff --git a/shelldap b/shelldap index 62498e9..e80f703 100755 --- a/shelldap +++ b/shelldap @@ -775,6 +775,18 @@ sub make_filter return $filter; } + +# check whether a given string may be a filter +# Synopsis: $yesNo = $self->is_valid_filter($string); +sub is_valid_filter +{ + my $self = shift; + my $filter = shift or return; + my $filterObject = Net::LDAP::Filter->new($filter); + + return $filterObject ? 1 : 0 +} + # little. yellow. different. better. # sub debug @@ -1404,35 +1416,50 @@ sub run_help sub run_list { - my $self = shift; - my @filters = @_; - my $base = $self->base(); - my $attrs = [ 'hasSubordinates' ]; + my $self = shift; + my @args = @_; + my $base = $self->base(); + my @attrs = (); + my $flags = ''; + my $filter = '(objectclass=*)'; - # setup filters - my ( $flags, $filter ); - if ( scalar @filters ) { - # support '-l' or '-R' listings - if ( $filters[0] =~ /\-[lR]|verbose/ ) { - $flags = shift @filters; + # parse arguments: [