Commit 194f66fc authored by Joe Perches's avatar Joe Perches Committed by Linus Torvalds
Browse files

checkpatch: add an index variable for fixed lines



Make the fix code a bit easier to read.

This should also start to allow an easier mechanism to insert/delete
lines eventually too.

Signed-off-by: default avatarJoe Perches <joe@perches.com>
Cc: Andy Whitcroft <apw@canonical.com>
Cc: Dan Carpenter <dan.carpenter@oracle.com>
Cc: Josh Triplett <josh@joshtriplett.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent c00df19a
Loading
Loading
Loading
Loading
+60 −54
Original line number Original line Diff line number Diff line
@@ -583,6 +583,8 @@ $chk_signoff = 0 if ($file);
my @rawlines = ();
my @rawlines = ();
my @lines = ();
my @lines = ();
my @fixed = ();
my @fixed = ();
my $fixlinenr = -1;

my $vname;
my $vname;
for my $filename (@ARGV) {
for my $filename (@ARGV) {
	my $FILE;
	my $FILE;
@@ -611,6 +613,7 @@ for my $filename (@ARGV) {
	@rawlines = ();
	@rawlines = ();
	@lines = ();
	@lines = ();
	@fixed = ();
	@fixed = ();
	$fixlinenr = -1;
}
}


exit($exit);
exit($exit);
@@ -1801,8 +1804,10 @@ sub process {


	$realcnt = 0;
	$realcnt = 0;
	$linenr = 0;
	$linenr = 0;
	$fixlinenr = -1;
	foreach my $line (@lines) {
	foreach my $line (@lines) {
		$linenr++;
		$linenr++;
		$fixlinenr++;
		my $sline = $line;	#copy of $line
		my $sline = $line;	#copy of $line
		$sline =~ s/$;/ /g;	#with comments as spaces
		$sline =~ s/$;/ /g;	#with comments as spaces


@@ -1933,7 +1938,7 @@ sub process {
				if (WARN("BAD_SIGN_OFF",
				if (WARN("BAD_SIGN_OFF",
					 "Do not use whitespace before $ucfirst_sign_off\n" . $herecurr) &&
					 "Do not use whitespace before $ucfirst_sign_off\n" . $herecurr) &&
				    $fix) {
				    $fix) {
					$fixed[$linenr - 1] =
					$fixed[$fixlinenr] =
					    "$ucfirst_sign_off $email";
					    "$ucfirst_sign_off $email";
				}
				}
			}
			}
@@ -1941,7 +1946,7 @@ sub process {
				if (WARN("BAD_SIGN_OFF",
				if (WARN("BAD_SIGN_OFF",
					 "'$ucfirst_sign_off' is the preferred signature form\n" . $herecurr) &&
					 "'$ucfirst_sign_off' is the preferred signature form\n" . $herecurr) &&
				    $fix) {
				    $fix) {
					$fixed[$linenr - 1] =
					$fixed[$fixlinenr] =
					    "$ucfirst_sign_off $email";
					    "$ucfirst_sign_off $email";
				}
				}


@@ -1950,7 +1955,7 @@ sub process {
				if (WARN("BAD_SIGN_OFF",
				if (WARN("BAD_SIGN_OFF",
					 "Use a single space after $ucfirst_sign_off\n" . $herecurr) &&
					 "Use a single space after $ucfirst_sign_off\n" . $herecurr) &&
				    $fix) {
				    $fix) {
					$fixed[$linenr - 1] =
					$fixed[$fixlinenr] =
					    "$ucfirst_sign_off $email";
					    "$ucfirst_sign_off $email";
				}
				}
			}
			}
@@ -2089,14 +2094,14 @@ sub process {
			if (ERROR("DOS_LINE_ENDINGS",
			if (ERROR("DOS_LINE_ENDINGS",
				  "DOS line endings\n" . $herevet) &&
				  "DOS line endings\n" . $herevet) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/[\s\015]+$//;
				$fixed[$fixlinenr] =~ s/[\s\015]+$//;
			}
			}
		} elsif ($rawline =~ /^\+.*\S\s+$/ || $rawline =~ /^\+\s+$/) {
		} elsif ($rawline =~ /^\+.*\S\s+$/ || $rawline =~ /^\+\s+$/) {
			my $herevet = "$here\n" . cat_vet($rawline) . "\n";
			my $herevet = "$here\n" . cat_vet($rawline) . "\n";
			if (ERROR("TRAILING_WHITESPACE",
			if (ERROR("TRAILING_WHITESPACE",
				  "trailing whitespace\n" . $herevet) &&
				  "trailing whitespace\n" . $herevet) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/\s+$//;
				$fixed[$fixlinenr] =~ s/\s+$//;
			}
			}


			$rpt_cleaners = 1;
			$rpt_cleaners = 1;
@@ -2235,7 +2240,7 @@ sub process {
			if (WARN("QUOTED_WHITESPACE_BEFORE_NEWLINE",
			if (WARN("QUOTED_WHITESPACE_BEFORE_NEWLINE",
				 "unnecessary whitespace before a quoted newline\n" . $herecurr) &&
				 "unnecessary whitespace before a quoted newline\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/^(\+.*\".*)\s+\\n/$1\\n/;
				$fixed[$fixlinenr] =~ s/^(\+.*\".*)\s+\\n/$1\\n/;
			}
			}


		}
		}
@@ -2272,7 +2277,7 @@ sub process {
			if (ERROR("CODE_INDENT",
			if (ERROR("CODE_INDENT",
				  "code indent should use tabs where possible\n" . $herevet) &&
				  "code indent should use tabs where possible\n" . $herevet) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/^\+([ \t]+)/"\+" . tabify($1)/e;
				$fixed[$fixlinenr] =~ s/^\+([ \t]+)/"\+" . tabify($1)/e;
			}
			}
		}
		}


@@ -2282,9 +2287,9 @@ sub process {
			if (WARN("SPACE_BEFORE_TAB",
			if (WARN("SPACE_BEFORE_TAB",
				"please, no space before tabs\n" . $herevet) &&
				"please, no space before tabs\n" . $herevet) &&
			    $fix) {
			    $fix) {
				while ($fixed[$linenr - 1] =~
				while ($fixed[$fixlinenr] =~
					   s/(^\+.*) {8,8}+\t/$1\t\t/) {}
					   s/(^\+.*) {8,8}+\t/$1\t\t/) {}
				while ($fixed[$linenr - 1] =~
				while ($fixed[$fixlinenr] =~
					   s/(^\+.*) +\t/$1\t/) {}
					   s/(^\+.*) +\t/$1\t/) {}
			}
			}
		}
		}
@@ -2318,7 +2323,7 @@ sub process {
					if (CHK("PARENTHESIS_ALIGNMENT",
					if (CHK("PARENTHESIS_ALIGNMENT",
						"Alignment should match open parenthesis\n" . $hereprev) &&
						"Alignment should match open parenthesis\n" . $hereprev) &&
					    $fix && $line =~ /^\+/) {
					    $fix && $line =~ /^\+/) {
						$fixed[$linenr - 1] =~
						$fixed[$fixlinenr] =~
						    s/^\+[ \t]*/\+$goodtabindent/;
						    s/^\+[ \t]*/\+$goodtabindent/;
					}
					}
				}
				}
@@ -2329,7 +2334,7 @@ sub process {
			if (CHK("SPACING",
			if (CHK("SPACING",
				"No space is necessary after a cast\n" . $herecurr) &&
				"No space is necessary after a cast\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~
				$fixed[$fixlinenr] =~
				    s/(\(\s*$Type\s*\))[ \t]+/$1/;
				    s/(\(\s*$Type\s*\))[ \t]+/$1/;
			}
			}
		}
		}
@@ -2433,7 +2438,7 @@ sub process {
			if (WARN("LEADING_SPACE",
			if (WARN("LEADING_SPACE",
				 "please, no spaces at the start of a line\n" . $herevet) &&
				 "please, no spaces at the start of a line\n" . $herevet) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/^\+([ \t]+)/"\+" . tabify($1)/e;
				$fixed[$fixlinenr] =~ s/^\+([ \t]+)/"\+" . tabify($1)/e;
			}
			}
		}
		}


@@ -2798,10 +2803,10 @@ sub process {
			if (ERROR("C99_COMMENTS",
			if (ERROR("C99_COMMENTS",
				  "do not use C99 // comments\n" . $herecurr) &&
				  "do not use C99 // comments\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				my $line = $fixed[$linenr - 1];
				my $line = $fixed[$fixlinenr];
				if ($line =~ /\/\/(.*)$/) {
				if ($line =~ /\/\/(.*)$/) {
					my $comment = trim($1);
					my $comment = trim($1);
					$fixed[$linenr - 1] =~ s@\/\/(.*)$@/\* $comment \*/@;
					$fixed[$fixlinenr] =~ s@\/\/(.*)$@/\* $comment \*/@;
				}
				}
			}
			}
		}
		}
@@ -2860,7 +2865,7 @@ sub process {
				  "do not initialise globals to 0 or NULL\n" .
				  "do not initialise globals to 0 or NULL\n" .
				      $herecurr) &&
				      $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/($Type\s*$Ident\s*(?:\s+$Modifier))*\s*=\s*(0|NULL|false)\s*;/$1;/;
				$fixed[$fixlinenr] =~ s/($Type\s*$Ident\s*(?:\s+$Modifier))*\s*=\s*(0|NULL|false)\s*;/$1;/;
			}
			}
		}
		}
