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