Fri, 07 Sep 2012 14:18:09 +0200
Fix again, refs #15310
| 3630 | 1 | /* |
| 15884 | 2 | * purple |
|
5913
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
3 | * |
|
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
4 | * File: win32dep.c |
|
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
5 | * Date: June, 2002 |
| 15884 | 6 | * Description: Windows dependant code for Purple |
|
5913
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
7 | * |
|
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
8 | * Copyright (C) 2002-2003, Herman Bloggs <hermanator12002@yahoo.com> |
| 3630 | 9 | * |
|
5913
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
10 | * This program is free software; you can redistribute it and/or modify |
|
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
11 | * it under the terms of the GNU General Public License as published by |
|
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
12 | * the Free Software Foundation; either version 2 of the License, or |
|
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
13 | * (at your option) any later version. |
|
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
14 | * |
|
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
15 | * This program is distributed in the hope that it will be useful, |
|
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
18 | * GNU General Public License for more details. |
|
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
19 | * |
|
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
20 | * You should have received a copy of the GNU General Public License |
|
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
21 | * along with this program; if not, write to the Free Software |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
18633
diff
changeset
|
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
5913
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
23 | * |
| 3630 | 24 | */ |
|
29791
e3f47ca13467
Update _WIN32_IE definition slightly to make building with mingw-64 more pleasant
Daniel Atallah <datallah@pidgin.im>
parents:
29633
diff
changeset
|
25 | #define _WIN32_IE 0x501 |
|
22869
3fc7a5fc49eb
Include winsock2.h before windows.h is included to avoid winsock.h being
Daniel Atallah <datallah@pidgin.im>
parents:
22687
diff
changeset
|
26 | #include "internal.h" |
|
3983
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
27 | #include <winuser.h> |
|
5913
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
28 | |
|
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
29 | #include "debug.h" |
|
6929
47829b408f9d
[gaim-migrate @ 7476]
Herman Bloggs <herman@bluedigits.com>
parents:
6890
diff
changeset
|
30 | #include "notify.h" |
|
5913
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
31 | |
| 3630 | 32 | /* |
| 33 | * LOCALS | |
| 34 | */ | |
|
14331
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
35 | static char *app_data_dir = NULL, *install_dir = NULL, |
|
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
36 | *lib_dir = NULL, *locale_dir = NULL; |
| 3630 | 37 | |
|
30737
e64a1b3a9dd4
Make wpurple_install_dir() (DATADIR) relative to the libpurple dll instead of the executable file that launched the process
Daniel Atallah <datallah@pidgin.im>
parents:
30736
diff
changeset
|
38 | static HINSTANCE libpurpledll_hInstance = NULL; |
|
6848
ca91f08b60df
[gaim-migrate @ 7393]
Herman Bloggs <herman@bluedigits.com>
parents:
6816
diff
changeset
|
39 | |
|
4097
3ad9e41eb933
[gaim-migrate @ 4312]
Herman Bloggs <herman@bluedigits.com>
parents:
4042
diff
changeset
|
40 | /* |
|
3ad9e41eb933
[gaim-migrate @ 4312]
Herman Bloggs <herman@bluedigits.com>
parents:
4042
diff
changeset
|
41 | * PUBLIC CODE |
|
3ad9e41eb933
[gaim-migrate @ 4312]
Herman Bloggs <herman@bluedigits.com>
parents:
4042
diff
changeset
|
42 | */ |
|
3ad9e41eb933
[gaim-migrate @ 4312]
Herman Bloggs <herman@bluedigits.com>
parents:
4042
diff
changeset
|
43 | |
|
4406
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
44 | /* Escape windows dir separators. This is needed when paths are saved, |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
45 | and on being read back have their '\' chars used as an escape char. |
|
4555
3ff630a3045a
[gaim-migrate @ 4835]
Herman Bloggs <herman@bluedigits.com>
parents:
4535
diff
changeset
|
46 | Returns an allocated string which needs to be freed. |
|
4406
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
47 | */ |
| 15884 | 48 | char *wpurple_escape_dirsep(const char *filename) { |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
49 | int sepcount = 0; |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
50 | const char *tmp = filename; |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
51 | char *ret; |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
52 | int cnt = 0; |
|
4406
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
53 | |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
54 | g_return_val_if_fail(filename != NULL, NULL); |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
55 | |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
56 | while(*tmp) { |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
57 | if(*tmp == '\\') |
|
4406
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
58 | sepcount++; |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
59 | tmp++; |
|
4406
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
60 | } |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
61 | ret = g_malloc0(strlen(filename) + sepcount + 1); |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
62 | while(*filename) { |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
63 | ret[cnt] = *filename; |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
64 | if(*filename == '\\') |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
65 | ret[++cnt] = '\\'; |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
66 | filename++; |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
67 | cnt++; |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
68 | } |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
69 | ret[cnt] = '\0'; |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
70 | return ret; |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
71 | } |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
72 | |
|
3983
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
73 | /* Determine whether the specified dll contains the specified procedure. |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
74 | If so, load it (if not already loaded). */ |
| 15884 | 75 | FARPROC wpurple_find_and_loadproc(const char *dllname, const char *procedure) { |
|
3983
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
76 | HMODULE hmod; |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
77 | BOOL did_load = FALSE; |
|
3983
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
78 | FARPROC proc = 0; |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
79 | |
|
30736
7e21295c7a91
Make wpurple_find_and_loadproc() work for non-ASCII full paths
Daniel Atallah <datallah@pidgin.im>
parents:
29791
diff
changeset
|
80 | wchar_t *wc_dllname = g_utf8_to_utf16(dllname, -1, NULL, NULL, NULL); |
|
7e21295c7a91
Make wpurple_find_and_loadproc() work for non-ASCII full paths
Daniel Atallah <datallah@pidgin.im>
parents:
29791
diff
changeset
|
81 | |
|
7e21295c7a91
Make wpurple_find_and_loadproc() work for non-ASCII full paths
Daniel Atallah <datallah@pidgin.im>
parents:
29791
diff
changeset
|
82 | if(!(hmod = GetModuleHandleW(wc_dllname))) { |
| 15884 | 83 | purple_debug_warning("wpurple", "%s not already loaded; loading it...\n", dllname); |
|
30736
7e21295c7a91
Make wpurple_find_and_loadproc() work for non-ASCII full paths
Daniel Atallah <datallah@pidgin.im>
parents:
29791
diff
changeset
|
84 | if(!(hmod = LoadLibraryW(wc_dllname))) { |
|
30738
34c16a8692ce
Display the reason LoadLibrary didn't succeed in the debug log
Daniel Atallah <datallah@pidgin.im>
parents:
30737
diff
changeset
|
85 | purple_debug_error("wpurple", "Could not load: %s (%s)\n", dllname, |
|
34c16a8692ce
Display the reason LoadLibrary didn't succeed in the debug log
Daniel Atallah <datallah@pidgin.im>
parents:
30737
diff
changeset
|
86 | g_win32_error_message(GetLastError())); |
|
30736
7e21295c7a91
Make wpurple_find_and_loadproc() work for non-ASCII full paths
Daniel Atallah <datallah@pidgin.im>
parents:
29791
diff
changeset
|
87 | g_free(wc_dllname); |
|
3983
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
88 | return NULL; |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
89 | } |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
90 | else |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
91 | did_load = TRUE; |
|
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
92 | } |
|
3983
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
93 | |
|
30736
7e21295c7a91
Make wpurple_find_and_loadproc() work for non-ASCII full paths
Daniel Atallah <datallah@pidgin.im>
parents:
29791
diff
changeset
|
94 | g_free(wc_dllname); |
|
7e21295c7a91
Make wpurple_find_and_loadproc() work for non-ASCII full paths
Daniel Atallah <datallah@pidgin.im>
parents:
29791
diff
changeset
|
95 | wc_dllname = NULL; |
|
7e21295c7a91
Make wpurple_find_and_loadproc() work for non-ASCII full paths
Daniel Atallah <datallah@pidgin.im>
parents:
29791
diff
changeset
|
96 | |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
97 | if((proc = GetProcAddress(hmod, procedure))) { |
| 15884 | 98 | purple_debug_info("wpurple", "This version of %s contains %s\n", |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
99 | dllname, procedure); |
|
3983
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
100 | return proc; |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
101 | } |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
102 | else { |
| 15884 | 103 | purple_debug_warning("wpurple", "Function %s not found in dll %s\n", |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
104 | procedure, dllname); |
|
3983
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
105 | if(did_load) { |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
106 | /* unload dll */ |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
107 | FreeLibrary(hmod); |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
108 | } |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
109 | return NULL; |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
110 | } |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
111 | } |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
112 | |
| 15884 | 113 | /* Determine Purple Paths during Runtime */ |
|
3856
db98b5201da8
[gaim-migrate @ 4008]
Herman Bloggs <herman@bluedigits.com>
parents:
3630
diff
changeset
|
114 | |
|
10673
3177232170c7
[gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents:
10589
diff
changeset
|
115 | /* Get paths to special Windows folders. */ |
|
22687
3cb9f701d421
printf format warning fixes.
Daniel Atallah <datallah@pidgin.im>
parents:
21106
diff
changeset
|
116 | gchar *wpurple_get_special_folder(int folder_type) { |
|
3cb9f701d421
printf format warning fixes.
Daniel Atallah <datallah@pidgin.im>
parents:
21106
diff
changeset
|
117 | gchar *retval = NULL; |
|
29633
dabf2a920e34
No need to access SHGetFolderPath() indirectly any more with required versions of Windows.
Daniel Atallah <datallah@pidgin.im>
parents:
29508
diff
changeset
|
118 | wchar_t utf_16_dir[MAX_PATH + 1]; |
|
10673
3177232170c7
[gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents:
10589
diff
changeset
|
119 | |
|
29633
dabf2a920e34
No need to access SHGetFolderPath() indirectly any more with required versions of Windows.
Daniel Atallah <datallah@pidgin.im>
parents:
29508
diff
changeset
|
120 | if (SUCCEEDED(SHGetFolderPathW(NULL, folder_type, NULL, |
|
dabf2a920e34
No need to access SHGetFolderPath() indirectly any more with required versions of Windows.
Daniel Atallah <datallah@pidgin.im>
parents:
29508
diff
changeset
|
121 | SHGFP_TYPE_CURRENT, utf_16_dir))) { |
|
dabf2a920e34
No need to access SHGetFolderPath() indirectly any more with required versions of Windows.
Daniel Atallah <datallah@pidgin.im>
parents:
29508
diff
changeset
|
122 | retval = g_utf16_to_utf8(utf_16_dir, -1, NULL, NULL, NULL); |
|
10673
3177232170c7
[gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents:
10589
diff
changeset
|
123 | } |
|
3177232170c7
[gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents:
10589
diff
changeset
|
124 | |
|
3177232170c7
[gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents:
10589
diff
changeset
|
125 | return retval; |
|
3177232170c7
[gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents:
10589
diff
changeset
|
126 | } |
|
3177232170c7
[gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents:
10589
diff
changeset
|
127 | |
| 15884 | 128 | const char *wpurple_install_dir(void) { |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
129 | static gboolean initialized = FALSE; |
| 3630 | 130 | |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
131 | if (!initialized) { |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
132 | char *tmp = NULL; |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
133 | wchar_t winstall_dir[MAXPATHLEN]; |
|
30737
e64a1b3a9dd4
Make wpurple_install_dir() (DATADIR) relative to the libpurple dll instead of the executable file that launched the process
Daniel Atallah <datallah@pidgin.im>
parents:
30736
diff
changeset
|
134 | if (GetModuleFileNameW(libpurpledll_hInstance, winstall_dir, |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
135 | MAXPATHLEN) > 0) { |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
136 | tmp = g_utf16_to_utf8(winstall_dir, -1, |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
137 | NULL, NULL, NULL); |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
138 | } |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
139 | |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
140 | if (tmp == NULL) { |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
141 | tmp = g_win32_error_message(GetLastError()); |
| 15884 | 142 | purple_debug_error("wpurple", |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
143 | "GetModuleFileName error: %s\n", tmp); |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
144 | g_free(tmp); |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
145 | return NULL; |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
146 | } else { |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
147 | install_dir = g_path_get_dirname(tmp); |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
148 | g_free(tmp); |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
149 | initialized = TRUE; |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
150 | } |
| 3630 | 151 | } |
| 152 | ||
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
153 | return install_dir; |
| 3630 | 154 | } |
| 155 | ||
| 15884 | 156 | const char *wpurple_lib_dir(void) { |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
157 | static gboolean initialized = FALSE; |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
158 | |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
159 | if (!initialized) { |
| 15884 | 160 | const char *inst_dir = wpurple_install_dir(); |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
161 | if (inst_dir != NULL) { |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
162 | lib_dir = g_strdup_printf("%s" G_DIR_SEPARATOR_S "plugins", inst_dir); |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
163 | initialized = TRUE; |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
164 | } else { |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
165 | return NULL; |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
166 | } |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
167 | } |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
168 | |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
169 | return lib_dir; |
| 3630 | 170 | } |
| 171 | ||
| 15884 | 172 | const char *wpurple_locale_dir(void) { |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
173 | static gboolean initialized = FALSE; |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
174 | |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
175 | if (!initialized) { |
| 15884 | 176 | const char *inst_dir = wpurple_install_dir(); |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
177 | if (inst_dir != NULL) { |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
178 | locale_dir = g_strdup_printf("%s" G_DIR_SEPARATOR_S "locale", inst_dir); |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
179 | initialized = TRUE; |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
180 | } else { |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
181 | return NULL; |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
182 | } |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
183 | } |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
184 | |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
185 | return locale_dir; |
| 3630 | 186 | } |
| 187 | ||
| 15884 | 188 | const char *wpurple_data_dir(void) { |
|
14331
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
189 | |
|
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
190 | if (!app_data_dir) { |
| 15884 | 191 | /* Set app data dir, used by purple_home_dir */ |
| 192 | const char *newenv = g_getenv("PURPLEHOME"); | |
|
14331
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
193 | if (newenv) |
|
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
194 | app_data_dir = g_strdup(newenv); |
|
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
195 | else { |
| 15884 | 196 | app_data_dir = wpurple_get_special_folder(CSIDL_APPDATA); |
|
14331
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
197 | if (!app_data_dir) |
|
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
198 | app_data_dir = g_strdup("C:"); |
|
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
199 | } |
| 15884 | 200 | purple_debug_info("wpurple", "Purple settings dir: %s\n", |
|
14331
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
201 | app_data_dir); |
|
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
202 | } |
|
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
203 | |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
204 | return app_data_dir; |
|
6848
ca91f08b60df
[gaim-migrate @ 7393]
Herman Bloggs <herman@bluedigits.com>
parents:
6816
diff
changeset
|
205 | } |
|
ca91f08b60df
[gaim-migrate @ 7393]
Herman Bloggs <herman@bluedigits.com>
parents:
6816
diff
changeset
|
206 | |
|
3973
acade2595b85
[gaim-migrate @ 4157]
Herman Bloggs <herman@bluedigits.com>
parents:
3950
diff
changeset
|
207 | /* Miscellaneous */ |
|
acade2595b85
[gaim-migrate @ 4157]
Herman Bloggs <herman@bluedigits.com>
parents:
3950
diff
changeset
|
208 | |
| 15884 | 209 | gboolean wpurple_write_reg_string(HKEY rootkey, const char *subkey, const char *valname, |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
210 | const char *value) { |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
211 | HKEY reg_key; |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
212 | gboolean success = FALSE; |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
213 | |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
214 | wchar_t *wc_subkey = g_utf8_to_utf16(subkey, -1, NULL, |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
215 | NULL, NULL); |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
216 | |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
217 | if(RegOpenKeyExW(rootkey, wc_subkey, 0, |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
218 | KEY_SET_VALUE, ®_key) == ERROR_SUCCESS) { |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
219 | wchar_t *wc_valname = NULL; |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
220 | |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
221 | if (valname) |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
222 | wc_valname = g_utf8_to_utf16(valname, -1, |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
223 | NULL, NULL, NULL); |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
224 | |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
225 | if(value) { |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
226 | wchar_t *wc_value = g_utf8_to_utf16(value, -1, |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
227 | NULL, NULL, NULL); |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
228 | int len = (wcslen(wc_value) * sizeof(wchar_t)) + 1; |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
229 | if(RegSetValueExW(reg_key, wc_valname, 0, REG_SZ, |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
230 | (LPBYTE)wc_value, len |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
231 | ) == ERROR_SUCCESS) |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
232 | success = TRUE; |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
233 | g_free(wc_value); |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
234 | } else |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
235 | if(RegDeleteValueW(reg_key, wc_valname) == ERROR_SUCCESS) |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
236 | success = TRUE; |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
237 | |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
238 | g_free(wc_valname); |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
239 | } |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
240 | g_free(wc_subkey); |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
241 | |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
242 | if(reg_key != NULL) |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
243 | RegCloseKey(reg_key); |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
244 | |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
245 | return success; |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
246 | } |
|
6437
809e9334e31f
[gaim-migrate @ 6945]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
247 | |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
248 | static HKEY _reg_open_key(HKEY rootkey, const char *subkey, REGSAM access) { |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
249 | HKEY reg_key = NULL; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
250 | LONG rv; |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
251 | |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
252 | wchar_t *wc_subkey = g_utf8_to_utf16(subkey, -1, NULL, |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
253 | NULL, NULL); |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
254 | rv = RegOpenKeyExW(rootkey, wc_subkey, 0, access, ®_key); |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
255 | |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
256 | g_free(wc_subkey); |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
257 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
258 | if (rv != ERROR_SUCCESS) { |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
259 | char *errmsg = g_win32_error_message(rv); |
|
27497
2dc5a0e0c4c2
Increase the logging level of some debugging messages that seemed to be a
Mauro Brasil <mauro.brasil@tqi.com.br>
parents:
26745
diff
changeset
|
260 | purple_debug_error("wpurple", "Could not open reg key '%s' subkey '%s'.\nMessage: (%ld) %s\n", |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
261 | ((rootkey == HKEY_LOCAL_MACHINE) ? "HKLM" : |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
262 | (rootkey == HKEY_CURRENT_USER) ? "HKCU" : |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
263 | (rootkey == HKEY_CLASSES_ROOT) ? "HKCR" : "???"), |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
264 | subkey, rv, errmsg); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
265 | g_free(errmsg); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
266 | } |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
267 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
268 | return reg_key; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
269 | } |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
270 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
271 | static gboolean _reg_read(HKEY reg_key, const char *valname, LPDWORD type, LPBYTE data, LPDWORD data_len) { |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
272 | LONG rv; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
273 | |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
274 | wchar_t *wc_valname = NULL; |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
275 | if (valname) |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
276 | wc_valname = g_utf8_to_utf16(valname, -1, NULL, NULL, NULL); |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
277 | rv = RegQueryValueExW(reg_key, wc_valname, 0, type, data, data_len); |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
278 | g_free(wc_valname); |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
279 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
280 | if (rv != ERROR_SUCCESS) { |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
281 | char *errmsg = g_win32_error_message(rv); |
|
27497
2dc5a0e0c4c2
Increase the logging level of some debugging messages that seemed to be a
Mauro Brasil <mauro.brasil@tqi.com.br>
parents:
26745
diff
changeset
|
282 | purple_debug_error("wpurple", "Could not read from reg key value '%s'.\nMessage: (%ld) %s\n", |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
283 | valname, rv, errmsg); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
284 | g_free(errmsg); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
285 | } |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
286 | |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
287 | return (rv == ERROR_SUCCESS); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
288 | } |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
289 | |
| 15884 | 290 | gboolean wpurple_read_reg_dword(HKEY rootkey, const char *subkey, const char *valname, LPDWORD result) { |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
291 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
292 | DWORD type; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
293 | DWORD nbytes; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
294 | HKEY reg_key = _reg_open_key(rootkey, subkey, KEY_QUERY_VALUE); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
295 | gboolean success = FALSE; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
296 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
297 | if(reg_key) { |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
298 | if(_reg_read(reg_key, valname, &type, (LPBYTE)result, &nbytes)) |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
299 | success = TRUE; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
300 | RegCloseKey(reg_key); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
301 | } |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
302 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
303 | return success; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
304 | } |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
305 | |
| 15884 | 306 | char *wpurple_read_reg_string(HKEY rootkey, const char *subkey, const char *valname) { |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
307 | |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
308 | DWORD type; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
309 | DWORD nbytes; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
310 | HKEY reg_key = _reg_open_key(rootkey, subkey, KEY_QUERY_VALUE); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
311 | char *result = NULL; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
312 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
313 | if(reg_key) { |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
314 | if(_reg_read(reg_key, valname, &type, NULL, &nbytes) && type == REG_SZ) { |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
315 | LPBYTE data = (LPBYTE) g_new(wchar_t, ((nbytes + 1) / sizeof(wchar_t)) + 1); |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
316 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
317 | if(_reg_read(reg_key, valname, &type, data, &nbytes)) { |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
318 | wchar_t *wc_temp = (wchar_t*) data; |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
319 | wc_temp[nbytes / sizeof(wchar_t)] = '\0'; |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
320 | result = g_utf16_to_utf8(wc_temp, -1, |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
321 | NULL, NULL, NULL); |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
322 | } |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
323 | g_free(data); |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
324 | } |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
325 | RegCloseKey(reg_key); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
326 | } |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
327 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
328 | return result; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
329 | } |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
330 | |
|
33291
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
331 | int wpurple_input_pipe(int pipefd[2]) |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
332 | { |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
333 | SOCKET sock_server, sock_client, sock_server_established; |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
334 | struct sockaddr_in saddr_in; |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
335 | struct sockaddr * const saddr_p = (struct sockaddr *)&saddr_in; |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
336 | int saddr_len = sizeof(struct sockaddr_in); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
337 | u_long arg; |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
338 | fd_set select_set; |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
339 | char succ = 1; |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
340 | |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
341 | sock_server = sock_client = sock_server_established = INVALID_SOCKET; |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
342 | |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
343 | purple_debug_misc("wpurple", "wpurple_input_pipe(0x%x[%d,%d])\n", |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
344 | (unsigned int)pipefd, pipefd[0], pipefd[1]); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
345 | |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
346 | /* create client and passive server sockets */ |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
347 | sock_server = socket(AF_INET, SOCK_STREAM, 0); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
348 | sock_client = socket(AF_INET, SOCK_STREAM, 0); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
349 | succ = (sock_server != INVALID_SOCKET || sock_client != INVALID_SOCKET); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
350 | |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
351 | /* set created sockets into nonblocking mode */ |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
352 | arg = 1; |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
353 | succ = (succ && |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
354 | ioctlsocket(sock_server, FIONBIO, &arg) != SOCKET_ERROR); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
355 | arg = 1; |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
356 | succ = (succ && |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
357 | ioctlsocket(sock_client, FIONBIO, &arg) != SOCKET_ERROR); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
358 | |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
359 | /* listen on server socket */ |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
360 | memset(&saddr_in, 0, saddr_len); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
361 | saddr_in.sin_family = AF_INET; |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
362 | saddr_in.sin_port = 0; |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
363 | saddr_in.sin_addr.s_addr = htonl(INADDR_LOOPBACK); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
364 | succ = (succ && |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
365 | bind(sock_server, saddr_p, saddr_len) != SOCKET_ERROR && |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
366 | listen(sock_server, 1) != SOCKET_ERROR && |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
367 | getsockname(sock_server, saddr_p, &saddr_len) != SOCKET_ERROR); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
368 | |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
369 | /* request a connection from client to server socket */ |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
370 | succ = (succ && |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
371 | connect(sock_client, saddr_p, saddr_len) == SOCKET_ERROR && |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
372 | WSAGetLastError() == WSAEWOULDBLOCK); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
373 | |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
374 | /* ensure, that server socket is readable */ |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
375 | if (succ) |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
376 | { |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
377 | FD_ZERO(&select_set); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
378 | FD_SET(sock_server, &select_set); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
379 | } |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
380 | succ = (succ && |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
381 | select(0, &select_set, NULL, NULL, NULL) != SOCKET_ERROR && |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
382 | FD_ISSET(sock_server, &select_set)); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
383 | |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
384 | /* accept (establish) connection from client socket */ |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
385 | if (succ) |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
386 | { |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
387 | sock_server_established = |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
388 | accept(sock_server, saddr_p, &saddr_len); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
389 | succ = (sock_server_established != INVALID_SOCKET); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
390 | } |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
391 | |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
392 | /* ensure, that client socket is writable */ |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
393 | if (succ) |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
394 | { |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
395 | FD_ZERO(&select_set); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
396 | FD_SET(sock_client, &select_set); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
397 | } |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
398 | succ = (succ && |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
399 | select(0, NULL, &select_set, NULL, NULL) != SOCKET_ERROR && |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
400 | FD_ISSET(sock_client, &select_set)); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
401 | |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
402 | /* set sockets into blocking mode */ |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
403 | arg = 0; |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
404 | succ = (succ && |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
405 | ioctlsocket(sock_client, FIONBIO, &arg) != SOCKET_ERROR); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
406 | arg = 0; |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
407 | succ = (succ && |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
408 | ioctlsocket(sock_server_established, FIONBIO, &arg) |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
409 | != SOCKET_ERROR); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
410 | |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
411 | /* we don't need (passive) server socket anymore */ |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
412 | if (sock_server != INVALID_SOCKET) |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
413 | closesocket(sock_server); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
414 | |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
415 | if (succ) |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
416 | { |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
417 | purple_debug_misc("wpurple", |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
418 | "wpurple_input_pipe created pipe [%d,%d]\n", |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
419 | sock_client, sock_server_established); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
420 | pipefd[0] = sock_client; /* for reading */ |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
421 | pipefd[1] = sock_server_established; /* for writing */ |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
422 | return 0; |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
423 | } |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
424 | else |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
425 | { |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
426 | purple_debug_error("wpurple", "wpurple_input_pipe failed\n"); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
427 | if (sock_client != INVALID_SOCKET) |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
428 | closesocket(sock_client); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
429 | if (sock_server_established != INVALID_SOCKET) |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
430 | closesocket(sock_server_established); |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
431 | errno = EMFILE; |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
432 | return -1; |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
433 | } |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
434 | } |
|
b70ab10887a7
New custom resolver, that uses libpurple for DNS queries. Get rid of old win32 resolver. Refs#343. Fixes #6263
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
30738
diff
changeset
|
435 | |
| 15884 | 436 | void wpurple_init(void) { |
|
7523
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
437 | WORD wVersionRequested; |
|
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
438 | WSADATA wsaData; |
|
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
439 | |
|
24171
d976cc3db118
Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents:
22869
diff
changeset
|
440 | if (!g_thread_supported()) |
|
d976cc3db118
Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents:
22869
diff
changeset
|
441 | g_thread_init(NULL); |
|
d976cc3db118
Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents:
22869
diff
changeset
|
442 | |
| 15884 | 443 | purple_debug_info("wpurple", "wpurple_init start\n"); |
|
21106
b85fbef13eed
Add a --with-extraversion option to ./configure so packagers can fine tune
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20747
diff
changeset
|
444 | purple_debug_info("wpurple", "libpurple version: " DISPLAY_VERSION "\n"); |
|
14810
7ee46e25e9d8
[gaim-migrate @ 17505]
Daniel Atallah <datallah@pidgin.im>
parents:
14784
diff
changeset
|
445 | |
| 15884 | 446 | purple_debug_info("wpurple", "Glib:%u.%u.%u\n", |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
447 | glib_major_version, glib_minor_version, glib_micro_version); |
|
7523
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
448 | |
|
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
449 | /* Winsock init */ |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
450 | wVersionRequested = MAKEWORD(2, 2); |
|
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
451 | WSAStartup(wVersionRequested, &wsaData); |
|
6848
ca91f08b60df
[gaim-migrate @ 7393]
Herman Bloggs <herman@bluedigits.com>
parents:
6816
diff
changeset
|
452 | |
|
7523
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
453 | /* Confirm that the winsock DLL supports 2.2 */ |
|
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
454 | /* Note that if the DLL supports versions greater than |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
455 | 2.2 in addition to 2.2, it will still return 2.2 in |
|
7523
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
456 | wVersion since that is the version we requested. */ |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
457 | if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { |
| 15884 | 458 | purple_debug_error("wpurple", "Could not find a usable WinSock DLL. Oh well.\n"); |
|
7523
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
459 | WSACleanup(); |
|
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
460 | } |
|
3856
db98b5201da8
[gaim-migrate @ 4008]
Herman Bloggs <herman@bluedigits.com>
parents:
3630
diff
changeset
|
461 | |
| 15884 | 462 | purple_debug_info("wpurple", "wpurple_init end\n"); |
| 3630 | 463 | } |
|
3856
db98b5201da8
[gaim-migrate @ 4008]
Herman Bloggs <herman@bluedigits.com>
parents:
3630
diff
changeset
|
464 | |
|
3907
7de53cfd3660
[gaim-migrate @ 4060]
Herman Bloggs <herman@bluedigits.com>
parents:
3905
diff
changeset
|
465 | /* Windows Cleanup */ |
|
7de53cfd3660
[gaim-migrate @ 4060]
Herman Bloggs <herman@bluedigits.com>
parents:
3905
diff
changeset
|
466 | |
| 15884 | 467 | void wpurple_cleanup(void) { |
| 468 | purple_debug_info("wpurple", "wpurple_cleanup\n"); | |
|
3907
7de53cfd3660
[gaim-migrate @ 4060]
Herman Bloggs <herman@bluedigits.com>
parents:
3905
diff
changeset
|
469 | |
|
7de53cfd3660
[gaim-migrate @ 4060]
Herman Bloggs <herman@bluedigits.com>
parents:
3905
diff
changeset
|
470 | /* winsock cleanup */ |
|
7523
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
471 | WSACleanup(); |
|
3907
7de53cfd3660
[gaim-migrate @ 4060]
Herman Bloggs <herman@bluedigits.com>
parents:
3905
diff
changeset
|
472 | |
|
10673
3177232170c7
[gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents:
10589
diff
changeset
|
473 | g_free(app_data_dir); |
|
26745
c51eb424a60c
Clean up libpurple memory allocations on win32 libpurple uninit.
Nick Hebner <hebnern@gmail.com>
parents:
24171
diff
changeset
|
474 | g_free(install_dir); |
|
c51eb424a60c
Clean up libpurple memory allocations on win32 libpurple uninit.
Nick Hebner <hebnern@gmail.com>
parents:
24171
diff
changeset
|
475 | g_free(lib_dir); |
|
c51eb424a60c
Clean up libpurple memory allocations on win32 libpurple uninit.
Nick Hebner <hebnern@gmail.com>
parents:
24171
diff
changeset
|
476 | g_free(locale_dir); |
|
c51eb424a60c
Clean up libpurple memory allocations on win32 libpurple uninit.
Nick Hebner <hebnern@gmail.com>
parents:
24171
diff
changeset
|
477 | |
|
14331
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
478 | app_data_dir = NULL; |
|
26745
c51eb424a60c
Clean up libpurple memory allocations on win32 libpurple uninit.
Nick Hebner <hebnern@gmail.com>
parents:
24171
diff
changeset
|
479 | install_dir = NULL; |
|
c51eb424a60c
Clean up libpurple memory allocations on win32 libpurple uninit.
Nick Hebner <hebnern@gmail.com>
parents:
24171
diff
changeset
|
480 | lib_dir = NULL; |
|
c51eb424a60c
Clean up libpurple memory allocations on win32 libpurple uninit.
Nick Hebner <hebnern@gmail.com>
parents:
24171
diff
changeset
|
481 | locale_dir = NULL; |
|
14331
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
482 | |
| 15884 | 483 | libpurpledll_hInstance = NULL; |
|
3907
7de53cfd3660
[gaim-migrate @ 4060]
Herman Bloggs <herman@bluedigits.com>
parents:
3905
diff
changeset
|
484 | } |
|
7de53cfd3660
[gaim-migrate @ 4060]
Herman Bloggs <herman@bluedigits.com>
parents:
3905
diff
changeset
|
485 | |
|
20587
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
486 | long |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
487 | wpurple_get_tz_offset() { |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
488 | TIME_ZONE_INFORMATION tzi; |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
489 | DWORD ret; |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
490 | long off = -1; |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
491 | |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
492 | if ((ret = GetTimeZoneInformation(&tzi)) != TIME_ZONE_ID_INVALID) |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
493 | { |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
494 | off = -(tzi.Bias * 60); |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
495 | if (ret == TIME_ZONE_ID_DAYLIGHT) |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
496 | off -= tzi.DaylightBias * 60; |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
497 | } |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
498 | |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
499 | return off; |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
500 | } |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
501 | |
|
3950
0cab330f1cd6
[gaim-migrate @ 4129]
Herman Bloggs <herman@bluedigits.com>
parents:
3907
diff
changeset
|
502 | /* DLL initializer */ |
|
15782
f2da034243cd
I forgot to add the new mingw makefiles.
Daniel Atallah <datallah@pidgin.im>
parents:
15435
diff
changeset
|
503 | /* suppress gcc "no previous prototype" warning */ |
|
f2da034243cd
I forgot to add the new mingw makefiles.
Daniel Atallah <datallah@pidgin.im>
parents:
15435
diff
changeset
|
504 | BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved); |
|
14810
7ee46e25e9d8
[gaim-migrate @ 17505]
Daniel Atallah <datallah@pidgin.im>
parents:
14784
diff
changeset
|
505 | BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { |
| 15884 | 506 | libpurpledll_hInstance = hinstDLL; |
|
3856
db98b5201da8
[gaim-migrate @ 4008]
Herman Bloggs <herman@bluedigits.com>
parents:
3630
diff
changeset
|
507 | return TRUE; |
|
db98b5201da8
[gaim-migrate @ 4008]
Herman Bloggs <herman@bluedigits.com>
parents:
3630
diff
changeset
|
508 | } |