# check for static initialisers.
# check for static initialisers.
@@ -2869,7 +2874,7 @@ sub process {
				  "do not initialise statics to 0 or NULL\n" .
				  "do not initialise statics to 0 or NULL\n" .
				      $herecurr) &&
				      $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/(\bstatic\s.*?)\s*=\s*(0|NULL|false)\s*;/$1;/;
				$fixed[$fixlinenr] =~ s/(\bstatic\s.*?)\s*=\s*(0|NULL|false)\s*;/$1;/;
			}
			}
		}
		}


@@ -2899,7 +2904,7 @@ sub process {
			if (ERROR("FUNCTION_WITHOUT_ARGS",
			if (ERROR("FUNCTION_WITHOUT_ARGS",
				  "Bad function definition - $1() should probably be $1(void)\n" . $herecurr) &&
				  "Bad function definition - $1() should probably be $1(void)\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/(\b($Type)\s+($Ident))\s*\(\s*\)/$2 $3(void)/;
				$fixed[$fixlinenr] =~ s/(\b($Type)\s+($Ident))\s*\(\s*\)/$2 $3(void)/;
			}
			}
		}
		}


@@ -2908,7 +2913,7 @@ sub process {
			if (WARN("DEFINE_PCI_DEVICE_TABLE",
			if (WARN("DEFINE_PCI_DEVICE_TABLE",
				 "Prefer struct pci_device_id over deprecated DEFINE_PCI_DEVICE_TABLE\n" . $herecurr) &&
				 "Prefer struct pci_device_id over deprecated DEFINE_PCI_DEVICE_TABLE\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/\b(?:static\s+|)DEFINE_PCI_DEVICE_TABLE\s*\(\s*(\w+)\s*\)\s*=\s*/static const struct pci_device_id $1\[\] = /;
				$fixed[$fixlinenr] =~ s/\b(?:static\s+|)DEFINE_PCI_DEVICE_TABLE\s*\(\s*(\w+)\s*\)\s*=\s*/static const struct pci_device_id $1\[\] = /;
			}
			}
		}
		}


