Mercurial > pidgin
annotate src/win_gaim.c @ 10490:a3a540ed2518
[gaim-migrate @ 11780]
some random jabber stuff, remove a duplicate #define, and shuffle account
loading so we're not emitting signals that haven't been registered yet
committer: Tailor Script <tailor@pidgin.im>
author | Nathan Walp <nwalp@pidgin.im> |
---|---|
date | Sat, 08 Jan 2005 21:10:17 +0000 |
parents | 4f5a7ddd3161 |
children | db44efdf6565 |
rev | line source |
---|---|
4490 | 1 /* |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
2 * win_gaim.c |
4490 | 3 * |
4 * Date: June, 2002 | |
5 * Description: Entry point for win32 gaim, and various win32 dependant | |
6 * routines. | |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
7 * |
8046 | 8 * Gaim is the legal property of its developers, whose names are too numerous |
9 * to list here. Please refer to the COPYRIGHT file distributed with this | |
10 * source distribution. | |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
11 * |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
12 * 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
|
13 * 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
|
14 * the Free Software Foundation; either version 2 of the License, or |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
15 * (at your option) any later version. |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
16 * |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
17 * 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
|
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
20 * GNU General Public License for more details. |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
21 * |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
22 * 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
|
23 * along with this program; if not, write to the Free Software |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
24 * 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
|
25 * |
4490 | 26 */ |
27 #include <windows.h> | |
7477
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
28 #include <fcntl.h> |
4490 | 29 #include <stdlib.h> |
6890
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
30 #include <string.h> |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
31 #include <stdio.h> |
4490 | 32 |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
33 typedef int (CALLBACK* LPFNGAIMMAIN)(HINSTANCE, int, char**); |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
34 typedef void (CALLBACK* LPFNSETDLLDIRECTORY)(LPCTSTR); |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
35 |
4490 | 36 /* |
37 * PROTOTYPES | |
38 */ | |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
39 static LPFNGAIMMAIN gaim_main = NULL; |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
40 static LPFNSETDLLDIRECTORY MySetDllDirectory = NULL; |
6890
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 |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
43 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
|
44 HKEY hkey; |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
45 BOOL ret = FALSE; |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
46 int retv; |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
47 |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
48 if(ERROR_SUCCESS == RegOpenKeyEx(key, |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
49 sub_key, |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
50 0, KEY_QUERY_VALUE, &hkey)) { |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
51 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
|
52 ret = TRUE; |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
53 else |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
54 printf("Could not read reg key '%s' subkey '%s' value: '%s'\nError: %u\n", |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
55 ((key == HKEY_LOCAL_MACHINE) ? "HKLM" : (key == HKEY_CURRENT_USER) ? "HKCU" : "???"), |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
56 sub_key, val_name, (UINT)GetLastError()); |
6890
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
57 RegCloseKey(key); |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
58 } |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
59 else |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
60 printf("Could not open reg subkey: %s\nError: %u\n", sub_key, (UINT)GetLastError()); |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
61 |
6890
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
62 return ret; |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
63 } |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
64 |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
65 static void dll_prep() { |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
66 char gtkpath[MAX_PATH]; |
6890
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
67 char path[MAX_PATH]; |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
68 DWORD plen = MAX_PATH; |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
69 int gotreg=FALSE; |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
70 HKEY hkey; |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
71 HMODULE hmod; |
6890
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
72 |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
73 if(!(gotreg = read_reg_string((hkey=HKEY_LOCAL_MACHINE), "SOFTWARE\\GTK\\2.0", "Path", (LPBYTE)>kpath, &plen))) |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
74 gotreg = read_reg_string((hkey=HKEY_CURRENT_USER), "SOFTWARE\\GTK\\2.0", "Path", (LPBYTE)>kpath, &plen); |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
75 |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
76 if(!gotreg) |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
77 return; |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
78 |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
79 /* Determine GTK+ dll path .. */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
80 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
|
81 char version[10]; |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
82 char inst[10]; |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
83 DWORD len = 10; |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
84 |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
85 strcpy(path, gtkpath); |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
86 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
|
87 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
|
88 if(strcmp(version, "2.2.2") >= 0 && |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
89 strcmp(inst, "NSIS") == 0) { |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
90 strcat(path, "\\bin"); |
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 else |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
93 strcat(path, "\\lib"); |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
94 } |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
95 else |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
96 strcat(path, "\\lib"); |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
97 } |
6890
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
98 |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
99 printf("GTK+ path found: %s\n", path); |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
100 |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
101 if((hmod=GetModuleHandle("kernel32.dll"))) { |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
102 MySetDllDirectory = (LPFNSETDLLDIRECTORY)GetProcAddress(hmod, "SetDllDirectory"); |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
103 if(!MySetDllDirectory) |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
104 printf("SetDllDirectory not supported\n"); |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
105 } |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
106 else |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
107 printf("Error getting kernel32.dll module handle\n"); |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
108 |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
109 /* For Windows XP SP1+ / Server 2003 we use SetDllDirectory to avoid dll hell */ |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
110 if(MySetDllDirectory) { |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
111 printf("Using SetDllDirectory\n"); |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
112 MySetDllDirectory(path); |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
113 } |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
114 |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
115 /* For the rest, we set the current directory and make sure SafeDllSearch is set |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
116 to 0 where needed. */ |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
117 else { |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
118 OSVERSIONINFO osinfo; |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
119 |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
120 printf("Setting current directory to GTK+ dll directory\n"); |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
121 SetCurrentDirectory(path); |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
122 /* For Windows 2000 (SP3+) / WinXP (No SP): |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
123 * If SafeDllSearchMode is set to 1, Windows system directories are |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
124 * searched for dlls before the current directory. Therefore we set it |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
125 * to 0. |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
126 */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
127 osinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
128 GetVersionEx(&osinfo); |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
129 if((osinfo.dwMajorVersion == 5 && |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
130 osinfo.dwMinorVersion == 0 && |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
131 strcmp(osinfo.szCSDVersion, "Service Pack 3") >= 0) || |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
132 (osinfo.dwMajorVersion == 5 && |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
133 osinfo.dwMinorVersion == 1 && |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
134 strcmp(osinfo.szCSDVersion, "") >= 0) |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
135 ) { |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
136 DWORD regval = 1; |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
137 DWORD reglen = sizeof(DWORD); |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
138 |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
139 printf("Using Win2k (SP3+) / WinXP (No SP).. Checking SafeDllSearch\n"); |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
140 read_reg_string(HKEY_LOCAL_MACHINE, |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
141 "System\\CurrentControlSet\\Control\\Session Manager", |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
142 "SafeDllSearchMode", |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
143 (LPBYTE)®val, |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
144 ®len); |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
145 |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
146 if(regval != 0) { |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
147 printf("Trying to set SafeDllSearchMode to 0\n"); |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
148 regval = 0; |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
149 if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
150 "System\\CurrentControlSet\\Control\\Session Manager", |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
151 0, KEY_SET_VALUE, &hkey) == ERROR_SUCCESS) { |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
152 if(RegSetValueEx(hkey, |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
153 "SafeDllSearchMode", |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
154 0, |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
155 REG_DWORD, |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
156 (LPBYTE) ®val, |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
157 sizeof(DWORD)) != ERROR_SUCCESS) |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
158 printf("Error writing SafeDllSearchMode. Error: %u\n", |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
159 (UINT)GetLastError()); |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
160 RegCloseKey(hkey); |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
161 } |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
162 else |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
163 printf("Error opening Session Manager key for writing. Error: %u\n", |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
164 (UINT)GetLastError()); |
6890
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
165 } |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
166 else |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
167 printf("SafeDllSearchMode is set to 0\n"); |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
168 }/*end else*/ |
6890
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
169 } |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
170 } |
4490 | 171 |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
172 static char* wgaim_lcid_to_posix(LCID lcid) { |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
173 switch(lcid) { |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
174 case 1026: return "bg"; /* bulgarian */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
175 case 1027: return "ca"; /* catalan */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
176 case 1050: return "hr"; /* croation */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
177 case 1029: return "cs"; /* czech */ |
8735
92cbf9713795
[gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
178 case 1030: return "da"; /* danish */ |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
179 case 1043: return "nl"; /* dutch - netherlands */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
180 case 1033: return "en"; /* english - us */ |
8735
92cbf9713795
[gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
181 case 1035: return "fi"; /* finnish */ |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
182 case 1036: return "fr"; /* french - france */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
183 case 1031: return "de"; /* german - germany */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
184 case 1032: return "el"; /* greek */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
185 case 1037: return "he"; /* hebrew */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
186 case 1038: return "hu"; /* hungarian */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
187 case 1040: return "it"; /* italian - italy */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
188 case 1041: return "ja"; /* japanese */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
189 case 1042: return "ko"; /* korean */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
190 case 1063: return "lt"; /* lithuanian */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
191 case 1071: return "mk"; /* macedonian */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
192 case 1045: return "pl"; /* polish */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
193 case 2070: return "pt"; /* portuguese - portugal */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
194 case 1046: return "pt_BR"; /* portuguese - brazil */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
195 case 1048: return "ro"; /* romanian - romania */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
196 case 1049: return "ru"; /* russian - russia */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
197 case 2074: return "sr@Latn"; /* serbian - latin */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
198 case 3098: return "sr"; /* serbian - cyrillic */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
199 case 2052: return "zh_CN"; /* chinese - china (simple) */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
200 case 1051: return "sk"; /* slovak */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
201 case 1060: return "sl"; /* slovenian */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
202 case 1034: return "es"; /* spanish */ |
10095
b28f9be379b3
[gaim-migrate @ 11114]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
8735
diff
changeset
|
203 case 1052: return "sq"; /* albanian */ |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
204 case 1053: return "sv"; /* swedish */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
205 case 1054: return "th"; /* thai */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
206 case 1028: return "zh_TW"; /* chinese - taiwan (traditional) */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
207 case 1055: return "tr"; /* turkish */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
208 case 1058: return "uk"; /* ukrainian */ |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
209 default: |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
210 return NULL; |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
211 } |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
212 } |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
213 |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
214 /* Determine and set Gaim locale as follows (in order of priority): |
10210
4d3c2749deec
[gaim-migrate @ 11332]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10095
diff
changeset
|
215 - Check GAIMLANG env var |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
216 - Check NSIS Installer Language reg value |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
217 - Use default user locale |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
218 */ |
10330 | 219 static const char* wgaim_get_locale() { |
220 const char* locale=NULL; | |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
221 char data[10]; |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
222 DWORD datalen = 10; |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
223 LCID lcid; |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
224 |
10210
4d3c2749deec
[gaim-migrate @ 11332]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10095
diff
changeset
|
225 /* Check if user set GAIMLANG env var */ |
10330 | 226 if((locale = getenv("GAIMLANG"))) |
227 return locale; | |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
228 |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
229 if(read_reg_string(HKEY_CURRENT_USER, "SOFTWARE\\gaim", "Installer Language", (LPBYTE)&data, &datalen)) { |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
230 if((locale = wgaim_lcid_to_posix(atoi(data)))) |
10330 | 231 return locale; |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
232 } |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
233 |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
234 lcid = GetUserDefaultLCID(); |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
235 if((locale = wgaim_lcid_to_posix(lcid))) |
10330 | 236 return locale; |
237 | |
238 return "en"; | |
239 } | |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
240 |
10330 | 241 static void wgaim_set_locale() { |
242 const char* locale=NULL; | |
243 char envstr[25]; | |
244 | |
245 locale = wgaim_get_locale(); | |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
246 |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
247 snprintf(envstr, 25, "LANG=%s", locale); |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
248 printf("Setting locale: %s\n", envstr); |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
249 putenv(envstr); |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
250 } |
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
251 |
10212
08251403c871
[gaim-migrate @ 11336]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10210
diff
changeset
|
252 static BOOL wgaim_set_running() { |
08251403c871
[gaim-migrate @ 11336]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10210
diff
changeset
|
253 HANDLE h; |
08251403c871
[gaim-migrate @ 11336]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10210
diff
changeset
|
254 |
08251403c871
[gaim-migrate @ 11336]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10210
diff
changeset
|
255 if((h=CreateMutex(NULL, FALSE, "gaim_is_running"))) { |
08251403c871
[gaim-migrate @ 11336]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10210
diff
changeset
|
256 if(GetLastError() == ERROR_ALREADY_EXISTS) { |
08251403c871
[gaim-migrate @ 11336]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10210
diff
changeset
|
257 MessageBox(NULL, "An instance of Gaim is already running", NULL, MB_OK | MB_TOPMOST); |
08251403c871
[gaim-migrate @ 11336]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10210
diff
changeset
|
258 return FALSE; |
08251403c871
[gaim-migrate @ 11336]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10210
diff
changeset
|
259 } |
08251403c871
[gaim-migrate @ 11336]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10210
diff
changeset
|
260 } |
08251403c871
[gaim-migrate @ 11336]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10210
diff
changeset
|
261 return TRUE; |
08251403c871
[gaim-migrate @ 11336]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10210
diff
changeset
|
262 } |
7350
e28728795a45
[gaim-migrate @ 7941]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6890
diff
changeset
|
263 |
4490 | 264 #ifdef __GNUC__ |
265 # ifndef _stdcall | |
266 # define _stdcall __attribute__((stdcall)) | |
267 # endif | |
268 #endif | |
269 | |
270 int _stdcall | |
271 WinMain (struct HINSTANCE__ *hInstance, | |
272 struct HINSTANCE__ *hPrevInstance, | |
273 char *lpszCmdLine, | |
274 int nCmdShow) | |
275 { | |
7477
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
276 char errbuf[512]; |
6890
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
277 char gaimdir[MAX_PATH]; |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
278 HMODULE hmod; |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
279 |
7802
f1d2907db5be
[gaim-migrate @ 8448]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7522
diff
changeset
|
280 /* If debug flag used, create console for output */ |
f1d2907db5be
[gaim-migrate @ 8448]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7522
diff
changeset
|
281 if(strstr(lpszCmdLine, "-d")) { |
f1d2907db5be
[gaim-migrate @ 8448]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7522
diff
changeset
|
282 if(AllocConsole()) |
f1d2907db5be
[gaim-migrate @ 8448]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7522
diff
changeset
|
283 freopen ("CONOUT$", "w", stdout); |
f1d2907db5be
[gaim-migrate @ 8448]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7522
diff
changeset
|
284 } |
f1d2907db5be
[gaim-migrate @ 8448]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7522
diff
changeset
|
285 |
6890
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
286 /* Load exception handler if we have it */ |
7477
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
287 if(GetModuleFileName(NULL, gaimdir, MAX_PATH) != 0) { |
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
288 char *tmp = gaimdir; |
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
289 char *prev = NULL; |
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
290 |
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
291 while((tmp=strchr(tmp, '\\'))) { |
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
292 prev = tmp; |
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
293 tmp+=1; |
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
294 } |
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
295 if(prev) { |
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
296 prev[0] = '\0'; |
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
297 strcat(gaimdir, "\\exchndl.dll"); |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
298 if(LoadLibrary(gaimdir)) |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
299 printf("Loaded exchndl.dll\n"); |
7477
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
300 } |
6890
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
301 } |
7477
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
302 else { |
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
303 snprintf(errbuf, 512, "Error getting module filename. Error: %u", (UINT)GetLastError()); |
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
304 MessageBox(NULL, errbuf, NULL, MB_OK | MB_TOPMOST); |
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
305 } |
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
306 |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
307 if(!getenv("GAIM_NO_DLL_CHECK")) |
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
308 dll_prep(); |
6816
5aeba37b303c
[gaim-migrate @ 7356]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4490
diff
changeset
|
309 |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
310 wgaim_set_locale(); |
10227
53c9ba039354
[gaim-migrate @ 11361]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10212
diff
changeset
|
311 if(!getenv("GAIM_MULTI_INST") && !wgaim_set_running()) |
10212
08251403c871
[gaim-migrate @ 11336]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10210
diff
changeset
|
312 return 0; |
7477
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
313 |
6890
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
314 /* Now we are ready for Gaim .. */ |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
315 if((hmod=LoadLibrary("gaim.dll"))) { |
7522
07156f873116
[gaim-migrate @ 8135]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7477
diff
changeset
|
316 gaim_main = (LPFNGAIMMAIN)GetProcAddress(hmod, "gaim_main"); |
6890
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
317 } |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
318 |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
319 if(!gaim_main) { |
7477
29d69daa1ede
[gaim-migrate @ 8090]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7363
diff
changeset
|
320 snprintf(errbuf, 512, "Error loading gaim.dll. Error: %u", (UINT)GetLastError()); |
7356
be11a6f2fe00
[gaim-migrate @ 7949]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
7350
diff
changeset
|
321 MessageBox(NULL, errbuf, NULL, MB_OK | MB_TOPMOST); |
6890
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
322 return 0; |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
323 } |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
324 else |
4eee806af511
[gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6816
diff
changeset
|
325 return gaim_main (hInstance, __argc, __argv); |
4490 | 326 } |
327 |