Add Dynamic DST patches to fix issues with Israel timezone.

This commit is contained in:
Sebastian Lackner 2014-07-26 00:55:23 +02:00
parent 845a4dd675
commit 4dea282c90
8 changed files with 154 additions and 9 deletions

View File

@ -18,9 +18,11 @@ These patches fix the following Wine bugs:
* Implement an Arial replacement font ([Wine Bug #32323](http://bugs.winehq.org/show_bug.cgi?id=32323 "Netflix (Silverlight 4.x) and several .NET Framework 3.x/4.0 WPF apps require either Arial or Verdana to be installed"))
* Support for interface change notifications ([Wine Bug #32328](http://bugs.winehq.org/show_bug.cgi?id=32328 "Many .NET and Silverlight applications require SIO_ADDRESS_LIST_CHANGE for interface change notifications"))
* Support for inherited file ACLs ([Wine Bug #34406](http://bugs.winehq.org/show_bug.cgi?id=34406 "Finale Notepad 2012 doesn't copy/create user files on program start"))
* Add Dynamic DST exceptions for Israel Standard Time ([Wine Bug #36374](http://bugs.winehq.org/show_bug.cgi?id=36374 "Israel timezone handled incorrectly"))
Besides that the following additional changes are included:
* Add support for Dynamic DST (daylight saving time) information in registry
* Lockfree algorithm for filedescriptor cache (improves file access speed)
* Other Pipelight specific enhancements
* Reduced SetTimer minimum value from 10 ms to 5 ms (improves Silverlight framerates)

View File

@ -1,3 +0,0 @@
Revision: 1
Author: Joris van der Wel
Title: Implement passing ACLs to CreateProcess.

View File

@ -1,3 +0,0 @@
Revision: 1
Author: Erich E. Hoover
Title: Fix possible race conditions in strmbase/quartz.

View File

@ -1,3 +0,0 @@
Revision: 1
Author: Erich E. Hoover
Title: Return correct IMediaSeeking stream positions in quartz.

View File

@ -0,0 +1,74 @@
From b72d6c2bb191c98187193ea00ccce6eed0486a7b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 24 Jul 2014 01:27:16 +0200
Subject: ntdll: Add support for Dynamic DST (daylight saving time)
information in registry.
---
dlls/ntdll/time.c | 34 +++++++++++++++++++++++++++++-----
1 file changed, 29 insertions(+), 5 deletions(-)
diff --git a/dlls/ntdll/time.c b/dlls/ntdll/time.c
index 5ec5a1c..df3bedd 100644
--- a/dlls/ntdll/time.c
+++ b/dlls/ntdll/time.c
@@ -598,11 +598,23 @@ static void find_reg_tz_info(RTL_TIME_ZONE_INFORMATION *tzi)
'W','i','n','d','o','w','s',' ','N','T','\\',
'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\',
'T','i','m','e',' ','Z','o','n','e','s',0 };
+ static const WCHAR Dynamic_DstW[] = { 'D','y','n','a','m','i','c',' ','D','S','T',0 };
+ static const WCHAR fmtW[] = { '%','d',0 };
HANDLE hkey;
ULONG idx;
- OBJECT_ATTRIBUTES attr;
- UNICODE_STRING nameW;
- WCHAR buf[128];
+ OBJECT_ATTRIBUTES attr, attrDynamic;
+ UNICODE_STRING nameW, nameDynamicW;
+ WCHAR buf[128], yearW[16];
+
+ sprintfW(yearW, fmtW, tzi->DaylightDate.wYear);
+
+ attrDynamic.Length = sizeof(attrDynamic);
+ attrDynamic.RootDirectory = 0; /* will be replaced later */
+ attrDynamic.ObjectName = &nameDynamicW;
+ attrDynamic.Attributes = 0;
+ attrDynamic.SecurityDescriptor = NULL;
+ attrDynamic.SecurityQualityOfService = NULL;
+ RtlInitUnicodeString(&nameDynamicW, Dynamic_DstW);
attr.Length = sizeof(attr);
attr.RootDirectory = 0;
@@ -628,7 +640,9 @@ static void find_reg_tz_info(RTL_TIME_ZONE_INFORMATION *tzi)
static const WCHAR dltW[] = { 'D','l','t',0 };
static const WCHAR tziW[] = { 'T','Z','I',0 };
RTL_TIME_ZONE_INFORMATION reg_tzi;
- HANDLE hSubkey;
+ HANDLE hSubkey, hSubkeyDynamicDST;
+ BOOL is_dynamic = FALSE;
+
struct tz_reg_data
{
LONG bias;
@@ -660,7 +674,17 @@ static void find_reg_tz_info(RTL_TIME_ZONE_INFORMATION *tzi)
get_value(hSubkey, stdW, REG_SZ, reg_tzi.StandardName, sizeof(reg_tzi.StandardName));
get_value(hSubkey, dltW, REG_SZ, reg_tzi.DaylightName, sizeof(reg_tzi.DaylightName));
- get_value(hSubkey, tziW, REG_BINARY, &tz_data, sizeof(tz_data));
+
+ /* Check for Dynamic DST entry first */
+ attrDynamic.RootDirectory = hSubkey;
+ if (!NtOpenKey(&hSubkeyDynamicDST, KEY_READ, &attrDynamic))
+ {
+ is_dynamic = reg_query_value(hSubkeyDynamicDST, yearW, REG_BINARY, &tz_data, sizeof(tz_data));
+ NtClose(hSubkeyDynamicDST);
+ }
+
+ if (!is_dynamic)
+ get_value(hSubkey, tziW, REG_BINARY, &tz_data, sizeof(tz_data));
#undef get_value
--
1.7.9.5

View File

@ -0,0 +1,47 @@
From 415449fb2194136efaeed4b978b5e3a7617ae43b Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 26 Jul 2014 00:44:03 +0200
Subject: wine.inf: Add Dynamic DST exceptions for Israel Standard Time.
---
loader/wine.inf.in | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/loader/wine.inf.in b/loader/wine.inf.in
index 25bc098..594ad60 100644
--- a/loader/wine.inf.in
+++ b/loader/wine.inf.in
@@ -2756,6 +2756,30 @@ HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time,"Display",,"Asia/Jerusal
HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time,"Dlt",,"Israel Daylight Time"
HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time,"Std",,"Israel Standard Time"
HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time,"TZI",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,02,00,00,00,00,00,00,00,00,00,03,00,05,00,05,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2017",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,e1,07,0a,00,00,00,1d,00,02,00,00,00,00,00,00,00,e1,07,03,00,05,00,18,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2018",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,e2,07,0a,00,00,00,1c,00,02,00,00,00,00,00,00,00,e2,07,03,00,05,00,17,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2023",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,e7,07,0a,00,00,00,1d,00,02,00,00,00,00,00,00,00,e7,07,03,00,05,00,18,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2028",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,ec,07,0a,00,00,00,1d,00,02,00,00,00,00,00,00,00,ec,07,03,00,05,00,18,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2029",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,ed,07,0a,00,00,00,1c,00,02,00,00,00,00,00,00,00,ed,07,03,00,05,00,17,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2034",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,f2,07,0a,00,00,00,1d,00,02,00,00,00,00,00,00,00,f2,07,03,00,05,00,18,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2035",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,f3,07,0a,00,00,00,1c,00,02,00,00,00,00,00,00,00,f3,07,03,00,05,00,17,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2040",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,f8,07,0a,00,00,00,1c,00,02,00,00,00,00,00,00,00,f8,07,03,00,05,00,17,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2045",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,fd,07,0a,00,00,00,1d,00,02,00,00,00,00,00,00,00,fd,07,03,00,05,00,18,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2046",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,fe,07,0a,00,00,00,1c,00,02,00,00,00,00,00,00,00,fe,07,03,00,05,00,17,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2051",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,03,08,0a,00,00,00,1d,00,02,00,00,00,00,00,00,00,03,08,03,00,05,00,18,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2056",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,08,08,0a,00,00,00,1d,00,02,00,00,00,00,00,00,00,08,08,03,00,05,00,18,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2057",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,09,08,0a,00,00,00,1c,00,02,00,00,00,00,00,00,00,09,08,03,00,05,00,17,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2062",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,0e,08,0a,00,00,00,1d,00,02,00,00,00,00,00,00,00,0e,08,03,00,05,00,18,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2063",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,0f,08,0a,00,00,00,1c,00,02,00,00,00,00,00,00,00,0f,08,03,00,05,00,17,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2068",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,14,08,0a,00,00,00,1c,00,02,00,00,00,00,00,00,00,14,08,03,00,05,00,17,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2073",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,19,08,0a,00,00,00,1d,00,02,00,00,00,00,00,00,00,19,08,03,00,05,00,18,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2074",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,1a,08,0a,00,00,00,1c,00,02,00,00,00,00,00,00,00,1a,08,03,00,05,00,17,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2079",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,1f,08,0a,00,00,00,1d,00,02,00,00,00,00,00,00,00,1f,08,03,00,05,00,18,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2084",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,24,08,0a,00,00,00,1d,00,02,00,00,00,00,00,00,00,24,08,03,00,05,00,18,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2085",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,25,08,0a,00,00,00,1c,00,02,00,00,00,00,00,00,00,25,08,03,00,05,00,17,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2090",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,2a,08,0a,00,00,00,1d,00,02,00,00,00,00,00,00,00,2a,08,03,00,05,00,18,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2091",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,2b,08,0a,00,00,00,1c,00,02,00,00,00,00,00,00,00,2b,08,03,00,05,00,17,00,02,00,00,00,00,00,00,00
+HKLM,%CurrentVersionNT%\Time Zones\Israel Standard Time\Dynamic DST,"2096",1,88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,30,08,0a,00,00,00,1c,00,02,00,00,00,00,00,00,00,30,08,03,00,05,00,17,00,02,00,00,00,00,00,00,00
HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time,"Display",,"Asia/Amman"
HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time,"Dlt",,"Jordan Daylight Time"
HKLM,%CurrentVersionNT%\Time Zones\Jordan Standard Time,"Std",,"Jordan Standard Time"
--
1.7.9.5

View File

@ -0,0 +1,10 @@
Author: Michael Müller
Subject: Add support for Dynamic DST (daylight saving time) information in registry.
Revision: 1
Author: Sebastian Lackner
Subject: Add Dynamic DST exceptions for Israel Standard Time.
Revision: 1
Fixes: Add support for Dynamic DST (daylight saving time) information in registry
Fixes: [36374] Add Dynamic DST exceptions for Israel Standard Time

View File

@ -22,6 +22,7 @@ PATCHLIST := 00-Commandline.ok \
16-server-CreateProcess_ACLs.ok \
17-strmbase-Lock_Race_Conditions.ok \
18-quartz-MediaSeeking_Positions.ok \
19-ntdll-Dynamic_DST.ok \
97-Pipelight.ok \
98-Miscellaneous.ok
@ -395,6 +396,26 @@ clean:
echo "+ { \"18-quartz-MediaSeeking_Positions\", \"Erich E. Hoover\", \"Return correct IMediaSeeking stream positions in quartz.\" },"; \
) > 18-quartz-MediaSeeking_Positions.ok
# Patchset 19-ntdll-Dynamic_DST
# |
# | Included patches:
# | * Add support for Dynamic DST (daylight saving time) information in registry. [by Michael Müller]
# | * Add Dynamic DST exceptions for Israel Standard Time. [by Sebastian Lackner]
# |
# | This patchset fixes the following Wine bugs:
# | * [#36374] Israel timezone handled incorrectly
# |
# | Modified files:
# | * dlls/ntdll/time.c, loader/wine.inf.in
# |
19-ntdll-Dynamic_DST.ok:
$(PATCH) < 19-ntdll-Dynamic_DST/0001-ntdll-Add-support-for-Dynamic-DST-daylight-saving-ti.patch
$(PATCH) < 19-ntdll-Dynamic_DST/0002-wine.inf-Add-Dynamic-DST-exceptions-for-Israel-Stand.patch
( \
echo "+ { \"19-ntdll-Dynamic_DST\", \"Michael Müller\", \"Add support for Dynamic DST (daylight saving time) information in registry.\" },"; \
echo "+ { \"19-ntdll-Dynamic_DST\", \"Sebastian Lackner\", \"Add Dynamic DST exceptions for Israel Standard Time.\" },"; \
) > 19-ntdll-Dynamic_DST.ok
# Patchset 97-Pipelight
# |
# | Included patches: