diff options
| author | H. Peter Anvin <hpa@zytor.com> | 2007-05-25 20:58:26 -0400 |
|---|---|---|
| committer | Sam Ravnborg <sam@ravnborg.org> | 2007-07-16 15:15:50 -0400 |
| commit | cb3ed5b7e09c6c0462e396d55e3fecc0980a333a (patch) | |
| tree | ead4dd6f67c2350096b17791d79e414c984f79f9 /scripts/cleanpatch | |
| parent | d72e5edbf4d13adfe489e9e6114a4922891ddcb2 (diff) | |
scripts: Make cleanfile/cleanpatch warn about long lines
Make the "cleanfile" and "cleanpatch" script warn about long lines,
by default lines whose visual width exceeds 79 characters.
Per suggestion from Auke Kok.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Diffstat (limited to 'scripts/cleanpatch')
| -rwxr-xr-x | scripts/cleanpatch | 58 |
1 files changed, 55 insertions, 3 deletions
diff --git a/scripts/cleanpatch b/scripts/cleanpatch index a53f987708f5..9680d03ad2b8 100755 --- a/scripts/cleanpatch +++ b/scripts/cleanpatch | |||
| @@ -7,7 +7,9 @@ | |||
| 7 | use bytes; | 7 | use bytes; |
| 8 | use File::Basename; | 8 | use File::Basename; |
| 9 | 9 | ||
| 10 | # | 10 | # Default options |
| 11 | $max_width = 79; | ||
| 12 | |||
| 11 | # Clean up space-tab sequences, either by removing spaces or | 13 | # Clean up space-tab sequences, either by removing spaces or |
| 12 | # replacing them with tabs. | 14 | # replacing them with tabs. |
| 13 | sub clean_space_tabs($) | 15 | sub clean_space_tabs($) |
| @@ -48,9 +50,49 @@ sub clean_space_tabs($) | |||
| 48 | return $lo; | 50 | return $lo; |
| 49 | } | 51 | } |
| 50 | 52 | ||
| 53 | # Compute the visual width of a string | ||
| 54 | sub strwidth($) { | ||
| 55 | no bytes; # Tab alignment depends on characters | ||
| 56 | |||
| 57 | my($li) = @_; | ||
| 58 | my($c, $i); | ||
| 59 | my $pos = 0; | ||
| 60 | my $mlen = 0; | ||
| 61 | |||
| 62 | for ($i = 0; $i < length($li); $i++) { | ||
| 63 | $c = substr($li,$i,1); | ||
| 64 | if ($c eq "\t") { | ||
| 65 | $pos = ($pos+8) & ~7; | ||
| 66 | } elsif ($c eq "\n") { | ||
| 67 | $mlen = $pos if ($pos > $mlen); | ||
| 68 | $pos = 0; | ||
| 69 | } else { | ||
| 70 | $pos++; | ||
| 71 | } | ||
| 72 | } | ||
| 73 | |||
| 74 | $mlen = $pos if ($pos > $mlen); | ||
| 75 | return $mlen; | ||
| 76 | } | ||
| 77 | |||
| 51 | $name = basename($0); | 78 | $name = basename($0); |
| 52 | 79 | ||
| 53 | foreach $f ( @ARGV ) { | 80 | @files = (); |
| 81 | |||
| 82 | while (defined($a = shift(@ARGV))) { | ||
| 83 | if ($a =~ /^-/) { | ||
| 84 | if ($a eq '-width' || $a eq '-w') { | ||
| 85 | $max_width = shift(@ARGV)+0; | ||
| 86 | } else { | ||
| 87 | print STDERR "Usage: $name [-width #] files...\n"; | ||
| 88 | exit 1; | ||
| 89 | } | ||
| 90 | } else { | ||
| 91 | push(@files, $a); | ||
| 92 | } | ||
| 93 | } | ||
| 94 | |||
| 95 | foreach $f ( @files ) { | ||
| 54 | print STDERR "$name: $f\n"; | 96 | print STDERR "$name: $f\n"; |
| 55 | 97 | ||
| 56 | if (! -f $f) { | 98 | if (! -f $f) { |
| @@ -86,6 +128,7 @@ foreach $f ( @ARGV ) { | |||
| 86 | 128 | ||
| 87 | $in_bytes = 0; | 129 | $in_bytes = 0; |
| 88 | $out_bytes = 0; | 130 | $out_bytes = 0; |
| 131 | $lineno = 0; | ||
| 89 | 132 | ||
| 90 | @lines = (); | 133 | @lines = (); |
| 91 | 134 | ||
| @@ -93,10 +136,12 @@ foreach $f ( @ARGV ) { | |||
| 93 | $err = 0; | 136 | $err = 0; |
| 94 | 137 | ||
| 95 | while ( defined($line = <FILE>) ) { | 138 | while ( defined($line = <FILE>) ) { |
| 139 | $lineno++; | ||
| 96 | $in_bytes += length($line); | 140 | $in_bytes += length($line); |
| 97 | 141 | ||
| 98 | if (!$in_hunk) { | 142 | if (!$in_hunk) { |
| 99 | if ($line =~ /^\@\@\s+\-([0-9]+),([0-9]+)\s+\+([0-9]+),([0-9]+)\s\@\@/) { | 143 | if ($line =~ |
| 144 | /^\@\@\s+\-([0-9]+),([0-9]+)\s+\+([0-9]+),([0-9]+)\s\@\@/) { | ||
| 100 | $minus_lines = $2; | 145 | $minus_lines = $2; |
| 101 | $plus_lines = $4; | 146 | $plus_lines = $4; |
| 102 | if ($minus_lines || $plus_lines) { | 147 | if ($minus_lines || $plus_lines) { |
| @@ -117,6 +162,13 @@ foreach $f ( @ARGV ) { | |||
| 117 | $text =~ s/[ \t\r]*$//; # Remove trailing spaces | 162 | $text =~ s/[ \t\r]*$//; # Remove trailing spaces |
| 118 | $text = clean_space_tabs($text); | 163 | $text = clean_space_tabs($text); |
| 119 | 164 | ||
| 165 | $l_width = strwidth($text); | ||
| 166 | if ($max_width && $l_width > $max_width) { | ||
| 167 | print STDERR | ||
| 168 | "$f:$lineno: adds line exceeds $max_width ", | ||
| 169 | "characters ($l_width)\n"; | ||
| 170 | } | ||
| 171 | |||
| 120 | push(@hunk_lines, '+'.$text); | 172 | push(@hunk_lines, '+'.$text); |
| 121 | } elsif ($line =~ /^\-/) { | 173 | } elsif ($line =~ /^\-/) { |
| 122 | $minus_lines--; | 174 | $minus_lines--; |
