lkml.org 
[lkml]   [2020]   [Oct]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v3 01/56] scripts: kernel-doc: fix typedef parsing
On Fri, 23 Oct 2020 18:32:48 +0200
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> wrote:

> The include/linux/genalloc.h file defined this typedef:
>
> typedef unsigned long (*genpool_algo_t)(unsigned long *map,unsigned long size,unsigned long start,unsigned int nr,void *data, struct gen_pool *pool, unsigned long start_addr);
>
> Because it has a type composite of two words (unsigned long),
> the parser gets the typedef name wrong:
>
> .. c:macro:: long
>
> **Typedef**: Allocation callback function type definition
>
> Fix the regex in order to accept composite types when
> defining a typedef for a function pointer.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
> ---
> scripts/kernel-doc | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/scripts/kernel-doc b/scripts/kernel-doc
> index 99cd8418ff8a..311d213ee74d 100755
> --- a/scripts/kernel-doc
> +++ b/scripts/kernel-doc
> @@ -1438,7 +1438,7 @@ sub dump_typedef($$) {
> $x =~ s@/\*.*?\*/@@gos; # strip comments.
>
> # Parse function prototypes
> - if ($x =~ /typedef\s+(\w+)\s*\(\*\s*(\w\S+)\s*\)\s*\((.*)\);/ ||
> + if ($x =~ /typedef\s+(\w+\s*){1,}\(\*\s*(\w\S+)\s*\)\s*\((.*)\);/ ||

I sure wish we could find a way to make all these regexes more
understandable and maintainable. Reviewing a change like this is ... fun.

Anyway, it seems to work, but it does now include trailing whitespace in
the type portion. So, for example, from include/linux/xarray.h:

typedef void (*xa_update_node_t)(struct xa_node *node);

The type is parsed as "void " where it was "void" before. The only ill
effect I can see is that some non-breaking spaces get inserted into the
HTML output, but perhaps it's worth stripping off that trailing space
anyway?

Thanks,

jon

\
 
 \ /
  Last update: 2020-10-23 19:23    [W:0.439 / U:0.708 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site