@@ -2945,7 +2950,7 @@ sub process {
					my $sub_from = $ident;
					my $sub_from = $ident;
					my $sub_to = $ident;
					my $sub_to = $ident;
					$sub_to =~ s/\Q$from\E/$to/;
					$sub_to =~ s/\Q$from\E/$to/;
					$fixed[$linenr - 1] =~
					$fixed[$fixlinenr] =~
					    s@\Q$sub_from\E@$sub_to@;
					    s@\Q$sub_from\E@$sub_to@;
				}
				}
			}
			}
@@ -2973,7 +2978,7 @@ sub process {
					my $sub_from = $match;
					my $sub_from = $match;
					my $sub_to = $match;
					my $sub_to = $match;
					$sub_to =~ s/\Q$from\E/$to/;
					$sub_to =~ s/\Q$from\E/$to/;
					$fixed[$linenr - 1] =~
					$fixed[$fixlinenr] =~
					    s@\Q$sub_from\E@$sub_to@;
					    s@\Q$sub_from\E@$sub_to@;
				}
				}
			}
			}
@@ -3035,7 +3040,7 @@ sub process {
			if (WARN("PREFER_PR_LEVEL",
			if (WARN("PREFER_PR_LEVEL",
				 "Prefer pr_warn(... to pr_warning(...\n" . $herecurr) &&
				 "Prefer pr_warn(... to pr_warning(...\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~
				$fixed[$fixlinenr] =~
				    s/\bpr_warning\b/pr_warn/;
				    s/\bpr_warning\b/pr_warn/;
			}
			}
		}
		}
