Author: edwin
Date: Sat May 23 09:01:30 2009
New Revision: 192630
URL: http://svn.freebsd.org/changeset/base/192630

Log:
  Added two tools to check the contents of /usr/share/misc/iso* with
  the data from the sources.
  
  PR:           misc/127430 and misc/misc/127428

Added:
  head/tools/tools/iso/
  head/tools/tools/iso/check-iso3166.pl   (contents, props changed)
  head/tools/tools/iso/check-iso639.pl   (contents, props changed)
Modified:
  head/tools/tools/README

Modified: head/tools/tools/README
==============================================================================
--- head/tools/tools/README     Sat May 23 08:49:55 2009        (r192629)
+++ head/tools/tools/README     Sat May 23 09:01:30 2009        (r192630)
@@ -32,6 +32,8 @@ hcomp         Compress header files by removing
 html-mv         Rename HTML generated filenames to human readable filenames.
 ifinfo         Uses the interface MIB to print out all the information
                an interface exports in an ugly form.
+iso             Tool to compare the iso3166 and iso639 files in
+               /usr/share/misc with the data from the master sites.
 iwi            Tools specific to the Intel PRO/Wireless 2200BG/2225BG/2915ABG
                support.
 kdrv           KernelDriver; add/list/remove third-party kernel driver

Added: head/tools/tools/iso/check-iso3166.pl
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/tools/tools/iso/check-iso3166.pl       Sat May 23 09:01:30 2009        
(r192630)
@@ -0,0 +1,164 @@
+#!/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 <ed...@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";
+}
+

Added: head/tools/tools/iso/check-iso639.pl
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/tools/tools/iso/check-iso639.pl        Sat May 23 09:01:30 2009        
(r192630)
@@ -0,0 +1,98 @@
+#!/usr/bin/perl -w
+
+#
+# $FreeBSD$
+#
+# This script compares the file iso639 (from head/share/misc) with the file
+# ISO-639-2_8859-1.txt (from
+# http://www.loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt) to see if there
+# any differences.
+#
+# Created by Edwin Groothuis <ed...@freebsd.org> for the FreeBSD project.
+#
+
+use strict;
+use Data::Dumper;
+
+my %old = ();
+{
+       open(FIN, "iso639") or die "Cannot open iso639 (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]+([a-z\-]+)[ 
\t]+(.*)/);
+               my $a2 = $1;
+               my $bib = $2;
+               my $term = $3;
+               my $name = $4;
+
+               $old{$bib}{a2} = $a2;
+               $old{$bib}{bib} = $bib;
+               $old{$bib}{term} = $term;
+               $old{$bib}{name} = $name;
+       }
+}
+
+my %new = ();
+{
+       open(FIN, "ISO-639-2_utf-8.txt") or die "Cannot open 
ISO-639-2_utf-8.txt, which can be retrieved from 
http://www.loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt";;
+       my @lines = <FIN>;
+       close(FIN);
+       chomp(@lines);
+
+       foreach my $l (@lines) {
+               my @a = split(/\|/, $l);
+               my $a2 = $a[2];
+               my $bib = $a[0];
+               my $term = $a[1];
+               my $name = $a[3];
+
+               $term = $bib if ($term eq "");
+
+               $new{$bib}{a2} = $a2;
+               $new{$bib}{bib} = $bib;
+               $new{$bib}{term} = $term;
+               $new{$bib}{name} = $name;
+       }
+}
+
+{
+       my $c = 0;
+       foreach my $bib (sort(keys(%old))) {
+               next if (defined $new{$bib});
+               print "In old but not new: 
$old{$bib}{a2}\t$old{$bib}{bib}\t$old{$bib}{term}\t$old{$bib}{name}\n";
+               $c++;
+       }
+       print "Found $c issues\n";
+}
+
+{
+       my $c = 0;
+       foreach my $bib (sort(keys(%new))) {
+               next if (defined $old{$bib});
+               print "In new but not old: 
$new{$bib}{a2}\t$new{$bib}{bib}\t$new{$bib}{term}\t$new{$bib}{name}\n";
+               $c++;
+       }
+       print "Found $c issues\n";
+}
+
+{
+       my $c = 0;
+       foreach my $bib (sort(keys(%old))) {
+               next if (!defined $new{$bib});
+               next if ($old{$bib}{a2} eq $new{$bib}{a2} &&
+                        $old{$bib}{bib} eq $new{$bib}{bib} &&
+                        $old{$bib}{term} eq $new{$bib}{term} &&
+                        $old{$bib}{name} eq $new{$bib}{name});
+               print "In old: 
$old{$bib}{a2}\t$old{$bib}{bib}\t$old{$bib}{term}\t$old{$bib}{name}\n";
+               print "In new: 
$new{$bib}{a2}\t$new{$bib}{bib}\t$new{$bib}{term}\t$new{$bib}{name}\n";
+               $c++;
+       }
+       print "Found $c issues\n";
+}
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to