18a5fa703d
The content of this branch was automatically imported from Fedora ELN with the following as its source: https://src.fedoraproject.org/rpms/gtk2#7ef3e63372e5e049d7a4ada9e011e4491015ddb3
64 lines
2.2 KiB
Diff
64 lines
2.2 KiB
Diff
From 2ea743ab466703091a44a74e1a4ac7db983c0bca Mon Sep 17 00:00:00 2001
|
|
From: Rafal Luzynski <digitalfreak@lingonborough.com>
|
|
Date: Sat, 10 Feb 2018 14:07:56 +0100
|
|
Subject: [PATCH] calendar: Use the new "%OB" format if supported
|
|
|
|
Due to the recent changes introduced in glibc 2.27 "%OB" is the
|
|
correct format to obtain a month name as used in the calendar
|
|
header. The same rule has been working in BSD family (including
|
|
OS X) since 1990s. This simple hack checks whether "%OB" is supported
|
|
at runtime and uses it if it is, falls back to the old "%B" otherwise.
|
|
|
|
Closes: #9
|
|
---
|
|
gtk/gtkcalendar.c | 19 +++++++++++++++++--
|
|
1 file changed, 17 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/gtk/gtkcalendar.c b/gtk/gtkcalendar.c
|
|
index 2dd68d6394..28baba16f1 100644
|
|
--- a/gtk/gtkcalendar.c
|
|
+++ b/gtk/gtkcalendar.c
|
|
@@ -689,6 +689,7 @@ gtk_calendar_init (GtkCalendar *calendar)
|
|
#ifdef G_OS_WIN32
|
|
wchar_t wbuffer[100];
|
|
#else
|
|
+ static const char *month_format = NULL;
|
|
char buffer[255];
|
|
time_t tmp_time;
|
|
#endif
|
|
@@ -714,7 +715,7 @@ gtk_calendar_init (GtkCalendar *calendar)
|
|
{
|
|
#ifndef G_OS_WIN32
|
|
tmp_time= (i+3)*86400;
|
|
- strftime ( buffer, sizeof (buffer), "%a", gmtime (&tmp_time));
|
|
+ strftime (buffer, sizeof (buffer), "%a", gmtime (&tmp_time));
|
|
default_abbreviated_dayname[i] = g_locale_to_utf8 (buffer, -1, NULL, NULL, NULL);
|
|
#else
|
|
if (!GetLocaleInfoW (GetThreadLocale (), LOCALE_SABBREVDAYNAME1 + (i+6)%7,
|
|
@@ -730,7 +731,21 @@ gtk_calendar_init (GtkCalendar *calendar)
|
|
{
|
|
#ifndef G_OS_WIN32
|
|
tmp_time=i*2764800;
|
|
- strftime ( buffer, sizeof (buffer), "%B", gmtime (&tmp_time));
|
|
+ if (G_UNLIKELY (month_format == NULL))
|
|
+ {
|
|
+ buffer[0] = '\0';
|
|
+ month_format = "%OB";
|
|
+ strftime (buffer, sizeof (buffer), month_format, gmtime (&tmp_time));
|
|
+ /* "%OB" is not supported in Linux with glibc < 2.27 */
|
|
+ if (!strcmp (buffer, "%OB") || !strcmp (buffer, "OB") || !strcmp (buffer, ""))
|
|
+ {
|
|
+ month_format = "%B";
|
|
+ strftime (buffer, sizeof (buffer), month_format, gmtime (&tmp_time));
|
|
+ }
|
|
+ }
|
|
+ else
|
|
+ strftime (buffer, sizeof (buffer), month_format, gmtime (&tmp_time));
|
|
+
|
|
default_monthname[i] = g_locale_to_utf8 (buffer, -1, NULL, NULL, NULL);
|
|
#else
|
|
if (!GetLocaleInfoW (GetThreadLocale (), LOCALE_SMONTHNAME1 + i,
|
|
--
|
|
2.20.1
|
|
|