Commit f82a8a74 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab Committed by Greg Kroah-Hartman

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: default avatarJonathan Corbet <corbet@lwn.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Link: https://lore.kernel.org/r/eb458bb30be0e5a89192d6057b2e8a7e910dbcb8.1604042072.git.mchehab+huawei@kernel.orgSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 61439c4a
...@@ -147,17 +147,19 @@ sub parse_abi { ...@@ -147,17 +147,19 @@ sub parse_abi {
parse_error($file, $ln, "'What:' should come first:", $_); parse_error($file, $ln, "'What:' should come first:", $_);
next; next;
} }
if ($tag eq "description") { if ($new_tag eq "description") {
# Preserve initial spaces for the first line $sep =~ s,:, ,;
$content = ' ' x length($new_tag) . $sep . $content; $content = ' ' x length($new_tag) . $sep . $content;
$content =~ s,^(\s*):,$1 ,; while ($content =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e) {}
if ($content =~ m/^(\s*)(.*)$/) { if ($content =~ m/^(\s*)(\S.*)$/) {
# Preserve initial spaces for the first line
$space = $1; $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 { } else {
$data{$what}->{$tag} = $content; $data{$what}->{$tag} = $content;
} }
...@@ -174,28 +176,22 @@ sub parse_abi { ...@@ -174,28 +176,22 @@ sub parse_abi {
if ($tag eq "description") { if ($tag eq "description") {
my $content = $_; my $content = $_;
while ($content =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e) {} 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 # Preserve initial spaces for the first line
if ($content =~ m/^(\s*)(.*)$/) { if ($content =~ m/^(\s*)(\S.*)$/) {
$space = $1; $space = $1;
$content = $2; $content = "$2\n";
} }
$data{$what}->{$tag} .= "$content\n" if ($content);
} else { } else {
if (m/^\s*\n/) {
$data{$what}->{$tag} .= $content;
next;
}
$space = "" if (!($content =~ s/^($space)//)); $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; next;
} }
if (m/^\s*(.*)/) { if (m/^\s*(.*)/) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment