# HG changeset patch # User Mahlon E. Smith # Date 1297994455 28800 # Node ID 38aaae38427aa1b7cbae363e1c6091473df580dd # Parent 44ab209b2a3b6e2ecc46d247967de1564429311d Improve performance for cd/ls for containers with a large number of entries. Patch from Yann Cezard . diff -r 44ab209b2a3b -r 38aaae38427a shelldap --- a/shelldap Thu Feb 17 13:17:19 2011 -0800 +++ b/shelldap Thu Feb 17 18:00:55 2011 -0800 @@ -996,7 +996,7 @@ $self->base( $newbase ); # get new 'cwd' listing - my $s = $self->search({ scope => 'one' }); + my $s = $self->search({ scope => 'one', attrs => ['dn'] }); if ( $s->{'code'} ) { print "$s->{'message'}\n"; return; @@ -1398,6 +1398,7 @@ my $self = shift; my @filters = @_; my $base = $self->base(); + my $attrs = [ 'dn', 'hasSubordinates' ]; # setup filters my ( $flags, $filter ); @@ -1415,13 +1416,16 @@ if ( $flags ) { $recurse = $flags =~ /R/; $long = $flags =~ /l/; + if ($long) { + $attrs = [ '*', 'hasSubordinates' ]; + } } my $s = $self->search({ scope => $recurse ? 'sub' : 'one', vals => 1, filter => $filter, - attrs => [ '*', 'hasSubordinates' ] + attrs => $attrs }); if ( $s->{'code'} ) { print "$s->{'message'}\n";