This is an automated email from the git hooks/post-receive script. nthykier pushed a commit to branch master in repository lintian.
commit 2a1f71d9be550d6815cd68b5a625b17246eebb17 Author: Niels Thykier <[email protected]> Date: Sat Oct 22 10:13:45 2016 +0000 L::Path: Support recursive-mode for children method Signed-off-by: Niels Thykier <[email protected]> --- lib/Lintian/Path.pm | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/lib/Lintian/Path.pm b/lib/Lintian/Path.pm index c5da68c..657a82b 100644 --- a/lib/Lintian/Path.pm +++ b/lib/Lintian/Path.pm @@ -293,18 +293,49 @@ sub operm { return $self->{'_path_info'} & OPERM_MASK; } -=item children +=item children([RECURSIVE_MODE]) Returns a list of children (as Lintian::Path objects) of this entry. The list and its contents should not be modified. +The optional RECURSIVE_MODE parameter can be used to control if and +how descendants of this directory is selected. The following values +are supported: + +=over 4 + +=item direct + +This is the default and only returns direct children of this +directory. The entries are sorted by name. + +=item breadth-first + +Recursive into subdirectories and return the descendants in +breadth-first order. Children of a given directory will be sorted by +name. + +=back + NB: Returns the empty list for non-dir entries. =cut sub children { - my ($self) = @_; - return @{$self->{'_sorted_children'} }; + my ($self, $recursive) = @_; + return @{$self->{'_sorted_children'} } + if not defined($recursive) + or $recursive eq 'direct'; + croak("Unsupported recursive mode ${recursive}") + if $recursive ne 'breadth-first'; + my @all = @{$self->{'_sorted_children'} }; + my @remaining_dirs = grep { $_->is_dir } @all; + while (my $dir = shift(@remaining_dirs)) { + my @children = $dir->children; + push(@all, @children); + push(@remaining_dirs, grep { $_->is_dir } @children); + } + return @all; } =item timestamp -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/lintian/lintian.git

