home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD 2.1 / Amiga Developer CD v2.1.iso / NDK / NDK_3.5 / Examples / Locale / Countries / make_country_files.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-10-20  |  49.6 KB  |  1,597 lines

  1. /*
  2.  * $Id: make_country_files.c 1.1 1999/10/20 17:22:51 olsen Exp olsen $
  3.  *
  4.  * :ts=4
  5.  *
  6.  * $VER: make_country_files 44.2 (28.9.1999)
  7.  *
  8.  * Copyright © 1999 Amiga, Inc.  All Rights Reserved
  9.  *
  10.  * This program contains the definitions of all country files used by the
  11.  * AmigaOS locale.library subsystem. Each definition consists of three
  12.  * parts: the country name (e.g. "australia"), the country file
  13.  * version (e.g. "44.2 (28.9.1999)") and the actual country data as
  14.  * defined in <prefs/locale.h>. What actually makes up the country data is
  15.  * difficult to explain. If you don't know how to put one together you
  16.  * probably shouldn't try to add a new one.
  17.  *
  18.  * If you really want to add a new country definition, first make sure that
  19.  * you know what it takes to fill in the country data. Then decide upon a
  20.  * name and make a copy of an existing entry and modify it. When you are
  21.  * finished, fill in the version string, add a pointer in the countries[]
  22.  * table and recompile this program, then start it. It should create a new
  23.  * .country file which should then be copied to "LOCALE:countries". Now fire
  24.  * up the Locale preferences editor and pick your new country definition.
  25.  *
  26.  * If you add a new definition for a country which is a member of the
  27.  * European Community and which will have the Euro currency introduced in
  28.  * the year 2000, please also add another Euro specific entry and update
  29.  * the euro_countries[] table.
  30.  *
  31.  * For more information, contact Olaf Barthel <olsen@logicalline.com>
  32.  */
  33.  
  34. #include <libraries/iffparse.h>
  35. #include <libraries/locale.h>
  36.  
  37. #include <prefs/prefhdr.h>
  38. #include <prefs/locale.h>
  39.  
  40. #include <dos/dos.h>
  41.  
  42. #include <clib/exec_protos.h>
  43. #include <clib/dos_protos.h>
  44. #include <clib/iffparse_protos.h>
  45. #include <clib/utility_protos.h>
  46.  
  47. #include <string.h>
  48.  
  49. /****************************************************************************/
  50.  
  51. #define ID_FVER MAKE_ID('F','V','E','R')
  52.  
  53. /****************************************************************************/
  54.  
  55. #define OK (0)
  56. #define ZERO ((BPTR)NULL)
  57.  
  58. /****************************************************************************/
  59.  
  60. struct CountryData
  61. {
  62.     STRPTR                cd_Name;
  63.     STRPTR                cd_Version;
  64.     struct CountryPrefs    cd_Prefs;
  65. };
  66.  
  67. /****************************************************************************/
  68.  
  69. struct Library * IFFParseBase;
  70. struct Library * UtilityBase;
  71.  
  72. /****************************************************************************/
  73.  
  74. struct CountryData australia_prefs =
  75. {
  76.     "australia",
  77.     "44.2 (28.9.1999)",
  78.  
  79.     {
  80.     /* cp_Reserved              */ { 0 },
  81.     /* cp_CountryCode           */ MAKE_ID('A','U','S',0),
  82.     /* cp_TelephoneCode         */ 61,
  83.     /* cp_MeasuringSystem       */ MS_ISO,
  84.     /* cp_DateTimeFormat        */ "%A %B %e %Y %I:%M%p",
  85.     /* cp_DateFormat            */ "%A %B %e %Y",
  86.     /* cp_TimeFormat            */ "%I:%M:%S%p",
  87.     /* cp_ShortDateTimeFormat   */ "%e/%m/%Y %I:%M%p",
  88.     /* cp_ShortDateFormat       */ "%e/%m/%Y",
  89.     /* cp_ShortTimeFormat       */ "%I:%M%p",
  90.     /* cp_DecimalPoint          */ ".",
  91.     /* cp_GroupSeparator        */ " ",
  92.     /* cp_FracGroupSeparator    */ "",
  93.     /* cp_Grouping              */ { 3 },
  94.     /* cp_FracGrouping          */ { 0 },
  95.     /* cp_MonDecimalPoint       */ ".",
  96.     /* cp_MonGroupSeparator     */ " ",
  97.     /* cp_MonFracGroupSeparator */ "",
  98.     /* cp_MonGrouping           */ { 3 },
  99.     /* cp_MonFracGrouping       */ { 0 },
  100.     /* cp_MonFracDigits         */ 2,
  101.     /* cp_MonIntFracDigits      */ 2,
  102.     /* cp_MonCS                 */ "$",
  103.     /* cp_MonSmallCS            */ "c",
  104.     /* cp_MonIntCS              */ "AUD",
  105.     /* cp_MonPositiveSign       */ "",
  106.     /* cp_MonPositiveSpaceSep   */ SS_SPACE,
  107.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  108.     /* cp_MonPositiveCSPos      */ CSP_PRECEDES,
  109.     /* cp_MonNegativeSign       */ "",
  110.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  111.     /* cp_MonNegativeSignPos    */ SP_PARENS,
  112.     /* cp_MonNegativeCSPos      */ CSP_PRECEDES,
  113.     /* cp_CalendarType          */ CT_7SUN
  114.     }
  115. };
  116.  
  117. struct CountryData belgie_prefs =
  118. {
  119.     "belgie",
  120.     "44.2 (28.9.1999)",
  121.  
  122.     {
  123.     /* cp_Reserved              */ { 0 },
  124.     /* cp_CountryCode           */ MAKE_ID('B',0,0,0),
  125.     /* cp_TelephoneCode         */ 32,
  126.     /* cp_MeasuringSystem       */ MS_ISO,
  127.     /* cp_DateTimeFormat        */ "%e-%b-%Y %H:%M:%S",
  128.     /* cp_DateFormat            */ "%e-%b-%Y",
  129.     /* cp_TimeFormat            */ "%H:%M:%S",
  130.     /* cp_ShortDateTimeFormat   */ "%d/%m/%Y %H:%M:%S",
  131.     /* cp_ShortDateFormat       */ "%d/%m/%Y",
  132.     /* cp_ShortTimeFormat       */ "%H:%M",
  133.     /* cp_DecimalPoint          */ ",",
  134.     /* cp_GroupSeparator        */ ".",
  135.     /* cp_FracGroupSeparator    */ "",
  136.     /* cp_Grouping              */ { 3 },
  137.     /* cp_FracGrouping          */ { 0 },
  138.     /* cp_MonDecimalPoint       */ ",",
  139.     /* cp_MonGroupSeparator     */ ".",
  140.     /* cp_MonFracGroupSeparator */ "",
  141.     /* cp_MonGrouping           */ { 3 },
  142.     /* cp_MonFracGrouping       */ { 0 },
  143.     /* cp_MonFracDigits         */ 2,
  144.     /* cp_MonIntFracDigits      */ 2,
  145.     /* cp_MonCS                 */ "BEF",
  146.     /* cp_MonSmallCS            */ "",
  147.     /* cp_MonIntCS              */ "BFR",
  148.     /* cp_MonPositiveSign       */ "",
  149.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  150.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  151.     /* cp_MonPositiveCSPos      */ CSP_SUCCEEDS,
  152.     /* cp_MonNegativeSign       */ "-",
  153.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  154.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  155.     /* cp_MonNegativeCSPos      */ CSP_SUCCEEDS,
  156.     /* cp_CalendarType          */ CT_7MON
  157.     }
  158. };
  159.  
  160. struct CountryData belgique_prefs =
  161. {
  162.     "belgique",
  163.     "44.2 (28.9.1999)",
  164.  
  165.     {
  166.     /* cp_Reserved              */ { 0 },
  167.     /* cp_CountryCode           */ MAKE_ID('B',0,0,0),
  168.     /* cp_TelephoneCode         */ 32,
  169.     /* cp_MeasuringSystem       */ MS_ISO,
  170.     /* cp_DateTimeFormat        */ "%e-%b-%Y %Hh%M",
  171.     /* cp_DateFormat            */ "%e-%b-%Y",
  172.     /* cp_TimeFormat            */ "%Hh%M",
  173.     /* cp_ShortDateTimeFormat   */ "%d/%m/%Y %Hh%M",
  174.     /* cp_ShortDateFormat       */ "%d/%m/%Y",
  175.     /* cp_ShortTimeFormat       */ "%Hh%M",
  176.     /* cp_DecimalPoint          */ ",",
  177.     /* cp_GroupSeparator        */ ".",
  178.     /* cp_FracGroupSeparator    */ "",
  179.     /* cp_Grouping              */ { 3 },
  180.     /* cp_FracGrouping          */ { 0 },
  181.     /* cp_MonDecimalPoint       */ ",",
  182.     /* cp_MonGroupSeparator     */ ".",
  183.     /* cp_MonFracGroupSeparator */ "",
  184.     /* cp_MonGrouping           */ { 3 },
  185.     /* cp_MonFracGrouping       */ { 0 },
  186.     /* cp_MonFracDigits         */ 2,
  187.     /* cp_MonIntFracDigits      */ 2,
  188.     /* cp_MonCS                 */ "FB",
  189.     /* cp_MonSmallCS            */ "",
  190.     /* cp_MonIntCS              */ "BFR",
  191.     /* cp_MonPositiveSign       */ "",
  192.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  193.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  194.     /* cp_MonPositiveCSPos      */ CSP_SUCCEEDS,
  195.     /* cp_MonNegativeSign       */ "-",
  196.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  197.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  198.     /* cp_MonNegativeCSPos      */ CSP_SUCCEEDS,
  199.     /* cp_CalendarType          */ CT_7MON
  200.     }
  201. };
  202.  
  203. struct CountryData canada_prefs =
  204. {
  205.     "canada",
  206.     "44.2 (28.9.1999)",
  207.  
  208.     {
  209.     /* cp_Reserved              */ { 0 },
  210.     /* cp_CountryCode           */ MAKE_ID('C','A','N',0),
  211.     /* cp_TelephoneCode         */ 1,
  212.     /* cp_MeasuringSystem       */ MS_ISO,
  213.     /* cp_DateTimeFormat        */ "%A %B %e %Y %H:%M:%S",
  214.     /* cp_DateFormat            */ "%A %B %e %Y",
  215.     /* cp_TimeFormat            */ "%H:%M:%S",
  216.     /* cp_ShortDateTimeFormat   */ "%d/%m/%Y %H:%M:%S",
  217.     /* cp_ShortDateFormat       */ "%d/%m/%Y",
  218.     /* cp_ShortTimeFormat       */ "%H:%M",
  219.     /* cp_DecimalPoint          */ ",",
  220.     /* cp_GroupSeparator        */ " ",
  221.     /* cp_FracGroupSeparator    */ " ",
  222.     /* cp_Grouping              */ { 3 },
  223.     /* cp_FracGrouping          */ { 3 },
  224.     /* cp_MonDecimalPoint       */ ",",
  225.     /* cp_MonGroupSeparator     */ " ",
  226.     /* cp_MonFracGroupSeparator */ " ",
  227.     /* cp_MonGrouping           */ { 3 },
  228.     /* cp_MonFracGrouping       */ { 3 },
  229.     /* cp_MonFracDigits         */ 2,
  230.     /* cp_MonIntFracDigits      */ 2,
  231.     /* cp_MonCS                 */ "$",
  232.     /* cp_MonSmallCS            */ "¢",
  233.     /* cp_MonIntCS              */ "CDN",
  234.     /* cp_MonPositiveSign       */ "",
  235.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  236.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  237.     /* cp_MonPositiveCSPos      */ CSP_SUCCEEDS,
  238.     /* cp_MonNegativeSign       */ "-",
  239.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  240.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  241.     /* cp_MonNegativeCSPos      */ CSP_SUCCEEDS,
  242.     /* cp_CalendarType          */ CT_7SUN
  243.     }
  244. };
  245.  
  246. struct CountryData canada_francais_prefs =
  247. {
  248.     "canada_français",
  249.     "44.2 (28.9.1999)",
  250.  
  251.     {
  252.     /* cp_Reserved              */ { 0 },
  253.     /* cp_CountryCode           */ MAKE_ID('C','A','N',0),
  254.     /* cp_TelephoneCode         */ 1,
  255.     /* cp_MeasuringSystem       */ MS_ISO,
  256.     /* cp_DateTimeFormat        */ "%A %e %B %Y %H:%M:%S",
  257.     /* cp_DateFormat            */ "%A %e %B %Y",
  258.     /* cp_TimeFormat            */ "%H:%M:%S",
  259.     /* cp_ShortDateTimeFormat   */ "%Y-%m-%d %H:%M:%S",
  260.     /* cp_ShortDateFormat       */ "%Y-%m-%d",
  261.     /* cp_ShortTimeFormat       */ "%H:%M",
  262.     /* cp_DecimalPoint          */ ",",
  263.     /* cp_GroupSeparator        */ " ",
  264.     /* cp_FracGroupSeparator    */ " ",
  265.     /* cp_Grouping              */ { 3 },
  266.     /* cp_FracGrouping          */ { 3 },
  267.     /* cp_MonDecimalPoint       */ ",",
  268.     /* cp_MonGroupSeparator     */ " ",
  269.     /* cp_MonFracGroupSeparator */ " ",
  270.     /* cp_MonGrouping           */ { 3 },
  271.     /* cp_MonFracGrouping       */ { 3 },
  272.     /* cp_MonFracDigits         */ 2,
  273.     /* cp_MonIntFracDigits      */ 2,
  274.     /* cp_MonCS                 */ "$",
  275.     /* cp_MonSmallCS            */ "¢",
  276.     /* cp_MonIntCS              */ "CDN",
  277.     /* cp_MonPositiveSign       */ "",
  278.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  279.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  280.     /* cp_MonPositiveCSPos      */ CSP_SUCCEEDS,
  281.     /* cp_MonNegativeSign       */ "-",
  282.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  283.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  284.     /* cp_MonNegativeCSPos      */ CSP_SUCCEEDS,
  285.     /* cp_CalendarType          */ CT_7SUN
  286.     }
  287. };
  288.  
  289. struct CountryData danmark_prefs =
  290. {
  291.     "danmark",
  292.     "44.2 (28.9.1999)",
  293.  
  294.     {
  295.     /* cp_Reserved              */ { 0 },
  296.     /* cp_CountryCode           */ MAKE_ID('D','K',0,0),
  297.     /* cp_TelephoneCode         */ 45,
  298.     /* cp_MeasuringSystem       */ MS_ISO,
  299.     /* cp_DateTimeFormat        */ "%e. %B %Y %H:%M:%S",
  300.     /* cp_DateFormat            */ "%e. %B %Y",
  301.     /* cp_TimeFormat            */ "%H:%M:%S",
  302.     /* cp_ShortDateTimeFormat   */ "%Y/%m/%d %H:%M:%S",
  303.     /* cp_ShortDateFormat       */ "%Y/%m/%d",
  304.     /* cp_ShortTimeFormat       */ "%H:%M:%S",
  305.     /* cp_DecimalPoint          */ ",",
  306.     /* cp_GroupSeparator        */ ".",
  307.     /* cp_FracGroupSeparator    */ ".",
  308.     /* cp_Grouping              */ { 3 },
  309.     /* cp_FracGrouping          */ { 3 },
  310.     /* cp_MonDecimalPoint       */ ",",
  311.     /* cp_MonGroupSeparator     */ ".",
  312.     /* cp_MonFracGroupSeparator */ ".",
  313.     /* cp_MonGrouping           */ { 3 },
  314.     /* cp_MonFracGrouping       */ { 3 },
  315.     /* cp_MonFracDigits         */ 2,
  316.     /* cp_MonIntFracDigits      */ 2,
  317.     /* cp_MonCS                 */ "kr.",
  318.     /* cp_MonSmallCS            */ "øre",
  319.     /* cp_MonIntCS              */ "DKR",
  320.     /* cp_MonPositiveSign       */ "",
  321.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  322.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  323.     /* cp_MonPositiveCSPos      */ CSP_SUCCEEDS,
  324.     /* cp_MonNegativeSign       */ "-",
  325.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  326.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  327.     /* cp_MonNegativeCSPos      */ CSP_SUCCEEDS,
  328.     /* cp_CalendarType          */ CT_7MON
  329.     }
  330. };
  331.  
  332. struct CountryData deutschland_prefs =
  333. {
  334.     "deutschland",
  335.     "44.2 (28.9.1999)",
  336.  
  337.     {
  338.     /* cp_Reserved              */ { 0 },
  339.     /* cp_CountryCode           */ MAKE_ID('D',0,0,0),
  340.     /* cp_TelephoneCode         */ 49,
  341.     /* cp_MeasuringSystem       */ MS_ISO,
  342.     /* cp_DateTimeFormat        */ "%A, %e. %B %Y %H:%M:%S",
  343.     /* cp_DateFormat            */ "%A, %e. %B %Y",
  344.     /* cp_TimeFormat            */ "%H:%M:%S",
  345.     /* cp_ShortDateTimeFormat   */ "%d.%m.%Y %H:%M:%S",
  346.     /* cp_ShortDateFormat       */ "%d.%m.%Y",
  347.     /* cp_ShortTimeFormat       */ "%H:%M:%S",
  348.     /* cp_DecimalPoint          */ ",",
  349.     /* cp_GroupSeparator        */ ".",
  350.     /* cp_FracGroupSeparator    */ ".",
  351.     /* cp_Grouping              */ { 3 },
  352.     /* cp_FracGrouping          */ { 3 },
  353.     /* cp_MonDecimalPoint       */ ",",
  354.     /* cp_MonGroupSeparator     */ ".",
  355.     /* cp_MonFracGroupSeparator */ ".",
  356.     /* cp_MonGrouping           */ { 3 },
  357.     /* cp_MonFracGrouping       */ { 3 },
  358.     /* cp_MonFracDigits         */ 2,
  359.     /* cp_MonIntFracDigits      */ 2,
  360.     /* cp_MonCS                 */ "DM",
  361.     /* cp_MonSmallCS            */ "Pf",
  362.     /* cp_MonIntCS              */ "DM",
  363.     /* cp_MonPositiveSign       */ "",
  364.     /* cp_MonPositiveSpaceSep   */ SS_SPACE,
  365.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  366.     /* cp_MonPositiveCSPos      */ CSP_SUCCEEDS,
  367.     /* cp_MonNegativeSign       */ "-",
  368.     /* cp_MonNegativeSpaceSep   */ SS_SPACE,
  369.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  370.     /* cp_MonNegativeCSPos      */ CSP_SUCCEEDS,
  371.     /* cp_CalendarType          */ CT_7MON
  372.     }
  373. };
  374.  
  375. struct CountryData espana_prefs =
  376. {
  377.     "españa",
  378.     "44.2 (28.9.1999)",
  379.  
  380.     {
  381.     /* cp_Reserved              */ { 0 },
  382.     /* cp_CountryCode           */ MAKE_ID('E',0,0,0),
  383.     /* cp_TelephoneCode         */ 34,
  384.     /* cp_MeasuringSystem       */ MS_ISO,
  385.     /* cp_DateTimeFormat        */ "%e-%m-%Y %H:%M:%S",
  386.     /* cp_DateFormat            */ "%e-%m-%Y",
  387.     /* cp_TimeFormat            */ "%H:%M:%S",
  388.     /* cp_ShortDateTimeFormat   */ "%e-%m-%Y %H:%M:%S",
  389.     /* cp_ShortDateFormat       */ "%e-%m-%Y",
  390.     /* cp_ShortTimeFormat       */ "%H:%M:%S",
  391.     /* cp_DecimalPoint          */ "'",
  392.     /* cp_GroupSeparator        */ ",",
  393.     /* cp_FracGroupSeparator    */ "",
  394.     /* cp_Grouping              */ { 3 },
  395.     /* cp_FracGrouping          */ { 0 },
  396.     /* cp_MonDecimalPoint       */ ",",
  397.     /* cp_MonGroupSeparator     */ ".",
  398.     /* cp_MonFracGroupSeparator */ "",
  399.     /* cp_MonGrouping           */ { 3 },
  400.     /* cp_MonFracGrouping       */ { 0 },
  401.     /* cp_MonFracDigits         */ 2,
  402.     /* cp_MonIntFracDigits      */ 2,
  403.     /* cp_MonCS                 */ "Pesetas",
  404.     /* cp_MonSmallCS            */ "",
  405.     /* cp_MonIntCS              */ "ESB",
  406.     /* cp_MonPositiveSign       */ "",
  407.     /* cp_MonPositiveSpaceSep   */ SS_SPACE,
  408.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  409.     /* cp_MonPositiveCSPos      */ CSP_SUCCEEDS,
  410.     /* cp_MonNegativeSign       */ "-",
  411.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  412.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  413.     /* cp_MonNegativeCSPos      */ CSP_PRECEDES,
  414.     /* cp_CalendarType          */ CT_7MON
  415.     }
  416. };
  417.  
  418. struct CountryData france_prefs =
  419. {
  420.     "france",
  421.     "44.2 (28.9.1999)",
  422.  
  423.     {
  424.     /* cp_Reserved              */ { 0 },
  425.     /* cp_CountryCode           */ MAKE_ID('F',0,0,0),
  426.     /* cp_TelephoneCode         */ 33,
  427.     /* cp_MeasuringSystem       */ MS_ISO,
  428.     /* cp_DateTimeFormat        */ "%A %e %B %Y %Hh%M",
  429.     /* cp_DateFormat            */ "%A %e %B %Y",
  430.     /* cp_TimeFormat            */ "%Hh%M",
  431.     /* cp_ShortDateTimeFormat   */ "%d/%m/%Y %Hh%M",
  432.     /* cp_ShortDateFormat       */ "%d/%m/%Y",
  433.     /* cp_ShortTimeFormat       */ "%Hh%M",
  434.     /* cp_DecimalPoint          */ ",",
  435.     /* cp_GroupSeparator        */ " ",
  436.     /* cp_FracGroupSeparator    */ " ",
  437.     /* cp_Grouping              */ { 3 },
  438.     /* cp_FracGrouping          */ { 3 },
  439.     /* cp_MonDecimalPoint       */ ",",
  440.     /* cp_MonGroupSeparator     */ " ",
  441.     /* cp_MonFracGroupSeparator */ " ",
  442.     /* cp_MonGrouping           */ { 3 },
  443.     /* cp_MonFracGrouping       */ { 3 },
  444.     /* cp_MonFracDigits         */ 2,
  445.     /* cp_MonIntFracDigits      */ 4,
  446.     /* cp_MonCS                 */ "F",
  447.     /* cp_MonSmallCS            */ "",
  448.     /* cp_MonIntCS              */ "FRF",
  449.     /* cp_MonPositiveSign       */ "",
  450.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  451.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  452.     /* cp_MonPositiveCSPos      */ CSP_SUCCEEDS,
  453.     /* cp_MonNegativeSign       */ "-",
  454.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  455.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  456.     /* cp_MonNegativeCSPos      */ CSP_SUCCEEDS,
  457.     /* cp_CalendarType          */ CT_7MON
  458.     }
  459. };
  460.  
  461. struct CountryData great_britain_prefs =
  462. {
  463.     "great_britain",
  464.     "44.2 (28.9.1999)",
  465.  
  466.     {
  467.     /* cp_Reserved              */ { 0 },
  468.     /* cp_CountryCode           */ MAKE_ID('G','B',0,0),
  469.     /* cp_TelephoneCode         */ 44,
  470.     /* cp_MeasuringSystem       */ MS_BRITISH,
  471.     /* cp_DateTimeFormat        */ "%A %e %B %Y  %H:%M",
  472.     /* cp_DateFormat            */ "%A %e %B %Y",
  473.     /* cp_TimeFormat            */ "%H:%M:%S",
  474.     /* cp_ShortDateTimeFormat   */ "%d/%m/%Y %H:%M",
  475.     /* cp_ShortDateFormat       */ "%d/%m/%Y",
  476.     /* cp_ShortTimeFormat       */ "%H:%M",
  477.     /* cp_DecimalPoint          */ ".",
  478.     /* cp_GroupSeparator        */ ",",
  479.     /* cp_FracGroupSeparator    */ "",
  480.     /* cp_Grouping              */ { 3 },
  481.     /* cp_FracGrouping          */ { 0 },
  482.     /* cp_MonDecimalPoint       */ ".",
  483.     /* cp_MonGroupSeparator     */ ",",
  484.     /* cp_MonFracGroupSeparator */ "",
  485.     /* cp_MonGrouping           */ { 3 },
  486.     /* cp_MonFracGrouping       */ { 0 },
  487.     /* cp_MonFracDigits         */ 2,
  488.     /* cp_MonIntFracDigits      */ 2,
  489.     /* cp_MonCS                 */ "£",
  490.     /* cp_MonSmallCS            */ "p",
  491.     /* cp_MonIntCS              */ "GPB",
  492.     /* cp_MonPositiveSign       */ "",
  493.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  494.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  495.     /* cp_MonPositiveCSPos      */ CSP_PRECEDES,
  496.     /* cp_MonNegativeSign       */ "",
  497.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  498.     /* cp_MonNegativeSignPos    */ SP_PARENS,
  499.     /* cp_MonNegativeCSPos      */ CSP_PRECEDES,
  500.     /* cp_CalendarType          */ CT_7MON
  501.     }
  502. };
  503.  
  504. struct CountryData italia_prefs =
  505. {
  506.     "italia",
  507.     "44.2 (28.9.1999)",
  508.  
  509.     {
  510.     /* cp_Reserved              */ { 0 },
  511.     /* cp_CountryCode           */ MAKE_ID('I','T','A',0),
  512.     /* cp_TelephoneCode         */ 39,
  513.     /* cp_MeasuringSystem       */ MS_ISO,
  514.     /* cp_DateTimeFormat        */ "%q:%M:%S %d/%m/%Y",
  515.     /* cp_DateFormat            */ "%A %e %B %Y",
  516.     /* cp_TimeFormat            */ "%q:%M:%S",
  517.     /* cp_ShortDateTimeFormat   */ "%H:%M:%S %d/%m/%Y",
  518.     /* cp_ShortDateFormat       */ "%e-%b-%Y",
  519.     /* cp_ShortTimeFormat       */ "%H:%M:%S",
  520.     /* cp_DecimalPoint          */ ",",
  521.     /* cp_GroupSeparator        */ ".",
  522.     /* cp_FracGroupSeparator    */ "",
  523.     /* cp_Grouping              */ { 3 },
  524.     /* cp_FracGrouping          */ { 255 },
  525.     /* cp_MonDecimalPoint       */ ",",
  526.     /* cp_MonGroupSeparator     */ ".",
  527.     /* cp_MonFracGroupSeparator */ ".",
  528.     /* cp_MonGrouping           */ { 3 },
  529.     /* cp_MonFracGrouping       */ { 3 },
  530.     /* cp_MonFracDigits         */ 0,
  531.     /* cp_MonIntFracDigits      */ 3,
  532.     /* cp_MonCS                 */ "Lire",
  533.     /* cp_MonSmallCS            */ "£",
  534.     /* cp_MonIntCS              */ "LIT",
  535.     /* cp_MonPositiveSign       */ "",
  536.     /* cp_MonPositiveSpaceSep   */ SS_SPACE,
  537.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  538.     /* cp_MonPositiveCSPos      */ CSP_PRECEDES,
  539.     /* cp_MonNegativeSign       */ "-",
  540.     /* cp_MonNegativeSpaceSep   */ SS_SPACE,
  541.     /* cp_MonNegativeSignPos    */ SP_SUCC_CURR,
  542.     /* cp_MonNegativeCSPos      */ CSP_PRECEDES,
  543.     /* cp_CalendarType          */ CT_7SUN
  544.     }
  545. };
  546.  
  547. struct CountryData nederland_prefs =
  548. {
  549.     "nederland",
  550.     "44.2 (28.9.1999)",
  551.  
  552.     {
  553.     /* cp_Reserved              */ { 0 },
  554.     /* cp_CountryCode           */ MAKE_ID('N','L',0,0),
  555.     /* cp_TelephoneCode         */ 31,
  556.     /* cp_MeasuringSystem       */ MS_ISO,
  557.     /* cp_DateTimeFormat        */ "%A, %e %B %Y %H:%M:%S",
  558.     /* cp_DateFormat            */ "%A, %e %B,%Y",
  559.     /* cp_TimeFormat            */ "%H:%M:%S",
  560.     /* cp_ShortDateTimeFormat   */ "%e-%m-%Y %H:%M:%S",
  561.     /* cp_ShortDateFormat       */ "%e-%m-%Y",
  562.     /* cp_ShortTimeFormat       */ "%H:%M",
  563.     /* cp_DecimalPoint          */ ",",
  564.     /* cp_GroupSeparator        */ ".",
  565.     /* cp_FracGroupSeparator    */ "",
  566.     /* cp_Grouping              */ { 3 },
  567.     /* cp_FracGrouping          */ { 0 },
  568.     /* cp_MonDecimalPoint       */ ",",
  569.     /* cp_MonGroupSeparator     */ ".",
  570.     /* cp_MonFracGroupSeparator */ "",
  571.     /* cp_MonGrouping           */ { 3 },
  572.     /* cp_MonFracGrouping       */ { 0 },
  573.     /* cp_MonFracDigits         */ 2,
  574.     /* cp_MonIntFracDigits      */ 2,
  575.     /* cp_MonCS                 */ "fl",
  576.     /* cp_MonSmallCS            */ "c",
  577.     /* cp_MonIntCS              */ "DFL",
  578.     /* cp_MonPositiveSign       */ "",
  579.     /* cp_MonPositiveSpaceSep   */ SS_SPACE,
  580.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  581.     /* cp_MonPositiveCSPos      */ CSP_PRECEDES,
  582.     /* cp_MonNegativeSign       */ "-",
  583.     /* cp_MonNegativeSpaceSep   */ SS_SPACE,
  584.     /* cp_MonNegativeSignPos    */ SP_SUCC_ALL,
  585.     /* cp_MonNegativeCSPos      */ CSP_PRECEDES,
  586.     /* cp_CalendarType          */ CT_7MON
  587.     }
  588. };
  589.  
  590. struct CountryData norge_prefs =
  591. {
  592.     "norge",
  593.     "44.2 (28.9.1999)",
  594.  
  595.     {
  596.     /* cp_Reserved              */ { 0 },
  597.     /* cp_CountryCode           */ MAKE_ID('N',0,0,0),
  598.     /* cp_TelephoneCode         */ 47,
  599.     /* cp_MeasuringSystem       */ MS_ISO,
  600.     /* cp_DateTimeFormat        */ "%e %B %Y %H.%M.%S",
  601.     /* cp_DateFormat            */ "%e %B %Y",
  602.     /* cp_TimeFormat            */ "%H.%M.%S",
  603.     /* cp_ShortDateTimeFormat   */ "%e.%b.%Y %H.%M.%S",
  604.     /* cp_ShortDateFormat       */ "%e.%b.%Y",
  605.     /* cp_ShortTimeFormat       */ "%H.%M.%S",
  606.     /* cp_DecimalPoint          */ ",",
  607.     /* cp_GroupSeparator        */ ".",
  608.     /* cp_FracGroupSeparator    */ "",
  609.     /* cp_Grouping              */ { 3 },
  610.     /* cp_FracGrouping          */ { 255 },
  611.     /* cp_MonDecimalPoint       */ ",",
  612.     /* cp_MonGroupSeparator     */ ".",
  613.     /* cp_MonFracGroupSeparator */ "",
  614.     /* cp_MonGrouping           */ { 3 },
  615.     /* cp_MonFracGrouping       */ { 255 },
  616.     /* cp_MonFracDigits         */ 2,
  617.     /* cp_MonIntFracDigits      */ 2,
  618.     /* cp_MonCS                 */ "kr.",
  619.     /* cp_MonSmallCS            */ "",
  620.     /* cp_MonIntCS              */ "NOK",
  621.     /* cp_MonPositiveSign       */ "",
  622.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  623.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  624.     /* cp_MonPositiveCSPos      */ CSP_SUCCEEDS,
  625.     /* cp_MonNegativeSign       */ "-",
  626.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  627.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  628.     /* cp_MonNegativeCSPos      */ CSP_SUCCEEDS,
  629.     /* cp_CalendarType          */ CT_7MON
  630.     }
  631. };
  632.  
  633. struct CountryData osterreich_prefs =
  634. {
  635.     "österreich",
  636.     "44.2 (28.9.1999)",
  637.  
  638.     {
  639.     /* cp_Reserved              */ { 0 },
  640.     /* cp_CountryCode           */ MAKE_ID('A',0,0,0),
  641.     /* cp_TelephoneCode         */ 43,
  642.     /* cp_MeasuringSystem       */ MS_ISO,
  643.     /* cp_DateTimeFormat        */ "%A, %e. %B %Y, %H:%M:%S",
  644.     /* cp_DateFormat            */ "%A, %e. %B %Y",
  645.     /* cp_TimeFormat            */ "%H:%M:%S",
  646.     /* cp_ShortDateTimeFormat   */ "%Y-%m-%d %H:%M:%S",
  647.     /* cp_ShortDateFormat       */ "%Y-%m-%d",
  648.     /* cp_ShortTimeFormat       */ "%H:%M",
  649.     /* cp_DecimalPoint          */ ",",
  650.     /* cp_GroupSeparator        */ ".",
  651.     /* cp_FracGroupSeparator    */ "",
  652.     /* cp_Grouping              */ { 3 },
  653.     /* cp_FracGrouping          */ { 0 },
  654.     /* cp_MonDecimalPoint       */ ",",
  655.     /* cp_MonGroupSeparator     */ ".",
  656.     /* cp_MonFracGroupSeparator */ "",
  657.     /* cp_MonGrouping           */ { 3 },
  658.     /* cp_MonFracGrouping       */ { 0 },
  659.     /* cp_MonFracDigits         */ 2,
  660.     /* cp_MonIntFracDigits      */ 2,
  661.     /* cp_MonCS                 */ "ÖS",
  662.     /* cp_MonSmallCS            */ "g",
  663.     /* cp_MonIntCS              */ "ATS",
  664.     /* cp_MonPositiveSign       */ "",
  665.     /* cp_MonPositiveSpaceSep   */ SS_SPACE,
  666.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  667.     /* cp_MonPositiveCSPos      */ CSP_PRECEDES,
  668.     /* cp_MonNegativeSign       */ "-",
  669.     /* cp_MonNegativeSpaceSep   */ SS_SPACE,
  670.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  671.     /* cp_MonNegativeCSPos      */ CSP_PRECEDES,
  672.     /* cp_CalendarType          */ CT_7MON
  673.     }
  674. };
  675.  
  676. struct CountryData portugal_prefs =
  677. {
  678.     "portugal",
  679.     "44.2 (28.9.1999)",
  680.  
  681.     {
  682.     /* cp_Reserved              */ { 0 },
  683.     /* cp_CountryCode           */ MAKE_ID('P','O',0,0),
  684.     /* cp_TelephoneCode         */ 351,
  685.     /* cp_MeasuringSystem       */ MS_ISO,
  686.     /* cp_DateTimeFormat        */ "%A, %e de %B de %Y, %H:%M:%S",
  687.     /* cp_DateFormat            */ "%A, %e de %B de %Y",
  688.     /* cp_TimeFormat            */ "%H:%M:%S",
  689.     /* cp_ShortDateTimeFormat   */ "%e %b %Y, %H:%M:%S",
  690.     /* cp_ShortDateFormat       */ "%e %b %Y",
  691.     /* cp_ShortTimeFormat       */ "%H:%M",
  692.     /* cp_DecimalPoint          */ ",",
  693.     /* cp_GroupSeparator        */ "'",
  694.     /* cp_FracGroupSeparator    */ "'",
  695.     /* cp_Grouping              */ { 3 },
  696.     /* cp_FracGrouping          */ { 3 },
  697.     /* cp_MonDecimalPoint       */ ",",
  698.     /* cp_MonGroupSeparator     */ ".",
  699.     /* cp_MonFracGroupSeparator */ ".",
  700.     /* cp_MonGrouping           */ { 3 },
  701.     /* cp_MonFracGrouping       */ { 3 },
  702.     /* cp_MonFracDigits         */ 2,
  703.     /* cp_MonIntFracDigits      */ 3,
  704.     /* cp_MonCS                 */ "ESP",
  705.     /* cp_MonSmallCS            */ "",
  706.     /* cp_MonIntCS              */ "",
  707.     /* cp_MonPositiveSign       */ "+",
  708.     /* cp_MonPositiveSpaceSep   */ SS_SPACE,
  709.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  710.     /* cp_MonPositiveCSPos      */ CSP_PRECEDES,
  711.     /* cp_MonNegativeSign       */ "-",
  712.     /* cp_MonNegativeSpaceSep   */ SS_SPACE,
  713.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  714.     /* cp_MonNegativeCSPos      */ CSP_SUCCEEDS,
  715.     /* cp_CalendarType          */ CT_7MON
  716.     }
  717. };
  718.  
  719. struct CountryData schweiz_prefs =
  720. {
  721.     "schweiz",
  722.     "44.2 (28.9.1999)",
  723.  
  724.     {
  725.     /* cp_Reserved              */ { 0 },
  726.     /* cp_CountryCode           */ MAKE_ID('C','H',0,0),
  727.     /* cp_TelephoneCode         */ 41,
  728.     /* cp_MeasuringSystem       */ MS_ISO,
  729.     /* cp_DateTimeFormat        */ "%A, %e. %B %Y %H:%M:%S",
  730.     /* cp_DateFormat            */ "%A, %e. %B %Y",
  731.     /* cp_TimeFormat            */ "%H:%M:%S",
  732.     /* cp_ShortDateTimeFormat   */ "%e.%m.%Y %H:%M:%S",
  733.     /* cp_ShortDateFormat       */ "%e.%m.%Y",
  734.     /* cp_ShortTimeFormat       */ "%H:%M",
  735.     /* cp_DecimalPoint          */ ".",
  736.     /* cp_GroupSeparator        */ "'",
  737.     /* cp_FracGroupSeparator    */ "",
  738.     /* cp_Grouping              */ { 3 },
  739.     /* cp_FracGrouping          */ { 0 },
  740.     /* cp_MonDecimalPoint       */ ".",
  741.     /* cp_MonGroupSeparator     */ "'",
  742.     /* cp_MonFracGroupSeparator */ "'",
  743.     /* cp_MonGrouping           */ { 3 },
  744.     /* cp_MonFracGrouping       */ { 3 },
  745.     /* cp_MonFracDigits         */ 2,
  746.     /* cp_MonIntFracDigits      */ 2,
  747.     /* cp_MonCS                 */ "SFr.",
  748.     /* cp_MonSmallCS            */ "Rp.",
  749.     /* cp_MonIntCS              */ "SRF",
  750.     /* cp_MonPositiveSign       */ "",
  751.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  752.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  753.     /* cp_MonPositiveCSPos      */ CSP_PRECEDES,
  754.     /* cp_MonNegativeSign       */ "-",
  755.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  756.     /* cp_MonNegativeSignPos    */ SP_SUCC_CURR,
  757.     /* cp_MonNegativeCSPos      */ CSP_PRECEDES,
  758.     /* cp_CalendarType          */ CT_7MON
  759.     }
  760. };
  761.  
  762. struct CountryData suisse_prefs =
  763. {
  764.     "suisse",
  765.     "44.2 (28.9.1999)",
  766.  
  767.     {
  768.     /* cp_Reserved              */ { 0 },
  769.     /* cp_CountryCode           */ MAKE_ID('C','H',0,0),
  770.     /* cp_TelephoneCode         */ 41,
  771.     /* cp_MeasuringSystem       */ MS_ISO,
  772.     /* cp_DateTimeFormat        */ "%A %e %B %Y %H:%M:%S",
  773.     /* cp_DateFormat            */ "%A %e %B %Y",
  774.     /* cp_TimeFormat            */ "%H:%M:%S",
  775.     /* cp_ShortDateTimeFormat   */ "%e.%m.%Y %H:%M:%S",
  776.     /* cp_ShortDateFormat       */ "%e.%m.%Y",
  777.     /* cp_ShortTimeFormat       */ "%H:%M",
  778.     /* cp_DecimalPoint          */ ".",
  779.     /* cp_GroupSeparator        */ "'",
  780.     /* cp_FracGroupSeparator    */ "",
  781.     /* cp_Grouping              */ { 3 },
  782.     /* cp_FracGrouping          */ { 0 },
  783.     /* cp_MonDecimalPoint       */ ".",
  784.     /* cp_MonGroupSeparator     */ "'",
  785.     /* cp_MonFracGroupSeparator */ "'",
  786.     /* cp_MonGrouping           */ { 3 },
  787.     /* cp_MonFracGrouping       */ { 3 },
  788.     /* cp_MonFracDigits         */ 2,
  789.     /* cp_MonIntFracDigits      */ 2,
  790.     /* cp_MonCS                 */ "SFr.",
  791.     /* cp_MonSmallCS            */ "ct.",
  792.     /* cp_MonIntCS              */ "SRF",
  793.     /* cp_MonPositiveSign       */ "",
  794.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  795.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  796.     /* cp_MonPositiveCSPos      */ CSP_PRECEDES,
  797.     /* cp_MonNegativeSign       */ "-",
  798.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  799.     /* cp_MonNegativeSignPos    */ SP_SUCC_CURR,
  800.     /* cp_MonNegativeCSPos      */ CSP_PRECEDES,
  801.     /* cp_CalendarType          */ CT_7MON
  802.     }
  803. };
  804.  
  805. struct CountryData sverige_prefs =
  806. {
  807.     "sverige",
  808.     "44.2 (28.9.1999)",
  809.  
  810.     {
  811.     /* cp_Reserved              */ { 0 },
  812.     /* cp_CountryCode           */ MAKE_ID('S',0,0,0),
  813.     /* cp_TelephoneCode         */ 46,
  814.     /* cp_MeasuringSystem       */ MS_ISO,
  815.     /* cp_DateTimeFormat        */ "%Y-%m-%d kl %H.%M.%S",
  816.     /* cp_DateFormat            */ "%Y-%m-%d",
  817.     /* cp_TimeFormat            */ "%H.%M.%S",
  818.     /* cp_ShortDateTimeFormat   */ "%Y-%m-%d kl %H.%M.%S",
  819.     /* cp_ShortDateFormat       */ "%Y-%m-%d",
  820.     /* cp_ShortTimeFormat       */ "%H.%M.%S",
  821.     /* cp_DecimalPoint          */ ",",
  822.     /* cp_GroupSeparator        */ ".",
  823.     /* cp_FracGroupSeparator    */ "",
  824.     /* cp_Grouping              */ { 3 },
  825.     /* cp_FracGrouping          */ { 0 },
  826.     /* cp_MonDecimalPoint       */ ",",
  827.     /* cp_MonGroupSeparator     */ ".",
  828.     /* cp_MonFracGroupSeparator */ ".",
  829.     /* cp_MonGrouping           */ { 3 },
  830.     /* cp_MonFracGrouping       */ { 2 },
  831.     /* cp_MonFracDigits         */ 2,
  832.     /* cp_MonIntFracDigits      */ 2,
  833.     /* cp_MonCS                 */ "kr",
  834.     /* cp_MonSmallCS            */ "öre",
  835.     /* cp_MonIntCS              */ "SEK",
  836.     /* cp_MonPositiveSign       */ "",
  837.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  838.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  839.     /* cp_MonPositiveCSPos      */ CSP_SUCCEEDS,
  840.     /* cp_MonNegativeSign       */ "-",
  841.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  842.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  843.     /* cp_MonNegativeCSPos      */ CSP_SUCCEEDS,
  844.     /* cp_CalendarType          */ CT_7MON
  845.     }
  846. };
  847.  
  848. struct CountryData svizzera_prefs =
  849. {
  850.     "svizzera",
  851.     "44.2 (28.9.1999)",
  852.  
  853.     {
  854.     /* cp_Reserved              */ { 0 },
  855.     /* cp_CountryCode           */ MAKE_ID('C','H',0,0),
  856.     /* cp_TelephoneCode         */ 41,
  857.     /* cp_MeasuringSystem       */ MS_ISO,
  858.     /* cp_DateTimeFormat        */ "%A %e %B %Y %H:%M:%S",
  859.     /* cp_DateFormat            */ "%A %e %B %Y",
  860.     /* cp_TimeFormat            */ "%H:%M:%S",
  861.     /* cp_ShortDateTimeFormat   */ "%e.%m.%Y %H:%M:%S",
  862.     /* cp_ShortDateFormat       */ "%e.%m.%Y",
  863.     /* cp_ShortTimeFormat       */ "%H:%M",
  864.     /* cp_DecimalPoint          */ ".",
  865.     /* cp_GroupSeparator        */ "'",
  866.     /* cp_FracGroupSeparator    */ "",
  867.     /* cp_Grouping              */ { 3 },
  868.     /* cp_FracGrouping          */ { 0 },
  869.     /* cp_MonDecimalPoint       */ ".",
  870.     /* cp_MonGroupSeparator     */ "'",
  871.     /* cp_MonFracGroupSeparator */ "'",
  872.     /* cp_MonGrouping           */ { 3 },
  873.     /* cp_MonFracGrouping       */ { 3 },
  874.     /* cp_MonFracDigits         */ 2,
  875.     /* cp_MonIntFracDigits      */ 2,
  876.     /* cp_MonCS                 */ "SFr.",
  877.     /* cp_MonSmallCS            */ "ct.",
  878.     /* cp_MonIntCS              */ "SRF",
  879.     /* cp_MonPositiveSign       */ "",
  880.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  881.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  882.     /* cp_MonPositiveCSPos      */ CSP_PRECEDES,
  883.     /* cp_MonNegativeSign       */ "-",
  884.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  885.     /* cp_MonNegativeSignPos    */ SP_SUCC_CURR,
  886.     /* cp_MonNegativeCSPos      */ CSP_PRECEDES,
  887.     /* cp_CalendarType          */ CT_7MON
  888.     }
  889. };
  890.  
  891. struct CountryData united_kingdom_prefs =
  892. {
  893.     "united_kingdom",
  894.     "44.2 (28.9.1999)",
  895.  
  896.     {
  897.     /* cp_Reserved              */ { 0 },
  898.     /* cp_CountryCode           */ MAKE_ID('U','K',0,0),
  899.     /* cp_TelephoneCode         */ 44,
  900.     /* cp_MeasuringSystem       */ MS_BRITISH,
  901.     /* cp_DateTimeFormat        */ "%A %e %B %Y  %H:%M",
  902.     /* cp_DateFormat            */ "%A %e %B %Y",
  903.     /* cp_TimeFormat            */ "%H:%M:%S",
  904.     /* cp_ShortDateTimeFormat   */ "%d/%m/%Y %H:%M",
  905.     /* cp_ShortDateFormat       */ "%d/%m/%Y",
  906.     /* cp_ShortTimeFormat       */ "%H:%M",
  907.     /* cp_DecimalPoint          */ ".",
  908.     /* cp_GroupSeparator        */ ",",
  909.     /* cp_FracGroupSeparator    */ "",
  910.     /* cp_Grouping              */ { 3 },
  911.     /* cp_FracGrouping          */ { 0 },
  912.     /* cp_MonDecimalPoint       */ ".",
  913.     /* cp_MonGroupSeparator     */ ",",
  914.     /* cp_MonFracGroupSeparator */ "",
  915.     /* cp_MonGrouping           */ { 3 },
  916.     /* cp_MonFracGrouping       */ { 0 },
  917.     /* cp_MonFracDigits         */ 2,
  918.     /* cp_MonIntFracDigits      */ 2,
  919.     /* cp_MonCS                 */ "£",
  920.     /* cp_MonSmallCS            */ "p",
  921.     /* cp_MonIntCS              */ "UKS",
  922.     /* cp_MonPositiveSign       */ "",
  923.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  924.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  925.     /* cp_MonPositiveCSPos      */ CSP_PRECEDES,
  926.     /* cp_MonNegativeSign       */ "",
  927.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  928.     /* cp_MonNegativeSignPos    */ SP_PARENS,
  929.     /* cp_MonNegativeCSPos      */ CSP_PRECEDES,
  930.     /* cp_CalendarType          */ CT_7MON
  931.     }
  932. };
  933.  
  934. struct CountryData united_states_prefs =
  935. {
  936.     "united_states",
  937.     "44.2 (28.9.1999)",
  938.  
  939.     {
  940.     /* cp_Reserved              */ { 0 },
  941.     /* cp_CountryCode           */ MAKE_ID('U','S','A',0),
  942.     /* cp_TelephoneCode         */ 1,
  943.     /* cp_MeasuringSystem       */ MS_AMERICAN,
  944.     /* cp_DateTimeFormat        */ "%A %B %e %Y %Q:%M %p",
  945.     /* cp_DateFormat            */ "%A %B %e %Y",
  946.     /* cp_TimeFormat            */ "%Q:%M:%S %p",
  947.     /* cp_ShortDateTimeFormat   */ "%m/%d/%Y %Q:%M %p",
  948.     /* cp_ShortDateFormat       */ "%m/%d/%Y",
  949.     /* cp_ShortTimeFormat       */ "%Q:%M %p",
  950.     /* cp_DecimalPoint          */ ".",
  951.     /* cp_GroupSeparator        */ ",",
  952.     /* cp_FracGroupSeparator    */ ",",
  953.     /* cp_Grouping              */ { 3 },
  954.     /* cp_FracGrouping          */ { 3 },
  955.     /* cp_MonDecimalPoint       */ ".",
  956.     /* cp_MonGroupSeparator     */ ",",
  957.     /* cp_MonFracGroupSeparator */ ",",
  958.     /* cp_MonGrouping           */ { 3 },
  959.     /* cp_MonFracGrouping       */ { 3 },
  960.     /* cp_MonFracDigits         */ 2,
  961.     /* cp_MonIntFracDigits      */ 2,
  962.     /* cp_MonCS                 */ "$",
  963.     /* cp_MonSmallCS            */ "¢",
  964.     /* cp_MonIntCS              */ "USD",
  965.     /* cp_MonPositiveSign       */ "",
  966.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  967.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  968.     /* cp_MonPositiveCSPos      */ CSP_PRECEDES,
  969.     /* cp_MonNegativeSign       */ "-",
  970.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  971.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  972.     /* cp_MonNegativeCSPos      */ CSP_PRECEDES,
  973.     /* cp_CalendarType          */ CT_7SUN
  974.     }
  975. };
  976.  
  977. struct CountryData * regular_countries[] =
  978. {
  979.     &australia_prefs,
  980.     &belgie_prefs,
  981.     &belgique_prefs,
  982.     &canada_prefs,
  983.     &canada_francais_prefs,
  984.     &danmark_prefs,
  985.     &deutschland_prefs,
  986.     &espana_prefs,
  987.     &france_prefs,
  988.     &great_britain_prefs,
  989.     &italia_prefs,
  990.     &nederland_prefs,
  991.     &norge_prefs,
  992.     &osterreich_prefs,
  993.     &portugal_prefs,
  994.     &schweiz_prefs,
  995.     &suisse_prefs,
  996.     &sverige_prefs,
  997.     &svizzera_prefs,
  998.     &united_kingdom_prefs,
  999.     &united_states_prefs,
  1000.     NULL
  1001. };
  1002.  
  1003. /****************************************************************************/
  1004.  
  1005. struct CountryData belgie_euro_prefs =
  1006. {
  1007.     "belgie",
  1008.     "44.2 (28.9.1999)",
  1009.  
  1010.     {
  1011.     /* cp_Reserved              */ { 0 },
  1012.     /* cp_CountryCode           */ MAKE_ID('B',0,0,0),
  1013.     /* cp_TelephoneCode         */ 32,
  1014.     /* cp_MeasuringSystem       */ MS_ISO,
  1015.     /* cp_DateTimeFormat        */ "%e-%b-%Y %H:%M:%S",
  1016.     /* cp_DateFormat            */ "%e-%b-%Y",
  1017.     /* cp_TimeFormat            */ "%H:%M:%S",
  1018.     /* cp_ShortDateTimeFormat   */ "%d/%m/%Y %H:%M:%S",
  1019.     /* cp_ShortDateFormat       */ "%d/%m/%Y",
  1020.     /* cp_ShortTimeFormat       */ "%H:%M",
  1021.     /* cp_DecimalPoint          */ ",",
  1022.     /* cp_GroupSeparator        */ ".",
  1023.     /* cp_FracGroupSeparator    */ "",
  1024.     /* cp_Grouping              */ { 3 },
  1025.     /* cp_FracGrouping          */ { 0 },
  1026.     /* cp_MonDecimalPoint       */ ",",
  1027.     /* cp_MonGroupSeparator     */ ".",
  1028.     /* cp_MonFracGroupSeparator */ "",
  1029.     /* cp_MonGrouping           */ { 3 },
  1030.     /* cp_MonFracGrouping       */ { 0 },
  1031.     /* cp_MonFracDigits         */ 2,
  1032.     /* cp_MonIntFracDigits      */ 2,
  1033.     /* cp_MonCS                 */ "Euro",
  1034.     /* cp_MonSmallCS            */ "Cent",
  1035.     /* cp_MonIntCS              */ "EUR",
  1036.     /* cp_MonPositiveSign       */ "",
  1037.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  1038.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  1039.     /* cp_MonPositiveCSPos      */ CSP_SUCCEEDS,
  1040.     /* cp_MonNegativeSign       */ "-",
  1041.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  1042.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  1043.     /* cp_MonNegativeCSPos      */ CSP_SUCCEEDS,
  1044.     /* cp_CalendarType          */ CT_7MON
  1045.     }
  1046. };
  1047.  
  1048. struct CountryData belgique_euro_prefs =
  1049. {
  1050.     "belgique",
  1051.     "44.2 (28.9.1999)",
  1052.  
  1053.     {
  1054.     /* cp_Reserved              */ { 0 },
  1055.     /* cp_CountryCode           */ MAKE_ID('B',0,0,0),
  1056.     /* cp_TelephoneCode         */ 32,
  1057.     /* cp_MeasuringSystem       */ MS_ISO,
  1058.     /* cp_DateTimeFormat        */ "%e-%b-%Y %Hh%M",
  1059.     /* cp_DateFormat            */ "%e-%b-%Y",
  1060.     /* cp_TimeFormat            */ "%Hh%M",
  1061.     /* cp_ShortDateTimeFormat   */ "%d/%m/%Y %Hh%M",
  1062.     /* cp_ShortDateFormat       */ "%d/%m/%Y",
  1063.     /* cp_ShortTimeFormat       */ "%Hh%M",
  1064.     /* cp_DecimalPoint          */ ",",
  1065.     /* cp_GroupSeparator        */ ".",
  1066.     /* cp_FracGroupSeparator    */ "",
  1067.     /* cp_Grouping              */ { 3 },
  1068.     /* cp_FracGrouping          */ { 0 },
  1069.     /* cp_MonDecimalPoint       */ ",",
  1070.     /* cp_MonGroupSeparator     */ ".",
  1071.     /* cp_MonFracGroupSeparator */ "",
  1072.     /* cp_MonGrouping           */ { 3 },
  1073.     /* cp_MonFracGrouping       */ { 0 },
  1074.     /* cp_MonFracDigits         */ 2,
  1075.     /* cp_MonIntFracDigits      */ 2,
  1076.     /* cp_MonCS                 */ "Euro",
  1077.     /* cp_MonSmallCS            */ "Cent",
  1078.     /* cp_MonIntCS              */ "EUR",
  1079.     /* cp_MonPositiveSign       */ "",
  1080.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  1081.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  1082.     /* cp_MonPositiveCSPos      */ CSP_SUCCEEDS,
  1083.     /* cp_MonNegativeSign       */ "-",
  1084.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  1085.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  1086.     /* cp_MonNegativeCSPos      */ CSP_SUCCEEDS,
  1087.     /* cp_CalendarType          */ CT_7MON
  1088.     }
  1089. };
  1090.  
  1091. struct CountryData deutschland_euro_prefs =
  1092. {
  1093.     "deutschland",
  1094.     "44.2 (28.9.1999)",
  1095.  
  1096.     {
  1097.     /* cp_Reserved              */ { 0 },
  1098.     /* cp_CountryCode           */ MAKE_ID('D',0,0,0),
  1099.     /* cp_TelephoneCode         */ 49,
  1100.     /* cp_MeasuringSystem       */ MS_ISO,
  1101.     /* cp_DateTimeFormat        */ "%A, %e. %B %Y %H:%M:%S",
  1102.     /* cp_DateFormat            */ "%A, %e. %B %Y",
  1103.     /* cp_TimeFormat            */ "%H:%M:%S",
  1104.     /* cp_ShortDateTimeFormat   */ "%d.%m.%Y %H:%M:%S",
  1105.     /* cp_ShortDateFormat       */ "%d.%m.%Y",
  1106.     /* cp_ShortTimeFormat       */ "%H:%M:%S",
  1107.     /* cp_DecimalPoint          */ ",",
  1108.     /* cp_GroupSeparator        */ ".",
  1109.     /* cp_FracGroupSeparator    */ ".",
  1110.     /* cp_Grouping              */ { 3 },
  1111.     /* cp_FracGrouping          */ { 3 },
  1112.     /* cp_MonDecimalPoint       */ ",",
  1113.     /* cp_MonGroupSeparator     */ ".",
  1114.     /* cp_MonFracGroupSeparator */ ".",
  1115.     /* cp_MonGrouping           */ { 3 },
  1116.     /* cp_MonFracGrouping       */ { 3 },
  1117.     /* cp_MonFracDigits         */ 2,
  1118.     /* cp_MonIntFracDigits      */ 2,
  1119.     /* cp_MonCS                 */ "Euro",
  1120.     /* cp_MonSmallCS            */ "Cent",
  1121.     /* cp_MonIntCS              */ "EUR",
  1122.     /* cp_MonPositiveSign       */ "",
  1123.     /* cp_MonPositiveSpaceSep   */ SS_SPACE,
  1124.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  1125.     /* cp_MonPositiveCSPos      */ CSP_SUCCEEDS,
  1126.     /* cp_MonNegativeSign       */ "-",
  1127.     /* cp_MonNegativeSpaceSep   */ SS_SPACE,
  1128.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  1129.     /* cp_MonNegativeCSPos      */ CSP_SUCCEEDS,
  1130.     /* cp_CalendarType          */ CT_7MON
  1131.     }
  1132. };
  1133.  
  1134. struct CountryData espana_euro_prefs =
  1135. {
  1136.     "españa",
  1137.     "44.2 (28.9.1999)",
  1138.  
  1139.     {
  1140.     /* cp_Reserved              */ { 0 },
  1141.     /* cp_CountryCode           */ MAKE_ID('E',0,0,0),
  1142.     /* cp_TelephoneCode         */ 34,
  1143.     /* cp_MeasuringSystem       */ MS_ISO,
  1144.     /* cp_DateTimeFormat        */ "%e-%m-%Y %H:%M:%S",
  1145.     /* cp_DateFormat            */ "%e-%m-%Y",
  1146.     /* cp_TimeFormat            */ "%H:%M:%S",
  1147.     /* cp_ShortDateTimeFormat   */ "%e-%m-%Y %H:%M:%S",
  1148.     /* cp_ShortDateFormat       */ "%e-%m-%Y",
  1149.     /* cp_ShortTimeFormat       */ "%H:%M:%S",
  1150.     /* cp_DecimalPoint          */ "'",
  1151.     /* cp_GroupSeparator        */ ",",
  1152.     /* cp_FracGroupSeparator    */ "",
  1153.     /* cp_Grouping              */ { 3 },
  1154.     /* cp_FracGrouping          */ { 0 },
  1155.     /* cp_MonDecimalPoint       */ ",",
  1156.     /* cp_MonGroupSeparator     */ ".",
  1157.     /* cp_MonFracGroupSeparator */ "",
  1158.     /* cp_MonGrouping           */ { 3 },
  1159.     /* cp_MonFracGrouping       */ { 0 },
  1160.     /* cp_MonFracDigits         */ 2,
  1161.     /* cp_MonIntFracDigits      */ 2,
  1162.     /* cp_MonCS                 */ "Euro",
  1163.     /* cp_MonSmallCS            */ "Cent",
  1164.     /* cp_MonIntCS              */ "EUR",
  1165.     /* cp_MonPositiveSign       */ "",
  1166.     /* cp_MonPositiveSpaceSep   */ SS_SPACE,
  1167.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  1168.     /* cp_MonPositiveCSPos      */ CSP_SUCCEEDS,
  1169.     /* cp_MonNegativeSign       */ "-",
  1170.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  1171.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  1172.     /* cp_MonNegativeCSPos      */ CSP_PRECEDES,
  1173.     /* cp_CalendarType          */ CT_7MON
  1174.     }
  1175. };
  1176.  
  1177. struct CountryData france_euro_prefs =
  1178. {
  1179.     "france",
  1180.     "44.2 (28.9.1999)",
  1181.  
  1182.     {
  1183.     /* cp_Reserved              */ { 0 },
  1184.     /* cp_CountryCode           */ MAKE_ID('F',0,0,0),
  1185.     /* cp_TelephoneCode         */ 33,
  1186.     /* cp_MeasuringSystem       */ MS_ISO,
  1187.     /* cp_DateTimeFormat        */ "%A %e %B %Y %Hh%M",
  1188.     /* cp_DateFormat            */ "%A %e %B %Y",
  1189.     /* cp_TimeFormat            */ "%Hh%M",
  1190.     /* cp_ShortDateTimeFormat   */ "%d/%m/%Y %Hh%M",
  1191.     /* cp_ShortDateFormat       */ "%d/%m/%Y",
  1192.     /* cp_ShortTimeFormat       */ "%Hh%M",
  1193.     /* cp_DecimalPoint          */ ",",
  1194.     /* cp_GroupSeparator        */ " ",
  1195.     /* cp_FracGroupSeparator    */ " ",
  1196.     /* cp_Grouping              */ { 3 },
  1197.     /* cp_FracGrouping          */ { 3 },
  1198.     /* cp_MonDecimalPoint       */ ",",
  1199.     /* cp_MonGroupSeparator     */ " ",
  1200.     /* cp_MonFracGroupSeparator */ " ",
  1201.     /* cp_MonGrouping           */ { 3 },
  1202.     /* cp_MonFracGrouping       */ { 3 },
  1203.     /* cp_MonFracDigits         */ 2,
  1204.     /* cp_MonIntFracDigits      */ 4,
  1205.     /* cp_MonCS                 */ "Euro",
  1206.     /* cp_MonSmallCS            */ "Cent",
  1207.     /* cp_MonIntCS              */ "EUR",
  1208.     /* cp_MonPositiveSign       */ "",
  1209.     /* cp_MonPositiveSpaceSep   */ SS_NOSPACE,
  1210.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  1211.     /* cp_MonPositiveCSPos      */ CSP_SUCCEEDS,
  1212.     /* cp_MonNegativeSign       */ "-",
  1213.     /* cp_MonNegativeSpaceSep   */ SS_NOSPACE,
  1214.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  1215.     /* cp_MonNegativeCSPos      */ CSP_SUCCEEDS,
  1216.     /* cp_CalendarType          */ CT_7MON
  1217.     }
  1218. };
  1219.  
  1220. struct CountryData italia_euro_prefs =
  1221. {
  1222.     "italia",
  1223.     "44.2 (28.9.1999)",
  1224.  
  1225.     {
  1226.     /* cp_Reserved              */ { 0 },
  1227.     /* cp_CountryCode           */ MAKE_ID('I','T','A',0),
  1228.     /* cp_TelephoneCode         */ 39,
  1229.     /* cp_MeasuringSystem       */ MS_ISO,
  1230.     /* cp_DateTimeFormat        */ "%q:%M:%S %d/%m/%Y",
  1231.     /* cp_DateFormat            */ "%A %e %B %Y",
  1232.     /* cp_TimeFormat            */ "%q:%M:%S",
  1233.     /* cp_ShortDateTimeFormat   */ "%H:%M:%S %d/%m/%Y",
  1234.     /* cp_ShortDateFormat       */ "%e-%b-%Y",
  1235.     /* cp_ShortTimeFormat       */ "%H:%M:%S",
  1236.     /* cp_DecimalPoint          */ ",",
  1237.     /* cp_GroupSeparator        */ ".",
  1238.     /* cp_FracGroupSeparator    */ "",
  1239.     /* cp_Grouping              */ { 3 },
  1240.     /* cp_FracGrouping          */ { 255 },
  1241.     /* cp_MonDecimalPoint       */ ",",
  1242.     /* cp_MonGroupSeparator     */ ".",
  1243.     /* cp_MonFracGroupSeparator */ ".",
  1244.     /* cp_MonGrouping           */ { 3 },
  1245.     /* cp_MonFracGrouping       */ { 3 },
  1246.     /* cp_MonFracDigits         */ 2,
  1247.     /* cp_MonIntFracDigits      */ 3,
  1248.     /* cp_MonCS                 */ "Euro",
  1249.     /* cp_MonSmallCS            */ "Cent",
  1250.     /* cp_MonIntCS              */ "EUR",
  1251.     /* cp_MonPositiveSign       */ "",
  1252.     /* cp_MonPositiveSpaceSep   */ SS_SPACE,
  1253.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  1254.     /* cp_MonPositiveCSPos      */ CSP_PRECEDES,
  1255.     /* cp_MonNegativeSign       */ "-",
  1256.     /* cp_MonNegativeSpaceSep   */ SS_SPACE,
  1257.     /* cp_MonNegativeSignPos    */ SP_SUCC_CURR,
  1258.     /* cp_MonNegativeCSPos      */ CSP_PRECEDES,
  1259.     /* cp_CalendarType          */ CT_7SUN
  1260.     }
  1261. };
  1262.  
  1263. struct CountryData nederland_euro_prefs =
  1264. {
  1265.     "nederland",
  1266.     "44.2 (28.9.1999)",
  1267.  
  1268.     {
  1269.     /* cp_Reserved              */ { 0 },
  1270.     /* cp_CountryCode           */ MAKE_ID('N','L',0,0),
  1271.     /* cp_TelephoneCode         */ 31,
  1272.     /* cp_MeasuringSystem       */ MS_ISO,
  1273.     /* cp_DateTimeFormat        */ "%A, %e %B %Y %H:%M:%S",
  1274.     /* cp_DateFormat            */ "%A, %e %B,%Y",
  1275.     /* cp_TimeFormat            */ "%H:%M:%S",
  1276.     /* cp_ShortDateTimeFormat   */ "%e-%m-%Y %H:%M:%S",
  1277.     /* cp_ShortDateFormat       */ "%e-%m-%Y",
  1278.     /* cp_ShortTimeFormat       */ "%H:%M",
  1279.     /* cp_DecimalPoint          */ ",",
  1280.     /* cp_GroupSeparator        */ ".",
  1281.     /* cp_FracGroupSeparator    */ "",
  1282.     /* cp_Grouping              */ { 3 },
  1283.     /* cp_FracGrouping          */ { 0 },
  1284.     /* cp_MonDecimalPoint       */ ",",
  1285.     /* cp_MonGroupSeparator     */ ".",
  1286.     /* cp_MonFracGroupSeparator */ "",
  1287.     /* cp_MonGrouping           */ { 3 },
  1288.     /* cp_MonFracGrouping       */ { 0 },
  1289.     /* cp_MonFracDigits         */ 2,
  1290.     /* cp_MonIntFracDigits      */ 2,
  1291.     /* cp_MonCS                 */ "Euro",
  1292.     /* cp_MonSmallCS            */ "Cent",
  1293.     /* cp_MonIntCS              */ "EUR",
  1294.     /* cp_MonPositiveSign       */ "",
  1295.     /* cp_MonPositiveSpaceSep   */ SS_SPACE,
  1296.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  1297.     /* cp_MonPositiveCSPos      */ CSP_PRECEDES,
  1298.     /* cp_MonNegativeSign       */ "-",
  1299.     /* cp_MonNegativeSpaceSep   */ SS_SPACE,
  1300.     /* cp_MonNegativeSignPos    */ SP_SUCC_ALL,
  1301.     /* cp_MonNegativeCSPos      */ CSP_PRECEDES,
  1302.     /* cp_CalendarType          */ CT_7MON
  1303.     }
  1304. };
  1305.  
  1306. struct CountryData osterreich_euro_prefs =
  1307. {
  1308.     "österreich",
  1309.     "44.2 (28.9.1999)",
  1310.  
  1311.     {
  1312.     /* cp_Reserved              */ { 0 },
  1313.     /* cp_CountryCode           */ MAKE_ID('A',0,0,0),
  1314.     /* cp_TelephoneCode         */ 43,
  1315.     /* cp_MeasuringSystem       */ MS_ISO,
  1316.     /* cp_DateTimeFormat        */ "%A, %e. %B %Y, %H:%M:%S",
  1317.     /* cp_DateFormat            */ "%A, %e. %B %Y",
  1318.     /* cp_TimeFormat            */ "%H:%M:%S",
  1319.     /* cp_ShortDateTimeFormat   */ "%Y-%m-%d %H:%M:%S",
  1320.     /* cp_ShortDateFormat       */ "%Y-%m-%d",
  1321.     /* cp_ShortTimeFormat       */ "%H:%M",
  1322.     /* cp_DecimalPoint          */ ",",
  1323.     /* cp_GroupSeparator        */ ".",
  1324.     /* cp_FracGroupSeparator    */ "",
  1325.     /* cp_Grouping              */ { 3 },
  1326.     /* cp_FracGrouping          */ { 0 },
  1327.     /* cp_MonDecimalPoint       */ ",",
  1328.     /* cp_MonGroupSeparator     */ ".",
  1329.     /* cp_MonFracGroupSeparator */ "",
  1330.     /* cp_MonGrouping           */ { 3 },
  1331.     /* cp_MonFracGrouping       */ { 0 },
  1332.     /* cp_MonFracDigits         */ 2,
  1333.     /* cp_MonIntFracDigits      */ 2,
  1334.     /* cp_MonCS                 */ "Euro",
  1335.     /* cp_MonSmallCS            */ "Cent",
  1336.     /* cp_MonIntCS              */ "EUR",
  1337.     /* cp_MonPositiveSign       */ "",
  1338.     /* cp_MonPositiveSpaceSep   */ SS_SPACE,
  1339.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  1340.     /* cp_MonPositiveCSPos      */ CSP_PRECEDES,
  1341.     /* cp_MonNegativeSign       */ "-",
  1342.     /* cp_MonNegativeSpaceSep   */ SS_SPACE,
  1343.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  1344.     /* cp_MonNegativeCSPos      */ CSP_PRECEDES,
  1345.     /* cp_CalendarType          */ CT_7MON
  1346.     }
  1347. };
  1348.  
  1349. struct CountryData portugal_euro_prefs =
  1350. {
  1351.     "portugal",
  1352.     "44.2 (28.9.1999)",
  1353.  
  1354.     {
  1355.     /* cp_Reserved              */ { 0 },
  1356.     /* cp_CountryCode           */ MAKE_ID('P','O',0,0),
  1357.     /* cp_TelephoneCode         */ 351,
  1358.     /* cp_MeasuringSystem       */ MS_ISO,
  1359.     /* cp_DateTimeFormat        */ "%A, %e de %B de %Y, %H:%M:%S",
  1360.     /* cp_DateFormat            */ "%A, %e de %B de %Y",
  1361.     /* cp_TimeFormat            */ "%H:%M:%S",
  1362.     /* cp_ShortDateTimeFormat   */ "%e %b %Y, %H:%M:%S",
  1363.     /* cp_ShortDateFormat       */ "%e %b %Y",
  1364.     /* cp_ShortTimeFormat       */ "%H:%M",
  1365.     /* cp_DecimalPoint          */ ",",
  1366.     /* cp_GroupSeparator        */ "'",
  1367.     /* cp_FracGroupSeparator    */ "'",
  1368.     /* cp_Grouping              */ { 3 },
  1369.     /* cp_FracGrouping          */ { 3 },
  1370.     /* cp_MonDecimalPoint       */ ".",
  1371.     /* cp_MonGroupSeparator     */ ".",
  1372.     /* cp_MonFracGroupSeparator */ ".",
  1373.     /* cp_MonGrouping           */ { 3 },
  1374.     /* cp_MonFracGrouping       */ { 3 },
  1375.     /* cp_MonFracDigits         */ 2,
  1376.     /* cp_MonIntFracDigits      */ 3,
  1377.     /* cp_MonCS                 */ "Euro",
  1378.     /* cp_MonSmallCS            */ "Cent",
  1379.     /* cp_MonIntCS              */ "EUR",
  1380.     /* cp_MonPositiveSign       */ "+",
  1381.     /* cp_MonPositiveSpaceSep   */ SS_SPACE,
  1382.     /* cp_MonPositiveSignPos    */ SP_PREC_ALL,
  1383.     /* cp_MonPositiveCSPos      */ CSP_PRECEDES,
  1384.     /* cp_MonNegativeSign       */ "-",
  1385.     /* cp_MonNegativeSpaceSep   */ SS_SPACE,
  1386.     /* cp_MonNegativeSignPos    */ SP_PREC_ALL,
  1387.     /* cp_MonNegativeCSPos      */ CSP_SUCCEEDS,
  1388.     /* cp_CalendarType          */ CT_7MON
  1389.     }
  1390. };
  1391.  
  1392. struct CountryData * euro_countries[] =
  1393. {
  1394.     &belgie_euro_prefs,
  1395.     &belgique_euro_prefs,
  1396.     &deutschland_euro_prefs,
  1397.     &espana_euro_prefs,
  1398.     &france_euro_prefs,
  1399.     &italia_euro_prefs,
  1400.     &nederland_euro_prefs,
  1401.     &osterreich_euro_prefs,
  1402.     &portugal_euro_prefs,
  1403.     NULL
  1404. };
  1405.  
  1406. /****************************************************************************/
  1407.  
  1408. LONG
  1409. WriteOne(struct CountryData * cd)
  1410. {
  1411.     UBYTE versionString[100];
  1412.     UBYTE fileName[100];
  1413.     struct PrefHeader ph;
  1414.     struct IFFHandle * iff = NULL;
  1415.     BOOL opened = FALSE;
  1416.     BPTR file = ZERO;
  1417.     LONG error = OK;
  1418.  
  1419.     strcpy(fileName,cd->cd_Name);
  1420.     strcat(fileName,".country");
  1421.  
  1422.     iff = AllocIFF();
  1423.     if(iff == NULL)
  1424.     {
  1425.         error = ERROR_NO_FREE_STORE;
  1426.         goto out;
  1427.     }
  1428.  
  1429.     file = Open(fileName,MODE_NEWFILE);
  1430.     if(file == ZERO)
  1431.     {
  1432.         error = IoErr();
  1433.         goto out;
  1434.     }
  1435.  
  1436.     iff->iff_Stream = (ULONG)file;
  1437.  
  1438.     InitIFFasDOS(iff);
  1439.  
  1440.     error = OpenIFF(iff,IFFF_WRITE);
  1441.     if(error != OK)
  1442.         goto out;
  1443.  
  1444.     opened = TRUE;
  1445.  
  1446.     error = PushChunk(iff,ID_PREF,ID_FORM,IFFSIZE_UNKNOWN);
  1447.     if(error != OK)
  1448.         goto out;
  1449.  
  1450.  
  1451.     error = PushChunk(iff,0,ID_PRHD,sizeof(ph));
  1452.     if(error != OK)
  1453.         goto out;
  1454.  
  1455.     memset(&ph,0,sizeof(ph));
  1456.  
  1457.     error = WriteChunkBytes(iff,&ph,sizeof(ph));
  1458.     if(error > 0)
  1459.         error = OK;
  1460.  
  1461.     if(error != OK)
  1462.         goto out;
  1463.  
  1464.     error = PopChunk(iff);
  1465.     if(error != OK)
  1466.         goto out;
  1467.  
  1468.  
  1469.     error = PushChunk(iff,0,ID_CTRY,sizeof(cd->cd_Prefs));
  1470.     if(error != OK)
  1471.         goto out;
  1472.  
  1473.     error = WriteChunkBytes(iff,&cd->cd_Prefs,sizeof(cd->cd_Prefs));
  1474.     if(error > 0)
  1475.         error = OK;
  1476.  
  1477.     if(error != OK)
  1478.         goto out;
  1479.  
  1480.     error = PopChunk(iff);
  1481.     if(error != OK)
  1482.         goto out;
  1483.  
  1484.  
  1485.     error = PushChunk(iff,0,ID_FVER,IFFSIZE_UNKNOWN);
  1486.     if(error != OK)
  1487.         goto out;
  1488.  
  1489.     strcpy(versionString,"$VER: ");
  1490.     strcat(versionString,fileName);
  1491.     strcat(versionString," ");
  1492.     strcat(versionString,cd->cd_Version);
  1493.     strcat(versionString,"\r\n");
  1494.  
  1495.     error = WriteChunkBytes(iff,versionString,strlen(versionString)+1);
  1496.     if(error > 0)
  1497.         error = OK;
  1498.  
  1499.     if(error != OK)
  1500.         goto out;
  1501.  
  1502.     error = PopChunk(iff);
  1503.  
  1504.  
  1505.     error = PopChunk(iff);
  1506.     if(error != OK)
  1507.         goto out;
  1508.  
  1509.  
  1510.  out:
  1511.  
  1512.     if(opened)
  1513.         CloseIFF(iff);
  1514.  
  1515.     if(file != ZERO)
  1516.         Close(file);
  1517.  
  1518.     if(iff != NULL)
  1519.         FreeIFF(iff);
  1520.  
  1521.     if(error != OK && file != ZERO)
  1522.         DeleteFile(fileName);
  1523.     else
  1524.         SetProtection(fileName,FIBF_EXECUTE);
  1525.  
  1526.     return(error);
  1527. }
  1528.  
  1529. /****************************************************************************/
  1530.  
  1531. LONG
  1532. WriteCountries(struct CountryData ** table)
  1533. {
  1534.     LONG error = OK;
  1535.  
  1536.     while((*table) != NULL)
  1537.     {
  1538.         error = WriteOne((*table++));
  1539.         if(error != OK)
  1540.             break;
  1541.     }
  1542.  
  1543.     return(error);
  1544. }
  1545.  
  1546. /****************************************************************************/
  1547.  
  1548. int
  1549. main(void)
  1550. {
  1551.     BPTR dir;
  1552.  
  1553.     IFFParseBase = OpenLibrary("iffparse.library",37);
  1554.     if(IFFParseBase == NULL)
  1555.         goto out;
  1556.  
  1557.     UtilityBase = OpenLibrary("utility.library",37);
  1558.     if(UtilityBase == NULL)
  1559.         goto out;
  1560.  
  1561.     UnLock(CreateDir("countries"));
  1562.     dir = Lock("countries",SHARED_LOCK);
  1563.     if(dir != ZERO)
  1564.     {
  1565.         BPTR oldDir;
  1566.  
  1567.         oldDir = CurrentDir(dir);
  1568.         WriteCountries(regular_countries);
  1569.         CurrentDir(oldDir);
  1570.  
  1571.         UnLock(dir);
  1572.     }
  1573.  
  1574.     UnLock(CreateDir("countries.euro"));
  1575.     dir = Lock("countries.euro",SHARED_LOCK);
  1576.     if(dir != ZERO)
  1577.     {
  1578.         BPTR oldDir;
  1579.  
  1580.         oldDir = CurrentDir(dir);
  1581.         WriteCountries(euro_countries);
  1582.         CurrentDir(oldDir);
  1583.  
  1584.         UnLock(dir);
  1585.     }
  1586.  
  1587.  out:
  1588.  
  1589.     if(UtilityBase != NULL)
  1590.         CloseLibrary(UtilityBase);
  1591.  
  1592.     if(IFFParseBase != NULL)
  1593.         CloseLibrary(IFFParseBase);
  1594.  
  1595.     return(0);
  1596. }
  1597.