summaryrefslogtreecommitdiff
path: root/scripts/get_abi.pl
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab+huawei@kernel.org>2020-10-30 08:40:23 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-10-30 13:02:25 +0100
commitf82a8a74ea81df22b1641ee56cf7195cc2a1bd0b (patch)
treec749a6e5ba4e7badecea35562c6ac60821a1a958 /scripts/get_abi.pl
parent61439c4ada9fd0e4ce73aca81a71344380a3053b (diff)
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-xscripts/get_abi.pl42
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*(.*)/) {