48 lines
		
	
	
	
		
			934 B
		
	
	
	
		
			Perl
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
	
		
			934 B
		
	
	
	
		
			Perl
		
	
	
		
			Executable file
		
	
	
	
	
| #!/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");
 | |
| }
 | 
