Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7683e9e5 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Properly alphabetize MAINTAINERS file



This adds a perl script to actually parse the MAINTAINERS file, clean up
some whitespace in it, warn about errors in it, and then properly sort
the end result.

My perl-fu is atrocious, so the script has basically been created by
randomly putting various characters in a pile, mixing them around, and
then looking it the end result does anything interesting when used as a
perl script.

Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent f47e07bc
Loading
Loading
Loading
Loading
+1791 −1794

File changed.

Preview size limit exceeded, changes collapsed.

+77 −0
Original line number Diff line number Diff line
#!/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);