mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	kernel-doc: better format typedef function output
A typedef function looks more likely a function and not a normal typedef. Change the code to use the output_function_*, in order to properly parse the function prototype parameters. Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
		
							parent
							
								
									3a80a76632
								
							
						
					
					
						commit
						837664528e
					
				
					 1 changed files with 25 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -1869,6 +1869,31 @@ sub dump_typedef($$) {
 | 
			
		|||
    my $file = shift;
 | 
			
		||||
 | 
			
		||||
    $x =~ s@/\*.*?\*/@@gos;	# strip comments.
 | 
			
		||||
 | 
			
		||||
    # Parse function prototypes
 | 
			
		||||
    if ($x =~ /typedef\s+(\w+)\s*\(\*\s*(\w\S+)\s*\)\s*\((.*)\);/) {
 | 
			
		||||
	# Function typedefs
 | 
			
		||||
	$return_type = $1;
 | 
			
		||||
	$declaration_name = $2;
 | 
			
		||||
	my $args = $3;
 | 
			
		||||
 | 
			
		||||
	create_parameterlist($args, ',', $file);
 | 
			
		||||
 | 
			
		||||
	output_declaration($declaration_name,
 | 
			
		||||
			   'function',
 | 
			
		||||
			   {'function' => $declaration_name,
 | 
			
		||||
			    'module' => $modulename,
 | 
			
		||||
			    'functiontype' => $return_type,
 | 
			
		||||
			    'parameterlist' => \@parameterlist,
 | 
			
		||||
			    'parameterdescs' => \%parameterdescs,
 | 
			
		||||
			    'parametertypes' => \%parametertypes,
 | 
			
		||||
			    'sectionlist' => \@sectionlist,
 | 
			
		||||
			    'sections' => \%sections,
 | 
			
		||||
			    'purpose' => $declaration_purpose
 | 
			
		||||
			   });
 | 
			
		||||
	return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    while (($x =~ /\(*.\)\s*;$/) || ($x =~ /\[*.\]\s*;$/)) {
 | 
			
		||||
	$x =~ s/\(*.\)\s*;$/;/;
 | 
			
		||||
	$x =~ s/\[*.\]\s*;$/;/;
 | 
			
		||||
| 
						 | 
				
			
			@ -1886,18 +1911,6 @@ sub dump_typedef($$) {
 | 
			
		|||
			    'purpose' => $declaration_purpose
 | 
			
		||||
			   });
 | 
			
		||||
    }
 | 
			
		||||
    elsif ($x =~ /typedef\s+\w+\s*\(\*\s*(\w\S+)\s*\)\s*\(/) { # functions
 | 
			
		||||
	$declaration_name = $1;
 | 
			
		||||
 | 
			
		||||
	output_declaration($declaration_name,
 | 
			
		||||
			   'typedef',
 | 
			
		||||
			   {'typedef' => $declaration_name,
 | 
			
		||||
			    'module' => $modulename,
 | 
			
		||||
			    'sectionlist' => \@sectionlist,
 | 
			
		||||
			    'sections' => \%sections,
 | 
			
		||||
			    'purpose' => $declaration_purpose
 | 
			
		||||
			   });
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
	print STDERR "${file}:$.: error: Cannot parse typedef!\n";
 | 
			
		||||
	++$errors;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue