comparison src/win32/libc_interface.c @ 13338:0f708ed02902

[gaim-migrate @ 15708] Daniel and I figured it would be a good idea to cache the results of the registry lookup. For the kind of code using gaim_utf8_strftime() right now, this gets us down to one registry search per Gaim instance on localized versions of Windows (zero on English versions). committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Mon, 27 Feb 2006 19:31:30 +0000
parents b04212d6b115
children c6ab9c1cf28d
comparison
equal deleted inserted replaced
13337:d4af79bc2d0a 13338:0f708ed02902
462 const char *wdst; /* Windows name of daylight timezone */ 462 const char *wdst; /* Windows name of daylight timezone */
463 const char *ustd; /* Unix name of standard timezone */ 463 const char *ustd; /* Unix name of standard timezone */
464 const char *udst; /* Unix name of daylight timezone */ 464 const char *udst; /* Unix name of daylight timezone */
465 } win32_tzmap[] = 465 } win32_tzmap[] =
466 { 466 {
467 {
468 "", "",
469 "", "",
470 },
467 /* 471 /*
468 * This list was built from the contents of the registry at 472 * This list was built from the contents of the registry at
469 * "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones" 473 * "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones"
470 * on Windows XP Professional SP1 474 * on Windows XP Professional SP1
471 */ 475 */
922 { 926 {
923 if (strcmp(localtzname, win32_tzmap[i].wstd) == 0) 927 if (strcmp(localtzname, win32_tzmap[i].wstd) == 0)
924 { 928 {
925 gaim_debug_info("wgaim", "TZ \"%s\" matches localized Windows timezone \"%s\" (\"%s\")", 929 gaim_debug_info("wgaim", "TZ \"%s\" matches localized Windows timezone \"%s\" (\"%s\")",
926 win32_tzmap[i].ustd, tzname, localtzname); 930 win32_tzmap[i].ustd, tzname, localtzname);
931
932 /* Cache the Result */
933 if (win32_tzmap[0].wstd[0] != '\0')
934 g_free(win32_tzmap[0].wstd);
935 win32_tzmap[0].wstd = g_strdup(tzname);
936 win32_tzmap[1].ustd = win32_tzmap[i].ustd;
937
927 return win32_tzmap[i].ustd; 938 return win32_tzmap[i].ustd;
928 } 939 }
929 if (strcmp(localtzname, win32_tzmap[i].wdst) == 0) 940 if (strcmp(localtzname, win32_tzmap[i].wdst) == 0)
930 { 941 {
931 gaim_debug_info("wgaim", "TZ \"%s\" matches localized Windows timezone \"%s\" (\"%s\")", 942 gaim_debug_info("wgaim", "TZ \"%s\" matches localized Windows timezone \"%s\" (\"%s\")",
932 win32_tzmap[i].udst, tzname, localtzname); 943 win32_tzmap[i].udst, tzname, localtzname);
944
945 /* Cache the Result */
946 if (win32_tzmap[0].wdst[0] != '\0')
947 g_free(win32_tzmap[0].wdst);
948
949 win32_tzmap[0].wdst = g_strdup(tzname);
950 win32_tzmap[1].udst = win32_tzmap[i].udst;
951
933 return win32_tzmap[i].udst; 952 return win32_tzmap[i].udst;
934 } 953 }
935 } 954 }
936 } 955 }
937 956
938 gaim_debug_warning("wgaim", "could not find a match for Windows timezone \"%s\"", tzname); 957 gaim_debug_warning("wgaim", "could not find a match for Windows timezone \"%s\"", tzname);
939 return ""; 958 return "";
940 } 959 }
960