annotate src/win_gaim.c @ 7431:643cbc9a6035

[gaim-migrate @ 8036] This is good enough for CVS. This is new logging. It centers around the highly modular "GaimLogLogger," which controls how to write the log. Currently I only have the plain text logger. I wrote the beginning of an XML logger, but decided I didn't think it was that great an idea. Plugins can implement loggers themselves, so you can have, like, an SQL logger or something. The default logger writes to a file unique to the conversation, and they're saved on disk in a heirarchical fashion: ~/.gaim/logs/aim/seanegn/robflynn-date.log would be a conversation I had with Rob on date. What doesn't work: System logging The search button in the log viewer. Oh, chats probably don't log either, I didn't test. You can only log in plain text right now. Obviously, it's not done yet. But you can play around with it, and give it some love. I'll get back to it tomorrow after school, maybe. committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Wed, 05 Nov 2003 06:15:49 +0000
parents 0da73a46f7ae
children 29d69daa1ede
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4490
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1 /*
7350
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
2 * win_gaim.c
4490
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
3 *
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
4 * Date: June, 2002
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
5 * Description: Entry point for win32 gaim, and various win32 dependant
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
6 * routines.
7350
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
7 *
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
8 * Copyright (C) 2002-2003, Herman Bloggs <hermanator12002@yahoo.com>
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
9 *
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
10 * This program is free software; you can redistribute it and/or modify
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
11 * it under the terms of the GNU General Public License as published by
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
13 * (at your option) any later version.
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
14 *
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
15 * This program is distributed in the hope that it will be useful,
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
18 * GNU General Public License for more details.
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
19 *
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
20 * You should have received a copy of the GNU General Public License
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
21 * along with this program; if not, write to the Free Software
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
23 *
4490
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
24 */
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
25 #include <windows.h>
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
26 #include <stdlib.h>
6890
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
27 #include <string.h>
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
28 #include <stdio.h>
4490
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
29
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
30 /*
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
31 * PROTOTYPES
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
32 */
7350
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
33 static int (*gaim_main)( HINSTANCE, int, char** ) = NULL;
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
34 static void (*MySetDllDirectory)(LPCTSTR lpPathName) = NULL;
6890
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
35
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
36
7350
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
37 static BOOL read_reg_string(HKEY key, char* sub_key, char* val_name, LPBYTE data, LPDWORD data_len) {
6890
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
38 HKEY hkey;
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
39 BOOL ret = FALSE;
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
40 int retv;
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
41
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
42 if(ERROR_SUCCESS == RegOpenKeyEx(key,
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
43 sub_key,
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
44 0, KEY_QUERY_VALUE, &hkey)) {
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
45 if(ERROR_SUCCESS == (retv=RegQueryValueEx(hkey, val_name, 0, NULL, data, data_len)))
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
46 ret = TRUE;
7350
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
47 else
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
48 ret = FALSE;
6890
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
49 RegCloseKey(key);
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
50 }
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
51 return ret;
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
52 }
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
53
7350
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
54 static void run_dll_prep() {
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
55 char gtkpath[MAX_PATH];
6890
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
56 char path[MAX_PATH];
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
57 DWORD plen = MAX_PATH;
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
58 int gotreg=FALSE;
7350
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
59 HKEY hkey;
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
60 HMODULE hmod;
6890
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
61
7350
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
62 if(!(gotreg = read_reg_string((hkey=HKEY_LOCAL_MACHINE), "SOFTWARE\\GTK\\2.0", "Path", (LPBYTE)&gtkpath, &plen)))
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
63 gotreg = read_reg_string((hkey=HKEY_CURRENT_USER), "SOFTWARE\\GTK\\2.0", "Path", (LPBYTE)&gtkpath, &plen);
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
64
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
65 if(!gotreg)
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
66 return;
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
67
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
68 /* Determine GTK+ dll path .. */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
69 if(!read_reg_string(hkey, "SOFTWARE\\GTK\\2.0", "DllPath", (LPBYTE)&path, &plen)) {
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
70 char version[10];
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
71 char inst[10];
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
72 DWORD len = 10;
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
73
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
74 strcpy(path, gtkpath);
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
75 if(read_reg_string(hkey, "SOFTWARE\\GTK\\2.0", "Version", (LPBYTE)&version, &len) &&
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
76 read_reg_string(hkey, "SOFTWARE\\GTK\\2.0", "Installer", (LPBYTE)&inst, &len)) {
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
77 if(strcmp(version, "2.2.2") >= 0 &&
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
78 strcmp(inst, "NSIS") == 0) {
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
79 strcat(path, "\\bin");
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
80 }
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
81 else
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
82 strcat(path, "\\lib");
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
83 }
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
84 else
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
85 strcat(path, "\\lib");
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
86 }
6890
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
87
7350
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
88 if((hmod=LoadLibrary("kernel32.dll"))) {
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
89 MySetDllDirectory = (void*)GetProcAddress(hmod, "SetDllDirectory");
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
90 }
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
91
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
92 /* For Windows XP SP1 / Server 2003 we use SetDllDirectory to avoid dll hell */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
93 if(MySetDllDirectory)
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
94 MySetDllDirectory(path);
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
95 /* For the rest, we set the current directory */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
96 else {
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
97 OSVERSIONINFO osinfo;
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
98
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
99 SetCurrentDirectory(path);
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
100 /* For Windows 2000 SP3 and higher:
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
101 * If SafeDllSearchMode is set to 1, Windows system directories are
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
102 * searched for dlls before the current directory. Therefore we set it
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
103 * to 0.
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
104 */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
105 osinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
106 GetVersionEx(&osinfo);
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
107 if(osinfo.dwMajorVersion == 5 &&
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
108 osinfo.dwMinorVersion == 0 &&
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
109 strcmp(osinfo.szCSDVersion, "Service Pack 3") >= 0) {
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
110 if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE,
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
111 "System\\CurrentControlSet\\Control\\Session Manager",
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
112 0, KEY_SET_VALUE, &hkey)) {
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
113 DWORD regval = 0;
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
114 RegSetValueEx(hkey,
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
115 "SafeDllSearchMode",
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
116 0,
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
117 REG_DWORD,
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
118 (LPBYTE) &regval,
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
119 sizeof(regval));
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
120 RegCloseKey(hkey);
6890
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
121 }
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
122 }
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
123 }
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
124 }
4490
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
125
7350
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
126 static char* wgaim_lcid_to_posix(LCID lcid) {
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
127 switch(lcid) {
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
128 case 1026: return "bg"; /* bulgarian */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
129 case 1027: return "ca"; /* catalan */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
130 case 1050: return "hr"; /* croation */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
131 case 1029: return "cs"; /* czech */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
132 case 1030: return "da"; /* danaish */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
133 case 1043: return "nl"; /* dutch - netherlands */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
134 case 1033: return "en"; /* english - us */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
135 case 1035: return "fi"; /* finish */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
136 case 1036: return "fr"; /* french - france */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
137 case 1031: return "de"; /* german - germany */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
138 case 1032: return "el"; /* greek */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
139 case 1037: return "he"; /* hebrew */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
140 case 1038: return "hu"; /* hungarian */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
141 case 1040: return "it"; /* italian - italy */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
142 case 1041: return "ja"; /* japanese */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
143 case 1042: return "ko"; /* korean */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
144 case 1063: return "lt"; /* lithuanian */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
145 case 1071: return "mk"; /* macedonian */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
146 case 1045: return "pl"; /* polish */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
147 case 2070: return "pt"; /* portuguese - portugal */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
148 case 1046: return "pt_BR"; /* portuguese - brazil */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
149 case 1048: return "ro"; /* romanian - romania */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
150 case 1049: return "ru"; /* russian - russia */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
151 case 2074: return "sr@Latn"; /* serbian - latin */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
152 case 3098: return "sr"; /* serbian - cyrillic */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
153 case 2052: return "zh_CN"; /* chinese - china (simple) */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
154 case 1051: return "sk"; /* slovak */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
155 case 1060: return "sl"; /* slovenian */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
156 case 1034: return "es"; /* spanish */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
157 case 1053: return "sv"; /* swedish */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
158 case 1054: return "th"; /* thai */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
159 case 1028: return "zh_TW"; /* chinese - taiwan (traditional) */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
160 case 1055: return "tr"; /* turkish */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
161 case 1058: return "uk"; /* ukrainian */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
162 default:
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
163 return NULL;
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
164 }
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
165 }
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
166
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
167 /* Determine and set Gaim locale as follows (in order of priority):
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
168 - Check LANG env var
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
169 - Check NSIS Installer Language reg value
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
170 - Use default user locale
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
171 */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
172 static void wgaim_set_locale() {
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
173 HKEY hkey;
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
174 char* locale=NULL;
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
175 char envstr[25];
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
176 LCID lcid;
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
177
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
178 /* Check if user set LANG env var */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
179 if((locale = (char*)getenv("LANG"))) {
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
180 goto finish;
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
181 }
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
182
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
183 /* Check reg key set at install time */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
184 if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_CURRENT_USER,
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
185 "SOFTWARE\\gaim",
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
186 0, KEY_QUERY_VALUE, &hkey)) {
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
187 BYTE data[10];
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
188 DWORD ds = 10;
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
189 if(ERROR_SUCCESS == RegQueryValueEx(hkey, "Installer Language", 0, NULL, (LPBYTE)&data, &ds)) {
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
190 if((locale = wgaim_lcid_to_posix(atoi(data))))
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
191 goto finish;
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
192 }
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
193 }
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
194
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
195 lcid = GetUserDefaultLCID();
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
196 if((locale = wgaim_lcid_to_posix(lcid)))
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
197 goto finish;
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
198
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
199 finish:
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
200 if(!locale)
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
201 locale = "en";
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
202
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
203 sprintf(envstr, "LANG=%s", locale);
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
204 putenv(envstr);
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
205 }
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
206
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
207
4490
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
208 #ifdef __GNUC__
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
209 # ifndef _stdcall
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
210 # define _stdcall __attribute__((stdcall))
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
211 # endif
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
212 #endif
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
213
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
214 int _stdcall
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
215 WinMain (struct HINSTANCE__ *hInstance,
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
216 struct HINSTANCE__ *hPrevInstance,
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
217 char *lpszCmdLine,
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
218 int nCmdShow)
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
219 {
6890
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
220 char gaimdir[MAX_PATH];
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
221 char *point;
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
222 HMODULE hmod;
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
223
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
224 /* If GAIM_NO_DLL_CHECK is set, don't run the dll check */
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
225 if(!getenv("GAIM_NO_DLL_CHECK"))
7350
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
226 run_dll_prep();
6816
5aeba37b303c [gaim-migrate @ 7356]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4490
diff changeset
227
6890
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
228 /* Load exception handler if we have it */
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
229 GetModuleFileName(NULL, gaimdir, MAX_PATH);
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
230 if((point=strstr(gaimdir, "gaim.exe"))) {
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
231 point[0] = '\0';
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
232 strcat(gaimdir, "exchndl.dll");
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
233 LoadLibrary(gaimdir);
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
234 }
7350
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
235
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
236 /* Set Gaim locale */
e28728795a45 [gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
237 wgaim_set_locale();
6816
5aeba37b303c [gaim-migrate @ 7356]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4490
diff changeset
238
6890
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
239 /* Now we are ready for Gaim .. */
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
240 if((hmod=LoadLibrary("gaim.dll"))) {
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
241 gaim_main = (void*)GetProcAddress(hmod, "gaim_main");
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
242 }
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
243
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
244 if(!gaim_main) {
7356
be11a6f2fe00 [gaim-migrate @ 7949]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
245 char errbuf[256];
be11a6f2fe00 [gaim-migrate @ 7949]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
246 sprintf(errbuf, "Error loading gaim.dll entry point. Error: %d", GetLastError());
be11a6f2fe00 [gaim-migrate @ 7949]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
247 MessageBox(NULL, errbuf, NULL, MB_OK | MB_TOPMOST);
6890
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
248 return 0;
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
249 }
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
250 else
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
251 return gaim_main (hInstance, __argc, __argv);
4490
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
252 }
70b892694e0b [gaim-migrate @ 4765]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
253