@@ -3069,7 +3074,7 @@ sub process {
			if (WARN("SPACING",
			if (WARN("SPACING",
				 "missing space after $1 definition\n" . $herecurr) &&
				 "missing space after $1 definition\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~
				$fixed[$fixlinenr] =~
				    s/^(.\s*(?:typedef\s+)?(?:enum|union|struct)(?:\s+$Ident){1,2})([=\{])/$1 $2/;
				    s/^(.\s*(?:typedef\s+)?(?:enum|union|struct)(?:\s+$Ident){1,2})([=\{])/$1 $2/;
			}
			}
		}
		}
@@ -3139,7 +3144,7 @@ sub process {
			}
			}


			if (show_type("SPACING") && $fix) {
			if (show_type("SPACING") && $fix) {
				$fixed[$linenr - 1] =~
				$fixed[$fixlinenr] =~
				    s/^(.\s*)$Declare\s*\(\s*\*\s*$Ident\s*\)\s*\(/$1 . $declare . $post_declare_space . '(*' . $funcname . ')('/ex;
				    s/^(.\s*)$Declare\s*\(\s*\*\s*$Ident\s*\)\s*\(/$1 . $declare . $post_declare_space . '(*' . $funcname . ')('/ex;
			}
			}
		}
		}
@@ -3156,7 +3161,7 @@ sub process {
				if (ERROR("BRACKET_SPACE",
				if (ERROR("BRACKET_SPACE",
					  "space prohibited before open square bracket '['\n" . $herecurr) &&
					  "space prohibited before open square bracket '['\n" . $herecurr) &&
				    $fix) {
				    $fix) {
				    $fixed[$linenr - 1] =~
				    $fixed[$fixlinenr] =~
					s/^(\+.*?)\s+\[/$1\[/;
					s/^(\+.*?)\s+\[/$1\[/;
				}
				}
			}
			}
@@ -3191,7 +3196,7 @@ sub process {
				if (WARN("SPACING",
				if (WARN("SPACING",
					 "space prohibited between function name and open parenthesis '('\n" . $herecurr) &&
					 "space prohibited between function name and open parenthesis '('\n" . $herecurr) &&
					     $fix) {
					     $fix) {
					$fixed[$linenr - 1] =~
					$fixed[$fixlinenr] =~
					    s/\b$name\s+\(/$name\(/;
					    s/\b$name\s+\(/$name\(/;
				}
				}
			}
			}
@@ -3459,8 +3464,8 @@ sub process {
				$fixed_line = $fixed_line . $fix_elements[$#elements];
				$fixed_line = $fixed_line . $fix_elements[$#elements];
			}
			}


			if ($fix && $line_fixed && $fixed_line ne $fixed[$linenr - 1]) {
			if ($fix && $line_fixed && $fixed_line ne $fixed[$fixlinenr]) {
				$fixed[$linenr - 1] = $fixed_line;
				$fixed[$fixlinenr] = $fixed_line;
			}
			}




@@ -3471,7 +3476,7 @@ sub process {
			if (WARN("SPACING",
			if (WARN("SPACING",
				 "space prohibited before semicolon\n" . $herecurr) &&
				 "space prohibited before semicolon\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				1 while $fixed[$linenr - 1] =~
				1 while $fixed[$fixlinenr] =~
				    s/^(\+.*\S)\s+;/$1;/;
				    s/^(\+.*\S)\s+;/$1;/;
			}
			}
		}
		}
@@ -3504,7 +3509,7 @@ sub process {
			if (ERROR("SPACING",
			if (ERROR("SPACING",
				  "space required before the open brace '{'\n" . $herecurr) &&
				  "space required before the open brace '{'\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/^(\+.*(?:do|\))){/$1 {/;
				$fixed[$fixlinenr] =~ s/^(\+.*(?:do|\))){/$1 {/;
			}
			}
		}
		}


@@ -3522,7 +3527,7 @@ sub process {
			if (ERROR("SPACING",
			if (ERROR("SPACING",
				  "space required after that close brace '}'\n" . $herecurr) &&
				  "space required after that close brace '}'\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~
				$fixed[$fixlinenr] =~
				    s/}((?!(?:,|;|\)))\S)/} $1/;
				    s/}((?!(?:,|;|\)))\S)/} $1/;
			}
			}
		}
		}
@@ -3532,7 +3537,7 @@ sub process {
			if (ERROR("SPACING",
			if (ERROR("SPACING",
				  "space prohibited after that open square bracket '['\n" . $herecurr) &&
				  "space prohibited after that open square bracket '['\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~
				$fixed[$fixlinenr] =~
				    s/\[\s+/\[/;
				    s/\[\s+/\[/;
			}
			}
		}
		}
@@ -3540,7 +3545,7 @@ sub process {
			if (ERROR("SPACING",
			if (ERROR("SPACING",
				  "space prohibited before that close square bracket ']'\n" . $herecurr) &&
				  "space prohibited before that close square bracket ']'\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~
				$fixed[$fixlinenr] =~
				    s/\s+\]/\]/;
				    s/\s+\]/\]/;
			}
			}
		}
		}
@@ -3551,7 +3556,7 @@ sub process {
			if (ERROR("SPACING",
			if (ERROR("SPACING",
				  "space prohibited after that open parenthesis '('\n" . $herecurr) &&
				  "space prohibited after that open parenthesis '('\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~
				$fixed[$fixlinenr] =~
				    s/\(\s+/\(/;
				    s/\(\s+/\(/;
			}
			}
		}
		}
@@ -3561,7 +3566,8 @@ sub process {
			if (ERROR("SPACING",
			if (ERROR("SPACING",
				  "space prohibited before that close parenthesis ')'\n" . $herecurr) &&
				  "space prohibited before that close parenthesis ')'\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~
				print("fixlinenr: <$fixlinenr> fixed[fixlinenr]: <$fixed[$fixlinenr]>\n");
				$fixed[$fixlinenr] =~
				    s/\s+\)/\)/;
				    s/\s+\)/\)/;
			}
			}
		}
		}
@@ -3580,7 +3586,7 @@ sub process {
			if (WARN("INDENTED_LABEL",
			if (WARN("INDENTED_LABEL",
				 "labels should not be indented\n" . $herecurr) &&
				 "labels should not be indented\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~
				$fixed[$fixlinenr] =~
				    s/^(.)\s+/$1/;
				    s/^(.)\s+/$1/;
			}
			}
		}
		}
@@ -3642,7 +3648,7 @@ sub process {
			if (ERROR("SPACING",
			if (ERROR("SPACING",
				  "space required before the open parenthesis '('\n" . $herecurr) &&
				  "space required before the open parenthesis '('\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~
				$fixed[$fixlinenr] =~
				    s/\b(if|while|for|switch)\(/$1 \(/;
				    s/\b(if|while|for|switch)\(/$1 \(/;
			}
			}
		}
		}
@@ -3779,7 +3785,7 @@ sub process {
					 "Avoid gcc v4.3+ binary constant extension: <$var>\n" . $herecurr) &&
					 "Avoid gcc v4.3+ binary constant extension: <$var>\n" . $herecurr) &&
				    $fix) {
				    $fix) {
					my $hexval = sprintf("0x%x", oct($var));
					my $hexval = sprintf("0x%x", oct($var));
					$fixed[$linenr - 1] =~
					$fixed[$fixlinenr] =~
					    s/\b$var\b/$hexval/;
					    s/\b$var\b/$hexval/;
				}
				}
			}
			}
@@ -3815,7 +3821,7 @@ sub process {
			if (WARN("WHITESPACE_AFTER_LINE_CONTINUATION",
			if (WARN("WHITESPACE_AFTER_LINE_CONTINUATION",
				 "Whitespace after \\ makes next lines useless\n" . $herecurr) &&
				 "Whitespace after \\ makes next lines useless\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/\s+$//;
				$fixed[$fixlinenr] =~ s/\s+$//;
			}
			}
		}
		}


@@ -4170,7 +4176,7 @@ sub process {
				      WARN("MISPLACED_INIT",
				      WARN("MISPLACED_INIT",
					   "$attr should be placed after $var\n" . $herecurr))) &&
					   "$attr should be placed after $var\n" . $herecurr))) &&
				    $fix) {
				    $fix) {
					$fixed[$linenr - 1] =~ s/(\bstatic\s+(?:const\s+)?)(?:$attr\s+)?($NonptrTypeWithAttr)\s+(?:$attr\s+)?($Ident(?:\[[^]]*\])?)\s*([=;])\s*/"$1" . trim(string_find_replace($2, "\\s*$attr\\s*", " ")) . " " . trim(string_find_replace($3, "\\s*$attr\\s*", "")) . " $attr" . ("$4" eq ";" ? ";" : " = ")/e;
					$fixed[$fixlinenr] =~ s/(\bstatic\s+(?:const\s+)?)(?:$attr\s+)?($NonptrTypeWithAttr)\s+(?:$attr\s+)?($Ident(?:\[[^]]*\])?)\s*([=;])\s*/"$1" . trim(string_find_replace($2, "\\s*$attr\\s*", " ")) . " " . trim(string_find_replace($3, "\\s*$attr\\s*", "")) . " $attr" . ("$4" eq ";" ? ";" : " = ")/e;
				}
				}
			}
			}
		}
		}
