Hi Randy, On Sat, Jan 27, 2024 at 01:01:01PM -0800, Randy Dunlap wrote: > Hi Sakari, > > On 1/27/24 10:53, Sakari Ailus wrote: > > In a rather unusual arrangement in include/media/v4l2-vp9.h struct > > v4l2_vp9_frame_symbol_counts has fields that are arrays of pointers, not a > > pointer to an array, which is what's usually done. > > > > Yet another kernel-doc bug. I have a list of 5 or 6 or 8 bugs that are > similar to this one, but I didn't have this one. :-) Regular expressions are not best for parsing C. It seems to be doable in practice but imperfect at the same time. > > > > Add support for such arrays of pointers to kernel-doc. > > > > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> > > > Did this work for you? > I still see the same warnings as before this patch is applied. Hmm. How did you test this? I did: $ scripts/kernel-doc include/media/v4l2-vp9.h > /dev/null Without this patch I do get a bunch of errors, with this patch there's no output. The produced kernel-doc seemed to be fine, too (with the redirection removed). > > > > --- > > Hi Ricardo, > > > > I tried to ram it together with processing the rest but it seemed > > to complicate processing the usual fields. > > > > scripts/kernel-doc | 9 +++++++++ > > 1 file changed, 9 insertions(+) > > > > diff --git a/scripts/kernel-doc b/scripts/kernel-doc > > index e8aefd258a29..728b1ffc0478 100755 > > --- a/scripts/kernel-doc > > +++ b/scripts/kernel-doc > > @@ -1509,6 +1509,15 @@ sub create_parameterlist($$$$) { > > $type =~ s/([^\(]+\(\*?)\s*$param/$1/; > > save_struct_actual($param); > > push_parameter($param, $type, $arg, $file, $declaration_name); > > + } elsif ($arg =~ m/\(.+\)\s*\[/) { > > + # array-of-pointers > > + $arg =~ tr/#/,/; > > + $arg =~ m/[^\(]+\(\s*\*\s*([\w\[\]\.]*?)\s*(\s*\[\s*[\w]+\s*\]\s*)*\)/; > > + $param = $1; > > + $type = $arg; > > + $type =~ s/([^\(]+\(\*?)\s*$param/$1/; > > + save_struct_actual($param); > > + push_parameter($param, $type, $arg, $file, $declaration_name); > > } elsif ($arg) { > > $arg =~ s/\s*:\s*/:/g; > > $arg =~ s/\s*\[/\[/g; > > > Thanks. -- Regards, Sakari Ailus