#!/usr/bin/perl -w

my $test_only = 0;

while ($file = shift @ARGV) {
    if ($file =~ /--test/) {
	$test_only = 1;
	next;
    }

    open (File, "$file") || die "Can't open $file\n";
    my $intermediate = $file.".oo.int";
    open (Tmp, ">$intermediate") || die "Can't open $intermediate\n";
    $hit = 0;
    $num = 0;
    my $line = '';
    while (<File>) {
	$num++;
	if (/^#endif\s+[^\/\s]/) {
	    print STDERR "Error on line $num of $file\n";
	    $hit = 1;
	    if( $file =~ m/\..xx$/ ) {  # C++ comment
		s/^#endif\s+/#endif \/\/ /;
	    } else {                    # C comment
		s/^#endif\s+(.*)\s+/#endif \/* $1 *\/ /;
	    }
	}
	$line = $_;
	print Tmp $line;
    }
    if (! ($line =~ m/\n$/) ) {
	print STDERR "No newline at EOF of $file\n";
	print Tmp "\n";
	$hit = 1;
    }
    close File;
    close Tmp;
    if ($hit && !$test_only) {
	print "$file\n";
	rename $file, "$file.old";
	rename $intermediate, $file;
    } else {
	unlink $intermediate;
    }
}
