Wed, 25 Apr 2018 15:40:00 -0500
win32: Remove now unused wpurple_get_timezone_abbreviation()
| libpurple/win32/libc_interface.c | file | annotate | diff | comparison | revisions | |
| libpurple/win32/libc_internal.h | file | annotate | diff | comparison | revisions |
--- a/libpurple/win32/libc_interface.c Fri Jul 14 13:22:50 2017 -0500 +++ b/libpurple/win32/libc_interface.c Wed Apr 25 15:40:00 2018 -0500 @@ -522,547 +522,3 @@ return NULL; } -/* - * Used by purple_utf8_strftime() by way of purple_internal_strftime() - * in src/util.c - * - * Code derived from PostgreSQL src/timezone/pgtz.c: - * http://developer.postgresql.org/cvsweb.cgi/pgsql/src/timezone/pgtz.c - */ - -/* -PostgreSQL Database Management System -(formerly known as Postgres, then as Postgres95) - -Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group - -Portions Copyright (c) 1994, The Regents of the University of California - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose, without fee, and without a written agreement -is hereby granted, provided that the above copyright notice and this -paragraph and the following two paragraphs appear in all copies. - -IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR -DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING -LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS -DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - -THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS -ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO -PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. - -*/ -static struct -{ - char *wstd; /* Windows name of standard timezone */ - char *wdst; /* Windows name of daylight timezone */ - char *ustd; /* Unix name of standard timezone */ - char *udst; /* Unix name of daylight timezone */ -} win32_tzmap[] = -{ - { - "", "", - "", "", - }, - /* - * This list was built from the contents of the registry at - * "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones" - * on Windows XP Professional SP1 - */ - { - "Afghanistan Standard Time", "Afghanistan Daylight Time", - "AFT", "AFT" - }, - { - "Alaskan Standard Time", "Alaskan Daylight Time", - "AKST", "AKDT" - }, - { - "Arab Standard Time", "Arab Daylight Time", - "AST", "AST" - }, - { - "Arabian Standard Time", "Arabian Daylight Time", - "GST", "GST" - }, - { - "Arabic Standard Time", "Arabic Daylight Time", - "AST", "ADT" - }, - { - "Atlantic Standard Time", "Atlantic Daylight Time", - "AST", "ADT" - }, - { - "AUS Central Standard Time", "AUS Central Daylight Time", - "CST", "CST" - }, - { - "AUS Eastern Standard Time", "AUS Eastern Daylight Time", - "EST", "EST" - }, - { - "Azores Standard Time", "Azores Daylight Time", - "AZOT", "AZOST" - }, - { - "Canada Central Standard Time", "Canada Central Daylight Time", - "CST", "MDT" - }, - { - "Cape Verde Standard Time", "Cape Verde Daylight Time", - "CVT", "CVST" - }, - { - "Caucasus Standard Time", "Caucasus Daylight Time", - "AZT", "AZST" - }, - { - "Cen. Australia Standard Time", "Cen. Australia Daylight Time", - "CST", "CST" - }, - { - "Central America Standard Time", "Central America Daylight Time", - "CST", "CDT" - }, - { - "Central Asia Standard Time", "Central Asia Daylight Time", - "BDT", "BDT" - }, - { - "Central Europe Standard Time", "Central Europe Daylight Time", - "CET", "CEST" - }, - { - "Central European Standard Time", "Central European Daylight Time", - "CET", "CEST" - }, - { - "Central Pacific Standard Time", "Central Pacific Daylight Time", - "NCT", "NCST" - }, - { - "Central Standard Time", "Central Daylight Time", - "CST", "CDT" - }, - { - "China Standard Time", "China Daylight Time", - "HKT", "HKST" - }, - { - "Dateline Standard Time", "Dateline Daylight Time", - "GMT+12", "GMT+12" - }, - { - "E. Africa Standard Time", "E. Africa Daylight Time", - "EAT", "EAT" - }, - { - "E. Australia Standard Time", "E. Australia Daylight Time", - "EST", "EST" - }, - { - "E. Europe Standard Time", "E. Europe Daylight Time", - "EET", "EEST" - }, - { - "E. South America Standard Time", "E. South America Daylight Time", - "BRT", "BRST" - }, - { - "Eastern Standard Time", "Eastern Daylight Time", - "EST", "EDT" - }, - { - "Egypt Standard Time", "Egypt Daylight Time", - "EET", "EEST" - }, - { - "Ekaterinburg Standard Time", "Ekaterinburg Daylight Time", - "YEKT", "YEKST" - }, - { - "Fiji Standard Time", "Fiji Daylight Time", - "FJT", "FJST" - }, - { - "FLE Standard Time", "FLE Daylight Time", - "EET", "EEST" - }, - { - "GMT Standard Time", "GMT Daylight Time", - "GMT", "IST" - }, - { - "Greenland Standard Time", "Greenland Daylight Time", - "WGT", "WGST" - }, - { - "Greenwich Standard Time", "Greenwich Daylight Time", - "WET", "WEST" - }, - { - "GTB Standard Time", "GTB Daylight Time", - "EET", "EEST" - }, - { - "Hawaiian Standard Time", "Hawaiian Daylight Time", - "HST", "HPT" - }, - { - "India Standard Time", "India Daylight Time", - "IST", "IST" - }, - { - "Iran Standard Time", "Iran Daylight Time", - "IRST", "IRDT" - }, - { - "Jerusalem Standard Time", "Jerusalem Daylight Time", - "IST", "IDT" - }, - { - "Korea Standard Time", "Korea Daylight Time", - "KST", "KDT" - }, - { - "Mexico Standard Time", "Mexico Daylight Time", - "CST", "CDT" - }, - { - "Mexico Standard Time", "Mexico Daylight Time", - "BOT", "BOST" - }, - { - "Mid-Atlantic Standard Time", "Mid-Atlantic Daylight Time", - "GST", "GST" - }, - { - "Mountain Standard Time", "Mountain Daylight Time", - "MST", "MDT" - }, - { - "Myanmar Standard Time", "Myanmar Daylight Time", - "MMT", "MMT" - }, - { - "N. Central Asia Standard Time", "N. Central Asia Daylight Time", - "ALMT", "ALMST" - }, - { - "Nepal Standard Time", "Nepal Daylight Time", - "NPT", "NPT" - }, - { - "New Zealand Standard Time", "New Zealand Daylight Time", - "NZST", "NZDT" - }, - { - "Newfoundland Standard Time", "Newfoundland Daylight Time", - "NST", "NDT" - }, - { - "North Asia East Standard Time", "North Asia East Daylight Time", - "IRKT", "IRKST" - }, - { - "North Asia Standard Time", "North Asia Daylight Time", - "KRAT", "KRAST" - }, - { - "Pacific SA Standard Time", "Pacific SA Daylight Time", - "CLT", "CLST" - }, - { - "Pacific Standard Time", "Pacific Daylight Time", - "PST", "PDT" - }, - { - "Romance Standard Time", "Romance Daylight Time", - "CET", "CEST" - }, - { - "Russian Standard Time", "Russian Daylight Time", - "MSK", "MSD" - }, - { - "SA Eastern Standard Time", "SA Eastern Daylight Time", - "ART", "ARST" - }, - { - "SA Pacific Standard Time", "SA Pacific Daylight Time", - "COT", "COST" - }, - { - "SA Western Standard Time", "SA Western Daylight Time", - "VET", "VET" - }, - { - "Samoa Standard Time", "Samoa Daylight Time", - "SST", "NDT" - }, - { - "SE Asia Standard Time", "SE Asia Daylight Time", - "ICT", "ICT" - }, - { - "Malay Peninsula Standard Time", "Malay Peninsula Daylight Time", - "MYT", "MALST" - }, - { - "South Africa Standard Time", "South Africa Daylight Time", - "CAT", "CAT" - }, - { - "Sri Lanka Standard Time", "Sri Lanka Daylight Time", - "LKT", "IST" - }, - { - "Taipei Standard Time", "Taipei Daylight Time", - "CST", "CDT" - }, - { - "Tasmania Standard Time", "Tasmania Daylight Time", - "EST", "EST" - }, - { - "Tokyo Standard Time", "Tokyo Daylight Time", - "JST", "JDT" - }, - { - "Tonga Standard Time", "Tonga Daylight Time", - "TOT", "TOST" - }, - { - "US Eastern Standard Time", "US Eastern Daylight Time", - "EST", "EDT" - }, - { - "US Mountain Standard Time", "US Mountain Daylight Time", - "MST", "MDT" - }, - { - "Vladivostok Standard Time", "Vladivostok Daylight Time", - "VLAT", "VLAST" - }, - { - "W. Australia Standard Time", "W. Australia Daylight Time", - "WST", "WST" - }, - - /* Not mapped in PostgreSQL. - * - * I mapped this based on the following information... -- rlaager - * $ cd /usr/share/zoneinfo/Africa - * $ for i in * ; do echo `TZ=Africa/$i date +"%z %Z"` $i ; done | grep +0100 - * +0100 CET Algiers - * +0100 WAT Bangui - * +0100 WAT Brazzaville - * +0100 CET Ceuta - * +0100 WAT Douala - * +0100 WAT Kinshasa - * +0100 WAT Lagos - * +0100 WAT Libreville - * +0100 WAT Luanda - * +0100 WAT Malabo - * +0100 WAT Ndjamena - * +0100 WAT Niamey - * +0100 WAT Porto-Novo - * +0100 CET Tunis - **/ - { - "W. Central Africa Standard Time", "W. Central Africa Daylight Time", - "WAT", "WAT" - }, - - { - "W. Europe Standard Time", "W. Europe Daylight Time", - "CET", "CEST" - }, - { - "West Asia Standard Time", "West Asia Daylight Time", - "PKT", "PKST" - }, - { - "West Pacific Standard Time", "West Pacific Daylight Time", - "ChST", "ChST" - }, - { - "Yakutsk Standard Time", "Yakutsk Daylight Time", - "YAKT", "YAKST" - }, - { - NULL, NULL, - NULL, NULL - } -}; - -const char * -wpurple_get_timezone_abbreviation(const struct tm *tm) -{ - int i; - char tzname[128]; - char localtzname[256]; - HKEY rootKey; - int idx; - - if (!tm) - { - purple_debug_warning("wpurple", "could not determine current date/time: localtime failed\n"); - return ""; - } - - if (strftime(tzname, sizeof(tzname) - 1, "%Z", tm) == 0) - { - purple_debug_error("wpurple", "timezone name is too long for the buffer\n"); - return ""; - } - - for (i = 0; win32_tzmap[i].wstd != NULL; i++) - { - if (purple_strequal(tzname, win32_tzmap[i].wstd)) - { - /* Cache the Result */ - if (i > 0) { - if (win32_tzmap[0].wstd[0] != '\0') - g_free(win32_tzmap[0].wstd); - win32_tzmap[0].wstd = g_strdup(tzname); - win32_tzmap[0].ustd = win32_tzmap[i].ustd; - } - - return win32_tzmap[i].ustd; - } - if (purple_strequal(tzname, win32_tzmap[i].wdst)) - { - /* Cache the Result */ - if (i > 0) { - if (win32_tzmap[0].wdst[0] != '\0') - g_free(win32_tzmap[0].wdst); - win32_tzmap[0].wdst = g_strdup(tzname); - win32_tzmap[0].udst = win32_tzmap[i].udst; - } - - return win32_tzmap[i].udst; - } - } - - /* - * Localized Windows versions return localized names for the timezone. - * Scan the registry to find the English name, and then try matching - * against our table again. - */ - memset(localtzname, 0, sizeof(localtzname)); - if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, - "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones", - 0, - KEY_READ, - &rootKey) != ERROR_SUCCESS) - { - purple_debug_warning("wpurple", "could not open registry key to identify Windows timezone: %i\n", (int) GetLastError()); - return ""; - } - - for (idx = 0;; idx++) - { - char keyname[256]; - char zonename[256]; - DWORD namesize; - FILETIME lastwrite; - HKEY key; - LONG r; - - memset(keyname, 0, sizeof(keyname)); - namesize = sizeof(keyname); - if ((r = RegEnumKeyEx(rootKey, - idx, - keyname, - &namesize, - NULL, - NULL, - NULL, - &lastwrite)) != ERROR_SUCCESS) - { - if (r == ERROR_NO_MORE_ITEMS) - break; - purple_debug_warning("wpurple", "could not enumerate registry subkeys to identify Windows timezone: %i\n", (int) r); - break; - } - - if ((r = RegOpenKeyEx(rootKey, keyname, 0, KEY_READ, &key)) != ERROR_SUCCESS) - { - purple_debug_warning("wpurple", "could not open registry subkey to identify Windows timezone: %i\n", (int) r); - break; - } - - memset(zonename, 0, sizeof(zonename)); - namesize = sizeof(zonename); - if ((r = RegQueryValueEx(key, "Std", NULL, NULL, (LPBYTE)zonename, &namesize)) != ERROR_SUCCESS) - { - purple_debug_warning("wpurple", "could not query value for 'std' to identify Windows timezone: %i\n", (int) r); - RegCloseKey(key); - break; - } - if (purple_strequal(tzname, zonename)) - { - /* Matched zone */ - g_strlcpy(localtzname, keyname, sizeof(localtzname)); - RegCloseKey(key); - break; - } - memset(zonename, 0, sizeof(zonename)); - namesize = sizeof(zonename); - if ((r = RegQueryValueEx(key, "Dlt", NULL, NULL, (LPBYTE)zonename, &namesize)) != ERROR_SUCCESS) - { - purple_debug_warning("wpurple", "could not query value for 'dlt' to identify Windows timezone: %i\n", (int) r); - RegCloseKey(key); - break; - } - if (purple_strequal(tzname, zonename)) - { - /* Matched DST zone */ - g_strlcpy(localtzname, keyname, sizeof(localtzname)); - 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].wstd != NULL; i++) - { - if (purple_strequal(localtzname, win32_tzmap[i].wstd)) - { - /* Cache the Result */ - if (win32_tzmap[0].wstd[0] != '\0') - g_free(win32_tzmap[0].wstd); - win32_tzmap[0].wstd = g_strdup(tzname); - win32_tzmap[0].ustd = win32_tzmap[i].ustd; - - return win32_tzmap[i].ustd; - } - if (purple_strequal(localtzname, win32_tzmap[i].wdst)) - { - /* Cache the Result */ - if (win32_tzmap[0].wdst[0] != '\0') - g_free(win32_tzmap[0].wdst); - - win32_tzmap[0].wdst = g_strdup(tzname); - win32_tzmap[0].udst = win32_tzmap[i].udst; - - return win32_tzmap[i].udst; - } - } - } - - purple_debug_warning("wpurple", "could not find a match for Windows timezone \"%s\"\n", tzname); - return ""; -}
--- a/libpurple/win32/libc_internal.h Fri Jul 14 13:22:50 2017 -0500 +++ b/libpurple/win32/libc_internal.h Wed Apr 25 15:40:00 2018 -0500 @@ -29,9 +29,6 @@ extern "C" { #endif /* __cplusplus */ -/* helper for purple_utf8_strftime() by way of purple_internal_strftime() in src/util.c */ -const char *wpurple_get_timezone_abbreviation(const struct tm *tm); - /* sys/socket.h */ int wpurple_socket(int domain, int style, int protocol); int wpurple_connect(int socket, struct sockaddr *addr, u_long length);