#!/usr/bin/env perl
#
# Copyright (c) 2001 Rajesh Vaidheeswarran. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the same terms as Perl itself.
#
# $Id: whitespace,v 1.1 2001/05/15 21:36:36 rv Exp $
use Getopt::Std;
use Whitespace;
use strict;
my $majorversion = 1;
my $minorversion = 0;
my %opts;
my $prog = $0;
$prog =~ s/.*\///;
$prog =~ s/\.pl$//;
getopts("cv", \%opts);
my $cleanup = $opts{'c'} ? 1 : undef;
my $ver = $opts{'v'} ? 1 : undef;
if ($ver) {
printf "$prog v%d.%d\n", $majorversion, $minorversion;
print "Copyright 2000-2001 Rajesh Vaidheeswarran\n";
print "All rights reserved.\n\n";
print "This program is free software; you can redistribute it " .
"and/or modify\n";
print "it under the same terms as Perl itself.\n\n";
exit 0;
}
my $ret = 0;
my %errors = (
'leading' => 'Leading whitespace',
'trailing' => 'Trailing whitespace',
'indent' => 'Indentation whitespace',
'spacetab' => 'Space followed by Tab',
'eol' => 'End-of-line whitespace'
);
unless (@ARGV) {
warn "Usage: $prog [[-v] | [-c] filename ...]\n";
warn " -c - cleanup\n";
warn " -v - show version and exit\n";
exit 1;
}
my %data = ();
my $file;
foreach $file (grep { ! -d } @ARGV) {
$data{$file} = {'handle' => new Whitespace($file)};
my $h = $data{$file}->{'handle'};
$data{$file}->{'stat'} = $h->detect();
}
foreach $file (sort keys %data) {
my $ws = $data{$file}->{'handle'};
my $stat = $data{$file}->{'stat'};
if (!defined $stat) {
print STDERR $ws->error() . "\n";
} else {
$ret += $stat;
my $status = $ws->status();
if (defined $status) {
foreach (sort keys %$status) {
print STDERR "$file: " . $errors{$_} . "\n" if $status->{$_};
}
}
if (defined $cleanup) {
$stat = $ws->cleanup();
if (defined $stat) {
print STDERR "$file: failed to cleanup ($stat).\n"
if $stat != 0;
print STDOUT "$file clean.\n" if $stat == 0;
} else {
print STDERR "[" . $ws->error() . ", cleanup failed.]\n";
}
}
}
}
exit $ret;
__END__;
=head1 NAME
whitespace - To clean up bogus whitespaces in program sources and other text.
=head1 SYNOPSIS
B<whitespace> [B<-c>] files...
=head1 DESCRIPTION
B<whitespace> uses the B<Whitespace> perl module to detect and
potentially cleanup bogus whitespaces (defined by the module).
=head1 OPTIONS
=over 10
=item B<-c>
Cleanup the given files, if any bogus whitespaces are present.
=head1 PREREQUISITES
This script requires the B<Whitespace> perl module.
=head1 SCRIPT CATEGORIES
String Processing / Language Text Processing / Parsing and Searching
=head1 AUTHOR
Rajesh Vaidheeswarran E<lt>
[email protected]<gt>
=head1 LICENSE
Copyright (C) 2000-2001 Rajesh Vaidheeswarran
All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut