spacewhack.pl revision 70e5a7403f0e0a3bd292b8287c5fed5772c15270
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver#!/usr/local/bin/perl -w
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews#
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# Copyright (C) 2000, 2001 Internet Software Consortium.
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews#
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# Permission to use, copy, modify, and/or distribute this software for any
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver# purpose with or without fee is hereby granted, provided that the above
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver# copyright notice and this permission notice appear in all copies.
f97d56e757b9a293ffbaa915ca4d792ae84ba85aTinderbox User#
f97d56e757b9a293ffbaa915ca4d792ae84ba85aTinderbox User# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver# PERFORMANCE OF THIS SOFTWARE.
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver# $Id: spacewhack.pl,v 1.6 2007/06/19 23:47:24 tbox Exp $
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver$0 =~ s%.*/%%;
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryverif (@ARGV != 0) {
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt warn "Usage: $0 < list-of-files\n";
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver warn "The util/copyrights file is normally used for list-of-files.\n";
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver exit(1);
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver}
06e0d6bb126e9986f29036e671b59f48b1d2efbcEvan Hunt
06e0d6bb126e9986f29036e671b59f48b1d2efbcEvan Hunt$total = 0;
06e0d6bb126e9986f29036e671b59f48b1d2efbcEvan Hunt
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryverprintf "Lines Trimmed:\n";
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryverwhile (defined($line = <STDIN>)) {
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver ($file) = split(/\s+/, $line, 2);
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver # These are binary and must be ignored.
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver next if $file =~ m%/random.data|\.gif$%;
4eb998928b9aef0ceda42d7529980d658138698aEvan Hunt next if -B $file;
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt print "$file\n";
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt unless (open(FILEIN, "< $file")) {
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver warn "$0: open < $file: $!, skipping\n";
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver next;
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver }
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver undef $/; # Slurp whole file.
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt $_ = <FILEIN>;
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt $/ = "\n"; # Back to line-at-a-time for <FILES>.
afaa290bb6acc504e93a0adbf20b6dd6c64e6d63Vernon Schryver
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt close(FILEIN);
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt $count = s/[ \t]+$//mg;
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt next unless $count > 0;
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt unless (open(FILEOUT, "> $file")) {
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt warn "$0: open > $file: $!, skipping\n";
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt next;
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt }
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt print FILEOUT or die "$0: printing to $file: $!, exiting\n";
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt close FILEOUT or die "$0: closing $file: $!, exiting\n";
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt printf("%6d lines trimmed in $file\n", $count) if $count > 0;
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt $total += $count;
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt}
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Huntprintf "%6d TOTAL\n", $total;
06e0d6bb126e9986f29036e671b59f48b1d2efbcEvan Hunt
06e0d6bb126e9986f29036e671b59f48b1d2efbcEvan Huntexit(0);
06e0d6bb126e9986f29036e671b59f48b1d2efbcEvan Hunt
06e0d6bb126e9986f29036e671b59f48b1d2efbcEvan Hunt