diff options
author | Mauro Carvalho Chehab <mchehab+huawei@kernel.org> | 2020-10-30 08:40:23 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2020-10-30 13:02:25 +0100 |
commit | f82a8a74ea81df22b1641ee56cf7195cc2a1bd0b (patch) | |
tree | c749a6e5ba4e7badecea35562c6ac60821a1a958 /scripts/get_abi.pl | |
parent | scripts: get_abi.pl: Allow optionally record from where a line came from (diff) | |
download | linux-f82a8a74ea81df22b1641ee56cf7195cc2a1bd0b.tar.xz linux-f82a8a74ea81df22b1641ee56cf7195cc2a1bd0b.zip |
scripts: get_abi.pl: improve its parser to better catch up indentation
The original parser for indentation were relying on having
just one description for each "what". However, that's not
the case: there are a number of ABI symbols that got defined
multiple times.
Improve the parser for it to better handle descriptions
if entries are duplicated.
Acked-by: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Link: https://lore.kernel.org/r/eb458bb30be0e5a89192d6057b2e8a7e910dbcb8.1604042072.git.mchehab+huawei@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'scripts/get_abi.pl')
-rwxr-xr-x | scripts/get_abi.pl | 42 |
1 files changed, 19 insertions, 23 deletions
diff --git a/scripts/get_abi.pl b/scripts/get_abi.pl index 6a4d387ebf3b..bd018eb3815b 100755 --- a/scripts/get_abi.pl +++ b/scripts/get_abi.pl @@ -147,17 +147,19 @@ sub parse_abi { parse_error($file, $ln, "'What:' should come first:", $_); next; } - if ($tag eq "description") { - # Preserve initial spaces for the first line + if ($new_tag eq "description") { + $sep =~ s,:, ,; $content = ' ' x length($new_tag) . $sep . $content; - $content =~ s,^(\s*):,$1 ,; - if ($content =~ m/^(\s*)(.*)$/) { + while ($content =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e) {} + if ($content =~ m/^(\s*)(\S.*)$/) { + # Preserve initial spaces for the first line $space = $1; - $content = $2; + $content = "$2\n"; + $data{$what}->{$tag} .= $content; + } else { + undef($space); } - while ($space =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e) {} - $data{$what}->{$tag} .= "$content\n" if ($content); } else { $data{$what}->{$tag} = $content; } @@ -174,28 +176,22 @@ sub parse_abi { if ($tag eq "description") { my $content = $_; while ($content =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e) {} - if (!$data{$what}->{description}) { + if (m/^\s*\n/) { + $data{$what}->{$tag} .= "\n"; + next; + } + + if (!defined($space)) { # Preserve initial spaces for the first line - if ($content =~ m/^(\s*)(.*)$/) { + if ($content =~ m/^(\s*)(\S.*)$/) { $space = $1; - $content = $2; + $content = "$2\n"; } - - $data{$what}->{$tag} .= "$content\n" if ($content); } else { - if (m/^\s*\n/) { - $data{$what}->{$tag} .= $content; - next; - } - $space = "" if (!($content =~ s/^($space)//)); - -# # Compress spaces with tabs -# $content =~ s<^ {8}> <\t>; -# $content =~ s<^ {1,7}\t> <\t>; -# $content =~ s< {1,7}\t> <\t>; - $data{$what}->{$tag} .= $content; } + $data{$what}->{$tag} .= $content; + next; } if (m/^\s*(.*)/) { |