Thu, 15 May 2014 23:02:22 +0200
Coverity: fix null pointer dereferences
| 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 | */ |
|
22869
3fc7a5fc49eb
Include winsock2.h before windows.h is included to avoid winsock.h being
Daniel Atallah <datallah@pidgin.im>
parents:
22687
diff
changeset
|
25 | #include "internal.h" |
|
3983
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
26 | #include <winuser.h> |
|
5913
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
27 | |
|
4d016c00bb36
[gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents:
5854
diff
changeset
|
28 | #include "debug.h" |
|
33884
3fd1628aa718
Fixing warnings (win32, glib, others)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33861
diff
changeset
|
29 | #include "glibcompat.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 | |
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
32 | #define MAX_PATH_LEN 2048 |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
33 | |
| 3630 | 34 | /* |
| 35 | * LOCALS | |
| 36 | */ | |
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
37 | static char *app_data_dir = NULL, *bin_dir = NULL, *data_dir = NULL, |
|
35903
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
38 | *lib_dir = NULL, *locale_dir = NULL, *sysconf_dir = NULL, |
|
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
39 | *cert_dir = NULL; |
| 3630 | 40 | |
|
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
|
41 | static HINSTANCE libpurpledll_hInstance = NULL; |
|
6848
ca91f08b60df
[gaim-migrate @ 7393]
Herman Bloggs <herman@bluedigits.com>
parents:
6816
diff
changeset
|
42 | |
|
4097
3ad9e41eb933
[gaim-migrate @ 4312]
Herman Bloggs <herman@bluedigits.com>
parents:
4042
diff
changeset
|
43 | /* |
|
3ad9e41eb933
[gaim-migrate @ 4312]
Herman Bloggs <herman@bluedigits.com>
parents:
4042
diff
changeset
|
44 | * PUBLIC CODE |
|
3ad9e41eb933
[gaim-migrate @ 4312]
Herman Bloggs <herman@bluedigits.com>
parents:
4042
diff
changeset
|
45 | */ |
|
3ad9e41eb933
[gaim-migrate @ 4312]
Herman Bloggs <herman@bluedigits.com>
parents:
4042
diff
changeset
|
46 | |
|
4406
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
47 | /* Escape windows dir separators. This is needed when paths are saved, |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
48 | 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
|
49 | Returns an allocated string which needs to be freed. |
|
4406
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
50 | */ |
| 15884 | 51 | char *wpurple_escape_dirsep(const char *filename) { |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
52 | int sepcount = 0; |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
53 | const char *tmp = filename; |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
54 | char *ret; |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
55 | int cnt = 0; |
|
4406
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
56 | |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
57 | g_return_val_if_fail(filename != NULL, NULL); |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
58 | |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
59 | while(*tmp) { |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
60 | if(*tmp == '\\') |
|
4406
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
61 | sepcount++; |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
62 | tmp++; |
|
4406
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
63 | } |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
64 | ret = g_malloc0(strlen(filename) + sepcount + 1); |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
65 | while(*filename) { |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
66 | ret[cnt] = *filename; |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
67 | if(*filename == '\\') |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
68 | ret[++cnt] = '\\'; |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
69 | filename++; |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
70 | cnt++; |
|
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 | ret[cnt] = '\0'; |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
73 | return ret; |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
74 | } |
|
a7d91dbcdae8
[gaim-migrate @ 4675]
Herman Bloggs <herman@bluedigits.com>
parents:
4168
diff
changeset
|
75 | |
|
3983
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
76 | /* Determine whether the specified dll contains the specified procedure. |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
77 | If so, load it (if not already loaded). */ |
| 15884 | 78 | 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
|
79 | HMODULE hmod; |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
80 | BOOL did_load = FALSE; |
|
3983
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
81 | FARPROC proc = 0; |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
82 | |
|
30736
7e21295c7a91
Make wpurple_find_and_loadproc() work for non-ASCII full paths
Daniel Atallah <datallah@pidgin.im>
parents:
29791
diff
changeset
|
83 | 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
|
84 | |
|
7e21295c7a91
Make wpurple_find_and_loadproc() work for non-ASCII full paths
Daniel Atallah <datallah@pidgin.im>
parents:
29791
diff
changeset
|
85 | if(!(hmod = GetModuleHandleW(wc_dllname))) { |
|
33861
71533f0d5dc0
win32: switch to OBS, update and push to runtime-deps package - libenchant, gtkspell, meanwhile, tcl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33291
diff
changeset
|
86 | if (purple_debug_is_verbose()) |
|
71533f0d5dc0
win32: switch to OBS, update and push to runtime-deps package - libenchant, gtkspell, meanwhile, tcl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33291
diff
changeset
|
87 | purple_debug_info("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
|
88 | 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
|
89 | 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
|
90 | 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
|
91 | g_free(wc_dllname); |
|
3983
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
92 | return NULL; |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
93 | } |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
94 | else |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
95 | did_load = TRUE; |
|
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
96 | } |
|
3983
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
97 | |
|
30736
7e21295c7a91
Make wpurple_find_and_loadproc() work for non-ASCII full paths
Daniel Atallah <datallah@pidgin.im>
parents:
29791
diff
changeset
|
98 | 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
|
99 | wc_dllname = NULL; |
|
7e21295c7a91
Make wpurple_find_and_loadproc() work for non-ASCII full paths
Daniel Atallah <datallah@pidgin.im>
parents:
29791
diff
changeset
|
100 | |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
101 | if((proc = GetProcAddress(hmod, procedure))) { |
|
33861
71533f0d5dc0
win32: switch to OBS, update and push to runtime-deps package - libenchant, gtkspell, meanwhile, tcl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33291
diff
changeset
|
102 | if (purple_debug_is_verbose()) { |
|
71533f0d5dc0
win32: switch to OBS, update and push to runtime-deps package - libenchant, gtkspell, meanwhile, tcl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33291
diff
changeset
|
103 | purple_debug_info("wpurple", "This version of %s contains %s\n", |
|
71533f0d5dc0
win32: switch to OBS, update and push to runtime-deps package - libenchant, gtkspell, meanwhile, tcl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33291
diff
changeset
|
104 | dllname, procedure); |
|
71533f0d5dc0
win32: switch to OBS, update and push to runtime-deps package - libenchant, gtkspell, meanwhile, tcl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33291
diff
changeset
|
105 | } |
|
3983
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
106 | return proc; |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
107 | } |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
108 | else { |
| 15884 | 109 | 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
|
110 | procedure, dllname); |
|
3983
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
111 | if(did_load) { |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
112 | /* unload dll */ |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
113 | FreeLibrary(hmod); |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
114 | } |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
115 | return NULL; |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
116 | } |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
117 | } |
|
fd54b7e2b090
[gaim-migrate @ 4174]
Herman Bloggs <herman@bluedigits.com>
parents:
3973
diff
changeset
|
118 | |
| 15884 | 119 | /* Determine Purple Paths during Runtime */ |
|
3856
db98b5201da8
[gaim-migrate @ 4008]
Herman Bloggs <herman@bluedigits.com>
parents:
3630
diff
changeset
|
120 | |
|
10673
3177232170c7
[gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents:
10589
diff
changeset
|
121 | /* Get paths to special Windows folders. */ |
|
22687
3cb9f701d421
printf format warning fixes.
Daniel Atallah <datallah@pidgin.im>
parents:
21106
diff
changeset
|
122 | gchar *wpurple_get_special_folder(int folder_type) { |
|
3cb9f701d421
printf format warning fixes.
Daniel Atallah <datallah@pidgin.im>
parents:
21106
diff
changeset
|
123 | 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
|
124 | wchar_t utf_16_dir[MAX_PATH + 1]; |
|
10673
3177232170c7
[gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents:
10589
diff
changeset
|
125 | |
|
29633
dabf2a920e34
No need to access SHGetFolderPath() indirectly any more with required versions of Windows.
Daniel Atallah <datallah@pidgin.im>
parents:
29508
diff
changeset
|
126 | 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
|
127 | 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
|
128 | 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
|
129 | } |
|
3177232170c7
[gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents:
10589
diff
changeset
|
130 | |
|
3177232170c7
[gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents:
10589
diff
changeset
|
131 | return retval; |
|
3177232170c7
[gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents:
10589
diff
changeset
|
132 | } |
|
3177232170c7
[gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents:
10589
diff
changeset
|
133 | |
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
134 | const char *wpurple_bin_dir(void) { |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
135 | static gboolean initialized = FALSE; |
| 3630 | 136 | |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
137 | if (!initialized) { |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
138 | char *tmp = NULL; |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
139 | wchar_t winstall_dir[MAXPATHLEN]; |
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
140 | |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
141 | /* We might use g_win32_get_package_installation_directory_of_module |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
142 | * here, but we won't because this routine strips bin or lib |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
143 | * part of the path. |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
144 | */ |
|
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
|
145 | if (GetModuleFileNameW(libpurpledll_hInstance, winstall_dir, |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
146 | MAXPATHLEN) > 0) { |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
147 | tmp = g_utf16_to_utf8(winstall_dir, -1, |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
148 | NULL, NULL, NULL); |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
149 | } |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
150 | |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
151 | if (tmp == NULL) { |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
152 | tmp = g_win32_error_message(GetLastError()); |
| 15884 | 153 | purple_debug_error("wpurple", |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
154 | "GetModuleFileName error: %s\n", tmp); |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
155 | g_free(tmp); |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
156 | return NULL; |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
157 | } else { |
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
158 | bin_dir = g_path_get_dirname(tmp); |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
159 | g_free(tmp); |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
160 | initialized = TRUE; |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
161 | } |
| 3630 | 162 | } |
| 163 | ||
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
164 | return bin_dir; |
| 3630 | 165 | } |
| 166 | ||
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
167 | #ifdef USE_WIN32_FHS |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
168 | static gchar * |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
169 | wpurple_install_relative_path(const gchar *abspath) |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
170 | { |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
171 | const gchar *bindir = WIN32_FHS_BINDIR; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
172 | const gchar *relpath; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
173 | int i, last_dirsep = -1, bin_esc_cnt; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
174 | gchar *ret; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
175 | GString *bin_esc; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
176 | |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
177 | g_return_val_if_fail(bindir != NULL, NULL); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
178 | g_return_val_if_fail(bindir[0] != '\0', NULL); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
179 | g_return_val_if_fail(abspath != NULL, NULL); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
180 | g_return_val_if_fail(abspath[0] != '\0', NULL); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
181 | |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
182 | /* let's find the common prefix of those paths */ |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
183 | for (i = 0; bindir[i] == abspath[i]; i++) { |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
184 | if (bindir[i] == '\0') |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
185 | break; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
186 | if (bindir[i] == '\\' || bindir[i] == '/') |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
187 | last_dirsep = i; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
188 | } |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
189 | if (bindir[i] == '\0' && (abspath[i] == '\\' || abspath[i] == '/')) |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
190 | last_dirsep = i; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
191 | if (abspath[i] == '\0' && (bindir[i] == '\\' || bindir[i] == '/')) |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
192 | last_dirsep = i; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
193 | |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
194 | /* there is no common prefix, return absolute path */ |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
195 | if (last_dirsep == -1) |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
196 | return g_strdup(abspath); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
197 | |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
198 | /* let's check, how many dirs we need to go up to the common prefix */ |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
199 | bin_esc_cnt = 0; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
200 | for (i = last_dirsep; bindir[i]; i++) { |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
201 | if (bindir[i] != '\\' && bindir[i] != '/') |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
202 | continue; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
203 | if (bindir[i + 1] == '\0') /* trailing dir separator */ |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
204 | break; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
205 | bin_esc_cnt++; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
206 | } |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
207 | bin_esc = g_string_new(""); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
208 | for (i = 0; i < bin_esc_cnt; i++) |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
209 | g_string_append(bin_esc, ".." G_DIR_SEPARATOR_S); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
210 | |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
211 | /* now, we need to go back deeper into the directory tree */ |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
212 | relpath = &abspath[last_dirsep]; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
213 | if (relpath[0] != '\0') |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
214 | relpath++; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
215 | |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
216 | /* - enter bin dir |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
217 | * - escape it to the common prefix |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
218 | * - dive into the abspath dir |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
219 | */ |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
220 | ret = g_build_filename(wpurple_bin_dir(), bin_esc->str, relpath, NULL); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
221 | g_string_free(bin_esc, TRUE); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
222 | |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
223 | purple_debug_misc("wpurple", "wpurple_install_relative_path(%s) = %s", |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
224 | abspath, ret); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
225 | |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
226 | return ret; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
227 | } |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
228 | #endif |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
229 | |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
230 | const char * |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
231 | wpurple_data_dir(void) { |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
232 | #ifdef USE_WIN32_FHS |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
233 | static gboolean initialized = FALSE; |
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
234 | if (initialized) |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
235 | return data_dir; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
236 | data_dir = wpurple_install_relative_path(WIN32_FHS_DATADIR); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
237 | initialized = TRUE; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
238 | |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
239 | return data_dir; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
240 | #else |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
241 | return wpurple_bin_dir(); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
242 | #endif |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
243 | } |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
244 | |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
245 | |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
246 | const char *wpurple_lib_dir(const char *subdir) |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
247 | { |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
248 | static gboolean initialized = FALSE; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
249 | static gchar subpath[MAX_PATH_LEN]; |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
250 | |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
251 | if (!initialized) { |
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
252 | #ifdef USE_WIN32_FHS |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
253 | lib_dir = wpurple_install_relative_path(WIN32_FHS_LIBDIR); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
254 | initialized = TRUE; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
255 | #else |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
256 | const char *inst_dir = wpurple_bin_dir(); |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
257 | if (inst_dir != NULL) { |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
258 | 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
|
259 | initialized = TRUE; |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
260 | } else { |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
261 | return NULL; |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
262 | } |
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
263 | #endif |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
264 | } |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
265 | |
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
266 | if (subdir == NULL) |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
267 | return lib_dir; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
268 | |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
269 | g_snprintf(subpath, sizeof(subpath), |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
270 | "%s" G_DIR_SEPARATOR_S "%s", lib_dir, subdir); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
271 | return subpath; |
| 3630 | 272 | } |
| 273 | ||
| 15884 | 274 | const char *wpurple_locale_dir(void) { |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
275 | static gboolean initialized = FALSE; |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
276 | |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
277 | if (!initialized) { |
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
278 | #ifdef USE_WIN32_FHS |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
279 | locale_dir = wpurple_install_relative_path(WIN32_FHS_LOCALEDIR); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
280 | initialized = TRUE; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
281 | #else |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
282 | const char *inst_dir = wpurple_bin_dir(); |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
283 | if (inst_dir != NULL) { |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
284 | 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
|
285 | initialized = TRUE; |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
286 | } else { |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
287 | return NULL; |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
288 | } |
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
289 | #endif |
|
11323
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
290 | } |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
291 | |
|
d9a148f36cbc
[gaim-migrate @ 13528]
Daniel Atallah <datallah@pidgin.im>
parents:
11256
diff
changeset
|
292 | return locale_dir; |
| 3630 | 293 | } |
| 294 | ||
|
35864
a9dfa29e3382
cross-win32: correct PURPLE_DATADIR location, rename misleading wpurple_data_dir()
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35850
diff
changeset
|
295 | const char *wpurple_home_dir(void) { |
|
14331
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
296 | |
|
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
297 | if (!app_data_dir) { |
| 15884 | 298 | /* Set app data dir, used by purple_home_dir */ |
| 299 | const char *newenv = g_getenv("PURPLEHOME"); | |
|
14331
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
300 | if (newenv) |
|
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
301 | app_data_dir = g_strdup(newenv); |
|
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
302 | else { |
| 15884 | 303 | app_data_dir = wpurple_get_special_folder(CSIDL_APPDATA); |
|
14331
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
304 | if (!app_data_dir) |
|
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
305 | app_data_dir = g_strdup("C:"); |
|
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
306 | } |
| 15884 | 307 | purple_debug_info("wpurple", "Purple settings dir: %s\n", |
|
14331
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
308 | app_data_dir); |
|
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
309 | } |
|
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
310 | |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
311 | return app_data_dir; |
|
6848
ca91f08b60df
[gaim-migrate @ 7393]
Herman Bloggs <herman@bluedigits.com>
parents:
6816
diff
changeset
|
312 | } |
|
ca91f08b60df
[gaim-migrate @ 7393]
Herman Bloggs <herman@bluedigits.com>
parents:
6816
diff
changeset
|
313 | |
|
35850
1abeda205d6c
cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35114
diff
changeset
|
314 | const char *wpurple_sysconf_dir(void) |
|
1abeda205d6c
cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35114
diff
changeset
|
315 | { |
|
1abeda205d6c
cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35114
diff
changeset
|
316 | static gboolean initialized = FALSE; |
|
1abeda205d6c
cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35114
diff
changeset
|
317 | |
|
1abeda205d6c
cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35114
diff
changeset
|
318 | if (!initialized) { |
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
319 | #ifdef USE_WIN32_FHS |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
320 | sysconf_dir = wpurple_install_relative_path(WIN32_FHS_SYSCONFDIR); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
321 | #else |
|
35850
1abeda205d6c
cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35114
diff
changeset
|
322 | sysconf_dir = wpurple_get_special_folder(CSIDL_COMMON_APPDATA); |
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
323 | #endif |
|
35850
1abeda205d6c
cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35114
diff
changeset
|
324 | initialized = TRUE; |
|
1abeda205d6c
cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35114
diff
changeset
|
325 | } |
|
1abeda205d6c
cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35114
diff
changeset
|
326 | |
|
1abeda205d6c
cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35114
diff
changeset
|
327 | return sysconf_dir; |
|
1abeda205d6c
cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35114
diff
changeset
|
328 | } |
|
1abeda205d6c
cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35114
diff
changeset
|
329 | |
|
35903
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
330 | #if defined(USE_WIN32_FHS) && defined(SSL_CERTIFICATES_DIR) |
|
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
331 | const char * |
|
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
332 | wpurple_cert_dir(void) |
|
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
333 | { |
|
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
334 | static gboolean initialized = FALSE; |
|
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
335 | |
|
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
336 | if (initialized) |
|
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
337 | return sysconf_dir; |
|
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
338 | |
|
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
339 | sysconf_dir = wpurple_install_relative_path(SSL_CERTIFICATES_DIR); |
|
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
340 | initialized = TRUE; |
|
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
341 | |
|
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
342 | return sysconf_dir; |
|
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
343 | } |
|
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
344 | #endif |
|
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
345 | |
|
3973
acade2595b85
[gaim-migrate @ 4157]
Herman Bloggs <herman@bluedigits.com>
parents:
3950
diff
changeset
|
346 | /* Miscellaneous */ |
|
acade2595b85
[gaim-migrate @ 4157]
Herman Bloggs <herman@bluedigits.com>
parents:
3950
diff
changeset
|
347 | |
| 15884 | 348 | 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
|
349 | const char *value) { |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
350 | HKEY reg_key; |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
351 | gboolean success = FALSE; |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
352 | |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
353 | 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
|
354 | NULL, NULL); |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
355 | |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
356 | if(RegOpenKeyExW(rootkey, wc_subkey, 0, |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
357 | KEY_SET_VALUE, ®_key) == ERROR_SUCCESS) { |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
358 | wchar_t *wc_valname = NULL; |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
359 | |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
360 | if (valname) |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
361 | wc_valname = g_utf8_to_utf16(valname, -1, |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
362 | NULL, NULL, NULL); |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
363 | |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
364 | if(value) { |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
365 | 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
|
366 | NULL, NULL, NULL); |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
367 | int len = (wcslen(wc_value) * sizeof(wchar_t)) + 1; |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
368 | if(RegSetValueExW(reg_key, wc_valname, 0, REG_SZ, |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
369 | (LPBYTE)wc_value, len |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
370 | ) == ERROR_SUCCESS) |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
371 | success = TRUE; |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
372 | g_free(wc_value); |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
373 | } else |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
374 | if(RegDeleteValueW(reg_key, wc_valname) == ERROR_SUCCESS) |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
375 | success = TRUE; |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
376 | |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
377 | g_free(wc_valname); |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
378 | } |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
379 | g_free(wc_subkey); |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
380 | |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
381 | if(reg_key != NULL) |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
382 | RegCloseKey(reg_key); |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
383 | |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
384 | return success; |
|
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
385 | } |
|
6437
809e9334e31f
[gaim-migrate @ 6945]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
386 | |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
387 | 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
|
388 | HKEY reg_key = NULL; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
389 | LONG rv; |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
390 | |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
391 | 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
|
392 | NULL, NULL); |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
393 | rv = RegOpenKeyExW(rootkey, wc_subkey, 0, access, ®_key); |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
394 | |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
395 | g_free(wc_subkey); |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
396 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
397 | if (rv != ERROR_SUCCESS) { |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
398 | 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
|
399 | 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
|
400 | ((rootkey == HKEY_LOCAL_MACHINE) ? "HKLM" : |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
401 | (rootkey == HKEY_CURRENT_USER) ? "HKCU" : |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
402 | (rootkey == HKEY_CLASSES_ROOT) ? "HKCR" : "???"), |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
403 | subkey, rv, errmsg); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
404 | g_free(errmsg); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
405 | } |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
406 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
407 | return reg_key; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
408 | } |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
409 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
410 | 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
|
411 | LONG rv; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
412 | |
|
29508
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
413 | wchar_t *wc_valname = NULL; |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
414 | if (valname) |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
415 | 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
|
416 | 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
|
417 | g_free(wc_valname); |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
418 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
419 | if (rv != ERROR_SUCCESS) { |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
420 | 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
|
421 | 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
|
422 | valname, rv, errmsg); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
423 | g_free(errmsg); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
424 | } |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
425 | |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
426 | return (rv == ERROR_SUCCESS); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
427 | } |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
428 | |
|
35114
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
429 | gboolean wpurple_reg_val_exists(HKEY rootkey, const char *subkey, const char *valname) |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
430 | { |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
431 | HKEY hkey; |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
432 | LONG retv; |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
433 | DWORD index; |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
434 | wchar_t name_buffer[100]; |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
435 | BOOL exists = FALSE; |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
436 | wchar_t *wc_valname = NULL; |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
437 | wchar_t *wc_subkey; |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
438 | |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
439 | if (subkey == NULL) |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
440 | return FALSE; |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
441 | |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
442 | wc_subkey = g_utf8_to_utf16(subkey, -1, NULL, NULL, NULL); |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
443 | retv = RegOpenKeyExW(rootkey, wc_subkey, 0, KEY_ENUMERATE_SUB_KEYS, &hkey); |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
444 | g_free(wc_subkey); |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
445 | |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
446 | if (retv != ERROR_SUCCESS) |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
447 | return FALSE; |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
448 | |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
449 | if (valname[0] == '\0' || valname == NULL) { |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
450 | RegCloseKey(hkey); |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
451 | return TRUE; |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
452 | } |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
453 | |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
454 | wc_valname = g_utf8_to_utf16(valname, -1, NULL, NULL, NULL); |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
455 | index = 0; |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
456 | while (TRUE) |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
457 | { |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
458 | DWORD name_size = sizeof(name_buffer); |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
459 | retv = RegEnumValueW(hkey, index++, name_buffer, &name_size, |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
460 | NULL, NULL, NULL, NULL); |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
461 | if (retv != ERROR_SUCCESS) |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
462 | break; |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
463 | name_size /= sizeof(wchar_t); |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
464 | if (wcsncmp(name_buffer, wc_valname, name_size) == 0) { |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
465 | exists = TRUE; |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
466 | break; |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
467 | } |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
468 | } |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
469 | g_free(wc_valname); |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
470 | |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
471 | RegCloseKey(hkey); |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
472 | return exists; |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
473 | } |
|
b833eaa6c76f
Log reader: fix some Trilian-related warnings in debug output. Refs #15279
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
33960
diff
changeset
|
474 | |
| 15884 | 475 | 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
|
476 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
477 | DWORD type; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
478 | DWORD nbytes; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
479 | HKEY reg_key = _reg_open_key(rootkey, subkey, KEY_QUERY_VALUE); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
480 | gboolean success = FALSE; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
481 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
482 | if(reg_key) { |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
483 | if(_reg_read(reg_key, valname, &type, (LPBYTE)result, &nbytes)) |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
484 | success = TRUE; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
485 | RegCloseKey(reg_key); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
486 | } |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
487 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
488 | return success; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
489 | } |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
490 | |
| 15884 | 491 | 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
|
492 | |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
493 | DWORD type; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
494 | DWORD nbytes; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
495 | HKEY reg_key = _reg_open_key(rootkey, subkey, KEY_QUERY_VALUE); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
496 | char *result = NULL; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
497 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
498 | if(reg_key) { |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
499 | 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
|
500 | 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
|
501 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
502 | 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
|
503 | wchar_t *wc_temp = (wchar_t*) data; |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
504 | wc_temp[nbytes / sizeof(wchar_t)] = '\0'; |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
505 | result = g_utf16_to_utf8(wc_temp, -1, |
|
26abf4ffa828
Remove some win9x specific code.
Daniel Atallah <datallah@pidgin.im>
parents:
27665
diff
changeset
|
506 | NULL, NULL, NULL); |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
507 | } |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
508 | g_free(data); |
|
14334
aec64dbd9564
[gaim-migrate @ 16957]
Daniel Atallah <datallah@pidgin.im>
parents:
14331
diff
changeset
|
509 | } |
|
15032
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
510 | RegCloseKey(reg_key); |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
511 | } |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
512 | |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
513 | return result; |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
514 | } |
|
65a111aba7a8
[gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents:
15027
diff
changeset
|
515 | |
|
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
|
516 | 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
|
517 | { |
|
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
|
518 | 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
|
519 | 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
|
520 | 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
|
521 | 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
|
522 | 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
|
523 | 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
|
524 | 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
|
525 | |
|
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
|
526 | 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
|
527 | |
|
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
|
528 | 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
|
529 | (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
|
530 | |
|
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
|
531 | /* 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
|
532 | 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
|
533 | 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
|
534 | 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
|
535 | |
|
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
|
536 | /* 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
|
537 | 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
|
538 | 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
|
539 | 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
|
540 | 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
|
541 | 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
|
542 | 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
|
543 | |
|
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
|
544 | /* 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
|
545 | 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
|
546 | 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
|
547 | 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
|
548 | 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
|
549 | 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
|
550 | 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
|
551 | 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
|
552 | 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
|
553 | |
|
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
|
554 | /* 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
|
555 | 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
|
556 | 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
|
557 | 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
|
558 | |
|
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
|
559 | /* 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
|
560 | 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
|
561 | { |
|
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
|
562 | 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
|
563 | 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
|
564 | } |
|
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
|
565 | 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
|
566 | 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
|
567 | 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
|
568 | |
|
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
|
569 | /* 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
|
570 | 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
|
571 | { |
|
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
|
572 | 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
|
573 | 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
|
574 | 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
|
575 | } |
|
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
|
576 | |
|
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
|
577 | /* 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
|
578 | 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
|
579 | { |
|
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
|
580 | 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
|
581 | 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
|
582 | } |
|
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
|
583 | 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
|
584 | 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
|
585 | 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
|
586 | |
|
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
|
587 | /* 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
|
588 | 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
|
589 | 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
|
590 | 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
|
591 | 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
|
592 | 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
|
593 | 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
|
594 | != 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
|
595 | |
|
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
|
596 | /* 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
|
597 | 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
|
598 | 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
|
599 | |
|
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
|
600 | 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
|
601 | { |
|
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
|
602 | 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
|
603 | "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
|
604 | 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
|
605 | 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
|
606 | 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
|
607 | 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
|
608 | } |
|
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
|
609 | 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
|
610 | { |
|
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
|
611 | 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
|
612 | 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
|
613 | 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
|
614 | 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
|
615 | 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
|
616 | 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
|
617 | 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
|
618 | } |
|
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
|
619 | } |
|
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
|
620 | |
| 15884 | 621 | void wpurple_init(void) { |
|
7523
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
622 | WORD wVersionRequested; |
|
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
623 | WSADATA wsaData; |
|
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
624 | |
|
33890
4a1b14508788
Correctly remove deprecated functions g_type_init and g_thread_init
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33884
diff
changeset
|
625 | #if !GLIB_CHECK_VERSION(2, 32, 0) |
|
4a1b14508788
Correctly remove deprecated functions g_type_init and g_thread_init
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33884
diff
changeset
|
626 | /* GLib threading system is automaticaly initialized since 2.32. |
|
4a1b14508788
Correctly remove deprecated functions g_type_init and g_thread_init
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33884
diff
changeset
|
627 | * For earlier versions, it have to be initialized before calling any |
|
4a1b14508788
Correctly remove deprecated functions g_type_init and g_thread_init
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33884
diff
changeset
|
628 | * Glib or GTK+ functions. |
|
4a1b14508788
Correctly remove deprecated functions g_type_init and g_thread_init
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33884
diff
changeset
|
629 | */ |
|
24171
d976cc3db118
Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents:
22869
diff
changeset
|
630 | 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
|
631 | g_thread_init(NULL); |
|
33890
4a1b14508788
Correctly remove deprecated functions g_type_init and g_thread_init
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33884
diff
changeset
|
632 | #endif |
|
24171
d976cc3db118
Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents:
22869
diff
changeset
|
633 | |
|
33960
ce450446c56a
Win32: strengthen DLL loading; VV: fix farstream plugins loading on win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33890
diff
changeset
|
634 | if (purple_debug_is_verbose()) |
|
ce450446c56a
Win32: strengthen DLL loading; VV: fix farstream plugins loading on win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33890
diff
changeset
|
635 | purple_debug_misc("wpurple", "wpurple_init start\n"); |
|
ce450446c56a
Win32: strengthen DLL loading; VV: fix farstream plugins loading on win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33890
diff
changeset
|
636 | |
|
21106
b85fbef13eed
Add a --with-extraversion option to ./configure so packagers can fine tune
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
20747
diff
changeset
|
637 | purple_debug_info("wpurple", "libpurple version: " DISPLAY_VERSION "\n"); |
|
33960
ce450446c56a
Win32: strengthen DLL loading; VV: fix farstream plugins loading on win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33890
diff
changeset
|
638 | purple_debug_info("wpurple", "Glib: %u.%u.%u\n", |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
639 | glib_major_version, glib_minor_version, glib_micro_version); |
|
7523
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
640 | |
|
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
641 | /* Winsock init */ |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
642 | wVersionRequested = MAKEWORD(2, 2); |
|
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
643 | WSAStartup(wVersionRequested, &wsaData); |
|
6848
ca91f08b60df
[gaim-migrate @ 7393]
Herman Bloggs <herman@bluedigits.com>
parents:
6816
diff
changeset
|
644 | |
|
7523
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
645 | /* Confirm that the winsock DLL supports 2.2 */ |
|
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
646 | /* Note that if the DLL supports versions greater than |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
647 | 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
|
648 | wVersion since that is the version we requested. */ |
|
13322
c973bc4b0a53
[gaim-migrate @ 15690]
Daniel Atallah <datallah@pidgin.im>
parents:
12572
diff
changeset
|
649 | if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { |
| 15884 | 650 | 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
|
651 | WSACleanup(); |
|
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
652 | } |
|
3856
db98b5201da8
[gaim-migrate @ 4008]
Herman Bloggs <herman@bluedigits.com>
parents:
3630
diff
changeset
|
653 | |
|
33960
ce450446c56a
Win32: strengthen DLL loading; VV: fix farstream plugins loading on win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33890
diff
changeset
|
654 | if (purple_debug_is_verbose()) |
|
ce450446c56a
Win32: strengthen DLL loading; VV: fix farstream plugins loading on win32
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33890
diff
changeset
|
655 | purple_debug_misc("wpurple", "wpurple_init end\n"); |
| 3630 | 656 | } |
|
3856
db98b5201da8
[gaim-migrate @ 4008]
Herman Bloggs <herman@bluedigits.com>
parents:
3630
diff
changeset
|
657 | |
|
3907
7de53cfd3660
[gaim-migrate @ 4060]
Herman Bloggs <herman@bluedigits.com>
parents:
3905
diff
changeset
|
658 | /* Windows Cleanup */ |
|
7de53cfd3660
[gaim-migrate @ 4060]
Herman Bloggs <herman@bluedigits.com>
parents:
3905
diff
changeset
|
659 | |
| 15884 | 660 | void wpurple_cleanup(void) { |
| 661 | purple_debug_info("wpurple", "wpurple_cleanup\n"); | |
|
3907
7de53cfd3660
[gaim-migrate @ 4060]
Herman Bloggs <herman@bluedigits.com>
parents:
3905
diff
changeset
|
662 | |
|
7de53cfd3660
[gaim-migrate @ 4060]
Herman Bloggs <herman@bluedigits.com>
parents:
3905
diff
changeset
|
663 | /* winsock cleanup */ |
|
7523
8563b0512405
[gaim-migrate @ 8136]
Herman Bloggs <herman@bluedigits.com>
parents:
7350
diff
changeset
|
664 | WSACleanup(); |
|
3907
7de53cfd3660
[gaim-migrate @ 4060]
Herman Bloggs <herman@bluedigits.com>
parents:
3905
diff
changeset
|
665 | |
|
10673
3177232170c7
[gaim-migrate @ 12213]
Richard Laager <rlaager@pidgin.im>
parents:
10589
diff
changeset
|
666 | g_free(app_data_dir); |
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
667 | g_free(bin_dir); |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
668 | g_free(data_dir); |
|
26745
c51eb424a60c
Clean up libpurple memory allocations on win32 libpurple uninit.
Nick Hebner <hebnern@gmail.com>
parents:
24171
diff
changeset
|
669 | g_free(lib_dir); |
|
c51eb424a60c
Clean up libpurple memory allocations on win32 libpurple uninit.
Nick Hebner <hebnern@gmail.com>
parents:
24171
diff
changeset
|
670 | g_free(locale_dir); |
|
35850
1abeda205d6c
cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35114
diff
changeset
|
671 | g_free(sysconf_dir); |
|
35903
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
672 | g_free(cert_dir); |
|
26745
c51eb424a60c
Clean up libpurple memory allocations on win32 libpurple uninit.
Nick Hebner <hebnern@gmail.com>
parents:
24171
diff
changeset
|
673 | |
|
14331
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
674 | app_data_dir = NULL; |
|
35901
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
675 | bin_dir = NULL; |
|
5bcb306a4edf
cross-win32: FHS support for win32
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35891
diff
changeset
|
676 | data_dir = NULL; |
|
26745
c51eb424a60c
Clean up libpurple memory allocations on win32 libpurple uninit.
Nick Hebner <hebnern@gmail.com>
parents:
24171
diff
changeset
|
677 | lib_dir = NULL; |
|
c51eb424a60c
Clean up libpurple memory allocations on win32 libpurple uninit.
Nick Hebner <hebnern@gmail.com>
parents:
24171
diff
changeset
|
678 | locale_dir = NULL; |
|
35850
1abeda205d6c
cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35114
diff
changeset
|
679 | sysconf_dir = NULL; |
|
35903
dc133578ccaa
cross-win32: FHS and system-provided certs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35901
diff
changeset
|
680 | cert_dir = NULL; |
|
14331
6f7f9bd34916
[gaim-migrate @ 16951]
Daniel Atallah <datallah@pidgin.im>
parents:
14286
diff
changeset
|
681 | |
| 15884 | 682 | libpurpledll_hInstance = NULL; |
|
3907
7de53cfd3660
[gaim-migrate @ 4060]
Herman Bloggs <herman@bluedigits.com>
parents:
3905
diff
changeset
|
683 | } |
|
7de53cfd3660
[gaim-migrate @ 4060]
Herman Bloggs <herman@bluedigits.com>
parents:
3905
diff
changeset
|
684 | |
|
20587
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
685 | long |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
686 | wpurple_get_tz_offset() { |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
687 | TIME_ZONE_INFORMATION tzi; |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
688 | DWORD ret; |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
689 | long off = -1; |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
690 | |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
691 | 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
|
692 | { |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
693 | off = -(tzi.Bias * 60); |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
694 | if (ret == TIME_ZONE_ID_DAYLIGHT) |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
695 | off -= tzi.DaylightBias * 60; |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
696 | } |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
697 | |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
698 | return off; |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
699 | } |
|
55af483c9e86
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@pidgin.im>
parents:
18633
diff
changeset
|
700 | |
|
3950
0cab330f1cd6
[gaim-migrate @ 4129]
Herman Bloggs <herman@bluedigits.com>
parents:
3907
diff
changeset
|
701 | /* DLL initializer */ |
|
15782
f2da034243cd
I forgot to add the new mingw makefiles.
Daniel Atallah <datallah@pidgin.im>
parents:
15435
diff
changeset
|
702 | /* suppress gcc "no previous prototype" warning */ |
|
f2da034243cd
I forgot to add the new mingw makefiles.
Daniel Atallah <datallah@pidgin.im>
parents:
15435
diff
changeset
|
703 | BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved); |
|
14810
7ee46e25e9d8
[gaim-migrate @ 17505]
Daniel Atallah <datallah@pidgin.im>
parents:
14784
diff
changeset
|
704 | BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { |
| 15884 | 705 | libpurpledll_hInstance = hinstDLL; |
|
3856
db98b5201da8
[gaim-migrate @ 4008]
Herman Bloggs <herman@bluedigits.com>
parents:
3630
diff
changeset
|
706 | return TRUE; |
|
db98b5201da8
[gaim-migrate @ 4008]
Herman Bloggs <herman@bluedigits.com>
parents:
3630
diff
changeset
|
707 | } |