165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#!/usr/bin/perl
265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This is a script for removing trailing whitespace from lines in files that
465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# are listed on the command line.
565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This subroutine does the work for one file.
765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichsub detrail {
965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichmy($file) = $_[0];
1065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichmy($changed) = 0;
1165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichopen(IN, "$file") || die "Can't open $file for input";
1265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich@lines = <IN>;
1365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichclose(IN);
1465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichforeach (@lines)
1565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  {
1665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if (/\s+\n$/)
1765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    {
1865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    s/\s+\n$/\n/;
1965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    $changed = 1;
2065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    }
2165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  }
2265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif ($changed)
2365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  {
2465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  open(OUT, ">$file") || die "Can't open $file for output";
2565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  print OUT @lines;
2665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  close(OUT);
2765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  }
2865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich}
2965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
3065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This is the main program
3165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
3265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$, = "";   # Output field separator
3365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfor ($i = 0; $i < @ARGV; $i++) { &detrail($ARGV[$i]); }
3465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
3565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# End
36