From 74323f40727b37cac11a9bff6e900f661ba1e8cf Mon Sep 17 00:00:00 2001 From: tzafrir Date: Tue, 9 Sep 2008 15:18:01 +0000 Subject: xpp-zaptel: FXO: fix init_card_2_30 opermode verification * In case of any diff, exit with non-zero status so the build fails. * Print filename:lineno of missing or changed lines. * Fix two countries (typos fixed in COLOMBIA and CYPRUS). * xpp-zaptel: FXO: cleanup opermode verification code (from DAHDI): - Add proper '-v' option to init_card_2_30 and use it in xortel/Makefile - Use $mismatches as in DAHDI (minimize diffs). From xpp rev. 6107,6108 Merged revisions 4517-4518 via svnmerge from https://origsvn.digium.com/svn/zaptel/branches/1.2 git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.4@4524 5390a7c7-147a-4af0-8ec9-7488f05a26cb --- kernel/xpp/init_card_2_30 | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/kernel/xpp/init_card_2_30 b/kernel/xpp/init_card_2_30 index c682c19..e2d5faa 100755 --- a/kernel/xpp/init_card_2_30 +++ b/kernel/xpp/init_card_2_30 @@ -50,7 +50,7 @@ my $unit_id; my %opts; $ENV{XPP_BASE} = '/proc/xpp'; -getopts('o:', \%opts); +getopts('o:v:', \%opts); my $debug; @@ -127,9 +127,9 @@ BULGARIA reg16=00 reg26=C2 reg30=03 reg31=20 CANADA reg16=00 reg26=C0 reg30=00 reg31=20 CHILE reg16=00 reg26=C0 reg30=00 reg31=20 CHINA reg16=00 reg26=30 reg30=0F reg31=20 -COLUMBIA reg16=00 reg26=C0 reg30=00 reg31=20 +COLOMBIA reg16=00 reg26=C0 reg30=00 reg31=20 CROATIA reg16=00 reg26=C2 reg30=02 reg31=20 -CYRPUS reg16=00 reg26=C2 reg30=02 reg31=20 +CYPRUS reg16=00 reg26=C2 reg30=02 reg31=20 CZECH reg16=00 reg26=C2 reg30=02 reg31=20 DENMARK reg16=00 reg26=C2 reg30=02 reg31=28 ECUADOR reg16=00 reg26=C0 reg30=00 reg31=20 @@ -263,6 +263,8 @@ sub opermode_to_string($) { sub opermode_verify($) { my $input = shift or die; my %verification_table; + my %location_lines; + my $mismatches = 0; open(F, $input) or die "$0: Failed opening '$input': $!\n"; while() { @@ -275,32 +277,38 @@ sub opermode_verify($) { my ($key, $val) = split(/=/, $p, 2); $verification_table{$location}{$key} = $val; } + $location_lines{$location} = $.; } close F; # First test: check for missing data in our program foreach my $location (sort keys %verification_table) { my $mode = $opermode_table{$location}; if(! defined $mode) { - printf STDERR "Missing $location\n"; + printf STDERR "Missing from $0: '$location' at $input:$location_lines{$location}\n"; + $mismatches++; next; } my $verify_mode = $verification_table{$location}; my $str1 = opermode_to_string($mode); my $str2 = opermode_to_string($verify_mode); if($str1 ne $str2) { - print STDERR "DIFF: $location:\n"; + print STDERR "DIFF: '$location' at $input:$location_lines{$location}\n"; printf STDERR "\t%-20s: %s\n", "program", $str1; printf STDERR "\t%-20s: %s\n", "verify", $str2; + $mismatches++; } } # Second test: check for extra data in our program foreach my $location (sort keys %opermode_table) { my $mode = $verification_table{$location}; if(! defined $mode) { - printf STDERR "Extra $location\n"; + printf STDERR "Extra in $0 '$location'\n"; + $mismatches++; next; } } + print STDERR "Total $mismatches mismatches\n" if $mismatches; + return $mismatches; } sub read_defaults() { @@ -331,11 +339,12 @@ package main; FXO::opermode_preprocess; # Must be first -if(@ARGV and $ARGV[0] =~ /^verify(.*)/) { - my $verify_file = $1; - die "Usage: $0 verify=filename\n" unless $verify_file =~ s/^=//; +if($opts{v}) { + my $verify_file = $opts{v}; + die "Usage: $0 [-v verify_filename]\n" unless $verify_file; main::debug "$0: opermode verification (input='$verify_file')"; - FXO::opermode_verify($verify_file); + my $mismatches = FXO::opermode_verify($verify_file); + die "$0: Verification against $verify_file failed\n" if $mismatches != 0; exit 0; } -- cgit v1.2.3