Skip to content

Commit

Permalink
scripts: Make cleanfile/cleanpatch warn about long lines
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Sam Ravnborg <[email protected]>
  • Loading branch information
H. Peter Anvin authored and sravnborg committed Jul 16, 2007
1 parent d72e5ed commit cb3ed5b
Show file tree
Hide file tree
Showing 2 changed files with 107 additions and 5 deletions.
54 changes: 52 additions & 2 deletions scripts/cleanfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
use bytes;
use File::Basename;

#
# Default options
$max_width = 79;

# Clean up space-tab sequences, either by removing spaces or
# replacing them with tabs.
sub clean_space_tabs($)
Expand Down Expand Up @@ -48,9 +50,49 @@ sub clean_space_tabs($)
return $lo;
}

# Compute the visual width of a string
sub strwidth($) {
no bytes; # Tab alignment depends on characters

my($li) = @_;
my($c, $i);
my $pos = 0;
my $mlen = 0;

for ($i = 0; $i < length($li); $i++) {
$c = substr($li,$i,1);
if ($c eq "\t") {
$pos = ($pos+8) & ~7;
} elsif ($c eq "\n") {
$mlen = $pos if ($pos > $mlen);
$pos = 0;
} else {
$pos++;
}
}

$mlen = $pos if ($pos > $mlen);
return $mlen;
}

$name = basename($0);

foreach $f ( @ARGV ) {
@files = ();

while (defined($a = shift(@ARGV))) {
if ($a =~ /^-/) {
if ($a eq '-width' || $a eq '-w') {
$max_width = shift(@ARGV)+0;
} else {
print STDERR "Usage: $name [-width #] files...\n";
exit 1;
}
} else {
push(@files, $a);
}
}

foreach $f ( @files ) {
print STDERR "$name: $f\n";

if (! -f $f) {
Expand Down Expand Up @@ -90,8 +132,10 @@ foreach $f ( @ARGV ) {

@blanks = ();
@lines = ();
$lineno = 0;

while ( defined($line = <FILE>) ) {
$lineno++;
$in_bytes += length($line);
$line =~ s/[ \t\r]*$//; # Remove trailing spaces
$line = clean_space_tabs($line);
Expand All @@ -107,6 +151,12 @@ foreach $f ( @ARGV ) {
@blanks = ();
$blank_bytes = 0;
}

$l_width = strwidth($line);
if ($max_width && $l_width > $max_width) {
print STDERR
"$f:$lineno: line exceeds $max_width characters ($l_width)\n";
}
}

# Any blanks at the end of the file are discarded
Expand Down
58 changes: 55 additions & 3 deletions scripts/cleanpatch
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
use bytes;
use File::Basename;

#
# Default options
$max_width = 79;

# Clean up space-tab sequences, either by removing spaces or
# replacing them with tabs.
sub clean_space_tabs($)
Expand Down Expand Up @@ -48,9 +50,49 @@ sub clean_space_tabs($)
return $lo;
}

# Compute the visual width of a string
sub strwidth($) {
no bytes; # Tab alignment depends on characters

my($li) = @_;
my($c, $i);
my $pos = 0;
my $mlen = 0;

for ($i = 0; $i < length($li); $i++) {
$c = substr($li,$i,1);
if ($c eq "\t") {
$pos = ($pos+8) & ~7;
} elsif ($c eq "\n") {
$mlen = $pos if ($pos > $mlen);
$pos = 0;
} else {
$pos++;
}
}

$mlen = $pos if ($pos > $mlen);
return $mlen;
}

$name = basename($0);

foreach $f ( @ARGV ) {
@files = ();

while (defined($a = shift(@ARGV))) {
if ($a =~ /^-/) {
if ($a eq '-width' || $a eq '-w') {
$max_width = shift(@ARGV)+0;
} else {
print STDERR "Usage: $name [-width #] files...\n";
exit 1;
}
} else {
push(@files, $a);
}
}

foreach $f ( @files ) {
print STDERR "$name: $f\n";

if (! -f $f) {
Expand Down Expand Up @@ -86,17 +128,20 @@ foreach $f ( @ARGV ) {

$in_bytes = 0;
$out_bytes = 0;
$lineno = 0;

@lines = ();

$in_hunk = 0;
$err = 0;

while ( defined($line = <FILE>) ) {
$lineno++;
$in_bytes += length($line);

if (!$in_hunk) {
if ($line =~ /^\@\@\s+\-([0-9]+),([0-9]+)\s+\+([0-9]+),([0-9]+)\s\@\@/) {
if ($line =~
/^\@\@\s+\-([0-9]+),([0-9]+)\s+\+([0-9]+),([0-9]+)\s\@\@/) {
$minus_lines = $2;
$plus_lines = $4;
if ($minus_lines || $plus_lines) {
Expand All @@ -117,6 +162,13 @@ foreach $f ( @ARGV ) {
$text =~ s/[ \t\r]*$//; # Remove trailing spaces
$text = clean_space_tabs($text);

$l_width = strwidth($text);
if ($max_width && $l_width > $max_width) {
print STDERR
"$f:$lineno: adds line exceeds $max_width ",
"characters ($l_width)\n";
}

push(@hunk_lines, '+'.$text);
} elsif ($line =~ /^\-/) {
$minus_lines--;
Expand Down

0 comments on commit cb3ed5b

Please sign in to comment.