mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
scripts: kernel-doc: reduce repeated regex expressions into variables
There are some regex expressions in the kernel-doc script, which are used repeatedly in the script. Reduce such expressions into variables, which can be used everywhere. A quick manual check found that no errors and warnings were added/removed in this process. Suggested-by: Jonathan Corbet <corbet@lwn.net> Signed-off-by: Aditya Srivastava <yashsri421@gmail.com> Link: https://lore.kernel.org/r/20210514144244.25341-1-yashsri421@gmail.com Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
parent
2c5ff2caa4
commit
e86bdb2437
@ -406,6 +406,8 @@ my $doc_inline_sect = '\s*\*\s*(@\s*[\w][\w\.]*\s*):(.*)';
|
||||
my $doc_inline_end = '^\s*\*/\s*$';
|
||||
my $doc_inline_oneline = '^\s*/\*\*\s*(@[\w\s]+):\s*(.*)\s*\*/\s*$';
|
||||
my $export_symbol = '^\s*EXPORT_SYMBOL(_GPL)?\s*\(\s*(\w+)\s*\)\s*;';
|
||||
my $function_pointer = qr{([^\(]*\(\*)\s*\)\s*\(([^\)]*)\)};
|
||||
my $attribute = qr{__attribute__\s*\(\([a-z0-9,_\*\s\(\)]*\)\)}i;
|
||||
|
||||
my %parameterdescs;
|
||||
my %parameterdesc_start_lines;
|
||||
@ -694,7 +696,7 @@ sub output_function_man(%) {
|
||||
$post = ");";
|
||||
}
|
||||
$type = $args{'parametertypes'}{$parameter};
|
||||
if ($type =~ m/([^\(]*\(\*)\s*\)\s*\(([^\)]*)\)/) {
|
||||
if ($type =~ m/$function_pointer/) {
|
||||
# pointer-to-function
|
||||
print ".BI \"" . $parenth . $1 . "\" " . " \") (" . $2 . ")" . $post . "\"\n";
|
||||
} else {
|
||||
@ -974,7 +976,7 @@ sub output_function_rst(%) {
|
||||
$count++;
|
||||
$type = $args{'parametertypes'}{$parameter};
|
||||
|
||||
if ($type =~ m/([^\(]*\(\*)\s*\)\s*\(([^\)]*)\)/) {
|
||||
if ($type =~ m/$function_pointer/) {
|
||||
# pointer-to-function
|
||||
print $1 . $parameter . ") (" . $2 . ")";
|
||||
} else {
|
||||
@ -1211,7 +1213,9 @@ sub dump_struct($$) {
|
||||
my $members;
|
||||
my $type = qr{struct|union};
|
||||
# For capturing struct/union definition body, i.e. "{members*}qualifiers*"
|
||||
my $definition_body = qr{\{(.*)\}(?:\s*(?:__packed|__aligned|____cacheline_aligned_in_smp|____cacheline_aligned|__attribute__\s*\(\([a-z0-9,_\s\(\)]*\)\)))*};
|
||||
my $qualifiers = qr{$attribute|__packed|__aligned|____cacheline_aligned_in_smp|____cacheline_aligned};
|
||||
my $definition_body = qr{\{(.*)\}\s*$qualifiers*};
|
||||
my $struct_members = qr{($type)([^\{\};]+)\{([^\{\}]*)\}([^\{\}\;]*)\;};
|
||||
|
||||
if ($x =~ /($type)\s+(\w+)\s*$definition_body/) {
|
||||
$decl_type = $1;
|
||||
@ -1235,27 +1239,27 @@ sub dump_struct($$) {
|
||||
# strip comments:
|
||||
$members =~ s/\/\*.*?\*\///gos;
|
||||
# strip attributes
|
||||
$members =~ s/\s*__attribute__\s*\(\([a-z0-9,_\*\s\(\)]*\)\)/ /gi;
|
||||
$members =~ s/\s*$attribute/ /gi;
|
||||
$members =~ s/\s*__aligned\s*\([^;]*\)/ /gos;
|
||||
$members =~ s/\s*__packed\s*/ /gos;
|
||||
$members =~ s/\s*CRYPTO_MINALIGN_ATTR/ /gos;
|
||||
$members =~ s/\s*____cacheline_aligned_in_smp/ /gos;
|
||||
$members =~ s/\s*____cacheline_aligned/ /gos;
|
||||
|
||||
my $args = qr{([^,)]+)};
|
||||
# replace DECLARE_BITMAP
|
||||
$members =~ s/__ETHTOOL_DECLARE_LINK_MODE_MASK\s*\(([^\)]+)\)/DECLARE_BITMAP($1, __ETHTOOL_LINK_MODE_MASK_NBITS)/gos;
|
||||
$members =~ s/DECLARE_BITMAP\s*\(([^,)]+),\s*([^,)]+)\)/unsigned long $1\[BITS_TO_LONGS($2)\]/gos;
|
||||
$members =~ s/DECLARE_BITMAP\s*\($args,\s*$args\)/unsigned long $1\[BITS_TO_LONGS($2)\]/gos;
|
||||
# replace DECLARE_HASHTABLE
|
||||
$members =~ s/DECLARE_HASHTABLE\s*\(([^,)]+),\s*([^,)]+)\)/unsigned long $1\[1 << (($2) - 1)\]/gos;
|
||||
$members =~ s/DECLARE_HASHTABLE\s*\($args,\s*$args\)/unsigned long $1\[1 << (($2) - 1)\]/gos;
|
||||
# replace DECLARE_KFIFO
|
||||
$members =~ s/DECLARE_KFIFO\s*\(([^,)]+),\s*([^,)]+),\s*([^,)]+)\)/$2 \*$1/gos;
|
||||
$members =~ s/DECLARE_KFIFO\s*\($args,\s*$args,\s*$args\)/$2 \*$1/gos;
|
||||
# replace DECLARE_KFIFO_PTR
|
||||
$members =~ s/DECLARE_KFIFO_PTR\s*\(([^,)]+),\s*([^,)]+)\)/$2 \*$1/gos;
|
||||
|
||||
$members =~ s/DECLARE_KFIFO_PTR\s*\($args,\s*$args\)/$2 \*$1/gos;
|
||||
my $declaration = $members;
|
||||
|
||||
# Split nested struct/union elements as newer ones
|
||||
while ($members =~ m/(struct|union)([^\{\};]+)\{([^\{\}]*)\}([^\{\}\;]*)\;/) {
|
||||
while ($members =~ m/$struct_members/) {
|
||||
my $newmember;
|
||||
my $maintype = $1;
|
||||
my $ids = $4;
|
||||
@ -1315,7 +1319,7 @@ sub dump_struct($$) {
|
||||
}
|
||||
}
|
||||
}
|
||||
$members =~ s/(struct|union)([^\{\};]+)\{([^\{\}]*)\}([^\{\}\;]*)\;/$newmember/;
|
||||
$members =~ s/$struct_members/$newmember/;
|
||||
}
|
||||
|
||||
# Ignore other nested elements, like enums
|
||||
@ -1555,8 +1559,9 @@ sub create_parameterlist($$$$) {
|
||||
my $param;
|
||||
|
||||
# temporarily replace commas inside function pointer definition
|
||||
while ($args =~ /(\([^\),]+),/) {
|
||||
$args =~ s/(\([^\),]+),/$1#/g;
|
||||
my $arg_expr = qr{\([^\),]+};
|
||||
while ($args =~ /$arg_expr,/) {
|
||||
$args =~ s/($arg_expr),/$1#/g;
|
||||
}
|
||||
|
||||
foreach my $arg (split($splitter, $args)) {
|
||||
@ -1707,7 +1712,7 @@ sub check_sections($$$$$) {
|
||||
foreach $px (0 .. $#prms) {
|
||||
$prm_clean = $prms[$px];
|
||||
$prm_clean =~ s/\[.*\]//;
|
||||
$prm_clean =~ s/__attribute__\s*\(\([a-z,_\*\s\(\)]*\)\)//i;
|
||||
$prm_clean =~ s/$attribute//i;
|
||||
# ignore array size in a parameter string;
|
||||
# however, the original param string may contain
|
||||
# spaces, e.g.: addr[6 + 2]
|
||||
@ -1809,8 +1814,14 @@ sub dump_function($$) {
|
||||
# - parport_register_device (function pointer parameters)
|
||||
# - atomic_set (macro)
|
||||
# - pci_match_device, __copy_to_user (long return type)
|
||||
my $name = qr{[a-zA-Z0-9_~:]+};
|
||||
my $prototype_end1 = qr{[^\(]*};
|
||||
my $prototype_end2 = qr{[^\{]*};
|
||||
my $prototype_end = qr{\(($prototype_end1|$prototype_end2)\)};
|
||||
my $type1 = qr{[\w\s]+};
|
||||
my $type2 = qr{$type1\*+};
|
||||
|
||||
if ($define && $prototype =~ m/^()([a-zA-Z0-9_~:]+)\s+/) {
|
||||
if ($define && $prototype =~ m/^()($name)\s+/) {
|
||||
# This is an object-like macro, it has no return type and no parameter
|
||||
# list.
|
||||
# Function-like macros are not allowed to have spaces between
|
||||
@ -1818,23 +1829,9 @@ sub dump_function($$) {
|
||||
$return_type = $1;
|
||||
$declaration_name = $2;
|
||||
$noret = 1;
|
||||
} elsif ($prototype =~ m/^()([a-zA-Z0-9_~:]+)\s*\(([^\(]*)\)/ ||
|
||||
$prototype =~ m/^(\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\(]*)\)/ ||
|
||||
$prototype =~ m/^(\w+\s*\*+)\s*([a-zA-Z0-9_~:]+)\s*\(([^\(]*)\)/ ||
|
||||
$prototype =~ m/^(\w+\s+\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\(]*)\)/ ||
|
||||
$prototype =~ m/^(\w+\s+\w+\s*\*+)\s*([a-zA-Z0-9_~:]+)\s*\(([^\(]*)\)/ ||
|
||||
$prototype =~ m/^(\w+\s+\w+\s+\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\(]*)\)/ ||
|
||||
$prototype =~ m/^(\w+\s+\w+\s+\w+\s*\*+)\s*([a-zA-Z0-9_~:]+)\s*\(([^\(]*)\)/ ||
|
||||
$prototype =~ m/^()([a-zA-Z0-9_~:]+)\s*\(([^\{]*)\)/ ||
|
||||
$prototype =~ m/^(\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\{]*)\)/ ||
|
||||
$prototype =~ m/^(\w+\s*\*+)\s*([a-zA-Z0-9_~:]+)\s*\(([^\{]*)\)/ ||
|
||||
$prototype =~ m/^(\w+\s+\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\{]*)\)/ ||
|
||||
$prototype =~ m/^(\w+\s+\w+\s*\*+)\s*([a-zA-Z0-9_~:]+)\s*\(([^\{]*)\)/ ||
|
||||
$prototype =~ m/^(\w+\s+\w+\s+\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\{]*)\)/ ||
|
||||
$prototype =~ m/^(\w+\s+\w+\s+\w+\s*\*+)\s*([a-zA-Z0-9_~:]+)\s*\(([^\{]*)\)/ ||
|
||||
$prototype =~ m/^(\w+\s+\w+\s+\w+\s+\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\{]*)\)/ ||
|
||||
$prototype =~ m/^(\w+\s+\w+\s+\w+\s+\w+\s*\*+)\s*([a-zA-Z0-9_~:]+)\s*\(([^\{]*)\)/ ||
|
||||
$prototype =~ m/^(\w+\s+\w+\s*\*+\s*\w+\s*\*+\s*)\s*([a-zA-Z0-9_~:]+)\s*\(([^\{]*)\)/) {
|
||||
} elsif ($prototype =~ m/^()($name)\s*$prototype_end/ ||
|
||||
$prototype =~ m/^($type1)\s+($name)\s*$prototype_end/ ||
|
||||
$prototype =~ m/^($type2+)\s*($name)\s*$prototype_end/) {
|
||||
$return_type = $1;
|
||||
$declaration_name = $2;
|
||||
my $args = $3;
|
||||
@ -2111,12 +2108,12 @@ sub process_name($$) {
|
||||
} elsif (/$doc_decl/o) {
|
||||
$identifier = $1;
|
||||
my $is_kernel_comment = 0;
|
||||
my $decl_start = qr{\s*\*};
|
||||
my $decl_start = qr{$doc_com};
|
||||
# test for pointer declaration type, foo * bar() - desc
|
||||
my $fn_type = qr{\w+\s*\*\s*};
|
||||
my $parenthesis = qr{\(\w*\)};
|
||||
my $decl_end = qr{[-:].*};
|
||||
if (/^$decl_start\s*([\w\s]+?)$parenthesis?\s*$decl_end?$/) {
|
||||
if (/^$decl_start([\w\s]+?)$parenthesis?\s*$decl_end?$/) {
|
||||
$identifier = $1;
|
||||
}
|
||||
if ($identifier =~ m/^(struct|union|enum|typedef)\b\s*(\S*)/) {
|
||||
@ -2126,8 +2123,8 @@ sub process_name($$) {
|
||||
}
|
||||
# Look for foo() or static void foo() - description; or misspelt
|
||||
# identifier
|
||||
elsif (/^$decl_start\s*$fn_type?(\w+)\s*$parenthesis?\s*$decl_end?$/ ||
|
||||
/^$decl_start\s*$fn_type?(\w+.*)$parenthesis?\s*$decl_end$/) {
|
||||
elsif (/^$decl_start$fn_type?(\w+)\s*$parenthesis?\s*$decl_end?$/ ||
|
||||
/^$decl_start$fn_type?(\w+.*)$parenthesis?\s*$decl_end$/) {
|
||||
$identifier = $1;
|
||||
$decl_type = 'function';
|
||||
$identifier =~ s/^define\s+//;
|
||||
|
Loading…
Reference in New Issue
Block a user