diff options
author | Joe Perches <joe@perches.com> | 2017-08-05 18:45:48 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-08-08 11:16:14 -0700 |
commit | fe9090301fed202a80a6113534efaa0d9184543b (patch) | |
tree | a4a89d1f652b626fade689d6e7fbb925660a74f4 /scripts/parse-maintainers.pl | |
parent | 61f741645a354d91fece7b9cbb2f3f3587db8b8a (diff) | |
download | lwn-fe9090301fed202a80a6113534efaa0d9184543b.tar.gz lwn-fe9090301fed202a80a6113534efaa0d9184543b.zip |
parse-maintainers: Use perl hash references and specific filenames
Instead of reading STDIN and writing STDOUT, use specific filenames of
MAINTAINERS and MAINTAINERS.new.
Use hash references instead of global hash %hash so future modifications
can read and write specific hashes to split up MAINTAINERS into multiple
files using a script.
Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'scripts/parse-maintainers.pl')
-rw-r--r-- | scripts/parse-maintainers.pl | 57 |
1 files changed, 34 insertions, 23 deletions
diff --git a/scripts/parse-maintainers.pl b/scripts/parse-maintainers.pl index 5c8e0504c67e..c286154a2b68 100644 --- a/scripts/parse-maintainers.pl +++ b/scripts/parse-maintainers.pl @@ -2,7 +2,7 @@ use strict; -my %hash; +my $P = $0; # sort comparison functions sub by_category($$) { @@ -45,61 +45,72 @@ sub by_pattern($$) { } } +sub trim { + my $s = shift; + $s =~ s/\s+$//; + $s =~ s/^\s+//; + return $s; +} + sub alpha_output { - foreach my $key (sort by_category keys %hash) { + my ($hashref, $filename) = (@_); + + open(my $file, '>', "$filename") or die "$P: $filename: open failed - $!\n"; + foreach my $key (sort by_category keys %$hashref) { if ($key eq " ") { - chomp $hash{$key}; - print $hash{$key}; + chomp $$hashref{$key}; + print $file $$hashref{$key}; } else { - print "\n" . $key . "\n"; - foreach my $pattern (sort by_pattern split('\n', $hash{$key})) { - print($pattern . "\n"); + print $file "\n" . $key . "\n"; + foreach my $pattern (sort by_pattern split('\n', %$hashref{$key})) { + print $file ($pattern . "\n"); } } } -} - -sub trim { - my $s = shift; - $s =~ s/\s+$//; - $s =~ s/^\s+//; - return $s; + close($file); } sub file_input { + my ($hashref, $filename) = (@_); + my $lastline = ""; my $case = " "; - $hash{$case} = ""; + $$hashref{$case} = ""; + + open(my $file, '<', "$filename") or die "$P: $filename: open failed - $!\n"; - while (<>) { + while (<$file>) { my $line = $_; # Pattern line? if ($line =~ m/^([A-Z]):\s*(.*)/) { $line = $1 . ":\t" . trim($2) . "\n"; if ($lastline eq "") { - $hash{$case} = $hash{$case} . $line; + $$hashref{$case} = $$hashref{$case} . $line; next; } $case = trim($lastline); - exists $hash{$case} and die "Header '$case' already exists"; - $hash{$case} = $line; + exists $$hashref{$case} and die "Header '$case' already exists"; + $$hashref{$case} = $line; $lastline = ""; next; } if ($case eq " ") { - $hash{$case} = $hash{$case} . $lastline; + $$hashref{$case} = $$hashref{$case} . $lastline; $lastline = $line; next; } trim($lastline) eq "" or die ("Odd non-pattern line '$lastline' for '$case'"); $lastline = $line; } - $hash{$case} = $hash{$case} . $lastline; + $$hashref{$case} = $$hashref{$case} . $lastline; + close($file); } -file_input(); -alpha_output(); +my %hash; + +file_input(\%hash, "MAINTAINERS"); +alpha_output(\%hash, "MAINTAINERS.new"); exit(0); |