#!/usr/bin/perl use strict;use warnings;use autodie;sub usage{my $err = shift and select STDERR;print "usage:$0 [--list] [--regen] [--default=value]\n";exit $err;}use Getopt::Long qw(:config bundling);GetOptions ( "help|?" => sub{usage (0);},"l|list!" => \(my $opt_l = 0),"regen" => \(my $opt_r = 0),"default=s" => \ my $default,"tap" => \(my $tap = 0),"v|verbose:1" => \(my $opt_v = 0),) or usage (1);$default and $default =~ s/^'(.*)'$/$1/;my $test;require './regen/regen_lib.pl' if $opt_r;my $MASTER_CFG = "config_h.SH";my $first = qr/^Author=/;my $last = qr/^zip=/;my @CFG = ( "Cross/config.sh-arm-linux","Cross/config.sh-arm-linux-n770","plan9/config_sh.sample","win32/config.gc","win32/config.vc","configure.com","Porting/config.sh",);my @MASTER_CFG;{my %seen;$opt_v and warn "Reading $MASTER_CFG ...\n";open my $fh,'<',$MASTER_CFG;while (<$fh>){while (/[^\\]\$([a-z]\w+)/g){my $v = $1;next if $v =~ /^(CONFIG_H|CONFIG_SH)$/;$seen{$v}++;}}close $fh;@MASTER_CFG = sort keys %seen;}my %MANIFEST;{$opt_v and warn "Reading MANIFEST ...\n";open my $fh,'<','MANIFEST';while (<$fh>){$MANIFEST{$1}++ if /^(.+?)\t/;}close $fh;}printf "1..%d\n",2 * @CFG if $tap;for my $cfg (sort @CFG){unless (exists $MANIFEST{$cfg}){warn "[ski

... [truncated 1301 chars] ...

}++$test;if ($missing){if ($tap){print "not ok $test - $cfg missing keys @$missing\n";}elsif ($opt_l){# print the name once,however many problems print "$cfg\n";}elsif ($opt_r && $cfg ne 'configure.com'){if (defined $default){push @{$lines[1]},map{"$_='$default'\n"}@$missing;}else{print "$cfg:missing '$_',use --default to add it\n" foreach @$missing;}@{$lines[1]}= sort @{$lines[1]};my $fh = open_new($cfg);print $fh @{$_}foreach @lines;close_and_rename($fh);}else{print "$cfg:missing '$_'\n" foreach @$missing;}}elsif ($tap){print "ok $test - $cfg has no missing keys\n";}}