diff options
author | Alexey Dobriyan <adobriyan@mail.ru> | 2004-11-06 02:14:15 +0100 |
---|---|---|
committer | Sam Ravnborg <sam@mars.ravnborg.org> | 2004-11-06 02:14:15 +0100 |
commit | 0588ba6c6555164ccd0b3214685b5be4ef7597b9 (patch) | |
tree | 5c9d507be41bffdefb61e34e3ea3a944edd7cc86 /scripts | |
parent | 281a1814f056919f4c07863f1eccdd7dc6ec7a15 (diff) | |
download | history-0588ba6c6555164ccd0b3214685b5be4ef7597b9.tar.gz |
kernel-doc: Print preprocessor directives correctly.
Print preprocessor directives (usually "#ifdef CONFIG_SOMETHING" and "#endif")
in structs definitions correctly (-text, -html, sgmldocs, htmldocs, pdfdocs,
mandocs).
Correctly means:
- on the separate line
- starting from column 0
- not glued to the type of the next member
- not breeding if members are separated by comma
- not imitating pointers to functions ("#if defined(CONFIG_X)...")
- not giving bogus warnings because of this imitation
Signed-off-by: Alexey Dobriyan <adobriyan@mail.ru>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/kernel-doc | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/scripts/kernel-doc b/scripts/kernel-doc index c814321b11fb95..a2eaf382aa4850 100755 --- a/scripts/kernel-doc +++ b/scripts/kernel-doc @@ -452,6 +452,10 @@ sub output_struct_html(%) { print "<h2>".$args{'type'}." ".$args{'struct'}."</h2>\n"; print "<b>".$args{'type'}." ".$args{'struct'}."</b> {<br>\n"; foreach $parameter (@{$args{'parameterlist'}}) { + if ($parameter =~ /^#/) { + print "$parameter<br>\n"; + next; + } my $parameter_name = $parameter; $parameter_name =~ s/\[.*//; @@ -471,6 +475,8 @@ sub output_struct_html(%) { print "<h3>Members</h3>\n"; print "<dl>\n"; foreach $parameter (@{$args{'parameterlist'}}) { + ($parameter =~ /^#/) && next; + my $parameter_name = $parameter; $parameter_name =~ s/\[.*//; @@ -656,6 +662,11 @@ sub output_struct_sgml(%) { print " <programlisting>\n"; print $args{'type'}." ".$args{'struct'}." {\n"; foreach $parameter (@{$args{'parameterlist'}}) { + if ($parameter =~ /^#/) { + print "$parameter\n"; + next; + } + my $parameter_name = $parameter; $parameter_name =~ s/\[.*//; @@ -680,6 +691,8 @@ sub output_struct_sgml(%) { print " <variablelist>\n"; foreach $parameter (@{$args{'parameterlist'}}) { + ($parameter =~ /^#/) && next; + my $parameter_name = $parameter; $parameter_name =~ s/\[.*//; @@ -995,14 +1008,17 @@ sub output_struct_man(%) { print $args{'type'}." ".$args{'struct'}." \\- ".$args{'purpose'}."\n"; print ".SH SYNOPSIS\n"; - print $args{'type'}." ".$args{'struct'}." {\n"; + print $args{'type'}." ".$args{'struct'}." {\n.br\n"; foreach my $parameter (@{$args{'parameterlist'}}) { + if ($parameter =~ /^#/) { + print ".BI \"$parameter\"\n.br\n"; + next; + } my $parameter_name = $parameter; $parameter_name =~ s/\[.*//; ($args{'parameterdescs'}{$parameter_name} ne $undescribed) || next; - print "\n.br\n"; $type = $args{'parametertypes'}{$parameter}; if ($type =~ m/([^\(]*\(\*)\s*\)\s*\(([^\)]*)\)/) { # pointer-to-function @@ -1019,6 +1035,8 @@ sub output_struct_man(%) { print ".SH Arguments\n"; foreach $parameter (@{$args{'parameterlist'}}) { + ($parameter =~ /^#/) && next; + my $parameter_name = $parameter; $parameter_name =~ s/\[.*//; @@ -1159,6 +1177,11 @@ sub output_struct_text(%) { print $args{'type'}." ".$args{'struct'}.":\n\n"; print $args{'type'}." ".$args{'struct'}." {\n"; foreach $parameter (@{$args{'parameterlist'}}) { + if ($parameter =~ /^#/) { + print "$parameter\n"; + next; + } + my $parameter_name = $parameter; $parameter_name =~ s/\[.*//; @@ -1177,6 +1200,8 @@ sub output_struct_text(%) { print "Members:\n\n"; foreach $parameter (@{$args{'parameterlist'}}) { + ($parameter =~ /^#/) && next; + my $parameter_name = $parameter; $parameter_name =~ s/\[.*//; @@ -1353,7 +1378,12 @@ sub create_parameterlist($$$) { $arg =~ s/\s*$//; $arg =~ s/\s+/ /; - if ($arg =~ m/\(/) { + if ($arg =~ /^#/) { + # Treat preprocessor directive as a typeless variable just to fill + # corresponding data structures "correctly". Catch it later in + # output_* subs. + push_parameter($arg, "", $file); + } elsif ($arg =~ m/\(/) { # pointer-to-function $arg =~ tr/#/,/; $arg =~ m/[^\(]+\(\*([^\)]+)\)/; @@ -1571,6 +1601,10 @@ sub process_state3_type($$) { $x =~ s@[\r\n]+@ @gos; # strip newlines/cr's. $x =~ s@^\s+@@gos; # strip leading spaces $x =~ s@\s+$@@gos; # strip trailing spaces + if ($x =~ /^#/) { + # To distinguish preprocessor directive from regular declaration later. + $x .= ";"; + } while (1) { if ( $x =~ /([^{};]*)([{};])(.*)/ ) { |