Back out timezone detection patch. Tom already applied it.
This commit is contained in:
parent
525449be27
commit
bf831f6e9f
@ -6,7 +6,7 @@
|
||||
* Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/timezone/pgtz.c,v 1.26 2004/09/02 01:03:59 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/timezone/pgtz.c,v 1.27 2004/09/02 01:15:06 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -953,110 +953,6 @@ identify_system_timezone(void)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Localized Windows versions return localized names for the
|
||||
* timezones. Scan the registry to find the english name,
|
||||
* and then try matching against the table again.
|
||||
*/
|
||||
ZeroMemory(localtzname, sizeof(localtzname));
|
||||
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
|
||||
"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones",
|
||||
0,
|
||||
KEY_READ,
|
||||
&rootKey) != ERROR_SUCCESS)
|
||||
{
|
||||
ereport(WARNING,
|
||||
(errmsg_internal("could not open registry key to identify Windows timezone \"%s\": %i", tzname, (int)GetLastError())));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (idx = 0; ; idx++)
|
||||
{
|
||||
char keyname[256];
|
||||
char zonename[256];
|
||||
DWORD namesize = sizeof(keyname);
|
||||
FILETIME lastwrite;
|
||||
HKEY key;
|
||||
LONG r;
|
||||
|
||||
ZeroMemory(keyname,sizeof(keyname));
|
||||
|
||||
if ((r=RegEnumKeyEx(rootKey,
|
||||
idx,
|
||||
keyname,
|
||||
&namesize,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
&lastwrite)) != ERROR_SUCCESS)
|
||||
{
|
||||
if (r == ERROR_NO_MORE_ITEMS)
|
||||
break;
|
||||
ereport(WARNING,
|
||||
(errmsg_internal("could not enumerate registry subkeys to identify Windows timezone \"%s\": %i", tzname, (int)r)));
|
||||
break;
|
||||
}
|
||||
|
||||
if ((r=RegOpenKeyEx(rootKey,keyname,0,KEY_READ,&key)) != ERROR_SUCCESS)
|
||||
{
|
||||
ereport(WARNING,
|
||||
(errmsg_internal("could not open registry subkey to identify Windows timezone \"%s\": %i", tzname, (int)r)));
|
||||
break;
|
||||
}
|
||||
|
||||
ZeroMemory(zonename,sizeof(zonename));
|
||||
namesize = sizeof(zonename);
|
||||
if ((r=RegQueryValueEx(key, "Std", NULL, NULL, zonename, &namesize)) != ERROR_SUCCESS)
|
||||
{
|
||||
ereport(WARNING,
|
||||
(errmsg_internal("could not query value for 'std' to identify Windows timezone \"%s\": %i", tzname, (int)r)));
|
||||
RegCloseKey(key);
|
||||
break;
|
||||
}
|
||||
if (!strcmp(tzname, zonename))
|
||||
{
|
||||
/* Matched zone */
|
||||
strcpy(localtzname, keyname);
|
||||
RegCloseKey(key);
|
||||
break;
|
||||
}
|
||||
ZeroMemory(zonename, sizeof(zonename));
|
||||
namesize = sizeof(zonename);
|
||||
if ((r=RegQueryValueEx(key, "Dlt", NULL, NULL, zonename, &namesize)) != ERROR_SUCCESS)
|
||||
{
|
||||
ereport(WARNING,
|
||||
(errmsg_internal("could not query value for 'dlt' to identify Windows timezone \"%s\": %i", tzname, (int)r)));
|
||||
RegCloseKey(key);
|
||||
break;
|
||||
}
|
||||
if (!strcmp(tzname, zonename))
|
||||
{
|
||||
/* Matched DST zone */
|
||||
strcpy(localtzname, keyname);
|
||||
RegCloseKey(key);
|
||||
break;
|
||||
}
|
||||
|
||||
RegCloseKey(key);
|
||||
}
|
||||
|
||||
RegCloseKey(rootKey);
|
||||
|
||||
if (localtzname[0])
|
||||
{
|
||||
/* Found a localized name, so scan for that one too */
|
||||
for (i = 0; win32_tzmap[i].stdname != NULL; i++)
|
||||
{
|
||||
if (strcmp(localtzname, win32_tzmap[i].stdname) == 0 ||
|
||||
strcmp(localtzname, win32_tzmap[i].dstname) == 0)
|
||||
{
|
||||
elog(DEBUG4, "TZ \"%s\" matches localized Windows timezone \"%s\" (\"%s\")",
|
||||
win32_tzmap[i].pgtzname, tzname, localtzname);
|
||||
return win32_tzmap[i].pgtzname;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ereport(WARNING,
|
||||
(errmsg("could not find a match for Windows timezone \"%s\"",
|
||||
tzname)));
|
||||
|
Loading…
x
Reference in New Issue
Block a user