scripts: kernel-doc: fix typedef parsing
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> Link: https://lore.kernel.org/r/328e8018041cc44f7a1684e57f8d111230761c4f.1603792384.git.mchehab+huawei@kernel.org Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
		
				
					committed by
					
						 Jonathan Corbet
						Jonathan Corbet
					
				
			
			
				
	
			
			
			
						parent
						
							d94df02c47
						
					
				
				
					commit
					6b80975c63
				
			| @@ -1434,13 +1434,14 @@ sub dump_typedef($$) { | ||||
|     $x =~ s@/\*.*?\*/@@gos;	# strip comments. | ||||
|  | ||||
|     # Parse function prototypes | ||||
|     if ($x =~ /typedef\s+(\w+)\s*\(\*\s*(\w\S+)\s*\)\s*\((.*)\);/ || | ||||
| 	$x =~ /typedef\s+(\w+)\s*(\w\S+)\s*\s*\((.*)\);/) { | ||||
|     if ($x =~ /typedef((?:\s+[\w\*]+){1,8})\s*\(\*?\s*(\w\S+)\s*\)\s*\((.*)\);/ || | ||||
| 	$x =~ /typedef((?:\s+[\w\*]+\s+){1,8})\s*\*?(\w\S+)\s*\s*\((.*)\);/) { | ||||
|  | ||||
| 	# Function typedefs | ||||
| 	$return_type = $1; | ||||
| 	$declaration_name = $2; | ||||
| 	my $args = $3; | ||||
| 	$return_type =~ s/^\s+//; | ||||
|  | ||||
| 	create_parameterlist($args, ',', $file, $declaration_name); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user