diff options
Diffstat (limited to 'scripts/kernel-doc')
| -rwxr-xr-x | scripts/kernel-doc | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/scripts/kernel-doc b/scripts/kernel-doc index e5bf649e516a..1f5835115cad 100755 --- a/scripts/kernel-doc +++ b/scripts/kernel-doc | |||
| @@ -154,6 +154,7 @@ use strict; | |||
| 154 | 154 | ||
| 155 | my $errors = 0; | 155 | my $errors = 0; |
| 156 | my $warnings = 0; | 156 | my $warnings = 0; |
| 157 | my $anon_struct_union = 0; | ||
| 157 | 158 | ||
| 158 | # match expressions used to find embedded type information | 159 | # match expressions used to find embedded type information |
| 159 | my $type_constant = '\%([-_\w]+)'; | 160 | my $type_constant = '\%([-_\w]+)'; |
| @@ -403,7 +404,11 @@ sub output_highlight { | |||
| 403 | print $lineprefix, $blankline; | 404 | print $lineprefix, $blankline; |
| 404 | } else { | 405 | } else { |
| 405 | $line =~ s/\\\\\\/\&/g; | 406 | $line =~ s/\\\\\\/\&/g; |
| 406 | print $lineprefix, $line; | 407 | if ($output_mode eq "man" && substr($line, 0, 1) eq ".") { |
| 408 | print "\\&$line"; | ||
| 409 | } else { | ||
| 410 | print $lineprefix, $line; | ||
| 411 | } | ||
| 407 | } | 412 | } |
| 408 | print "\n"; | 413 | print "\n"; |
| 409 | } | 414 | } |
| @@ -718,6 +723,7 @@ sub output_struct_xml(%) { | |||
| 718 | # pointer-to-function | 723 | # pointer-to-function |
| 719 | print " $1 $parameter) ($2);\n"; | 724 | print " $1 $parameter) ($2);\n"; |
| 720 | } elsif ($type =~ m/^(.*?)\s*(:.*)/) { | 725 | } elsif ($type =~ m/^(.*?)\s*(:.*)/) { |
| 726 | # bitfield | ||
| 721 | print " $1 $parameter$2;\n"; | 727 | print " $1 $parameter$2;\n"; |
| 722 | } else { | 728 | } else { |
| 723 | print " ".$type." ".$parameter.";\n"; | 729 | print " ".$type." ".$parameter.";\n"; |
| @@ -1260,6 +1266,7 @@ sub output_struct_text(%) { | |||
| 1260 | # pointer-to-function | 1266 | # pointer-to-function |
| 1261 | print "\t$1 $parameter) ($2);\n"; | 1267 | print "\t$1 $parameter) ($2);\n"; |
| 1262 | } elsif ($type =~ m/^(.*?)\s*(:.*)/) { | 1268 | } elsif ($type =~ m/^(.*?)\s*(:.*)/) { |
| 1269 | # bitfield | ||
| 1263 | print "\t$1 $parameter$2;\n"; | 1270 | print "\t$1 $parameter$2;\n"; |
| 1264 | } else { | 1271 | } else { |
| 1265 | print "\t".$type." ".$parameter.";\n"; | 1272 | print "\t".$type." ".$parameter.";\n"; |
| @@ -1510,8 +1517,13 @@ sub push_parameter($$$) { | |||
| 1510 | my $param = shift; | 1517 | my $param = shift; |
| 1511 | my $type = shift; | 1518 | my $type = shift; |
| 1512 | my $file = shift; | 1519 | my $file = shift; |
| 1513 | my $anon = 0; | ||
| 1514 | 1520 | ||
| 1521 | if (($anon_struct_union == 1) && ($type eq "") && | ||
| 1522 | ($param eq "}")) { | ||
| 1523 | return; # ignore the ending }; from anon. struct/union | ||
| 1524 | } | ||
| 1525 | |||
| 1526 | $anon_struct_union = 0; | ||
| 1515 | my $param_name = $param; | 1527 | my $param_name = $param; |
| 1516 | $param_name =~ s/\[.*//; | 1528 | $param_name =~ s/\[.*//; |
| 1517 | 1529 | ||
| @@ -1530,16 +1542,16 @@ sub push_parameter($$$) { | |||
| 1530 | # handle unnamed (anonymous) union or struct: | 1542 | # handle unnamed (anonymous) union or struct: |
| 1531 | { | 1543 | { |
| 1532 | $type = $param; | 1544 | $type = $param; |
| 1533 | $param = "{unnamed_" . $param. "}"; | 1545 | $param = "{unnamed_" . $param . "}"; |
| 1534 | $parameterdescs{$param} = "anonymous\n"; | 1546 | $parameterdescs{$param} = "anonymous\n"; |
| 1535 | $anon = 1; | 1547 | $anon_struct_union = 1; |
| 1536 | } | 1548 | } |
| 1537 | 1549 | ||
| 1538 | # warn if parameter has no description | 1550 | # warn if parameter has no description |
| 1539 | # (but ignore ones starting with # as these are not parameters | 1551 | # (but ignore ones starting with # as these are not parameters |
| 1540 | # but inline preprocessor statements); | 1552 | # but inline preprocessor statements); |
| 1541 | # also ignore unnamed structs/unions; | 1553 | # also ignore unnamed structs/unions; |
| 1542 | if (!$anon) { | 1554 | if (!$anon_struct_union) { |
| 1543 | if (!defined $parameterdescs{$param_name} && $param_name !~ /^#/) { | 1555 | if (!defined $parameterdescs{$param_name} && $param_name !~ /^#/) { |
| 1544 | 1556 | ||
| 1545 | $parameterdescs{$param_name} = $undescribed; | 1557 | $parameterdescs{$param_name} = $undescribed; |
| @@ -1691,6 +1703,8 @@ sub process_state3_function($$) { | |||
| 1691 | my $x = shift; | 1703 | my $x = shift; |
| 1692 | my $file = shift; | 1704 | my $file = shift; |
| 1693 | 1705 | ||
| 1706 | $x =~ s@\/\/.*$@@gos; # strip C99-style comments to end of line | ||
| 1707 | |||
| 1694 | if ($x =~ m#\s*/\*\s+MACDOC\s*#io || ($x =~ /^#/ && $x !~ /^#define/)) { | 1708 | if ($x =~ m#\s*/\*\s+MACDOC\s*#io || ($x =~ /^#/ && $x !~ /^#define/)) { |
| 1695 | # do nothing | 1709 | # do nothing |
| 1696 | } | 1710 | } |
| @@ -1713,6 +1727,8 @@ sub process_state3_type($$) { | |||
| 1713 | $x =~ s@[\r\n]+@ @gos; # strip newlines/cr's. | 1727 | $x =~ s@[\r\n]+@ @gos; # strip newlines/cr's. |
| 1714 | $x =~ s@^\s+@@gos; # strip leading spaces | 1728 | $x =~ s@^\s+@@gos; # strip leading spaces |
| 1715 | $x =~ s@\s+$@@gos; # strip trailing spaces | 1729 | $x =~ s@\s+$@@gos; # strip trailing spaces |
| 1730 | $x =~ s@\/\/.*$@@gos; # strip C99-style comments to end of line | ||
| 1731 | |||
| 1716 | if ($x =~ /^#/) { | 1732 | if ($x =~ /^#/) { |
| 1717 | # To distinguish preprocessor directive from regular declaration later. | 1733 | # To distinguish preprocessor directive from regular declaration later. |
| 1718 | $x .= ";"; | 1734 | $x .= ";"; |
| @@ -1796,7 +1812,7 @@ sub process_file($) { | |||
| 1796 | 1812 | ||
| 1797 | $state = 2; | 1813 | $state = 2; |
| 1798 | if (/-(.*)/) { | 1814 | if (/-(.*)/) { |
| 1799 | # strip leading/trailing/multiple spaces #RDD:T: | 1815 | # strip leading/trailing/multiple spaces |
| 1800 | $descr= $1; | 1816 | $descr= $1; |
| 1801 | $descr =~ s/^\s*//; | 1817 | $descr =~ s/^\s*//; |
| 1802 | $descr =~ s/\s*$//; | 1818 | $descr =~ s/\s*$//; |
