mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-11-03 20:53:13 +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;
 |