diff options
author | Sam Ravnborg <sam@mars.ravnborg.org> | 2004-08-16 00:27:11 +0200 |
---|---|---|
committer | Sam Ravnborg <sam@mars.ravnborg.org> | 2004-08-16 00:27:11 +0200 |
commit | b951afc0f636f9a60fd076a808246ce27387d0a7 (patch) | |
tree | f26e1f26dfa3348418a172aa7ba18ca9b00e6bdd /scripts | |
parent | 85fde190b50dd147b6e3b26f4b13af55041b33aa (diff) | |
download | history-b951afc0f636f9a60fd076a808246ce27387d0a7.tar.gz |
Cset exclude: adobriyan@mail.ru|ChangeSet|20040815084554|35832
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/kernel-doc | 88 |
1 files changed, 38 insertions, 50 deletions
diff --git a/scripts/kernel-doc b/scripts/kernel-doc index 9c28fbbeaba96b..aa7ffee63b4507 100755 --- a/scripts/kernel-doc +++ b/scripts/kernel-doc @@ -26,8 +26,6 @@ use strict; # Still to do: # - add perldoc documentation # - Look more closely at some of the scarier bits :) -# - Clean up mess that #ifdefs and comments inside structs -# definitions leave. # 26/05/2001 - Support for separate source and object trees. # Return error code. @@ -38,8 +36,6 @@ use strict; # Small fixes (like spaces vs. \s in regex) # -- Tim Jansen <tim@tjansen.de> -# 18/04/2004 - Comma separated members inside structs definitions are ok now. -# -- Alexey Dobriyan <adobriyan@mail.ru> # # This will read a 'c' file and scan for embedded comments in the @@ -109,7 +105,10 @@ use strict; # enums and typedefs. Instead of the function name you must write the name # of the declaration; the struct/union/enum/typedef must always precede # the name. Nesting of declarations is not supported. -# Use the argument mechanism to document members or constants. +# Use the argument mechanism to document members or constants. In +# structs and unions you must declare one member per declaration +# (comma-separated members are not allowed - the parser does not support +# this). # e.g. # /** # * struct my_struct - short description @@ -1319,62 +1318,51 @@ sub create_parameterlist($$$) { $param = $1; $type = $arg; $type =~ s/([^\(]+\(\*)$param/$1/; - push_parameter($type, $param, $file); } else { # evil magic to get fixed array parameters to work - # 'char cb[48]' => 'char* cb' $arg =~ s/(.+\s+)(.+)\[.*/$1* $2/; - - my @args = split(',\s*', $arg); - - my @first_arg = split('\s', shift @args); - unshift(@args, pop @first_arg); - $type = join " ", @first_arg; - - foreach $param (@args) { - if ($param =~ m/^(\*+)(.*)/) { - # pointer - push_parameter("$type$1", $2, $file); - } elsif ($param =~ m/(.*?)\s*:\s*(\d+)/) { - # bitfield - push_parameter("$type:$2", $1, $file); - } else { - push_parameter($type, $param, $file); - } + my @args = split('\s', $arg); + + $param = pop @args; + if ($param =~ m/^(\*+)(.*)/) { + $param = $2; + push @args, $1; + } + elsif ($param =~ m/(.*?)\s*:\s*(\d+)/) { + $param = $1; + push @args, ":$2"; } + $type = join " ", @args; } - } -} - -sub push_parameter($$$) { - my $type = shift; - my $param = shift; - my $file = shift; - if ($type eq "" && $param eq "...") { - $type="..."; - $param="..."; - $parameterdescs{"..."} = "variable arguments"; - } elsif ($type eq "" && ($param eq "" or $param eq "void")) { - $type=""; - $param="void"; - $parameterdescs{void} = "no arguments"; - } - if (defined $type && $type && !defined $parameterdescs{$param}) { - $parameterdescs{$param} = $undescribed; + if ($type eq "" && $param eq "...") + { + $type="..."; + $param="..."; + $parameterdescs{"..."} = "variable arguments"; + } + elsif ($type eq "" && ($param eq "" or $param eq "void")) + { + $type=""; + $param="void"; + $parameterdescs{void} = "no arguments"; + } + if (defined $type && $type && !defined $parameterdescs{$param}) { + $parameterdescs{$param} = $undescribed; - if (($type eq 'function') || ($type eq 'enum')) { - print STDERR "Warning(${file}:$.): Function parameter ". + if (($type eq 'function') || ($type eq 'enum')) { + print STDERR "Warning(${file}:$.): Function parameter ". "or member '$param' not " . "described in '$declaration_name'\n"; - } - print STDERR "Warning(${file}:$.):". + } + print STDERR "Warning(${file}:$.):". " No description found for parameter '$param'\n"; - ++$warnings; - } + ++$warnings; + } - push @parameterlist, $param; - $parametertypes{$param} = $type; + push @parameterlist, $param; + $parametertypes{$param} = $type; + } } ## |