Date: Wed, 17 Sep 2008 13:15:08 +1000 (EST) From: Edwin Groothuis <edwin@mavetju.org> To: FreeBSD-gnats-submit@FreeBSD.org Subject: misc/127430: [patch] Add check-script for share/misc/iso3166 Message-ID: <20080917031508.C6B19220@k7.mavetju> Resent-Message-ID: <200809170320.m8H3K2Ku097342@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 127430 >Category: misc >Synopsis: [patch] Add check-script for share/misc/iso3166 >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Wed Sep 17 03:20:01 UTC 2008 >Closed-Date: >Last-Modified: >Originator: Edwin Groothuis >Release: FreeBSD 7.0-RELEASE-p1 i386 >Organization: - >Environment: System: FreeBSD k7.mavetju 7.0-RELEASE-p1 FreeBSD 7.0-RELEASE-p1 #2: Wed May 28 08:12:56 EST 2008 edwin@k7.mavetju:/usr/src/sys/i386/compile/k7 i386 >Description: Small perl script for in head/tools/tools/iso. >How-To-Repeat: >Fix: [~/iso] edwin@k7>cat check-iso3166.pl #!/usr/bin/perl -w # # $FreeBSD$ # # This script compares the file iso3166 (from head/share/misc) with the files # list-en1-semic-2.txt (from # http://www.iso.org/iso/list-en1-semic-2.txt) and iso3166-countrycodes.txt # (from ftp://ftp.ripe.net/) to see if there any differences. # # Created by Edwin Groothuis <edwin@FreeBSD.org> for the FreeBSD project. # use strict; use Data::Dumper; my %old = (); { open(FIN, "iso3166") or die "Cannot open iso3166 (should be in head/share/misc)"; my @lines = <FIN>; close(FIN); chomp(@lines); foreach my $l (@lines) { next if ($l =~ /^#/); next if ($l eq ""); die "Bad line: $l\n" if ($l !~ /^([A-Z\-]*)[ \t]+([A-Z\-]+)[ \t]+(\d+)[ \t]+(.*)/); my $two = $1; my $three = $2; my $number = $3; my $name = $4; $old{$two}{two} = $two; $old{$two}{three} = $three; $old{$two}{number} = $number; $old{$two}{name} = $name; } } my %new1 = (); { open(FIN, "iso3166-countrycodes.txt") or die "Cannot open iso3166-countrycodes.txt, which can be retrieved from ftp://ftp.ripe.net/"; my @lines = <FIN>; close(FIN); chomp(@lines); my $noticed = 0; foreach my $l (@lines) { if ($l =~ /\-\-\-\-\-\-\-/) { $noticed = 1; next; } next if (!$noticed); next if ($l eq ""); die "Invalid line: $l\n" if ($l !~ /^(.+?)[\t ][\t ]+([A-Z]{2})[\t ]+([A-Z]{3})[\t ]+(\d+)[\t ]*$/); my $two = $2; my $three = $3; my $number = $4; my $name = $1; $new1{$two}{two} = $two; $new1{$two}{three} = $three; $new1{$two}{number} = $number; $new1{$two}{name} = $name; } } my %new2 = (); { open(FIN, "list-en1-semic-2.txt") or die "Cannot open list-en1-semic-2.txt, which can be retrieved from http://www.iso.org/iso/list-en1-semic-2.txt"; my @lines = <FIN>; close(FIN); chomp(@lines); my $noticed = 0; foreach my $l (@lines) { $l =~ s/\x0d//g; if (!$noticed) { # skip the first line $noticed = 1; next; } next if ($l eq ""); my @a = split(/;/, $l); die "Invalid line: $l\n" if ($#a != 1); my $two = $a[1]; my $name = $a[0]; $new2{$two}{two} = $two; $new2{$two}{name} = $name; } } { my $c = 0; foreach my $two (sort(keys(%old))) { if (!defined $new1{$two}) { print "In old but not new1: $old{$two}{two}\t$old{$two}{three}\t$old{$two}{number}\t$old{$two}{name}\n"; $c++; } if (!defined $new2{$two}) { print "In old but not new2: $old{$two}{two}\t$old{$two}{name}\n"; $c++; } } print "Found $c issues\n"; } { my $c = 0; foreach my $two (sort(keys(%new1))) { next if (defined $old{$two}); print "In new1 but not old: $new1{$two}{two}\t$new1{$two}{three}\t$new1{$two}{number}\t$new1{$two}{name}\n"; $c++; } print "Found $c issues\n"; } { my $c = 0; foreach my $two (sort(keys(%new2))) { next if (defined $old{$two}); print "In new2 but not old: $new2{$two}{two}\t$new2{$two}{name}\n"; $c++; } print "Found $c issues\n"; } { my $c = 0; foreach my $two (sort(keys(%old))) { if (defined $new1{$two}) { if ($old{$two}{two} ne $new1{$two}{two} || $old{$two}{three} ne $new1{$two}{three} || $old{$two}{number} ne $new1{$two}{number} || lc($old{$two}{name}) ne lc($new1{$two}{name})) { print "In old : $old{$two}{two}\t$old{$two}{three}\t$old{$two}{number}\t$old{$two}{name}\n"; print "In new1: $new1{$two}{two}\t$new1{$two}{three}\t$new1{$two}{number}\t$new1{$two}{name}\n"; $c++; } } } print "Found $c issues\n"; } { my $c = 0; foreach my $two (sort(keys(%old))) { if (defined $new2{$two}) { if ($old{$two}{two} ne $new2{$two}{two} || lc($old{$two}{name}) ne lc($new2{$two}{name})) { print "In old : $old{$two}{two}\t$old{$two}{name}\n"; print "In new2: $new2{$two}{two}\t$new2{$two}{name}\n"; $c++; } } } print "Found $c issues\n"; } >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080917031508.C6B19220>