Rasmus Villemoes <rv@xxxxxxxxxxxxxxxxxx> writes: > @@ -1681,7 +1681,7 @@ sub process_file { > # Now parse the message body > while(<$fh>) { > $message .= $_; > - if (/^(Signed-off-by|Cc): (.*)/i) { > + if (/^([a-z-]*-by|Cc): (.*)/i) { So this picks up anything-by not just s-o-by, which sort of makes sense. > @@ -1691,7 +1691,9 @@ sub process_file { > if ($sc eq $sender) { > next if ($suppress_cc{'self'}); > } else { > - next if $suppress_cc{'sob'} and $what =~ /Signed-off-by/i; We used to only grab CC or Signed-off-by (and specifically not something like "Not-Signed-off-by") upfront above, so matching /Signed-off-by/ was sufficient (it would have been sufficient to just look for 's'). But to suppress s-o-b and keep allowing via misc-by a trailer "Not-signed-off-by:", we now ... > + next if $suppress_cc{'sob'} and $what =~ /^Signed-off-by$/i; ... must make sure what we have is _exactly_ "signed-off-by" when 'sob' is suppressed. Makes sense. > + next if $suppress_cc{'misc-by'} > + and $what =~ /-by$/i and $what !~ /^Signed-off-by$/i; And this is the opposite side of the same coin, which also makes sense. I wonder if it would make it easier to grok if we made the logic inside out, i.e. if ($sc eq $sender) { ... } else { if ($what =~ /^Signed-off-by$/i) { next if $suppress_cc{'sob'}; } elsif ($what =~ /-by$/i) { next if $suppress_cc{'misc'}; } elsif ($what =~ /^Cc$/i) { next if $suppress_cc{'bodycc'}; } push @cc, $c; ... } > next if $suppress_cc{'bodycc'} and $what =~ /Cc/i; > } > if ($c !~ /.+@.+|<.+>/) {