--- fastest_cvsup.orig	Thu Sep 19 20:12:17 2002
+++ fastest_cvsup	Sat Apr 16 17:16:50 2005
@@ -1,13 +1,15 @@
 #!/usr/bin/perl
 #-----------------------------------------------------------------------------#
 #
-#  Find fastest CVSup server script for FreeBSD - version 0.2.8
+#  Find fastest CVSup server script for FreeBSD - version 0.2.9
 #  Copyright (c) A.J.Robinson (ajr@subdimension.com) 2002
 #  Distributed under the BSD license.
 #
 #-----------------------------------------------------------------------------#
 #
 # Changes:
+# 0.2.9  - added 'us' country code for USA hosts and 'tld' for top-level
+#          domain machines (can be in any country)
 # 0.2.8  - fixed the progress meter, timestamped %FREEBSD_SERVERS
 # 0.2.7  - updated documentation, usage message and progress meter.
 # 0.2.6  - changed from freebsdmirrors.org to the online handbook.
@@ -74,16 +76,18 @@
 # How many FreeBSD CVSup servers has each country got? (well, not strictly
 # true... what's the highest cvsup number in use?
 
-my %FREEBSD_SERVERS = (     # last updated: Thu Sep 19 12:56:23 2002
+my %FREEBSD_SERVERS = (     # last updated: Sat Apr 16 17:15:39 CST 2005
   'ar' => 1,    # Argentina
-  'at' => 1,    # Austria
-  'au' => 5,    # Australia
-  'br' => 4,    # Brazil
-  'ca' => 2,    # Canada
-  'cn' => 1,    # China
+  'at' => 2,    # Austria
+  'au' => 7,    # Australia
+  'br' => 5,    # Brazil
+  'ca' => 1,    # Canada
+  'ch' => 1,    # Switzerland
+  'cn' => 5,    # China
+  'cr' => 1,    # Costa Rica
   'cz' => 1,    # Czech Republic
-  'de' => 7,    # Germany
-  'dk' => 1,    # Denmark
+  'de' => 8,    # Germany
+  'dk' => 3,    # Denmark
   'ee' => 1,    # Estonia
   'es' => 3,    # Spain
   'fi' => 2,    # Finland
@@ -93,25 +97,32 @@
   'ie' => 1,    # Ireland
   'is' => 1,    # Iceland
   'jp' => 6,    # Japan
-  'kr' => 2,    # Korea
-  'lt' => 2,    # Lithuania
+  'kg' => 1,    # Kyrgyzstan
+  'kr' => 3,    # Korea
+  'kw' => 1,    # Kuwait
+  'lt' => 3,    # Lithuania
   'lv' => 1,    # Latvia
-  'nl' => 3,    # Netherlands
+  'nl' => 5,    # Netherlands
   'no' => 1,    # Norway
   'nz' => 1,    # New Zealand
-  'pl' => 1,    # Poland
-  'pt' => 1,    # Portugal
-  'ro' => 1,    # Romania
+  'ph' => 1,    # Philippines
+  'pl' => 3,    # Poland
+  'pt' => 3,    # Portugal
+  'ro' => 3,    # Romania
   'ru' => 6,    # Russia
-  'se' => 2,    # Sweden
-  'si' => 1,    # Slovenia
+  'se' => 3,    # Sweden
+  'sg' => 1,    # Singapore
+  'si' => 2,    # Slovenia
   'sk' => 2,    # Slovak Republic
   'sm' => 1,    # San Marino
-  'tw' => 3,    # Taiwan
-  'ua' => 5,    # Ukraine
-  'uk' => 5,    # United Kingdom
-  'us' => 17,   # USA
+  'th' => 1,    # Thailand
+  'tr' => 1,    # Turkey
+  'tw' => 13,	# Taiwan
+  'ua' => 7,    # Ukraine
+  'uk' => 4,    # United Kingdom
+  'us' => 18,   # USA
   'za' => 2,    # South Africa
+  'tld' => 18,	# Top Level Domain
 );
 
 my %OTHER_SERVERS = (
@@ -141,6 +152,8 @@
                  'rt.fm',
                  'skeleton.phys.spbu.ru',
                  'cvsup.jp.openbsd.org',
+                 'cvsup.tw.openbsd.org',
+                 'openbsd.cc.ntu.edu.tw',
                  'wiretapped.net',
                ],
 );
@@ -177,6 +190,7 @@
         "         -Q           very quiet mode, no progress meter\n",
         "         -r           uses remote server list from FreeBSD Handbook\n",
         "         -c aa,bb,cc  queries servers in countries aa,bb,cc\n",
+        "            tld       queries servers in the top level domain\n",
         "            local     queries servers set as local in the script\n",
         "            all       queries all FreeBSD servers\n\n",
         "  See the man page, fastest_cvsup(7), for more details.\n\n";
@@ -307,12 +321,12 @@
             unless ( $cc_name{$cc} ) { $cc_name{$cc} = $country }
           }
 
-          # parse US servers
+          # parse TLD servers
 
           elsif ( $server =~ /cvsup([\d]*)\.freebsd\.org/i ) {
             my $i = $1 || 1;
-            if ( !$srv{'us'} or $srv{'us'} < $i ) { $srv{'us'} = $i }
-            unless ( $cc_name{'us'} ) { $cc_name{'us'} = $country }
+            if ( !$srv{'tld'} or $srv{'tld'} < $i ) { $srv{'tld'} = $i }
+            unless ( $cc_name{'tld'} ) { $cc_name{'tld'} = $country }
           }
         }
       }
@@ -419,7 +433,7 @@
 
   for ( my $i=1; $i<=$FREEBSD_SERVERS{$cc}; $i++ ) {
 
-    if ( $cc eq 'us' ) { # use no country code, include the '1'
+    if ( $cc eq 'tld' ) { # use no country code, include the '1'
       if ( $i == 1 ) { push(@first,"cvsup$i.freebsd.org"); }
       else           { push(@others,"cvsup$i.freebsd.org"); }
     }
@@ -575,7 +589,7 @@
 
 =head1 SYNOPSIS
 
-B<fastest_cvsup> [B<-h>] [B<-(q|Q)>] [B<-r>] B<-c> (B<country codes>|B<local>|B<all>)
+B<fastest_cvsup> [B<-h>] [B<-(q|Q)>] [B<-r>] B<-c> (B<country codes>|B<tld>|B<local>|B<all>)
 
 =head1 DESCRIPTION
 
@@ -619,6 +633,11 @@
 
 NetBSD and OpenBSD servers are lumped together under the 'netbsd' and
 'openbsd' codes respectively.
+
+=item B<-c tld>
+
+checks the servers in the Top Level Domain.  These can be anywhere in the
+world.
 
 =item B<-c local>
 
