Commit 1cd24c95 authored by Alexey Dobriyan's avatar Alexey Dobriyan Committed by Sam Ravnborg

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: default avatarAlexey Dobriyan <adobriyan@mail.ru>
Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
parent 6027d602
...@@ -105,10 +105,7 @@ use strict; ...@@ -105,10 +105,7 @@ use strict;
# enums and typedefs. Instead of the function name you must write the name # enums and typedefs. Instead of the function name you must write the name
# of the declaration; the struct/union/enum/typedef must always precede # of the declaration; the struct/union/enum/typedef must always precede
# the name. Nesting of declarations is not supported. # the name. Nesting of declarations is not supported.
# Use the argument mechanism to document members or constants. In # Use the argument mechanism to document members or constants.
# structs and unions you must declare one member per declaration
# (comma-separated members are not allowed - the parser does not support
# this).
# e.g. # e.g.
# /** # /**
# * struct my_struct - short description # * struct my_struct - short description
...@@ -1318,22 +1315,40 @@ sub create_parameterlist($$$) { ...@@ -1318,22 +1315,40 @@ sub create_parameterlist($$$) {
$param = $1; $param = $1;
$type = $arg; $type = $arg;
$type =~ s/([^\(]+\(\*)$param/$1/; $type =~ s/([^\(]+\(\*)$param/$1/;
push_parameter($param, $type, $file);
} else { } else {
# evil magic to get fixed array parameters to work # evil magic to get fixed array parameters to work
$arg =~ s/(.+\s+)(.+)\[.*/$1* $2/; $arg =~ s/(.+\s+)(.+)\[.*/$1* $2/;
my @args = split('\s', $arg);
$param = pop @args; $arg =~ s/\s*:\s*/:/g;
if ($param =~ m/^(\*+)(.*)/) {
$param = $2; my @args = split('\s*,\s*', $arg);
push @args, $1; if ($args[0] =~ m/\*/) {
$args[0] =~ s/(\*+)\s*/ $1/;
} }
elsif ($param =~ m/(.*?)\s*:\s*(\d+)/) { my @first_arg = split('\s+', shift @args);
$param = $1; unshift(@args, pop @first_arg);
push @args, ":$2"; $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 "...") if ($type eq "" && $param eq "...")
{ {
...@@ -1362,7 +1377,6 @@ sub create_parameterlist($$$) { ...@@ -1362,7 +1377,6 @@ sub create_parameterlist($$$) {
push @parameterlist, $param; push @parameterlist, $param;
$parametertypes{$param} = $type; $parametertypes{$param} = $type;
}
} }
## ##
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment