From 02414e8982498cde0951bbf99f005e46e46b7082 Mon Sep 17 00:00:00 2001 From: "peter@adpm.de" Date: Sat, 5 Mar 2011 21:13:27 +0000 Subject: [PATCH] run_list: new argument syntax: [] [] [] From 232fbd24ff43c9c0d0691cf0e1b51a82ef099489 Mon Sep 17 00:00:00 2001 Make run_list work with a properly defined argument syntax: - start with (optional) options: -R -l - continue with filter ['(objectclass=*)' as fallback if none given] - end with attributes (also optional) Add method is_valid_filter() to check whether a strig is a legal LDAP filter. FossilOrigin-Name: ec19e834a29e23820ee6088da8ff4d80edb14eb3668050edcbb9c32f8ed5297c --- shelldap | 134 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 83 insertions(+), 51 deletions(-) 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: [