@@ -4184,7 +4190,7 @@ sub process {
			if (ERROR("INIT_ATTRIBUTE",
			if (ERROR("INIT_ATTRIBUTE",
				  "Use of const init definition must use ${attr_prefix}initconst\n" . $herecurr) &&
				  "Use of const init definition must use ${attr_prefix}initconst\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~
				$fixed[$fixlinenr] =~
				    s/$InitAttributeData/${attr_prefix}initconst/;
				    s/$InitAttributeData/${attr_prefix}initconst/;
			}
			}
		}
		}
@@ -4195,12 +4201,12 @@ sub process {
			if (ERROR("INIT_ATTRIBUTE",
			if (ERROR("INIT_ATTRIBUTE",
				  "Use of $attr requires a separate use of const\n" . $herecurr) &&
				  "Use of $attr requires a separate use of const\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				my $lead = $fixed[$linenr - 1] =~
				my $lead = $fixed[$fixlinenr] =~
				    /(^\+\s*(?:static\s+))/;
				    /(^\+\s*(?:static\s+))/;
				$lead = rtrim($1);
				$lead = rtrim($1);
				$lead = "$lead " if ($lead !~ /^\+$/);
				$lead = "$lead " if ($lead !~ /^\+$/);
				$lead = "${lead}const ";
				$lead = "${lead}const ";
				$fixed[$linenr - 1] =~ s/(^\+\s*(?:static\s+))/$lead/;
				$fixed[$fixlinenr] =~ s/(^\+\s*(?:static\s+))/$lead/;
			}
			}
		}
		}


