PATCH] patch to generate warning when signed-of line in patch in not proper
On Sat, May 21, 2011 at 9:33 PM, Joe Perches <[email protected]> wrote:
Quoted 14 lines · anish singh
Re-sending to get some comments on this.
On Thu, May 19, 2011 at 10:53 PM, anish <[email protected]> wrote:
From: anish kumar <[email protected]>This patch generates warning when there is no space between the
patch submitter name and successive mail-id.Quoted 3 lines
If you do this, why not do it for all signature types?
our $Valid_Signatures "(?:Signed-off-by:|Reviewed-by:|Acked-by:)"
Definitely.Please check below modified patch.
Quoted 10 lines
Signed-off-by: anish kumar <[email protected]> --- scripts/checkpatch.pl | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index d867081..437c6d4 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -1373,10 +1373,16 @@ sub process {
Quoted 26 lines
WARN("Signed-off-by: is the preferred form\n" . $herecurr); } - if ($line =~ /^\s*signed-off-by:\S/i) { - WARN("space required after Signed-off-by:\n" .Quoted 16 lines
if ($line =~ /^(\s*)($ValidSignatures)(\s*)(.*)$/i) { my $space_before = $1; my $sign_off = $2; my $space_after = $3; my $email = $4; if (defined $space_before && $space_before ne "") { warning (no space before...) } if ($sign_off !~ /$Valid_Signature/) { warning (signature case...) } if (!defined $space_after || $space_after ne " ") { warning (need only one space after colon...) } if (!validate_email($4)) { warning (bad email...)
Please check the below patch.
--------------------------------------------------------------------------
From: anish kumar <[email protected]>
This patch generates warning when there is no space betweenthe patch submitter name and successive mail-id.As suggested by
Joe Perches([email protected]) that we can do this for
all signature types.
--- scripts/checkpatch.pl | 38 ++++++++++++++++++++++++-------------- 1 files changed, 24 insertions(+), 14 deletions(-)
scripts/checkpatch.pl +24 -14
@@ -29,6 +29,8 @@ my $summary_file = 0; my $root; my %debug; my $help = 0; +my $sign; +my @signs = ("Reviewed-by:","Acked-by:","Signed-off-by:","Tested-by:"); sub help { my ($exitcode) = @_;
@@ -1365,20 +1367,27 @@ sub process { } } -#check the patch for a signoff: - if ($line =~ /^\s*signed-off-by:/i) { - # This is a signoff, if ugly, so do not double report. - $signoff++; - if (!($line =~ /^\s*Signed-off-by:/)) { - WARN("Signed-off-by: is the preferred form\n" . - $herecurr); - } - if ($line =~ /^\s*signed-off-by:\S/i) { - WARN("space required after Signed-off-by:\n" . - $herecurr); - } - } - +#check the patch for a signoff/Reviewed/Acked/Tested: + foreach $sign (@signs) { + if ($line =~ /^\s*$sign/i) { + # This is a signoff, if ugly, so do not double report. + $signoff++; + if (!($line =~ /^\s*$sign/)) { + WARN("$sign is the preferred form\n" . + $herecurr); + } + if ($line =~ /^\s*$sign(.*)/i) { + if($1 !~ /^\s*(\s[a-zA-Z]*.*)/i) { + WARN("Space required after $sign\n" . + $herecurr); + } + if($1 !~ /[\sa-zA-Z]+\s<.*>/i) { + WARN("Space required b/w Full Name & Mail-id:\n" . + $herecurr); + } + } + } +} # Check for wrappage within a valid hunk of the file if ($realcnt != 0 && $line !~ m{^(?:\+|-| |\\ No newline|$)}) { ERROR("patch seems to be corrupt (line wrapped?)\n" .
@@ -2964,3 +2973,4 @@ sub process { return $clean; } +
Signature · 1 line
1.7.0.4
Joe Perches
maintainerQuoted 4 lines · anish
Quoted 2 lines · Joe Perches
Quoted 2 lines
If you do this, why not do it for all signature types? our $Valid_Signatures "(?:Signed-off-by:|Reviewed-by:|Acked-by:)"
Definitely.Please check below modified patch.
[]
Quoted 4 lines
This patch generates warning when there is no space betweenthe patch submitter name and successive mail-id.As suggested by
Joe Perches([email protected]) that we can do this for
all signature types.
Typos and spacing issues in commit message.
scripts/checkpatch.pl
Quoted 2 lines
Signed-off-by anish kumar <[email protected]>scripts/checkpatch.pl +0
-0
[]
scripts/checkpatch.pl my $summary_file = 0; · line 33
Quoted 2 lines
scripts/checkpatch.pl +2
-0+my $sign; +my @signs = ("Reviewed-by:","Acked-by:","Signed-off-by:","Tested-by:");
[]
scripts/checkpatch.pl sub process { · line 1371
Quoted 2 lines
scripts/checkpatch.pl +2
-0+#check the patch for a signoff/Reviewed/Acked/Tested: + foreach $sign (@signs) {
It's inefficient to loop for this.
I think what I suggested is neater,
but what you're doing is OK.
Your email subject line should be more like:
[PATCH] checkpatch: More signature format verification
And when you revise patches, use some version number in the [PATCH] block like:
[PATCH v2] checkpatch: etc...
cheers, Joe
PATCH v2 1/1 checkpatch: Signature format verification
In reply to anishFrom: anish kumar <[email protected]>
This patch generates warning when there is no space between the patch submitter and successive mail-id.
Modification:Suggested by Joe Perches([email protected]) that we can add this check for all signature types so added that change and added logic to remove the inefficent looping so that it can come out as soon as signature type is matched.
--- scripts/checkpatch.pl | 30 +++++++++++++++++++++--------- 1 files changed, 21 insertions(+), 9 deletions(-)
scripts/checkpatch.pl +21 -9
@@ -29,6 +29,8 @@ my $summary_file = 0; my $root; my %debug; my $help = 0; +my ($sign,$loop_brk); +my @signs = ("Reviewed-by:","Acked-by:","Signed-off-by:","Tested-by:"); sub help { my ($exitcode) = @_;
@@ -1365,20 +1367,30 @@ sub process { } } -#check the patch for a signoff: - if ($line =~ /^\s*signed-off-by:/i) { - # This is a signoff, if ugly, so do not double report. - $signoff++; - if (!($line =~ /^\s*Signed-off-by:/)) { - WARN("Signed-off-by: is the preferred form\n" . +#check the patch for a signoff/Reviewed/Acked/Tested: +foreach $sign (@signs) { + $loop_brk=0; + if ($line =~ /^\s*$sign/i) { + # This is a signoff, if ugly, so do not double report. + $signoff++; + $loop_brk++; + if (!($line =~ /^\s*$sign/)) { + WARN("$sign is the preferred form\n" . + $herecurr); + } + if ($line =~ /^\s*$sign(.*)/i) { + if($1 !~ /^\s*(\s[a-zA-Z]*.*)/i) { + WARN("Space required after $sign\n" . $herecurr); } - if ($line =~ /^\s*signed-off-by:\S/i) { - WARN("space required after Signed-off-by:\n" . + if($1 !~ /[\sa-zA-Z]+\s<.*>/i) { + WARN("Space required b/w Full Name & Mail-id:\n" . $herecurr); } } - + } +last if ($loop_brk == 1); +} # Check for wrappage within a valid hunk of the file if ($realcnt != 0 && $line !~ m{^(?:\+|-| |\\ No newline|$)}) { ERROR("patch seems to be corrupt (line wrapped?)\n" .
Signature · 1 line
1.7.0.4
Joe Perches
maintainerRe: [patch v2] checkpatch: Signature format verification
Quoted 2 lines · anish
This patch generates warning when there is no space between the patch submitter and successive mail-id.
[]
Quoted 1 line
Signed-off-by anish kumar <[email protected]>
[]
scripts/checkpatch.pl my $summary_file = 0; · line 32
Quoted 9 lines
scripts/checkpatch.pl +1
-0@@ -29,6 +29,8 @@ my $summary_file = 0; my $root; my %debug; my $help = 0; +my ($sign,$loop_brk);
These 2 variables don't need to be at this scope.
scripts/checkpatch.pl sub process {
Quoted 1 line
scripts/checkpatch.pl +0
-0@@ -1365,20 +1367,30 @@ sub process {
[]
scripts/checkpatch.pl sub process { · line 1371
Quoted 2 lines
scripts/checkpatch.pl +2
-0+#check the patch for a signoff/Reviewed/Acked/Tested: +foreach $sign (@signs) {
Please use the appropriate indentation or add a new function.
A message that is not in the archive (sent off-list or not yet received): [email protected]
Joe Perches
maintainerRe: [patch v2] checkpatch: Signature format verification
Quoted 7 lines · anish singh
On Sun, May 22, 2011 at 7:46 PM, Joe Perches <[email protected]> wrote:
On Sun, 2011-05-22 at 15:48 +0530, anish wrote:
> This patch generates warning when there is no space between > the patch submitter and successive mail-id.
[]
What does this mean?I checked in kernelnewbies archives and asked on IRC channel but couldn't get the meaning.Kindly let me know.
It means I didn't quote all of your original message.
Re: [patch v2] checkpatch: Signature format verification
Quoted 11 lines · Joe Perches
Quoted 7 lines · anish singh
On Sun, May 22, 2011 at 7:46 PM, Joe Perches <[email protected]> wrote:
On Sun, 2011-05-22 at 15:48 +0530, anish wrote:
> This patch generates warning when there is no space between > the patch submitter and successive mail-id.
[]
What does this mean?I checked in kernelnewbies archives and asked on IRC channel but couldn't get the meaning.Kindly let me know.It means I didn't quote all of your original message.
Of course, we usually do "[...]" or "[..]". Without the dots, it just looks like some kind of uninitialized array.
-- Steve
Joe Perches
maintainerRe: [patch v2] checkpatch: Signature format verification
Quoted 8 lines · Steven Rostedt
Quoted 5 lines · Joe Perches
Quoted 3 lines · anish singh
On Sun, May 22, 2011 at 7:46 PM, Joe Perches <[email protected]> wrote:
[]What does this mean?
It means I didn't quote all of your original message.
Of course, we usually do "[...]" or "[..]". Without the dots, it just looks like some kind of uninitialized array.
Email isn't C and I'm a trendsetter. (Either that or I'm alone again in right field...)
cheers, Joe
PATCH v3 1/1 checkpatch: Signature format verification
In reply to anishFrom: anish kumar <[email protected]>
This patch generates warning when there is no space between the patch submitter and successive mail-id.
V2 Modification:Suggested by Joe Perches([email protected]) that we can add this check for all signature types so added that change and added logic to remove the inefficent looping so that it can come out as soon as signature type is matched.
V3 Modification:Moved the variable from global to local scope.
--- scripts/checkpatch.pl | 36 ++++++++++++++++++++++++------------ 1 files changed, 24 insertions(+), 12 deletions(-)
scripts/checkpatch.pl +24 -12
@@ -1365,20 +1365,32 @@ sub process { } } -#check the patch for a signoff: - if ($line =~ /^\s*signed-off-by:/i) { - # This is a signoff, if ugly, so do not double report. - $signoff++; - if (!($line =~ /^\s*Signed-off-by:/)) { - WARN("Signed-off-by: is the preferred form\n" . - $herecurr); - } - if ($line =~ /^\s*signed-off-by:\S/i) { - WARN("space required after Signed-off-by:\n" . - $herecurr); +#check the patch for a signoff/Reviewed/Acked/Tested: + my ($sign,$loop_brk); + my @signs = ("Reviewed-by:","Acked-by:","Signed-off-by:","Tested-by:"); + foreach $sign (@signs) { + $loop_brk=0; + if ($line =~ /^\s*$sign/i) { + # This is a signoff, if ugly, so do not double report. + $signoff++; + $loop_brk++; + if (!($line =~ /^\s*$sign/)) { + WARN("$sign is the preferred form\n" . + $herecurr); + } + if ($line =~ /^\s*$sign(.*)/i) { + if($1 !~ /^\s*(\s[a-zA-Z]*.*)/i) { + WARN("Space required after $sign\n" . + $herecurr); + } + if($1 !~ /[\sa-zA-Z]+\s<.*>/i) { + WARN("Space required b/w Full Name & Mail-id:\n" . + $herecurr); + } + } } + last if ($loop_brk == 1); } - # Check for wrappage within a valid hunk of the file if ($realcnt != 0 && $line !~ m{^(?:\+|-| |\\ No newline|$)}) { ERROR("patch seems to be corrupt (line wrapped?)\n" .
Signature · 1 line
1.7.0.4
Joe Perches
maintainerRe: [patch v3] checkpatch: Signature format verification
Quoted 3 lines · anish
From: anish kumar <[email protected]> This patch generates warning when there is no space between the patch submitter and successive mail-id.
[]
scripts/checkpatch.pl
Quoted 1 line
scripts/checkpatch.pl +0
-0
[]
scripts/checkpatch.pl sub process { · line 1377
Quoted 1 line
scripts/checkpatch.pl +1
-0+ if (!($line =~ /^\s*$sign/)) {
if ($line !~ /etc...)
scripts/checkpatch.pl sub process { · line 1382
Quoted 5 lines
scripts/checkpatch.pl +5
-0+ WARN("$sign is the preferred form\n" . + $herecurr); + } + if ($line =~ /^\s*$sign(.*)/i) { + if($1 !~ /^\s*(\s[a-zA-Z]*.*)/i) {
Email addresses may start with a quote (") or a digit.
Space between if and (
scripts/checkpatch.pl sub process { · line 1386
Quoted 4 lines
scripts/checkpatch.pl +4
-0+ WARN("Space required after $sign\n" . + $herecurr); + } + if($1 !~ /[\sa-zA-Z]+\s<.*>/i) {
Space between if and (
A message that is not in the archive (sent off-list or not yet received): [email protected]
Joe Perches
maintainerRe: [patch v3] checkpatch: Signature format verification
Quoted 7 lines · anish singh
\s[a-zA-Z]* => this is a regular expression for name & space b/w Last/First name
Ex: anish kumar
.* => It is used to grep whatever follows name...in our context mail-id
Ex: [email protected].
So, $1 will contain ...'anish kumar <[email protected]>'
Unless the email contains a quote or a period like:
Re: [patch v3] checkpatch: Signature format verification
Quoted 9 lines · On Mon, 23 May 2011 09:36:38 -0700 Joe Perches wrote:
Quoted 7 lines · anish singh
\s[a-zA-Z]* => this is a regular expression for name & space b/w Last/First name
Ex: anish kumar
.* => It is used to grep whatever follows name...in our context mail-id
Ex: [email protected].
So, $1 will contain ...'anish kumar <[email protected]>'
Quoted 3 lines
Unless the email contains a quote or a period like:
Signed-off-by "J. Random Contributor" <[email protected]>
and quotes are not required (i.e., are optional) AFAIK.
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
Joe Perches
maintainerRe: [patch v3] checkpatch: Signature format verification
Quoted 9 lines · Randy Dunlap
Quoted 8 lines · On Mon, 23 May 2011 09:36:38 -0700 Joe Perches wrote:
Quoted 7 lines · anish singh
\s[a-zA-Z]* => this is a regular expression for name & space b/w Last/First name
Ex: anish kumar
.* => It is used to grep whatever follows name...in our context mail-id
Ex: [email protected].
So, $1 will contain ...'anish kumar <[email protected]>'
Quoted 3 lines
Quoted 2 lines
Unless the email contains a quote or a period like:
Signed-off-by "J. Random Contributor" <[email protected]>and quotes are not required (i.e., are optional) AFAIK.
And still should be accepted.
A message that is not in the archive (sent off-list or not yet received): [email protected]
Re: [patch v3] checkpatch: Signature format verification
Quoted 16 lines · On Mon, 23 May 2011 22:36:12 +0530 anish singh wrote:
Quoted 14 lines · Joe Perches
Quoted 12 lines · Randy Dunlap
Quoted 10 lines · On Mon, 23 May 2011 09:36:38 -0700 Joe Perches wrote:
Quoted 7 lines · anish singh
\s[a-zA-Z]* => this is a regular expression for name & space b/w Last/First name
Ex: anish kumar
.* => It is used to grep whatever follows name...in our context mail-id
Ex: [email protected].
So, $1 will contain ...'anish kumar <[email protected]>'Unless the email contains a quote or a period like:
Signed-off-by "J. Random Contributor" <[email protected]>and quotes are not required (i.e., are optional) AFAIK.
Quoted 8 lines
Quoted 2 lines
And still should be accepted.
if ($1 !~ /^\s+([a-zA-Z\s\"]*.*)/i) {
WARN("Space required after $sign\n" . $herecurr);
}
if ($1 !~ /[\sa-zA-Z\"]*\s<.*>/i) { WARN("Space required b/w Full Name & Mail-id:\n" .
"b/w" is not a good abbreviation (for "between" ???).
Quoted 3 lines
$herecurr); }Qoute has been taken care too now.
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
Joe Perches
maintainerRe: [patch v3] checkpatch: Signature format verification
In reply to a message not in the archiveQuoted 5 lines · anish singh
if ($1 !~ /[\sa-zA-Z\"]*\s<.*>/i) { WARN("Space required b/w Full Name & Mail-id:\n" .
$herecurr); }Quote has been taken care too now.
If you're going to try to validate email addresses, please do it reasonably correctly or not at all.
At a minimum you need to add digits, single quote, period, and comma.
Look at git-send-email.perl or scripts/get_maintainer.pl for email address validation samples.
A message that is not in the archive (sent off-list or not yet received): [email protected]
Joe Perches
maintainerRe: [patch v3] checkpatch: Signature format verification
Quoted 6 lines · anish singh
On Mon, May 23, 2011 at 10:48 PM, Joe Perches <[email protected]> wrote:
Quoted 4 lines · anish singh
Quoted 4 lines
if ($1 !~ /[\sa-zA-Z\"]*\s<.*>/i) { WARN("Space required b/w Full Name & Mail-id:\n" .
$herecurr);Quote has been taken care too now.
Quoted 7 lines
Quoted 4 lines
If you're going to try to validate email addresses, please do it reasonably correctly or not at all. At a minimum you need to add digits, single quote, period, and comma.
I think there is a confusion.Let me state it once again. This patch is used to check space between "signs" & name/ name & mail-id.
I'm not confused.
You are only checking names with this form (without quotes) "First Last <[email protected]>", now quoted as well.
Names can have many forms.
8 bit chars, commas, quotes, apostrophes, all sorts of things.
for instance:
$ git log v2.6.36.. | grep -P "by:.*" | \ grep -vP "by:[\sa-zA-Z\"]*\s<.*>" | \ sort | uniq -c | sort -rn | head -20 3421 Signed-off-by: David S. Miller <[email protected]> 3137 Signed-off-by: Greg Kroah-Hartman <[email protected]> 2232 Signed-off-by: John W. Linville <[email protected]> 386 Signed-off-by: Wey-Yi Guy <[email protected]> 292 Signed-off-by: Gustavo F. Padovan <[email protected]> 257 Signed-off-by: Uwe Kleine-König <[email protected]> 223 Signed-off-by: Rafael J. Wysocki <[email protected]> 193 Signed-off-by: J. Bruce Fields <[email protected]> 167 Signed-off-by: "Theodore Ts'o" <[email protected]> 166 Signed-off-by: H. Peter Anvin <[email protected]> 159 Signed-off-by: Paul E. McKenney <[email protected]> 126 Signed-off-by: Jean-François Moine <[email protected]> 121 Signed-off-by: Luis R. Rodriguez <[email protected]> 107 Signed-off-by: Michał Mirosław <[email protected]> 106 Acked-by: David S. Miller <[email protected]> 103 Signed-off-by: Rafał Miłecki <[email protected]> 76 Signed-off-by: Aneesh Kumar K.V <[email protected]> 69 Signed-off-by: Lars-Peter Clausen <[email protected]> 66 Signed-off-by: Stephen M. Cameron <[email protected]> 63 Signed-off-by: Justin P. Mattock <[email protected]>
I still think what I suggested after your first patch attempt is simple and appropriate.
our $Valid_Signatures "(?:Signed-off-by:|Reviewed-by:|Acked-by:)"
...
if ($line =~ /^(\s*)($ValidSignatures)(\s*)(.*)$/i) {
my $space_before = $1;
my $sign_off = $2;
my $space_after = $3;
my $email = $4;
if (defined $space_before && $space_before ne "") {
warning (no space before...)
}
if ($sign_off !~ /$Valid_Signature/) {
warning (signature case...)
}
if (!defined $space_after || $space_after ne " ") {
warning (need only one space after colon...)
}
if (!validate_email($4)) {
warning (bad email...)Re: [patch v3] checkpatch: Signature format verification
Quoted 1 line · Joe Perches
167 Signed-off-by: "Theodore Ts'o" <[email protected]>
personally, i dont think those quotes should be there -mike
Re: [patch v3] checkpatch: Signature format verification
Quoted 4 lines · Mike Frysinger
Quoted 1 line · Joe Perches
167 Signed-off-by: "Theodore Ts'o" <[email protected]>
personally, i dont think those quotes should be there
Although not strictly required by the ABNF of RFC822 and its successors, it's probably a wise thing to apply the double quotes in this case anyhow, due to the fairly high likelyhood that some software will choke on the ' character in Ted's last name if unquoted.
Re: [patch v3] checkpatch: Signature format verification
Quoted 10 lines · On Mon, May 23, 2011 at 21:24, <[email protected]> wrote:
Quoted 4 lines · Mike Frysinger
Quoted 1 line · Joe Perches
167 Signed-off-by: "Theodore Ts'o" <[email protected]>
personally, i dont think those quotes should be there
Although not strictly required by the ABNF of RFC822 and its successors, it's probably a wise thing to apply the double quotes in this case anyhow, due to the fairly high likelyhood that some software will choke on the ' character in Ted's last name if unquoted.
then people will notice their software blows and they'll fix it
i dont have a problem with "over" quoting with the From/To/CC headers in say git format-patch or git send-email, but i dont think they make sense in s-o-b/related tags.
-mike
Re: [patch v3] checkpatch: Signature format verification
Quoted 12 lines · On Mon, 23 May 2011 21:31:29 -0400 Mike Frysinger wrote:
Quoted 10 lines · On Mon, May 23, 2011 at 21:24, <[email protected]> wrote:
Quoted 4 lines · Mike Frysinger
Quoted 1 line · Joe Perches
167 Signed-off-by: "Theodore Ts'o" <[email protected]>
personally, i dont think those quotes should be there
Although not strictly required by the ABNF of RFC822 and its successors, it's probably a wise thing to apply the double quotes in this case anyhow, due to the fairly high likelyhood that some software will choke on the ' character in Ted's last name if unquoted.
Quoted 5 lines
then people will notice their software blows and they'll fix it
i dont have a problem with "over" quoting with the From/To/CC headers in say
git format-patchorgit send-email, but i dont think they make sense in s-o-b/related tags.
They certainly facilitate copy-and-paste at least.
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
PATCH v4 1/1 checkpatch: Signature format verification
In reply to anishFrom: anish kumar <[email protected]>
This patch generates warning when there is no space between the patch submitter and successive mail-id.
V2 Modification:Suggested by Joe Perches([email protected]) that we can add this check for all signature types so added that change and added logic to remove the inefficent looping so that it can come out as soon as signature type is matched.
V3 Modification:Moved the variable from global to local scope.
v4 Suggested by Joe Perches([email protected]) that names can have many forms.8 bit chars,commas,quotes,apostrphes,all sort of things.This is now taken care of.
--- scripts/checkpatch.pl | 36 ++++++++++++++++++++++++------------ 1 files changed, 24 insertions(+), 12 deletions(-)
scripts/checkpatch.pl +24 -12
@@ -1365,20 +1365,32 @@ sub process { } } -#check the patch for a signoff: - if ($line =~ /^\s*signed-off-by:/i) { - # This is a signoff, if ugly, so do not double report. - $signoff++; - if (!($line =~ /^\s*Signed-off-by:/)) { - WARN("Signed-off-by: is the preferred form\n" . - $herecurr); - } - if ($line =~ /^\s*signed-off-by:\S/i) { - WARN("space required after Signed-off-by:\n" . - $herecurr); +#check the patch for a signoff/Reviewed/Acked/Tested: + my ($sign,$loop_brk); + my @signs = ("Reviewed-by:","Acked-by:","Signed-off-by:","Tested-by:"); + foreach $sign (@signs) { + $loop_brk=0; + if ($line =~ /^\s*$sign/i) { + # This is a signoff, if ugly, so do not double report. + $signoff++; + $loop_brk++; + if (!($line =~ /^\s*$sign/)) { + WARN("$sign is the preferred form\n" . + $herecurr); + } + if ($line =~ /^\s*$sign(.*)/i) { + if ($1 !~ /^\s+([a-zA-Z\s\"\.\-\'\,]*.*)/i) { + WARN("Space required after $sign\n" . + $herecurr); + } + if ($1 !~ /([\sa-zA-Z\"\.\-\'\,]*)\s<.*>/i) { + WARN("Space required b/w Full Name & Mail-id:\n" . + $herecurr); + } + } } + last if ($loop_brk == 1); } - # Check for wrappage within a valid hunk of the file if ($realcnt != 0 && $line !~ m{^(?:\+|-| |\\ No newline|$)}) { ERROR("patch seems to be corrupt (line wrapped?)\n" .
Signature · 1 line
1.7.0.4
Re: [patch v4] checkpatch: Signature format verification
Quoted 12 lines · anish
From: anish kumar <[email protected]>
scripts/checkpatch.pl +9
-0+ my ($sign,$loop_brk); + my @signs = ("Reviewed-by:","Acked-by:","Signed-off-by:","Tested-by:"); + foreach $sign (@signs) { + $loop_brk=0; + if ($line =~ /^\s*$sign/i) { + # This is a signoff, if ugly, so do not double report. + $signoff++; + $loop_brk++; + if (!($line =~ /^\s*$sign/)) {
scripts/checkpatch.pl sub process { · line 1387
Quoted 10 lines
scripts/checkpatch.pl +10
-0+ WARN("$sign is the preferred form\n" . + $herecurr); + } + if ($line =~ /^\s*$sign(.*)/i) { + if ($1 !~ /^\s+([a-zA-Z\s\"\.\-\'\,]*.*)/i) { + WARN("Space required after $sign\n" . + $herecurr); + } + if ($1 !~ /([\sa-zA-Z\"\.\-\'\,]*)\s<.*>/i) { + WARN("Space required b/w Full Name & Mail-id:\n" .
What's "b/w" black and white?
Also do we check for <>. As the above will trigger for missing <> and give a warning about spaces.
I once had my quilt mail send crap to LKML because one of the Cc's in a patch I pulled was missing the ending ">".
-- Steve
Quoted 10 lines
scripts/checkpatch.pl +4
-1+ $herecurr); + } + } } + last if ($loop_brk == 1); } - # Check for wrappage within a valid hunk of the file if ($realcnt != 0 && $line !~ m{^(?:\+|-| |\\ No newline|$)}) { ERROR("patch seems to be corrupt (line wrapped?)\n" .
Re: [patch v4] checkpatch: Signature format verification
Quoted 17 lines · On Fri, 27 May 2011 14:16:57 -0400 Steven Rostedt wrote:
Quoted 16 lines · anish
From: anish kumar <[email protected]>
scripts/checkpatch.pl +13
-0+ my ($sign,$loop_brk); + my @signs = ("Reviewed-by:","Acked-by:","Signed-off-by:","Tested-by:"); + foreach $sign (@signs) { + $loop_brk=0; + if ($line =~ /^\s*$sign/i) { + # This is a signoff, if ugly, so do not double report. + $signoff++; + $loop_brk++; + if (!($line =~ /^\s*$sign/)) { + WARN("$sign is the preferred form\n" . + $herecurr); + } + if ($line =~ /^\s*$sign(.*)/i) {
Quoted 8 lines
scripts/checkpatch.pl sub process { · line 1387
Quoted 6 lines
scripts/checkpatch.pl +6
-0+ if ($1 !~ /^\s+([a-zA-Z\s\"\.\-\'\,]*.*)/i) { + WARN("Space required after $sign\n" . + $herecurr); + } + if ($1 !~ /([\sa-zA-Z\"\.\-\'\,]*)\s<.*>/i) { + WARN("Space required b/w Full Name & Mail-id:\n" .What's "b/w" black and white?
I _think_ that it's "between", but I already requested that it be changed. It's not good. :(
Quoted 8 lines
Also do we check for <>. As the above will trigger for missing <> and give a warning about spaces.
I once had my quilt mail send crap to LKML because one of the Cc's in a patch I pulled was missing the ending ">".
-- Steve
Quoted 10 lines
scripts/checkpatch.pl sub process { · line 1396
Quoted 10 lines
scripts/checkpatch.pl +4
-1+ $herecurr); + } + } } + last if ($loop_brk == 1); } - # Check for wrappage within a valid hunk of the file if ($realcnt != 0 && $line !~ m{^(?:\+|-| |\\ No newline|$)}) { ERROR("patch seems to be corrupt (line wrapped?)\n" .
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
Joe Perches
maintainerRe: [patch v4] checkpatch: Signature format verification
In reply to Steven RostedtQuoted 2 lines · Steven Rostedt
I once had my quilt mail send crap to LKML because one of the Cc's in a patch I pulled was missing the ending ">".
I'm pretty sure I've done that using git-send-email via bad copy/paste.
Actually, that one's been done a few times.
$ git log --pretty=oneline -E -i --grep "-by:.*<[^>]+$" | wc -l 129
But that's out of ~3.5 million non-merge commits.
cheers, Joe
Joe Perches
maintainerRe: [patch v4] checkpatch: Signature format verification
Quoted 1 line · Joe Perches
But that's out of ~3.5 million non-merge commits.
Oops. Off by an order magnitude, stupid fingers.
$ git log --pretty=oneline --no-merges | wc -l 232816
Re: [patch v4] checkpatch: Signature format verification
In reply to Joe PerchesQuoted 7 lines · Joe Perches
Quoted 2 lines · Steven Rostedt
I once had my quilt mail send crap to LKML because one of the Cc's in a patch I pulled was missing the ending ">".
I'm pretty sure I've done that using git-send-email via bad copy/paste.
Quoted 6 lines
Actually, that one's been done a few times.
$ git log --pretty=oneline -E -i --grep "-by:.*<[^>]+$" | wc -l 129But that's out of 232816 non-merge commits.
Even so, it would have been nice, because I ended up sending a crap load of emails to LKML without any content. I still use quilt as I like to verify what I send. But it took a dump on the missing ">" and caused all patches to be sent out as crap.
-- Steve
Joe Perches
maintainerRe: [patch v4] checkpatch: Signature format verification
Quoted 11 lines · Steven Rostedt
Quoted 6 lines · Joe Perches
Quoted 2 lines · Steven Rostedt
I once had my quilt mail send crap to LKML because one of the Cc's in a patch I pulled was missing the ending ">".
$ git log --pretty=oneline -E -i --grep "-by:.*<[^>]+$" | wc -l 129 But that's out of 232816 non-merge commits.Even so, it would have been nice, because I ended up sending a crap load of emails to LKML without any content. I still use quilt as I like to verify what I send. But it took a dump on the missing ">" and caused all patches to be sent out as crap.
No doubt.
This concept should also verify the "To: " and "cc: " tag lines.
cheers, Joe
Joe Perches
maintainerRe: [patch v4] checkpatch: Signature format verification
In reply to anishQuoted 1 line · anish
From: anish kumar <[email protected]>
[]
Quoted 3 lines
v4 Suggested by Joe Perches([email protected]) that names can have many forms.8 bit chars,commas,quotes,apostrphes,all sort of things.This is now taken care of.
NAK. No it's not.
Quoted 1 line
Signed-off-by anish kumar <[email protected]>
[]
scripts/checkpatch.pl sub process { · line 1384
Quoted 4 lines
scripts/checkpatch.pl +4
-0+ if ($line =~ /^\s*$sign(.*)/i) { + if ($1 !~ /^\s+([a-zA-Z\s\"\.\-\'\,]*.*)/i) { + WARN("Space required after $sign\n" . + $herecurr);
8 bit chars, digits?
scripts/checkpatch.pl sub process { · line 1388
Quoted 4 lines
scripts/checkpatch.pl +4
-0+ } + if ($1 !~ /([\sa-zA-Z\"\.\-\'\,]*)\s<.*>/i) { + WARN("Space required b/w Full Name & Mail-id:\n" . + $herecurr);
For the 3rd time, please use this form:
if ($line =~ /^(\s*)($ValidSignatures)(\s*)(.*)$/i) {and if you really want email format validation,
use a separate function.
A message that is not in the archive (sent off-list or not yet received): [email protected]
Joe Perches
maintainerRe: [patch v4] checkpatch: Signature format verification
Quoted 1 line · Manish Kumar Singh
On Fri, May 27, 2011 at 11:59 PM, Joe Perches <[email protected]> wrote:
[]
Quoted 2 lines
8 bit chars, digits?
What is 8 bit char...could you describe it?
An ascii char with the high order bit set.
Any char from 128 to 255.
[]
Quoted 4 lines
For the 3rd time, please use this form:
if ($line =~ /^(\s*)($ValidSignatures)(\s*)(.*)$/i) {
and if you really want email format validation, use a separate function.
[]
Quoted 4 lines
Problem with your way of doing is if anyone misses space between "sign" & name,
the regular expression (/^(\s*)($ValidSignatures)(\s*)(.*)$/i ) doesn't match
That's incorrect. Try it.
A message that is not in the archive (sent off-list or not yet received): [email protected]
Joe Perches
maintainerRe: [patch v4] checkpatch: Signature format verification
Quoted 6 lines · anish singh
On Sat, May 28, 2011 at 12:38 AM, Joe Perches <[email protected]> wrote:
On Sat, 2011-05-28 at 00:28 +0530, Manish Kumar Singh wrote:
> For the 3rd time, please use this form:
> if ($line =~ /^(\s*)($ValidSignatures)(\s*)(.*)$/i) {
> and if you really want email format validation,
> use a separate function.
Quoted 8 lines
[]
> Problem with your way of doing is if anyone misses space between
> "sign" & name,
> the regular expression (/^(\s*)($ValidSignatures)(\s*)(.*)$/i )
> doesn't match
That's incorrect. Try it.
Anish, do you have a response to this?
Quoted 3 lines
I have replaced b/w with "between".
And as Manish rightly exlained this patch is not meant for email validation.
Yet it does incorrectly anyway to nominally skip
name and find <.*>. That's the problem.
Look again at the patterns:
+ if ($line =~ /^\s*$sign(.*)/i) {
+ if ($1 !~ /^\s+([a-zA-Z\s\"\.\-\'\,]*.*)/i) {
+ WARN("Space required after $sign\n" .
+ $herecurr);
+ }
and
+ if ($1 !~ /([\sa-zA-Z\"\.\-\'\,]*)\s<.*>/i) {
+ WARN("Space required b/w Full Name & Mail-id:\n" .
+ $herecurr);
+ }
Quoted 1 line
I would like to know if anything else is missing?
Correctness.
Keep at it, it'll eventually be good to go.
cheers, Joe
A message that is not in the archive (sent off-list or not yet received): [email protected]
Re: [patch v4] checkpatch: Signature format verification
Quoted 5 lines · anish singh
Anish, do you have a response to this?
Your approach is correct but i am trying to do in my own way.
Why?? Correct is more important than individual preferences.
Quoted 9 lines
> I have replaced b/w with "between".
> And as Manish rightly exlained this patch is not meant for > email validation.Yet it does incorrectly anyway to nominally skip name and find <.*>. That's the problem.
Quoted 6 lines
Look again at the patterns:
+ if ($line =~ /^\s*$sign(.*)/i)
{
+ if ($1 !~ /^\s
+([a-zA-Z\s\"\.\-\'\,]*.*)/i) {
Note, why the []? Because you basically have:
/^\s+([blahblah]*.*)/
which is the same as:
/^\s+(.*)/
Quoted 5 lines
+ WARN("Space
required after $sign\n" .
+
$herecurr);
Quoted 8 lines
+ }
here i am trying to check space between sign & name.
In first if loop i am checking if sign is present in line or not. If yes, enter into second if loop & check if $1 starts with space ornot(which takes care of checking space between sign & name). In this if loop again i am catching name & rest of the things in $1. $1 will be used for checking space between name & mail-id.
BTW, people hate perl for this very reason. This subtle changing of $1 is very hard to follow if you are not a perl expert. I use perl all the time (recordmcount.pl and ktest.pl), but if you look at my code, you will see that I purposely avoid these subtle characteristics of perl, because that's the (very rightfully so) reason people complain that perl is a write once and never maintain language.
I understood from the beginning what you were doing, but I had to think about it more than I should have.
Quoted 11 lines
and
+ if ($1 !~ /([\sa-zA-Z
\"\.\-\'\,]*)\s<.*>/i) {
+ WARN("Space
required b/w Full Name & Mail-id:\n" .
+
$herecurr);+ }
You really need to get a new MUA.
Quoted 11 lines
In this If loop i am using $1 (returned by earlier pattern) to check space
between mail and <mail-id>.
If we print $1 after last if loop, we can get name appropriately. So, i am not skipping name here to match <>.I will change <.*> to <.*?> (non-greedy match) for matching very first enclosing bracket.
Again, this doesn't explain the space warning when I have just his:
Because that will not match the above, because the $1 will be "<[email protected]>". With no space.
-- Steve
Joe Perches
maintainerRe: [patch v4] checkpatch: Signature format verification
Quoted 4 lines · Steven Rostedt
Quoted 2 lines · anish singh
Anish, do you have a response to this?
Your approach is correct but i am trying to do in my own way.Why?? Correct is more important than individual preferences.
Thanks Steven, I was about to write something similar.
[]
Quoted 8 lines
Quoted 2 lines
In this if loop again i am catching name & rest of the things in $1. $1 will be used for checking space between name & mail-id.
BTW, people hate perl for this very reason. This subtle changing of $1 is very hard to follow if you are not a perl expert. I use perl all the time (recordmcount.pl and ktest.pl), but if you look at my code, you will see that I purposely avoid these subtle characteristics of perl, because that's the (very rightfully so) reason people complain that perl is a write once and never maintain language.
I'm not a perl geek, nor do I want to be, but that's exactly why I suggested after Anish's first attempt something I think reasonably clear and straightforward which avoids any reuse of $n.
Anish, please use this style.
if ($line =~ /^(\s*)($ValidSignatures)(\s*)(.*)$/i) {
my $space_before = $1;
my $sign_off = $2;
my $space_after = $3;
my $email = $4;
if (defined $space_before && $space_before ne "") {
warning (no space before...)
}
if ($sign_off !~ /$Valid_Signature/) {
warning (signature case...)
}
if (!defined $space_after || $space_after ne " ") {
warning (need only one space after colon...)
}
if (!validate_email($email)) {
warning (bad email...)
}
}A message that is not in the archive (sent off-list or not yet received): [email protected]
Joe Perches
maintainerRe: [patch v4] checkpatch: Signature format verification
Quoted 7 lines · anish singh
On Sat, May 28, 2011 at 1:48 AM, Steven Rostedt <[email protected]> wrote:
On Sat, 2011-05-28 at 01:24 +0530, anish singh wrote:
> Anish, do you have a response to this?
> Your approach is correct but i am trying to do in my own way.
Why?? Correct is more important than individual preferences.
Absolutely.Will use Joe suggested style of coding.
Good. And please use text only not html emails
when cc'ing any list at vger.kernel.org.
Re: [patch v4] checkpatch: Signature format verification
In reply to anishQuoted 2 lines · On Fri, 27 May 2011 23:31:51 +0530 anish <[email protected]> wrote:
This patch generates warning when there is no space between the patch submitter and successive mail-id.
I don't even know what this means :( Please modify the changelog to include a complete example of the offending input and of the generated warning.