checkpatch: Handle continuation headers
Continuation headers baffle checkpatch, as it can only operate on one line of context at a time. When continuation headers are found, put them up with the header they're continuing so the whole thing can be parsed in a single line of context. Change-Id: I2d22ed056f8203ae6dae473b01ae66bc1963ae75 Signed-off-by: Gregory Bean <gbean@codeaurora.org> Signed-off-by: Rishabh Bhatnagar <rishabhb@codeaurora.org> Signed-off-by: Raghavendra Rao Ananta <rananta@codeaurora.org>
This commit is contained in:
parent
ba1e88bf38
commit
fc9744098c
@ -2243,6 +2243,33 @@ sub tabify {
|
||||
return "$leading";
|
||||
}
|
||||
|
||||
sub cleanup_continuation_headers {
|
||||
# Collapse any header-continuation lines into a single line so they
|
||||
# can be parsed meaningfully, as the parser only has one line
|
||||
# of context to work with.
|
||||
my $again;
|
||||
do {
|
||||
$again = 0;
|
||||
foreach my $n (0 .. scalar(@rawlines) - 2) {
|
||||
if ($rawlines[$n]=~/^\s*$/) {
|
||||
# A blank line means there's no more chance
|
||||
# of finding headers. Shortcut to done.
|
||||
return;
|
||||
}
|
||||
if ($rawlines[$n]=~/^[\x21-\x39\x3b-\x7e]+:/ &&
|
||||
$rawlines[$n+1]=~/^\s+/) {
|
||||
# Continuation header. Collapse it.
|
||||
my $line = splice @rawlines, $n+1, 1;
|
||||
$line=~s/^\s+/ /;
|
||||
$rawlines[$n] .= $line;
|
||||
# We've 'destabilized' the list, so restart.
|
||||
$again = 1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
} while ($again);
|
||||
}
|
||||
|
||||
sub pos_last_openparen {
|
||||
my ($line) = @_;
|
||||
|
||||
@ -2349,7 +2376,9 @@ sub process {
|
||||
my $checklicenseline = 1;
|
||||
|
||||
sanitise_line_reset();
|
||||
cleanup_continuation_headers();
|
||||
my $line;
|
||||
|
||||
foreach my $rawline (@rawlines) {
|
||||
$linenr++;
|
||||
$line = $rawline;
|
||||
|
Loading…
Reference in New Issue
Block a user