From c693b5d6415b338eeccabc9fbb4f6b9cf7423b4c Mon Sep 17 00:00:00 2001
From: Matthias Clasen <mclasen@redhat.com>
Date: Fri, 30 Sep 2005 17:53:19 +0000
Subject: [PATCH] Another attempt to correct the calculations for the first
 week day. We may

2005-09-30  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkcalendar.c (gtk_calendar_init): Another attempt
	to correct the calculations for the first week day. We may
	just have to remove this code if too many locales turn out
	to have broken data.
---
 ChangeLog          |  5 +++++
 ChangeLog.pre-2-10 |  5 +++++
 gtk/gtkcalendar.c  | 20 ++++++++++++--------
 3 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index c2c1097902..f68025db0c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2005-09-30  Matthias Clasen  <mclasen@redhat.com>
 
+	* gtk/gtkcalendar.c (gtk_calendar_init): Another attempt
+	to correct the calculations for the first week day. We may
+	just have to remove this code if too many locales turn out 
+	to have broken data. 
+
 	* gtk/gtkimage.c (gtk_image_expose): Don't leak pixbuf in
 	some cases.  (#317611, Tommi Komulainen)
 
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index c2c1097902..f68025db0c 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,5 +1,10 @@
 2005-09-30  Matthias Clasen  <mclasen@redhat.com>
 
+	* gtk/gtkcalendar.c (gtk_calendar_init): Another attempt
+	to correct the calculations for the first week day. We may
+	just have to remove this code if too many locales turn out 
+	to have broken data. 
+
 	* gtk/gtkimage.c (gtk_image_expose): Don't leak pixbuf in
 	some cases.  (#317611, Tommi Komulainen)
 
diff --git a/gtk/gtkcalendar.c b/gtk/gtkcalendar.c
index f74a35b8d2..af7e43b0ad 100644
--- a/gtk/gtkcalendar.c
+++ b/gtk/gtkcalendar.c
@@ -565,7 +565,9 @@ gtk_calendar_init (GtkCalendar *calendar)
   time_t tmp_time;
   GtkCalendarPrivate *priv;
   gchar *year_before;
-  gchar *week_start, week_startsub = 1;
+  gchar *langinfo;
+  gint week_1stday = 0;
+  gint first_weekday = 1;
   guint week_origin;
 
   priv = calendar->priv = G_TYPE_INSTANCE_GET_PRIVATE (calendar,
@@ -652,16 +654,18 @@ gtk_calendar_init (GtkCalendar *calendar)
     g_warning ("Whoever translated calendar:MY did so wrongly.\n");
 
 #ifdef HAVE__NL_TIME_FIRST_WEEKDAY
-  week_start = nl_langinfo (_NL_TIME_FIRST_WEEKDAY);
-  week_origin = GPOINTER_TO_INT (nl_langinfo (_NL_TIME_WEEK_1STDAY));
-  if (week_origin == 19971130)
-    week_startsub = 0;
-  else if (week_origin == 19971201)
-    week_startsub = 1;
+  langinfo = nl_langinfo (_NL_TIME_FIRST_WEEKDAY);
+  first_weekday = langinfo[0];
+  langinfo = nl_langinfo (_NL_TIME_WEEK_1STDAY);
+  week_origin = GPOINTER_TO_INT (langinfo);
+  if (week_origin == 19971130) /* Sunday */
+    week_1stday = 0;
+  else if (week_origin == 19971201) /* Monday */
+    week_1stday = 1;
   else
     g_warning ("Unknown value of _NL_TIME_WEEK_1STDAY.\n");
 
-  priv->week_start = (*((unsigned char *) week_start) - week_startsub) % 7;
+  priv->week_start = (week_1stday + first_weekday - 1) % 7;
 #else
   /* Translate to calendar:week_start:0 if you want Sunday to be the
    * first day of the week to calendar:week_start:1 if you want Monday
-- 
GitLab