lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 02 Aug 2017 01:04:02 -0700
From:   Joe Perches <joe@...ches.com>
To:     Andrew Morton <akpm@...ux-foundation.org>,
        Linus Torvalds <torvalds@...ux-foundation.org>
Cc:     linux-kernel@...r.kernel.org
Subject: Re: [PATCH V2] get_maintainer: Prepare for separate MAINTAINERS
 files

On Sun, 2017-07-23 at 13:32 -0700, Joe Perches wrote:
> Allow for MAINTAINERS to become a directory and if it is,
> read all the files in the directory for maintained sections.

ping?

> Also look for all files named MAINTAINERS in all subdirectories
> excluding the .git directory.
> 
> This adds ~.3 seconds of CPU on an Intel i5-6200 with an SSD.
> 
> Miscellanea:
> 
> o Create a read_maintainer_file subroutine from the existing code
> o Test only the existence of MAINTAINERS, not whether it's a file
> 
> Signed-off-by: Joe Perches <joe@...ches.com>
> ---
> 
> v2: Search for MAINTAINERS in subdirectories, ignoring .git
> 
>  scripts/get_maintainer.pl | 84 +++++++++++++++++++++++++++++++++--------------
>  1 file changed, 59 insertions(+), 25 deletions(-)
> 
> diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
> index 3bd5f4f30235..56d5d3ef4c81 100755
> --- a/scripts/get_maintainer.pl
> +++ b/scripts/get_maintainer.pl
> @@ -18,6 +18,7 @@ my $V = '0.26';
>  
>  use Getopt::Long qw(:config no_auto_abbrev);
>  use Cwd;
> +use File::Find;
>  
>  my $cur_path = fastgetcwd() . '/';
>  my $lk_path = "./";
> @@ -307,36 +308,69 @@ if (!top_of_kernel_tree($lk_path)) {
>  
>  my @typevalue = ();
>  my %keyword_hash;
> +my @mfiles = ();
>  
> -open (my $maint, '<', "${lk_path}MAINTAINERS")
> -    or die "$P: Can't open MAINTAINERS: $!\n";
> -while (<$maint>) {
> -    my $line = $_;
> -
> -    if ($line =~ m/^([A-Z]):\s*(.*)/) {
> -	my $type = $1;
> -	my $value = $2;
> -
> -	##Filename pattern matching
> -	if ($type eq "F" || $type eq "X") {
> -	    $value =~ s@\.@\\\.@g;       ##Convert . to \.
> -	    $value =~ s/\*/\.\*/g;       ##Convert * to .*
> -	    $value =~ s/\?/\./g;         ##Convert ? to .
> -	    ##if pattern is a directory and it lacks a trailing slash, add one
> -	    if ((-d $value)) {
> -		$value =~ s@([^/])$@$1/@;
> +sub read_maintainer_file {
> +    my ($file) = @_;
> +
> +    open (my $maint, '<', "$file")
> +	or die "$P: Can't open MAINTAINERS file '$file': $!\n";
> +    while (<$maint>) {
> +	my $line = $_;
> +
> +	if ($line =~ m/^([A-Z]):\s*(.*)/) {
> +	    my $type = $1;
> +	    my $value = $2;
> +
> +	    ##Filename pattern matching
> +	    if ($type eq "F" || $type eq "X") {
> +		$value =~ s@\.@\\\.@g;       ##Convert . to \.
> +		$value =~ s/\*/\.\*/g;       ##Convert * to .*
> +		$value =~ s/\?/\./g;         ##Convert ? to .
> +		##if pattern is a directory and it lacks a trailing slash, add one
> +		if ((-d $value)) {
> +		    $value =~ s@([^/])$@$1/@;
> +		}
> +	    } elsif ($type eq "K") {
> +		$keyword_hash{@...evalue} = $value;
>  	    }
> -	} elsif ($type eq "K") {
> -	    $keyword_hash{@...evalue} = $value;
> +	    push(@typevalue, "$type:$value");
> +	} elsif (!(/^\s*$/ || /^\s*\#/)) {
> +	    $line =~ s/\n$//g;
> +	    push(@typevalue, $line);
>  	}
> -	push(@typevalue, "$type:$value");
> -    } elsif (!/^(\s)*$/) {
> -	$line =~ s/\n$//g;
> -	push(@typevalue, $line);
> +    }
> +    close($maint);
> +}
> +
> +sub find_is_maintainer_file {
> +    my $file = $File::Find::name;
> +    if (-f $file && $file =~ m@...INTAINERS$@) {
> +	push(@mfiles, $file);
> +    }
> +}
> +
> +sub find_ignore_git {
> +    return grep { $_ !~ /^\.git$/; } @_;
> +}
> +
> +if (-d "${lk_path}MAINTAINERS") {
> +    opendir(DIR, "${lk_path}MAINTAINERS") or die $!;
> +    my @files = readdir(DIR);
> +    closedir(DIR);
> +    foreach my $file (@files) {
> +	push(@mfiles, "${lk_path}MAINTAINERS/$file") if ($file !~ /^\./);
>      }
>  }
> -close($maint);
>  
> +find( { wanted => \&find_is_maintainer_file,
> +	preprocess => \&find_ignore_git,
> +	no_chdir => 1,
> +      }, "${lk_path}");
> +
> +foreach my $file (@mfiles) {
> +    read_maintainer_file("$file");
> +}
>  
>  #
>  # Read mail address map
> @@ -873,7 +907,7 @@ sub top_of_kernel_tree {
>      if (   (-f "${lk_path}COPYING")
>  	&& (-f "${lk_path}CREDITS")
>  	&& (-f "${lk_path}Kbuild")
> -	&& (-f "${lk_path}MAINTAINERS")
> +	&& (-e "${lk_path}MAINTAINERS")
>  	&& (-f "${lk_path}Makefile")
>  	&& (-f "${lk_path}README")
>  	&& (-d "${lk_path}Documentation")

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