Translate from locale era to AD in g_date_set_parse(). (#133400, Theppitak
authorMatthias Clasen <maclas@gmx.de>
Fri, 27 Feb 2004 00:42:39 +0000 (00:42 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Fri, 27 Feb 2004 00:42:39 +0000 (00:42 +0000)
Fri Feb 27 01:44:41 2004  Matthias Clasen <maclas@gmx.de>

* glib/gdate.c: Translate from locale era to AD in
g_date_set_parse().  (#133400, Theppitak Karoonboonyanan)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
glib/gdate.c

index 7191a35112e95d02c5102826e1132000242dc88a..98a774b938daa5cd8a9e7ffe08ad2171f1a927cf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Feb 27 01:44:41 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/gdate.c: Translate from locale era to AD in 
+       g_date_set_parse().  (#133400, Theppitak Karoonboonyanan)
+
 Fri Feb 27 00:46:29 2004  Matthias Clasen  <maclas@gmx.de>
 
        * glib/gstrfuncs.c (g_strerror): Don't modify errno.  (#116617, 
index 7191a35112e95d02c5102826e1132000242dc88a..98a774b938daa5cd8a9e7ffe08ad2171f1a927cf 100644 (file)
@@ -1,3 +1,8 @@
+Fri Feb 27 01:44:41 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/gdate.c: Translate from locale era to AD in 
+       g_date_set_parse().  (#133400, Theppitak Karoonboonyanan)
+
 Fri Feb 27 00:46:29 2004  Matthias Clasen  <maclas@gmx.de>
 
        * glib/gstrfuncs.c (g_strerror): Don't modify errno.  (#116617, 
index 7191a35112e95d02c5102826e1132000242dc88a..98a774b938daa5cd8a9e7ffe08ad2171f1a927cf 100644 (file)
@@ -1,3 +1,8 @@
+Fri Feb 27 01:44:41 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/gdate.c: Translate from locale era to AD in 
+       g_date_set_parse().  (#133400, Theppitak Karoonboonyanan)
+
 Fri Feb 27 00:46:29 2004  Matthias Clasen  <maclas@gmx.de>
 
        * glib/gstrfuncs.c (g_strerror): Don't modify errno.  (#116617, 
index 7191a35112e95d02c5102826e1132000242dc88a..98a774b938daa5cd8a9e7ffe08ad2171f1a927cf 100644 (file)
@@ -1,3 +1,8 @@
+Fri Feb 27 01:44:41 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/gdate.c: Translate from locale era to AD in 
+       g_date_set_parse().  (#133400, Theppitak Karoonboonyanan)
+
 Fri Feb 27 00:46:29 2004  Matthias Clasen  <maclas@gmx.de>
 
        * glib/gstrfuncs.c (g_strerror): Don't modify errno.  (#116617, 
index 7191a35112e95d02c5102826e1132000242dc88a..98a774b938daa5cd8a9e7ffe08ad2171f1a927cf 100644 (file)
@@ -1,3 +1,8 @@
+Fri Feb 27 01:44:41 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/gdate.c: Translate from locale era to AD in 
+       g_date_set_parse().  (#133400, Theppitak Karoonboonyanan)
+
 Fri Feb 27 00:46:29 2004  Matthias Clasen  <maclas@gmx.de>
 
        * glib/gstrfuncs.c (g_strerror): Don't modify errno.  (#116617, 
index 7191a35112e95d02c5102826e1132000242dc88a..98a774b938daa5cd8a9e7ffe08ad2171f1a927cf 100644 (file)
@@ -1,3 +1,8 @@
+Fri Feb 27 01:44:41 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/gdate.c: Translate from locale era to AD in 
+       g_date_set_parse().  (#133400, Theppitak Karoonboonyanan)
+
 Fri Feb 27 00:46:29 2004  Matthias Clasen  <maclas@gmx.de>
 
        * glib/gstrfuncs.c (g_strerror): Don't modify errno.  (#116617, 
index 9153a0ac74747a9e17d2005b22d08f95d7f0da97..62f84d57d8c82994ae6a0e2d09ad05b40c9da2cb 100644 (file)
@@ -454,6 +454,10 @@ static GDateYear twodigit_start_year = 1930;
  */
 static gboolean using_twodigit_years = FALSE;
 
+/* Adjustment of locale era to AD, non-zero means using locale era
+ */
+static gint locale_era_adjust = 0;
+
 struct _GDateParseTokens {
   gint num_ints;
   gint n[3];
@@ -626,7 +630,9 @@ g_date_prepare_to_parse (const gchar *str, GDateParseTokens *pt)
               dmy_order[i] = G_DATE_YEAR;
               break;
             default:
-              /* leave it unchanged */
+              /* assume locale era */
+              locale_era_adjust = 1976 - testpt.n[i];
+              dmy_order[i] = G_DATE_YEAR;
               break;
             }
           ++i;
@@ -737,7 +743,11 @@ g_date_set_parse (GDate       *d,
            {
              y  = pt.n[i];
              
-             if (using_twodigit_years && y < 100)
+             if (locale_era_adjust != 0)
+               {
+                 y += locale_era_adjust;
+               }
+             else if (using_twodigit_years && y < 100)
                {
                  guint two     =  twodigit_start_year % 100;
                  guint century = (twodigit_start_year / 100) * 100;