diff options
author | Mauro Carvalho Chehab <mchehab@osg.samsung.com> | 2015-10-08 16:14:45 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@osg.samsung.com> | 2015-10-10 10:29:06 -0300 |
commit | 837664528e17380cfacfb766de37df31572f07a0 (patch) | |
tree | 1af084c03541d763bfef0b7b49bb61abaafe8e2e | |
parent | 3a80a766328fe73df5951639b5c9013ddba6efec (diff) | |
download | linux-837664528e17380cfacfb766de37df31572f07a0.tar.bz2 |
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>
-rwxr-xr-x | scripts/kernel-doc | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/scripts/kernel-doc b/scripts/kernel-doc index 55ce47ffa02d..0276d2b5eefe 100755 --- a/scripts/kernel-doc +++ b/scripts/kernel-doc @@ -1869,24 +1869,37 @@ sub dump_typedef($$) { my $file = shift; $x =~ s@/\*.*?\*/@@gos; # strip comments. - while (($x =~ /\(*.\)\s*;$/) || ($x =~ /\[*.\]\s*;$/)) { - $x =~ s/\(*.\)\s*;$/;/; - $x =~ s/\[*.\]\s*;$/;/; - } - if ($x =~ /typedef.*\s+(\w+)\s*;/) { - $declaration_name = $1; + # 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, - 'typedef', - {'typedef' => $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*;$/;/; } - elsif ($x =~ /typedef\s+\w+\s*\(\*\s*(\w\S+)\s*\)\s*\(/) { # functions + + if ($x =~ /typedef.*\s+(\w+)\s*;/) { $declaration_name = $1; output_declaration($declaration_name, |