mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-30 10:45:40 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			48 lines
		
	
	
		
			942 B
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			942 B
		
	
	
	
		
			Perl
		
	
	
	
	
	
| #!/usr/bin/perl
 | |
| 
 | |
| use strict;
 | |
| use warnings;
 | |
| 
 | |
| # Check __BEGIN_NAMESPACE ... __END_NAMESPACE pairing in an include file.
 | |
| 
 | |
| my $code = 0;
 | |
| for my $path (@ARGV) {
 | |
|     my $localcode = 0;
 | |
|     my @stack;
 | |
| 
 | |
|     open my $in, '<', $path
 | |
|         or die "open $path failed: $!";
 | |
| 
 | |
|     while (<$in>) {
 | |
|         if ( /^\s*__BEGIN_(.*)\b/ ) {
 | |
|             push @stack, $1;
 | |
|         }
 | |
|         elsif ( /^\s*__END_(.*)\b/ ) {
 | |
|             if (@stack) {
 | |
|                 my $tag = pop @stack;
 | |
| 		if ($1 ne $tag) {
 | |
|                     print "$path:$.: BEGIN $tag paired with END $1\n";
 | |
| 		    $localcode = 1;
 | |
| 		}
 | |
|             }
 | |
|             else {
 | |
|                 print "$path:$.: END $1 does not match a begin\n";
 | |
| 		$localcode = 1;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     if (@stack) {
 | |
| 	print "$path: Unmatched begin tags " . join (' ', @stack) ."\n";
 | |
| 	$localcode = 1;
 | |
|     }
 | |
| 
 | |
|     if ($localcode == 0) {
 | |
| 	print "$path: OK\n";
 | |
|     } else {
 | |
| 	$code = $localcode;
 | |
|     }
 | |
| }
 | |
| 
 | |
| exit $code;
 |