root/cuth

/* [previous][next][first][last][top][bottom][index][help]  */
#!/usr/bin/perl

$| = 1;

sub writefile($@){
        my ($file, @lines) = @_;
        
        sleep(1);
        open(F, ">$file") || die "open >$file: $!";
        print F @lines;
        close(F);
}

# Cut out #include lines that don't contribute anything.
for($i=0; $i<@ARGV; $i++){
        $file = $ARGV[$i];
        if(!open(F, $file)){
                print STDERR "open $file: $!\n";
                next;
        }
        @lines = <F>;
        close(F);
        
        $obj = "$file.o";
        $obj =~ s/\.c\.o$/.o/;
        system("touch $file");

        if(system("make CC='gcc -Werror' $obj >/dev/null 2>\&1") != 0){
                print STDERR "make $obj failed: $rv\n";
                next;
        }

        system("cp $file =$file");
        for($j=@lines-1; $j>=0; $j--){
                if($lines[$j] =~ /^#include/){
                        $old = $lines[$j];
                        $lines[$j] = "/* CUT-H */\n";
                        writefile($file, @lines);
                        if(system("make CC='gcc -Werror' $obj >/dev/null 2>\&1") != 0){
                                $lines[$j] = $old;
                        }else{
                                print STDERR "$file $old";
                        }
                }
        }
        writefile($file, grep {!/CUT-H/} @lines);
        system("rm =$file");
}

/* [previous][next][first][last][top][bottom][index][help]  */