mirror of https://gitee.com/openkylin/linux.git
scripts/get_abi.pl: parse files with text at beginning
It sounds usefult o parse files with has some text at the beginning. Add support for it. Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
bbc249f2b8
commit
6619c6617a
|
@ -55,7 +55,10 @@ sub parse_abi {
|
||||||
my $what;
|
my $what;
|
||||||
my $new_what;
|
my $new_what;
|
||||||
my $tag;
|
my $tag;
|
||||||
|
my $label;
|
||||||
my $ln;
|
my $ln;
|
||||||
|
my $has_file;
|
||||||
|
my $xrefs;
|
||||||
|
|
||||||
print STDERR "Opening $file\n" if ($debug > 1);
|
print STDERR "Opening $file\n" if ($debug > 1);
|
||||||
open IN, $file;
|
open IN, $file;
|
||||||
|
@ -67,7 +70,7 @@ sub parse_abi {
|
||||||
|
|
||||||
if (!($new_tag =~ m/(what|date|kernelversion|contact|description|users)/)) {
|
if (!($new_tag =~ m/(what|date|kernelversion|contact|description|users)/)) {
|
||||||
if ($tag eq "description") {
|
if ($tag eq "description") {
|
||||||
$data{$what}->{$tag} .= "\n$content";;
|
$data{$what}->{$tag} .= "\n$content";
|
||||||
$data{$what}->{$tag} =~ s/\n+$//;
|
$data{$what}->{$tag} =~ s/\n+$//;
|
||||||
next;
|
next;
|
||||||
} else {
|
} else {
|
||||||
|
@ -83,6 +86,25 @@ sub parse_abi {
|
||||||
$new_what = 1;
|
$new_what = 1;
|
||||||
}
|
}
|
||||||
$tag = $new_tag;
|
$tag = $new_tag;
|
||||||
|
|
||||||
|
if ($has_file) {
|
||||||
|
$label = "abi_" . $content . " ";
|
||||||
|
$label =~ tr/A-Z/a-z/;
|
||||||
|
|
||||||
|
# Convert special chars to "_"
|
||||||
|
$label =~s/[\x00-\x2f]+/_/g;
|
||||||
|
$label =~s/[\x3a-\x40]+/_/g;
|
||||||
|
$label =~s/[\x7b-\xff]+/_/g;
|
||||||
|
$label =~ s,_+,_,g;
|
||||||
|
$label =~ s,_$,,;
|
||||||
|
|
||||||
|
$data{$what}->{label} .= $label;
|
||||||
|
|
||||||
|
# Escape special chars from content
|
||||||
|
$content =~s/([\x00-\x1f\x21-\x2f\x3a-\x40\x7b-\xff])/\\$1/g;
|
||||||
|
|
||||||
|
$xrefs .= "- :ref:`$content <$label>`\n\n";
|
||||||
|
}
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,8 +126,18 @@ sub parse_abi {
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Silently ignore any headers before the database
|
# Store any contents before the database
|
||||||
next if (!$tag);
|
if (!$tag) {
|
||||||
|
next if (/^\n/);
|
||||||
|
|
||||||
|
my $my_what = "File $name";
|
||||||
|
$data{$my_what}->{what} = "File $name";
|
||||||
|
$data{$my_what}->{type} = "File";
|
||||||
|
$data{$my_what}->{file} = $name;
|
||||||
|
$data{$my_what}->{description} .= $_;
|
||||||
|
$has_file = 1;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
|
||||||
if (m/^\s*(.*)/) {
|
if (m/^\s*(.*)/) {
|
||||||
$data{$what}->{$tag} .= "\n$1";
|
$data{$what}->{$tag} .= "\n$1";
|
||||||
|
@ -117,6 +149,11 @@ sub parse_abi {
|
||||||
parse_error($file, $ln, "Unexpected line:", $_);
|
parse_error($file, $ln, "Unexpected line:", $_);
|
||||||
}
|
}
|
||||||
close IN;
|
close IN;
|
||||||
|
|
||||||
|
if ($has_file) {
|
||||||
|
my $my_what = "File $name";
|
||||||
|
$data{$my_what}->{xrefs} = $xrefs;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Outputs the output on ReST format
|
# Outputs the output on ReST format
|
||||||
|
@ -128,8 +165,17 @@ sub output_rest {
|
||||||
my $w = $what;
|
my $w = $what;
|
||||||
$w =~ s/([\(\)\_\-\*\=\^\~\\])/\\$1/g;
|
$w =~ s/([\(\)\_\-\*\=\^\~\\])/\\$1/g;
|
||||||
|
|
||||||
|
if ($data{$what}->{label}) {
|
||||||
|
my @labels = split(/\s/, $data{$what}->{label});
|
||||||
|
foreach my $label (@labels) {
|
||||||
|
printf ".. _%s:\n\n", $label;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
print "$w\n\n";
|
print "$w\n\n";
|
||||||
print "- defined on file $file (type: $type)\n\n::\n\n";
|
|
||||||
|
print "- defined on file $file (type: $type)\n\n" if ($type ne "File");
|
||||||
|
print "::\n\n";
|
||||||
|
|
||||||
my $desc = $data{$what}->{description};
|
my $desc = $data{$what}->{description};
|
||||||
$desc =~ s/^\s+//;
|
$desc =~ s/^\s+//;
|
||||||
|
@ -144,8 +190,11 @@ sub output_rest {
|
||||||
if (!($desc =~ /^\s*$/)) {
|
if (!($desc =~ /^\s*$/)) {
|
||||||
print " $desc\n\n";
|
print " $desc\n\n";
|
||||||
} else {
|
} else {
|
||||||
print " DESCRIPTION MISSING\n\n";
|
print " DESCRIPTION MISSING for $what\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf "Has the following ABI:\n\n%s", $data{$what}->{xrefs} if ($data{$what}->{xrefs});
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue