summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAlexey Dobriyan <adobriyan@mail.ru>2004-11-03 23:49:24 +0100
committerSam Ravnborg <sam@mars.ravnborg.org>2004-11-03 23:49:24 +0100
commit1cd24c95d23e0a57f75b1611ea157cbd5a7f3e28 (patch)
tree4bbe49605b04b316822a506896d502a9ef28dfca /scripts
parent6027d60213e9eb7243e3ce2acd092aa6367704a4 (diff)
kernel-doc: support for comma-separated members in structs and unions
Fix the following warnings $ make sgmldocs ... Warning(include/linux/skbuff.h:283): No description found for parameter 'len,data_len,mac_len,csum' Warning(include/linux/skbuff.h:283): No description found for parameter 'local_df,cloned,pkt_type,ip_summed' Warning(include/linux/skbuff.h:283): No description found for parameter 'protocol,security' ... Warning(include/linux/skbuff.h:283): No description found for parameter 'head,*data,*tail,*end' ... by adding support for comma-separated members in structs and unions. Signed-off-by: Alexey Dobriyan <adobriyan@mail.ru> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/kernel-doc46
1 files changed, 30 insertions, 16 deletions
diff --git a/scripts/kernel-doc b/scripts/kernel-doc
index 767cb2365a82..eee6acf7f316 100755
--- a/scripts/kernel-doc
+++ b/scripts/kernel-doc
@@ -105,10 +105,7 @@ 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. In
-# structs and unions you must declare one member per declaration
-# (comma-separated members are not allowed - the parser does not support
-# this).
+# Use the argument mechanism to document members or constants.
# e.g.
# /**
# * struct my_struct - short description
@@ -1318,22 +1315,40 @@ sub create_parameterlist($$$) {
$param = $1;
$type = $arg;
$type =~ s/([^\(]+\(\*)$param/$1/;
+ push_parameter($param, $type, $file);
} else {
# evil magic to get fixed array parameters to work
$arg =~ s/(.+\s+)(.+)\[.*/$1* $2/;
- 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";
+
+ $arg =~ s/\s*:\s*/:/g;
+
+ my @args = split('\s*,\s*', $arg);
+ if ($args[0] =~ m/\*/) {
+ $args[0] =~ s/(\*+)\s*/ $1/;
+ }
+ my @first_arg = split('\s+', shift @args);
+ unshift(@args, pop @first_arg);
+ $type = join " ", @first_arg;
+
+ foreach $param (@args) {
+ if ($param =~ m/^(\*+)\s*(.*)/) {
+ push_parameter($2, "$type $1", $file);
+ }
+ elsif ($param =~ m/(.*?):(\d+)/) {
+ push_parameter($1, "$type:$2", $file)
+ }
+ else {
+ push_parameter($param, $type, $file);
+ }
}
- $type = join " ", @args;
}
+ }
+}
+
+sub push_parameter($$$) {
+ my $param = shift;
+ my $type = shift;
+ my $file = shift;
if ($type eq "" && $param eq "...")
{
@@ -1362,7 +1377,6 @@ sub create_parameterlist($$$) {
push @parameterlist, $param;
$parametertypes{$param} = $type;
- }
}
##