Hi Mauro, this 'else' addition seems a bit spooky to me. As I commented in patch 09/13 may it helps when you look at https://github.com/return42/linuxdoc/blob/master/linuxdoc/kernel_doc.py#L2499 which is IMO a bit more clear. -- Markus -- > Am 27.09.2017 um 23:10 schrieb Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx>: > > Function arguments are different than usual ones. So, an > special logic is needed in order to handle such arguments > on nested structs. > > Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx> > --- > scripts/kernel-doc | 38 ++++++++++++++++++++++++++------------ > 1 file changed, 26 insertions(+), 12 deletions(-) > > diff --git a/scripts/kernel-doc b/scripts/kernel-doc > index 713608046d3a..376365d41718 100755 > --- a/scripts/kernel-doc > +++ b/scripts/kernel-doc > @@ -1015,18 +1015,32 @@ sub dump_struct($$) { > $id =~ s/^\*+//; > foreach my $arg (split /;/, $content) { > next if ($arg =~ m/^\s*$/); > - my $type = $arg; > - my $name = $arg; > - $type =~ s/\s\S+$//; > - $name =~ s/.*\s//; > - $name =~ s/[:\[].*//; > - $name =~ s/^\*+//; > - next if (($name =~ m/^\s*$/)); > - if ($id =~ m/^\s*$/) { > - # anonymous struct/union > - $newmember .= "$type $name;"; > + if ($arg =~ m/^([^\(]+\(\*?\s*)([\w\.]*)(\s*\).*)/) { > + # pointer-to-function > + my $type = $1; > + my $name = $2; > + my $extra = $3; > + next if (!$name); > + if ($id =~ m/^\s*$/) { > + # anonymous struct/union > + $newmember .= "$type$name$extra;"; > + } else { > + $newmember .= "$type$id.$name$extra;"; > + } > } else { > - $newmember .= "$type $id.$name;"; > + my $type = $arg; > + my $name = $arg; > + $type =~ s/\s\S+$//; > + $name =~ s/.*\s+//; > + $name =~ s/[:\[].*//; > + $name =~ s/^\*+//; > + next if (($name =~ m/^\s*$/)); > + if ($id =~ m/^\s*$/) { > + # anonymous struct/union > + $newmember .= "$type $name;"; > + } else { > + $newmember .= "$type $id.$name;"; > + } > } > } > $members =~ s/(struct|union)([^{};]+){([^{}]*)}([^{}\;]*)\;/$newmember/; > @@ -1215,7 +1229,7 @@ sub create_parameterlist($$$$) { > } elsif ($arg =~ m/\(.+\)\s*\(/) { > # pointer-to-function > $arg =~ tr/#/,/; > - $arg =~ m/[^\(]+\(\*?\s*(\w*)\s*\)/; > + $arg =~ m/[^\(]+\(\*?\s*([\w\.]*)\s*\)/; > $param = $1; > $type = $arg; > $type =~ s/([^\(]+\(\*?)\s*$param/$1/; > -- > 2.13.5 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-doc" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html