[PATCH] checkpatch: warn when patch exceeds a maximum message size

From: Bruce Allan
Date: Thu Jun 05 2014 - 20:01:20 EST


Patch submissions which exceed a maximum message size imposed by email
list servers can be silently blocked. Warn when a patch message exceeds
the maximum message size (100,000 characters) allowed by Majordomo at
vger.kernel.org since that is where most Linux email lists are served.
Also provide a command-line option to specify a different maximum size.

Signed-off-by: Bruce Allan <bruce.w.allan@xxxxxxxxx>
---

scripts/checkpatch.pl | 15 +++++++++++++++
1 file changed, 15 insertions(+)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 34eb216..79bd7fd6 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -40,6 +40,7 @@ my @ignore = ();
my $help = 0;
my $configuration_file = ".checkpatch.conf";
my $max_line_length = 80;
+my $max_msg_size = 100000; # Max allowed by Majordomo at vger.kernel.org
my $ignore_perl_version = 0;
my $minimum_perl_version = 5.10.0;

@@ -62,6 +63,7 @@ Options:
--types TYPE(,TYPE2...) show only these comma separated message types
--ignore TYPE(,TYPE2...) ignore various comma separated message types
--max-line-length=n set the maximum line length, if exceeded, warn
+ --max-msg-size=n set the maximum message size, if exceeded, warn
--show-types show the message "types" in the output
--root=PATH PATH to the kernel tree root
--no-summary suppress the per-file summary
@@ -130,6 +132,7 @@ GetOptions(
'types=s' => \@use,
'show-types!' => \$show_types,
'max-line-length=i' => \$max_line_length,
+ 'max-msg-size=i' => \$max_msg_size,
'root=s' => \$root,
'summary!' => \$summary,
'mailback!' => \$mailback,
@@ -4600,6 +4603,18 @@ sub process {
exit(0);
}

+ # Warn if patch exceeds the maximum message size
+ if (!$file) {
+ my $cnt_chars = 0;
+ foreach my $rawline (@rawlines) {
+ $cnt_chars += length($rawline) + 1;
+ }
+ if ($cnt_chars > $max_msg_size) {
+ WARN("PATCH_TOO_LARGE",
+ "patch exceeds maximum message size ($max_msg_size) and might be blocked by email list server(s).\n");
+ }
+ }
+
if (!$is_patch) {
ERROR("NOT_UNIFIED_DIFF",
"Does not appear to be a unified-diff format patch\n");

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/