diff --git a/glib/gtimezone.c b/glib/gtimezone.c index 028d40acb..6dfb5e3ca 100644 --- a/glib/gtimezone.c +++ b/glib/gtimezone.c @@ -546,6 +546,8 @@ rule_from_windows_time_zone_info (TimeZoneRule *rule, rule->std_offset = -tzi->Bias * 60; rule->dlt_start.mon = 0; } + strncpy (rule->std_name, (gchar*)tzi->StandardName, NAME_SIZE - 1); + strncpy (rule->dlt_name, (gchar*)tzi->DaylightName, NAME_SIZE - 1); } static gchar* @@ -639,6 +641,18 @@ rules_from_windows_time_zone (const gchar *identifier, TimeZoneRule **rules) subkey = g_strconcat (reg_key, key_name, NULL); subkey_dynamic = g_strconcat (subkey, "\\Dynamic DST", NULL); + if (RegOpenKeyExA (HKEY_LOCAL_MACHINE, subkey, 0, + KEY_QUERY_VALUE, &key) != ERROR_SUCCESS) + return 0; + size = sizeof tzi.StandardName; + if (RegQueryValueExA (key, "Std", NULL, NULL, + (LPBYTE)&(tzi.StandardName), &size) != ERROR_SUCCESS) + goto failed; + if (RegQueryValueExA (key, "Dlt", NULL, NULL, + (LPBYTE)&(tzi.DaylightName), &size) != ERROR_SUCCESS) + goto failed; + + RegCloseKey (key); if (RegOpenKeyExA (HKEY_LOCAL_MACHINE, subkey_dynamic, 0, KEY_QUERY_VALUE, &key) == ERROR_SUCCESS) { diff --git a/glib/tests/gdatetime.c b/glib/tests/gdatetime.c index c83098e76..717ae345b 100644 --- a/glib/tests/gdatetime.c +++ b/glib/tests/gdatetime.c @@ -624,7 +624,12 @@ test_GDateTime_new_full (void) g_assert_cmpint (8, ==, g_date_time_get_hour (dt)); g_assert_cmpint (4, ==, g_date_time_get_minute (dt)); g_assert_cmpint (0, ==, g_date_time_get_second (dt)); +#ifdef G_OS_UNIX g_assert_cmpstr ("BRT", ==, g_date_time_get_timezone_abbreviation (dt)); +#elif defined G_OS_WIN32 + g_assert_cmpstr ("E. South America Standard Time", ==, + g_date_time_get_timezone_abbreviation (dt)); +#endif g_assert (!g_date_time_is_daylight_savings (dt)); g_date_time_unref (dt); } @@ -879,7 +884,11 @@ GDateTime *__dt = g_date_time_new_local (2009, 10, 24, 0, 0, 0);\ TEST_PRINTF ("%%", "%"); TEST_PRINTF ("%", ""); TEST_PRINTF ("%9", NULL); +#ifdef G_OS_UNIX TEST_PRINTF ("%Z", dst); +#elsif defined G_OS_WIN32 + TEST_PRINTF ("%Z", "Pacific Standard Time") +#endif } static void