@@ -4213,7 +4219,7 @@ sub process {
			if (WARN("CONSTANT_CONVERSION",
			if (WARN("CONSTANT_CONVERSION",
				 "$constant_func should be $func\n" . $herecurr) &&
				 "$constant_func should be $func\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/\b$constant_func\b/$func/g;
				$fixed[$fixlinenr] =~ s/\b$constant_func\b/$func/g;
			}
			}
		}
		}


@@ -4263,7 +4269,7 @@ sub process {
			if (ERROR("SPACING",
			if (ERROR("SPACING",
				  "exactly one space required after that #$1\n" . $herecurr) &&
				  "exactly one space required after that #$1\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~
				$fixed[$fixlinenr] =~
				    s/^(.\s*\#\s*(ifdef|ifndef|elif))\s{2,}/$1 /;
				    s/^(.\s*\#\s*(ifdef|ifndef|elif))\s{2,}/$1 /;
			}
			}


@@ -4311,7 +4317,7 @@ sub process {
			if (WARN("INLINE",
			if (WARN("INLINE",
				 "plain inline is preferred over $1\n" . $herecurr) &&
				 "plain inline is preferred over $1\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/\b(__inline__|__inline)\b/inline/;
				$fixed[$fixlinenr] =~ s/\b(__inline__|__inline)\b/inline/;


			}
			}
		}
		}
@@ -4336,7 +4342,7 @@ sub process {
			if (WARN("PREFER_PRINTF",
			if (WARN("PREFER_PRINTF",
				 "__printf(string-index, first-to-check) is preferred over __attribute__((format(printf, string-index, first-to-check)))\n" . $herecurr) &&
				 "__printf(string-index, first-to-check) is preferred over __attribute__((format(printf, string-index, first-to-check)))\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/\b__attribute__\s*\(\s*\(\s*format\s*\(\s*printf\s*,\s*(.*)\)\s*\)\s*\)/"__printf(" . trim($1) . ")"/ex;
				$fixed[$fixlinenr] =~ s/\b__attribute__\s*\(\s*\(\s*format\s*\(\s*printf\s*,\s*(.*)\)\s*\)\s*\)/"__printf(" . trim($1) . ")"/ex;


			}
			}
		}
		}
@@ -4347,7 +4353,7 @@ sub process {
			if (WARN("PREFER_SCANF",
			if (WARN("PREFER_SCANF",
				 "__scanf(string-index, first-to-check) is preferred over __attribute__((format(scanf, string-index, first-to-check)))\n" . $herecurr) &&
				 "__scanf(string-index, first-to-check) is preferred over __attribute__((format(scanf, string-index, first-to-check)))\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/\b__attribute__\s*\(\s*\(\s*format\s*\(\s*scanf\s*,\s*(.*)\)\s*\)\s*\)/"__scanf(" . trim($1) . ")"/ex;
				$fixed[$fixlinenr] =~ s/\b__attribute__\s*\(\s*\(\s*format\s*\(\s*scanf\s*,\s*(.*)\)\s*\)\s*\)/"__scanf(" . trim($1) . ")"/ex;
			}
			}
		}
		}


@@ -4362,7 +4368,7 @@ sub process {
			if (WARN("SIZEOF_PARENTHESIS",
			if (WARN("SIZEOF_PARENTHESIS",
				 "sizeof $1 should be sizeof($1)\n" . $herecurr) &&
				 "sizeof $1 should be sizeof($1)\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/\bsizeof\s+((?:\*\s*|)$Lval|$Type(?:\s+$Lval|))/"sizeof(" . trim($1) . ")"/ex;
				$fixed[$fixlinenr] =~ s/\bsizeof\s+((?:\*\s*|)$Lval|$Type(?:\s+$Lval|))/"sizeof(" . trim($1) . ")"/ex;
			}
			}
		}
		}


@@ -4385,7 +4391,7 @@ sub process {
				if (WARN("PREFER_SEQ_PUTS",
				if (WARN("PREFER_SEQ_PUTS",
					 "Prefer seq_puts to seq_printf\n" . $herecurr) &&
					 "Prefer seq_puts to seq_printf\n" . $herecurr) &&
				    $fix) {
				    $fix) {
					$fixed[$linenr - 1] =~ s/\bseq_printf\b/seq_puts/;
					$fixed[$fixlinenr] =~ s/\bseq_printf\b/seq_puts/;
				}
				}
			}
			}
		}
		}
@@ -4414,7 +4420,7 @@ sub process {
			if (WARN("PREFER_ETHER_ADDR_COPY",
			if (WARN("PREFER_ETHER_ADDR_COPY",
				 "Prefer ether_addr_copy() over memcpy() if the Ethernet addresses are __aligned(2)\n" . $herecurr) &&
				 "Prefer ether_addr_copy() over memcpy() if the Ethernet addresses are __aligned(2)\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/\bmemcpy\s*\(\s*$FuncArg\s*,\s*$FuncArg\s*\,\s*ETH_ALEN\s*\)/ether_addr_copy($2, $7)/;
				$fixed[$fixlinenr] =~ s/\bmemcpy\s*\(\s*$FuncArg\s*,\s*$FuncArg\s*\,\s*ETH_ALEN\s*\)/ether_addr_copy($2, $7)/;
			}
			}
		}
		}


@@ -4502,7 +4508,7 @@ sub process {
			if (CHK("AVOID_EXTERNS",
			if (CHK("AVOID_EXTERNS",
				"extern prototypes should be avoided in .h files\n" . $herecurr) &&
				"extern prototypes should be avoided in .h files\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/(.*)\bextern\b\s*(.*)/$1$2/;
				$fixed[$fixlinenr] =~ s/(.*)\bextern\b\s*(.*)/$1$2/;
			}
			}
		}
		}


@@ -4579,7 +4585,7 @@ sub process {
				if (WARN("ALLOC_WITH_MULTIPLY",
				if (WARN("ALLOC_WITH_MULTIPLY",
					 "Prefer $newfunc over $oldfunc with multiply\n" . $herecurr) &&
					 "Prefer $newfunc over $oldfunc with multiply\n" . $herecurr) &&
				    $fix) {
				    $fix) {
					$fixed[$linenr - 1] =~ s/\b($Lval)\s*\=\s*(?:$balanced_parens)?\s*(k[mz]alloc)\s*\(\s*($FuncArg)\s*\*\s*($FuncArg)/$1 . ' = ' . "$newfunc(" . trim($r1) . ', ' . trim($r2)/e;
					$fixed[$fixlinenr] =~ s/\b($Lval)\s*\=\s*(?:$balanced_parens)?\s*(k[mz]alloc)\s*\(\s*($FuncArg)\s*\*\s*($FuncArg)/$1 . ' = ' . "$newfunc(" . trim($r1) . ', ' . trim($r2)/e;


				}
				}
			}
			}
@@ -4603,7 +4609,7 @@ sub process {
			if (WARN("ONE_SEMICOLON",
			if (WARN("ONE_SEMICOLON",
				 "Statements terminations use 1 semicolon\n" . $herecurr) &&
				 "Statements terminations use 1 semicolon\n" . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/(\s*;\s*){2,}$/;/g;
				$fixed[$fixlinenr] =~ s/(\s*;\s*){2,}$/;/g;
			}
			}
		}
		}


@@ -4651,7 +4657,7 @@ sub process {
			if (WARN("USE_FUNC",
			if (WARN("USE_FUNC",
				 "__func__ should be used instead of gcc specific __FUNCTION__\n"  . $herecurr) &&
				 "__func__ should be used instead of gcc specific __FUNCTION__\n"  . $herecurr) &&
			    $fix) {
			    $fix) {
				$fixed[$linenr - 1] =~ s/\b__FUNCTION__\b/__func__/g;
				$fixed[$fixlinenr] =~ s/\b__FUNCTION__\b/__func__/g;
			}
			}
		}
		}