home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / CMDS / mtools_3.6.src.lzh / MTOOLS_3.6 / toupper.c < prev    next >
C/C++ Source or Header  |  1997-11-12  |  13KB  |  306 lines

  1. #include "codepage.h"
  2.  
  3. /* MS-DOS doesn't use the same ASCII code as Unix does. The appearance
  4.  * of the characters is defined using code pages. These code pages
  5.  * aren't the same for all countries. For instance, some code pages
  6.  * don't contain upper case accented characters. This affects two
  7.  * things, relating to filenames:
  8.  
  9.  * 1. upper case characters. In short names, only upper case
  10.  * characters are allowed.  This also holds for accented characters.
  11.  * For instance, in a code page which doesn't contain accented
  12.  * uppercase characters, the accented lowercase characters get
  13.  * transformed into their unaccented counterparts. This is very bad
  14.  * design. Indeed, stuff like national language support should never
  15.  * affect filesystem integrity. And it does: A filename which is legal
  16.  * in one country could be illegal in another one. Bad News for
  17.  * frequent travellers.
  18.  
  19.  * long file names: Micro$oft has finally come to their senses and
  20.  * uses a more standard mapping for the long file names.  They use
  21.  * Unicode, which is basically a 32 bit version of ASCII. Its first
  22.  * 256 characters are identical to Unix ASCII. Thus, the code page
  23.  * also affects the correspondence between the codes used in long
  24.  * names and those used in short names.
  25.  
  26.  * Such a bad design is rather unbelievable. That's why I quoted the
  27.  * translation tables. BEGIN FAIR USE EXCERPT:
  28.  */
  29.  
  30. unsigned char toucase[][128]={
  31.     /* 0 */
  32.     { 0x80, 0x9a, 0x45, 0x41, 0x8e, 0x41, 0x8f, 0x80, 
  33.       0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x8e, 0x8f, 
  34.       0x90, 0x92, 0x92, 0x4f, 0x99, 0x4f, 0x55, 0x55, 
  35.       0x59, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 
  36.       0x41, 0x49, 0x4f, 0x55, 0xa5, 0xa5, 0xa6, 0xa7, 
  37.       0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 
  38.       0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 
  39.       0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 
  40.       0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 
  41.       0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 
  42.       0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 
  43.       0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 
  44.       0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 
  45.       0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 
  46.       0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 
  47.       0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff },
  48.  
  49.     /* 1 */
  50.     { 0x43, 0x55, 0x45, 0x41, 0x41, 0x41, 0x86, 0x43, 
  51.       0x45, 0x45, 0x45, 0x49, 0x49, 0x8d, 0x41, 0x8f, 
  52.       0x45, 0x45, 0x45, 0x4f, 0x45, 0x49, 0x55, 0x55, 
  53.       0x98, 0x4f, 0x55, 0x9b, 0x9c, 0x55, 0x55, 0x9f, 
  54.       0xa0, 0xa1, 0x4f, 0x55, 0xa4, 0xa5, 0xa6, 0xa7, 
  55.       0x49, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 
  56.       0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 
  57.       0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 
  58.       0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 
  59.       0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 
  60.       0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 
  61.       0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 
  62.       0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 
  63.       0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 
  64.       0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 
  65.       0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff },
  66.  
  67.     /* 2 */
  68.     { 0x80, 0x9a, 0x90, 0x41, 0x8e, 0x41, 0x8f, 0x80, 
  69.       0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x8e, 0x8f, 
  70.       0x90, 0x92, 0x92, 0x4f, 0x99, 0x4f, 0x55, 0x55, 
  71.       0x59, 0x99, 0x9a, 0x9d, 0x9c, 0x9d, 0x9e, 0x9f, 
  72.       0x41, 0x49, 0x4f, 0x55, 0xa5, 0xa5, 0xa6, 0xa7, 
  73.       0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 
  74.       0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 
  75.       0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 
  76.       0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 
  77.       0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 
  78.       0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 
  79.       0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 
  80.       0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 
  81.       0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 
  82.       0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 
  83.       0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff },
  84.  
  85.     /* 3 */
  86.     { 0x80, 0x9a, 0x90, 0x41, 0x8e, 0x41, 0x8f, 0x80, 
  87.       0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x8e, 0x8f, 
  88.       0x90, 0x92, 0x92, 0x4f, 0x99, 0x4f, 0x55, 0x55, 
  89.       0x59, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 
  90.       0x41, 0x49, 0x4f, 0x55, 0xa5, 0xa5, 0xa6, 0xa7, 
  91.       0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 
  92.       0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 
  93.       0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 
  94.       0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 
  95.       0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 
  96.       0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 
  97.       0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 
  98.       0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 
  99.       0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 
  100.       0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 
  101.       0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff },
  102.  
  103.     /* 4 */
  104.     { 0x80, 0x55, 0x45, 0x41, 0x41, 0x41, 0x8f, 0x80, 
  105.       0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x41, 0x8f, 
  106.       0x45, 0x92, 0x92, 0x4f, 0x4f, 0x4f, 0x55, 0x55, 
  107.       0x98, 0x4f, 0x55, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 
  108.       0x41, 0x49, 0x4f, 0x55, 0xa5, 0xa5, 0xa6, 0xa7, 
  109.       0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 
  110.       0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 
  111.       0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 
  112.       0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 
  113.       0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 
  114.       0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 
  115.       0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 
  116.       0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 
  117.       0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 
  118.       0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 
  119.       0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff },
  120.  
  121.     /* 5 */
  122.     { 0x80, 0x9a, 0x90, 0x8f, 0x8e, 0x91, 0x86, 0x80, 
  123.       0x89, 0x89, 0x92, 0x8b, 0x8c, 0x98, 0x8e, 0x8f, 
  124.       0x90, 0x91, 0x92, 0x8c, 0x99, 0xa9, 0x96, 0x9d, 
  125.       0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 
  126.       0x86, 0x8b, 0x9f, 0x96, 0xa5, 0xa5, 0xa6, 0xa7, 
  127.       0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 
  128.       0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 
  129.       0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 
  130.       0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 
  131.       0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 
  132.       0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 
  133.       0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 
  134.       0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 
  135.       0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 
  136.       0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 
  137.       0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff },
  138.  
  139.     /* 6 */
  140.     { 0x43, 0x55, 0x45, 0x41, 0x41, 0x41, 0x41, 0x43, 
  141.       0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x41, 0x41, 
  142.       0x45, 0x92, 0x92, 0x4f, 0x4f, 0x4f, 0x55, 0x55, 
  143.       0x59, 0x4f, 0x55, 0x4f, 0x9c, 0x4f, 0x9e, 0x9f, 
  144.       0x41, 0x49, 0x4f, 0x55, 0xa5, 0xa5, 0xa6, 0xa7, 
  145.       0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 
  146.       0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0x41, 0x41, 0x41, 
  147.       0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 
  148.       0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x41, 0x41, 
  149.       0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 
  150.       0xd1, 0xd1, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 
  151.       0x49, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x49, 0xdf, 
  152.       0x4f, 0xe1, 0x4f, 0x4f, 0x4f, 0x4f, 0xe6, 0xe8, 
  153.       0xe8, 0x55, 0x55, 0x55, 0x59, 0x59, 0xee, 0xef, 
  154.       0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 
  155.       0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff },
  156.  
  157.     /* 7 */
  158.     { 0x43, 0x9a, 0x45, 0x41, 0x8e, 0x41, 0x41, 0x43, 
  159.       0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x8e, 0x41, 
  160.       0x45, 0x92, 0x92, 0x4f, 0x99, 0x4f, 0x55, 0x55, 
  161.       0x59, 0x99, 0x9a, 0x4f, 0x9c, 0x4f, 0x9e, 0x9f, 
  162.       0x41, 0x49, 0x4f, 0x55, 0xa5, 0xa5, 0xa6, 0xa7, 
  163.       0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 
  164.       0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0x41, 0x41, 0x41, 
  165.       0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 
  166.       0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x41, 0x41, 
  167.       0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 
  168.       0xd1, 0xd1, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 
  169.       0x49, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x49, 0xdf, 
  170.       0x4f, 0xe1, 0x4f, 0x4f, 0x4f, 0x4f, 0xe6, 0xe8, 
  171.       0xe8, 0x55, 0x55, 0x55, 0x59, 0x59, 0xee, 0xef, 
  172.       0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 
  173.       0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff },
  174.  
  175.     /* 8 */
  176.     { 0x80, 0x9a, 0x90, 0xb6, 0x8e, 0xb7, 0x8f, 0x80, 
  177.       0xd2, 0xd3, 0xd4, 0xd8, 0xd7, 0xde, 0x8e, 0x8f, 
  178.       0x90, 0x92, 0x92, 0xe2, 0x99, 0xe3, 0xea, 0xeb, 
  179.       0x59, 0x99, 0x9a, 0x9d, 0x9c, 0x9d, 0x9e, 0x9f, 
  180.       0xb5, 0xd6, 0xe0, 0xe9, 0xa5, 0xa5, 0xa6, 0xa7, 
  181.       0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 
  182.       0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 
  183.       0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 
  184.       0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc7, 0xc7, 
  185.       0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 
  186.       0xd1, 0xd1, 0xd2, 0xd3, 0xd4, 0x49, 0xd6, 0xd7, 
  187.       0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 
  188.       0xe0, 0xe1, 0xe2, 0xe3, 0xe5, 0xe5, 0xe6, 0xe8, 
  189.       0xe8, 0xe9, 0xea, 0xeb, 0xed, 0xed, 0xee, 0xef, 
  190.       0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 
  191.       0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff },
  192.  
  193.     /* 9 */
  194.     { 0x80, 0x55, 0x45, 0x41, 0x41, 0x41, 0x8f, 0x80, 
  195.       0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x41, 0x8f, 
  196.       0x45, 0x92, 0x92, 0x4f, 0x4f, 0x4f, 0x55, 0x55, 
  197.       0x98, 0x4f, 0x55, 0x4f, 0x9c, 0x4f, 0x9e, 0x9f, 
  198.       0x41, 0x49, 0x4f, 0x55, 0xa5, 0xa5, 0xa6, 0xa7, 
  199.       0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 
  200.       0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0x41, 0x41, 0x41, 
  201.       0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 
  202.       0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x41, 0x41, 
  203.       0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 
  204.       0xd1, 0xd1, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 
  205.       0x49, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x49, 0xdf, 
  206.       0x4f, 0xe1, 0x4f, 0x4f, 0x4f, 0x4f, 0xe6, 0xe8, 
  207.       0xe8, 0x55, 0x55, 0x55, 0x59, 0x59, 0xee, 0xef, 
  208.       0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 
  209.       0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff },
  210.  
  211.     /* 10 */
  212.     { 0x80, 0x9a, 0x90, 0xb6, 0x8e, 0xb7, 0x8f, 0x80, 
  213.       0xd2, 0xd3, 0xd4, 0xd8, 0xd7, 0xde, 0x8e, 0x8f, 
  214.       0x90, 0x92, 0x92, 0xe2, 0x99, 0xe3, 0xea, 0xeb, 
  215.       0x98, 0x99, 0x9a, 0x9d, 0x9c, 0x9d, 0x9e, 0x9f, 
  216.       0xb5, 0xd6, 0xe0, 0xe9, 0xa5, 0xa5, 0xa6, 0xa7, 
  217.       0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 
  218.       0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 
  219.       0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 
  220.       0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc7, 0xc7, 
  221.       0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 
  222.       0xd1, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 
  223.       0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 
  224.       0xe0, 0xe1, 0xe2, 0xe3, 0xe5, 0xe5, 0xe6, 0xe8, 
  225.       0xe8, 0xe9, 0xea, 0xeb, 0xed, 0xed, 0xee, 0xef, 
  226.       0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 
  227.       0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff },
  228.  
  229.     /* 11 */
  230.     { 0x80, 0x9a, 0x90, 0xb6, 0x8e, 0xde, 0x8f, 0x80, 
  231.       0x9d, 0xd3, 0x8a, 0x8a, 0xd7, 0x8d, 0x8e, 0x8f, 
  232.       0x90, 0x91, 0x91, 0xe2, 0x99, 0x95, 0x95, 0x97, 
  233.       0x97, 0x99, 0x9a, 0x9b, 0x9b, 0x9d, 0x9e, 0xac, 
  234.       0xb5, 0xd6, 0xe0, 0xe9, 0xa4, 0xa4, 0xa6, 0xa6, 
  235.       0xa8, 0xa8, 0xaa, 0x8d, 0xac, 0xb8, 0xae, 0xaf, 
  236.       0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 
  237.       0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbd, 0xbf, 
  238.       0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc6, 
  239.       0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 
  240.       0xd1, 0xd1, 0xd2, 0xd3, 0xd2, 0xd5, 0xd6, 0xd7, 
  241.       0xb7, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 
  242.       0xe0, 0xe1, 0xe2, 0xe3, 0xe3, 0xd5, 0xe6, 0xe6, 
  243.       0xe8, 0xe9, 0xe8, 0xeb, 0xed, 0xed, 0xdd, 0xef, 
  244.       0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 
  245.       0xf8, 0xf9, 0xfa, 0xeb, 0xfc, 0xfc, 0xfe, 0xff },
  246.  
  247.  
  248. };
  249.  
  250. country_t countries[]={
  251.     {   1, 437, 437,   0 },
  252.     {   1, 850, 437,   6 },
  253.     {  44, 437, 437,   0 },
  254.     {  44, 850, 437,   6 },
  255.     {  33, 437, 437,   0 },
  256.     {  33, 850, 437,   6 },
  257.     {  49, 437, 437,   0 },
  258.     {  49, 850, 437,   7 },
  259.     {  34, 850, 437,   8 },
  260.     {  34, 437, 437,   0 },
  261.     {  39, 437, 437,   0 },
  262.     {  39, 850, 437,   6 },
  263.     {  46, 437, 437,   3 },
  264.     {  46, 850, 437,   8 },
  265.     {  45, 850, 865,   8 },
  266.     {  45, 865, 865,   2 },
  267.     {  41, 850, 437,   8 },
  268.     {  41, 437, 437,   3 },
  269.     {  47, 850, 865,   8 },
  270.     {  47, 865, 865,   2 },
  271.     {  31, 437, 437,   4 },
  272.     {  31, 850, 437,   9 },
  273.     {  32, 850, 437,   8 },
  274.     {  32, 437, 437,   3 },
  275.     { 358, 850, 437,   8 },
  276.     { 358, 437, 437,   3 },
  277.     {   2, 863, 863,   1 },
  278.     {   2, 850, 863,   6 },
  279.     { 351, 850, 860,   6 },
  280.     { 351, 860, 860,   5 },
  281.     {   3, 850, 437,   8 },
  282.     {   3, 437, 437,   0 },
  283.     {  61, 437, 437,   0 },
  284.     {  61, 850, 437,   6 },
  285.     {  81, 437, 437,   0 },
  286.     {  82, 437, 437,   0 },
  287.     {  86, 437, 437,   0 },
  288.     {  88, 437, 437,   0 },
  289.     {  55, 850, 850,  10 },
  290.     {  55, 437, 850,   0 },
  291.     { 354, 850, 850,  10 },
  292.     {  90, 850, 850,  10 },
  293.     {  38, 852, 852,  11 },
  294.     {  38, 850, 852,  10 },
  295.     {  42, 852, 852,  11 },
  296.     {  42, 850, 852,  10 },
  297.     {  48, 852, 852,  11 },
  298.     {  48, 850, 852,  10 },
  299.     {  36, 852, 852,  11 },
  300.     {  36, 850, 852,  10 },
  301.     {   0,   0,   0,   0 }
  302. };
  303.  
  304. /* END FAIR USE EXCERPT */
  305.  
  306.