1192630Sedwin#!/usr/bin/perl -w
2192630Sedwin
3192630Sedwin#
4192630Sedwin# $FreeBSD$
5192630Sedwin#
6192630Sedwin# This script compares the file iso639 (from head/share/misc) with the file
7192630Sedwin# ISO-639-2_8859-1.txt (from
8192630Sedwin# http://www.loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt) to see if there
9192630Sedwin# any differences.
10192630Sedwin#
11192630Sedwin# Created by Edwin Groothuis <edwin@FreeBSD.org> for the FreeBSD project.
12192630Sedwin#
13192630Sedwin
14192630Sedwinuse strict;
15192630Sedwinuse Data::Dumper;
16192630Sedwin
17192630Sedwinmy %old = ();
18192630Sedwin{
19192630Sedwin	open(FIN, "iso639") or die "Cannot open iso639 (should be in head/share/misc)";
20192630Sedwin	my @lines = <FIN>;
21192630Sedwin	close(FIN);
22192630Sedwin	chomp(@lines);
23192630Sedwin
24192630Sedwin	foreach my $l (@lines) {
25192630Sedwin		next if ($l =~ /^#/);
26192630Sedwin		next if ($l eq "");
27192630Sedwin
28192630Sedwin		die "Bad line: $l\n"
29192630Sedwin			if ($l !~ /^([a-z\-]*)[ \t]+([a-z\-]+)[ \t]+([a-z\-]+)[ \t]+(.*)/);
30192630Sedwin		my $a2 = $1;
31192630Sedwin		my $bib = $2;
32192630Sedwin		my $term = $3;
33192630Sedwin		my $name = $4;
34192630Sedwin
35192630Sedwin		$old{$bib}{a2} = $a2;
36192630Sedwin		$old{$bib}{bib} = $bib;
37192630Sedwin		$old{$bib}{term} = $term;
38192630Sedwin		$old{$bib}{name} = $name;
39192630Sedwin	}
40192630Sedwin}
41192630Sedwin
42192630Sedwinmy %new = ();
43192630Sedwin{
44192630Sedwin	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";
45192630Sedwin	my @lines = <FIN>;
46192630Sedwin	close(FIN);
47192630Sedwin	chomp(@lines);
48192630Sedwin
49192630Sedwin	foreach my $l (@lines) {
50192630Sedwin		my @a = split(/\|/, $l);
51192630Sedwin		my $a2 = $a[2];
52192630Sedwin		my $bib = $a[0];
53192630Sedwin		my $term = $a[1];
54192630Sedwin		my $name = $a[3];
55192630Sedwin
56192630Sedwin		$term = $bib if ($term eq "");
57192630Sedwin
58192630Sedwin		$new{$bib}{a2} = $a2;
59192630Sedwin		$new{$bib}{bib} = $bib;
60192630Sedwin		$new{$bib}{term} = $term;
61192630Sedwin		$new{$bib}{name} = $name;
62192630Sedwin	}
63192630Sedwin}
64192630Sedwin
65192630Sedwin{
66192630Sedwin	my $c = 0;
67192630Sedwin	foreach my $bib (sort(keys(%old))) {
68192630Sedwin		next if (defined $new{$bib});
69192630Sedwin		print "In old but not new: $old{$bib}{a2}\t$old{$bib}{bib}\t$old{$bib}{term}\t$old{$bib}{name}\n";
70192630Sedwin		$c++;
71192630Sedwin	}
72192630Sedwin	print "Found $c issues\n";
73192630Sedwin}
74192630Sedwin
75192630Sedwin{
76192630Sedwin	my $c = 0;
77192630Sedwin	foreach my $bib (sort(keys(%new))) {
78192630Sedwin		next if (defined $old{$bib});
79192630Sedwin		print "In new but not old: $new{$bib}{a2}\t$new{$bib}{bib}\t$new{$bib}{term}\t$new{$bib}{name}\n";
80192630Sedwin		$c++;
81192630Sedwin	}
82192630Sedwin	print "Found $c issues\n";
83192630Sedwin}
84192630Sedwin
85192630Sedwin{
86192630Sedwin	my $c = 0;
87192630Sedwin	foreach my $bib (sort(keys(%old))) {
88192630Sedwin		next if (!defined $new{$bib});
89192630Sedwin		next if ($old{$bib}{a2} eq $new{$bib}{a2} &&
90192630Sedwin			 $old{$bib}{bib} eq $new{$bib}{bib} &&
91192630Sedwin			 $old{$bib}{term} eq $new{$bib}{term} &&
92192630Sedwin			 $old{$bib}{name} eq $new{$bib}{name});
93192630Sedwin		print "In old: $old{$bib}{a2}\t$old{$bib}{bib}\t$old{$bib}{term}\t$old{$bib}{name}\n";
94192630Sedwin		print "In new: $new{$bib}{a2}\t$new{$bib}{bib}\t$new{$bib}{term}\t$new{$bib}{name}\n";
95192630Sedwin		$c++;
96192630Sedwin	}
97192630Sedwin	print "Found $c issues\n";
98192630Sedwin}
99