summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2017-07-27 08:15:43 +1000
committerDave Airlie <airlied@redhat.com>2017-07-27 08:15:43 +1000
commit0eb2c0ae578ba00f97c7541e01abbce022d14909 (patch)
tree172db28b9232906ddac61b4bf20c4b0c60c85139 /scripts
parent542aefb5a2da8f67b8fb74a24f60ecb3ec479a06 (diff)
parent520eccdfe187591a51ea9ab4c1a024ae4d0f68d9 (diff)
Backmerge tag 'v4.13-rc2' into drm-next
Linux 4.13-rc2 This is required for drm-misc fixing.
Diffstat (limited to 'scripts')
-rw-r--r--scripts/parse-maintainers.pl77
1 files changed, 77 insertions, 0 deletions
diff --git a/scripts/parse-maintainers.pl b/scripts/parse-maintainers.pl
new file mode 100644
index 000000000000..a0fe34349b24
--- /dev/null
+++ b/scripts/parse-maintainers.pl
@@ -0,0 +1,77 @@
+#!/usr/bin/perl -w
+
+use strict;
+
+my %map;
+
+# sort comparison function
+sub by_category($$) {
+ my ($a, $b) = @_;
+
+ $a = uc $a;
+ $b = uc $b;
+
+ # This always sorts last
+ $a =~ s/THE REST/ZZZZZZ/g;
+ $b =~ s/THE REST/ZZZZZZ/g;
+
+ $a cmp $b;
+}
+
+sub alpha_output {
+ my $key;
+ my $sort_method = \&by_category;
+ my $sep = "";
+
+ foreach $key (sort $sort_method keys %map) {
+ if ($key ne " ") {
+ print $sep . $key . "\n";
+ $sep = "\n";
+ }
+ print $map{$key};
+ }
+}
+
+sub trim {
+ my $s = shift;
+ $s =~ s/\s+$//;
+ $s =~ s/^\s+//;
+ return $s;
+}
+
+sub file_input {
+ my $lastline = "";
+ my $case = " ";
+ $map{$case} = "";
+
+ while (<>) {
+ my $line = $_;
+
+ # Pattern line?
+ if ($line =~ m/^([A-Z]):\s*(.*)/) {
+ $line = $1 . ":\t" . trim($2) . "\n";
+ if ($lastline eq "") {
+ $map{$case} = $map{$case} . $line;
+ next;
+ }
+ $case = trim($lastline);
+ exists $map{$case} and die "Header '$case' already exists";
+ $map{$case} = $line;
+ $lastline = "";
+ next;
+ }
+
+ if ($case eq " ") {
+ $map{$case} = $map{$case} . $lastline;
+ $lastline = $line;
+ next;
+ }
+ trim($lastline) eq "" or die ("Odd non-pattern line '$lastline' for '$case'");
+ $lastline = $line;
+ }
+ $map{$case} = $map{$case} . $lastline;
+}
+
+&file_input;
+&alpha_output;
+exit(0);