Mercurial > pidgin.yaz
annotate libpurple/win32/win32dep.c @ 23268:9f34726fe141
Whoops, I should have inverted this logic.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Mon, 02 Jun 2008 09:00:11 +0000 |
parents | 1cd99421c696 |
children | 54eb782d4721 |
rev | line source |
---|---|
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1 /* |
15823 | 2 * purple |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
4 * File: win32dep.c |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
5 * Date: June, 2002 |
15823 | 6 * Description: Windows dependant code for Purple |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
7 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
8 * Copyright (C) 2002-2003, Herman Bloggs <hermanator12002@yahoo.com> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
9 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
10 * This program is free software; you can redistribute it and/or modify |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
11 * it under the terms of the GNU General Public License as published by |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
12 * the Free Software Foundation; either version 2 of the License, or |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
13 * (at your option) any later version. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
14 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
15 * This program is distributed in the hope that it will be useful, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
18 * GNU General Public License for more details. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
19 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
20 * You should have received a copy of the GNU General Public License |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
21 * along with this program; if not, write to the Free Software |
19680
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
18448
diff
changeset
|
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
23 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
24 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
25 #define _WIN32_IE 0x500 |
22709
1cd99421c696
Include winsock2.h before windows.h is included to avoid winsock.h being
Daniel Atallah <daniel.atallah@gmail.com>
parents:
22529
diff
changeset
|
26 #include "internal.h" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
27 #include <winuser.h> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
28 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
29 #include "debug.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
30 #include "notify.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
31 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
32 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
33 * DEFINES & MACROS |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
34 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
35 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
36 /* For shfolder.dll */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
37 typedef HRESULT (CALLBACK* LPFNSHGETFOLDERPATHA)(HWND, int, HANDLE, DWORD, LPSTR); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
38 typedef HRESULT (CALLBACK* LPFNSHGETFOLDERPATHW)(HWND, int, HANDLE, DWORD, LPWSTR); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
39 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
40 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
41 * LOCALS |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
42 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
43 static char *app_data_dir = NULL, *install_dir = NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
44 *lib_dir = NULL, *locale_dir = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
45 |
15823 | 46 static HINSTANCE libpurpledll_hInstance = 0; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
47 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
48 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
49 * PUBLIC CODE |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
50 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
51 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
52 /* Escape windows dir separators. This is needed when paths are saved, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
53 and on being read back have their '\' chars used as an escape char. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
54 Returns an allocated string which needs to be freed. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
55 */ |
15823 | 56 char *wpurple_escape_dirsep(const char *filename) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
57 int sepcount = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
58 const char *tmp = filename; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
59 char *ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
60 int cnt = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
61 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
62 g_return_val_if_fail(filename != NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
63 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
64 while(*tmp) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
65 if(*tmp == '\\') |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
66 sepcount++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
67 tmp++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
68 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
69 ret = g_malloc0(strlen(filename) + sepcount + 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
70 while(*filename) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
71 ret[cnt] = *filename; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
72 if(*filename == '\\') |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
73 ret[++cnt] = '\\'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
74 filename++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
75 cnt++; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
76 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
77 ret[cnt] = '\0'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
78 return ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
79 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
80 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
81 /* Determine whether the specified dll contains the specified procedure. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
82 If so, load it (if not already loaded). */ |
15823 | 83 FARPROC wpurple_find_and_loadproc(const char *dllname, const char *procedure) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
84 HMODULE hmod; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
85 BOOL did_load = FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
86 FARPROC proc = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
87 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
88 if(!(hmod = GetModuleHandle(dllname))) { |
15823 | 89 purple_debug_warning("wpurple", "%s not already loaded; loading it...\n", dllname); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
90 if(!(hmod = LoadLibrary(dllname))) { |
15823 | 91 purple_debug_error("wpurple", "Could not load: %s\n", dllname); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
92 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
93 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
94 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
95 did_load = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
96 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
97 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
98 if((proc = GetProcAddress(hmod, procedure))) { |
15823 | 99 purple_debug_info("wpurple", "This version of %s contains %s\n", |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
100 dllname, procedure); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
101 return proc; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
102 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
103 else { |
15823 | 104 purple_debug_warning("wpurple", "Function %s not found in dll %s\n", |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
105 procedure, dllname); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
106 if(did_load) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
107 /* unload dll */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
108 FreeLibrary(hmod); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
109 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
110 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
111 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
112 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
113 |
15823 | 114 /* Determine Purple Paths during Runtime */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
115 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
116 /* Get paths to special Windows folders. */ |
22529
d93577159f2a
printf format warning fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21030
diff
changeset
|
117 gchar *wpurple_get_special_folder(int folder_type) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
118 static LPFNSHGETFOLDERPATHA MySHGetFolderPathA = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
119 static LPFNSHGETFOLDERPATHW MySHGetFolderPathW = NULL; |
22529
d93577159f2a
printf format warning fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21030
diff
changeset
|
120 gchar *retval = NULL; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
121 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
122 if (!MySHGetFolderPathW) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
123 MySHGetFolderPathW = (LPFNSHGETFOLDERPATHW) |
15823 | 124 wpurple_find_and_loadproc("shfolder.dll", "SHGetFolderPathW"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
125 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
126 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
127 if (MySHGetFolderPathW) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
128 wchar_t utf_16_dir[MAX_PATH + 1]; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
129 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
130 if (SUCCEEDED(MySHGetFolderPathW(NULL, folder_type, NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
131 SHGFP_TYPE_CURRENT, utf_16_dir))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
132 retval = g_utf16_to_utf8(utf_16_dir, -1, NULL, NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
133 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
134 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
135 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
136 if (!retval) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
137 if (!MySHGetFolderPathA) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
138 MySHGetFolderPathA = (LPFNSHGETFOLDERPATHA) |
15823 | 139 wpurple_find_and_loadproc("shfolder.dll", "SHGetFolderPathA"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
140 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
141 if (MySHGetFolderPathA) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
142 char locale_dir[MAX_PATH + 1]; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
143 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
144 if (SUCCEEDED(MySHGetFolderPathA(NULL, folder_type, NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
145 SHGFP_TYPE_CURRENT, locale_dir))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
146 retval = g_locale_to_utf8(locale_dir, -1, NULL, NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
147 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
148 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
149 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
150 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
151 return retval; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
152 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
153 |
15823 | 154 const char *wpurple_install_dir(void) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
155 static gboolean initialized = FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
156 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
157 if (!initialized) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
158 char *tmp = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
159 if (G_WIN32_HAVE_WIDECHAR_API()) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
160 wchar_t winstall_dir[MAXPATHLEN]; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
161 if (GetModuleFileNameW(NULL, winstall_dir, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
162 MAXPATHLEN) > 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
163 tmp = g_utf16_to_utf8(winstall_dir, -1, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
164 NULL, NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
165 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
166 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
167 gchar cpinstall_dir[MAXPATHLEN]; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
168 if (GetModuleFileNameA(NULL, cpinstall_dir, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
169 MAXPATHLEN) > 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
170 tmp = g_locale_to_utf8(cpinstall_dir, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
171 -1, NULL, NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
172 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
173 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
174 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
175 if (tmp == NULL) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
176 tmp = g_win32_error_message(GetLastError()); |
15823 | 177 purple_debug_error("wpurple", |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
178 "GetModuleFileName error: %s\n", tmp); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
179 g_free(tmp); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
180 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
181 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
182 install_dir = g_path_get_dirname(tmp); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
183 g_free(tmp); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
184 initialized = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
185 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
186 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
187 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
188 return install_dir; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
189 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
190 |
15823 | 191 const char *wpurple_lib_dir(void) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
192 static gboolean initialized = FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
193 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
194 if (!initialized) { |
15823 | 195 const char *inst_dir = wpurple_install_dir(); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
196 if (inst_dir != NULL) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
197 lib_dir = g_strdup_printf("%s" G_DIR_SEPARATOR_S "plugins", inst_dir); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
198 initialized = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
199 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
200 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
201 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
202 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
203 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
204 return lib_dir; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
205 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
206 |
15823 | 207 const char *wpurple_locale_dir(void) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
208 static gboolean initialized = FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
209 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
210 if (!initialized) { |
15823 | 211 const char *inst_dir = wpurple_install_dir(); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
212 if (inst_dir != NULL) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
213 locale_dir = g_strdup_printf("%s" G_DIR_SEPARATOR_S "locale", inst_dir); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
214 initialized = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
215 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
216 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
217 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
218 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
219 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
220 return locale_dir; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
221 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
222 |
15823 | 223 const char *wpurple_data_dir(void) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
224 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
225 if (!app_data_dir) { |
15823 | 226 /* Set app data dir, used by purple_home_dir */ |
227 const char *newenv = g_getenv("PURPLEHOME"); | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
228 if (newenv) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
229 app_data_dir = g_strdup(newenv); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
230 else { |
15823 | 231 app_data_dir = wpurple_get_special_folder(CSIDL_APPDATA); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
232 if (!app_data_dir) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
233 app_data_dir = g_strdup("C:"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
234 } |
15823 | 235 purple_debug_info("wpurple", "Purple settings dir: %s\n", |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
236 app_data_dir); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
237 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
238 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
239 return app_data_dir; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
240 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
241 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
242 /* Miscellaneous */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
243 |
15823 | 244 gboolean wpurple_write_reg_string(HKEY rootkey, const char *subkey, const char *valname, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
245 const char *value) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
246 HKEY reg_key; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
247 gboolean success = FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
248 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
249 if(G_WIN32_HAVE_WIDECHAR_API()) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
250 wchar_t *wc_subkey = g_utf8_to_utf16(subkey, -1, NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
251 NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
252 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
253 if(RegOpenKeyExW(rootkey, wc_subkey, 0, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
254 KEY_SET_VALUE, ®_key) == ERROR_SUCCESS) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
255 wchar_t *wc_valname = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
256 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
257 if (valname) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
258 wc_valname = g_utf8_to_utf16(valname, -1, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
259 NULL, NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
260 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
261 if(value) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
262 wchar_t *wc_value = g_utf8_to_utf16(value, -1, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
263 NULL, NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
264 int len = (wcslen(wc_value) * sizeof(wchar_t)) + 1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
265 if(RegSetValueExW(reg_key, wc_valname, 0, REG_SZ, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
266 (LPBYTE)wc_value, len |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
267 ) == ERROR_SUCCESS) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
268 success = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
269 g_free(wc_value); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
270 } else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
271 if(RegDeleteValueW(reg_key, wc_valname) == ERROR_SUCCESS) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
272 success = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
273 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
274 g_free(wc_valname); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
275 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
276 g_free(wc_subkey); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
277 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
278 char *cp_subkey = g_locale_from_utf8(subkey, -1, NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
279 NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
280 if(RegOpenKeyExA(rootkey, cp_subkey, 0, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
281 KEY_SET_VALUE, ®_key) == ERROR_SUCCESS) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
282 char *cp_valname = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
283 if(valname) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
284 cp_valname = g_locale_from_utf8(valname, -1, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
285 NULL, NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
286 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
287 if (value) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
288 char *cp_value = g_locale_from_utf8(value, -1, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
289 NULL, NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
290 int len = strlen(cp_value) + 1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
291 if(RegSetValueExA(reg_key, cp_valname, 0, REG_SZ, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
292 cp_value, len |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
293 ) == ERROR_SUCCESS) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
294 success = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
295 g_free(cp_value); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
296 } else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
297 if(RegDeleteValueA(reg_key, cp_valname) == ERROR_SUCCESS) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
298 success = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
299 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
300 g_free(cp_valname); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
301 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
302 g_free(cp_subkey); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
303 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
304 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
305 if(reg_key != NULL) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
306 RegCloseKey(reg_key); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
307 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
308 return success; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
309 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
310 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
311 static HKEY _reg_open_key(HKEY rootkey, const char *subkey, REGSAM access) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
312 HKEY reg_key = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
313 LONG rv; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
314 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
315 if(G_WIN32_HAVE_WIDECHAR_API()) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
316 wchar_t *wc_subkey = g_utf8_to_utf16(subkey, -1, NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
317 NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
318 rv = RegOpenKeyExW(rootkey, wc_subkey, 0, access, ®_key); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
319 g_free(wc_subkey); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
320 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
321 char *cp_subkey = g_locale_from_utf8(subkey, -1, NULL, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
322 NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
323 rv = RegOpenKeyExA(rootkey, cp_subkey, 0, access, ®_key); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
324 g_free(cp_subkey); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
325 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
326 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
327 if (rv != ERROR_SUCCESS) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
328 char *errmsg = g_win32_error_message(rv); |
15823 | 329 purple_debug_info("wpurple", "Could not open reg key '%s' subkey '%s'.\nMessage: (%ld) %s\n", |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
330 ((rootkey == HKEY_LOCAL_MACHINE) ? "HKLM" : |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
331 (rootkey == HKEY_CURRENT_USER) ? "HKCU" : |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
332 (rootkey == HKEY_CLASSES_ROOT) ? "HKCR" : "???"), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
333 subkey, rv, errmsg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
334 g_free(errmsg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
335 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
336 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
337 return reg_key; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
338 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
339 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
340 static gboolean _reg_read(HKEY reg_key, const char *valname, LPDWORD type, LPBYTE data, LPDWORD data_len) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
341 LONG rv; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
342 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
343 if(G_WIN32_HAVE_WIDECHAR_API()) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
344 wchar_t *wc_valname = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
345 if (valname) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
346 wc_valname = g_utf8_to_utf16(valname, -1, NULL, NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
347 rv = RegQueryValueExW(reg_key, wc_valname, 0, type, data, data_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
348 g_free(wc_valname); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
349 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
350 char *cp_valname = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
351 if(valname) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
352 cp_valname = g_locale_from_utf8(valname, -1, NULL, NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
353 rv = RegQueryValueExA(reg_key, cp_valname, 0, type, data, data_len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
354 g_free(cp_valname); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
355 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
356 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
357 if (rv != ERROR_SUCCESS) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
358 char *errmsg = g_win32_error_message(rv); |
15823 | 359 purple_debug_info("wpurple", "Could not read from reg key value '%s'.\nMessage: (%ld) %s\n", |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
360 valname, rv, errmsg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
361 g_free(errmsg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
362 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
363 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
364 return (rv == ERROR_SUCCESS); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
365 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
366 |
15823 | 367 gboolean wpurple_read_reg_dword(HKEY rootkey, const char *subkey, const char *valname, LPDWORD result) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
368 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
369 DWORD type; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
370 DWORD nbytes; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
371 HKEY reg_key = _reg_open_key(rootkey, subkey, KEY_QUERY_VALUE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
372 gboolean success = FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
373 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
374 if(reg_key) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
375 if(_reg_read(reg_key, valname, &type, (LPBYTE)result, &nbytes)) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
376 success = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
377 RegCloseKey(reg_key); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
378 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
379 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
380 return success; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
381 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
382 |
15823 | 383 char *wpurple_read_reg_string(HKEY rootkey, const char *subkey, const char *valname) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
384 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
385 DWORD type; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
386 DWORD nbytes; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
387 HKEY reg_key = _reg_open_key(rootkey, subkey, KEY_QUERY_VALUE); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
388 char *result = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
389 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
390 if(reg_key) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
391 if(_reg_read(reg_key, valname, &type, NULL, &nbytes) && type == REG_SZ) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
392 LPBYTE data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
393 if(G_WIN32_HAVE_WIDECHAR_API()) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
394 data = (LPBYTE) g_new(wchar_t, ((nbytes + 1) / sizeof(wchar_t)) + 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
395 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
396 data = (LPBYTE) g_malloc(nbytes + 1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
397 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
398 if(_reg_read(reg_key, valname, &type, data, &nbytes)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
399 if(G_WIN32_HAVE_WIDECHAR_API()) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
400 wchar_t *wc_temp = (wchar_t*) data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
401 wc_temp[nbytes / sizeof(wchar_t)] = '\0'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
402 result = g_utf16_to_utf8(wc_temp, -1, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
403 NULL, NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
404 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
405 char *cp_temp = (char*) data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
406 cp_temp[nbytes] = '\0'; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
407 result = g_locale_to_utf8(cp_temp, -1, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
408 NULL, NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
409 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
410 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
411 g_free(data); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
412 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
413 RegCloseKey(reg_key); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
414 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
415 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
416 return result; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
417 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
418 |
20579
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
419 /* the winapi headers don't yet have winhttp.h, so we use the struct from msdn directly */ |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
420 typedef struct { |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
421 BOOL fAutoDetect; |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
422 LPWSTR lpszAutoConfigUrl; |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
423 LPWSTR lpszProxy; |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
424 LPWSTR lpszProxyBypass; |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
425 } WINHTTP_CURRENT_USER_IE_PROXY_CONFIG; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
426 |
20579
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
427 typedef BOOL (CALLBACK* LPFNWINHTTPGETIEPROXYCONFIG)(/*IN OUT*/ WINHTTP_CURRENT_USER_IE_PROXY_CONFIG* pProxyConfig); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
428 |
20579
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
429 gboolean wpurple_check_for_proxy_changes(void) { |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
430 static gboolean loaded = FALSE; |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
431 static LPFNWINHTTPGETIEPROXYCONFIG MyWinHttpGetIEProxyConfig = NULL; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
432 |
20579
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
433 WINHTTP_CURRENT_USER_IE_PROXY_CONFIG ie_proxy_config; |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
434 char *tmp = NULL, *c = NULL; |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
435 gboolean changed = FALSE; |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
436 |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
437 if (!loaded) { |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
438 loaded = TRUE; |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
439 |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
440 if (getenv("HTTP_PROXY") || getenv("http_proxy") || getenv("HTTPPROXY")) { |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
441 purple_debug_info("wpurple", "HTTP_PROXY env. var already set. Ignoring win32 Internet Settings.\n"); |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
442 return FALSE; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
443 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
444 |
20579
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
445 MyWinHttpGetIEProxyConfig = (LPFNWINHTTPGETIEPROXYCONFIG) |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
446 wpurple_find_and_loadproc("winhttp.dll", "WinHttpGetIEProxyConfigForCurrentUser"); |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
447 if (!MyWinHttpGetIEProxyConfig) |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
448 purple_debug_info("wpurple", "Unable to read Windows Proxy Settings.\n"); |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
449 } |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
450 |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
451 if (!MyWinHttpGetIEProxyConfig) |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
452 return FALSE; |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
453 |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
454 ZeroMemory(&ie_proxy_config, sizeof(ie_proxy_config)); |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
455 if (!MyWinHttpGetIEProxyConfig(&ie_proxy_config)) { |
22529
d93577159f2a
printf format warning fixes.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21030
diff
changeset
|
456 purple_debug_error("wpurple", "Error reading Windows Proxy Settings(%lu).\n", GetLastError()); |
20579
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
457 return FALSE; |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
458 } |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
459 |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
460 /* We can't do much if it is autodetect*/ |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
461 if (ie_proxy_config.fAutoDetect) |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
462 purple_debug_error("wpurple", "Windows Proxy Settings set to autodetect (not supported).\n"); |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
463 else if (ie_proxy_config.lpszProxy) { |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
464 tmp = g_utf16_to_utf8(ie_proxy_config.lpszProxy, -1, |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
465 NULL, NULL, NULL); |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
466 /* We can't do anything about the bypass list, as we don't have the url */ |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
467 } else |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
468 purple_debug_info("wpurple", "No Windows Proxy Set.\n"); |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
469 |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
470 if (ie_proxy_config.lpszAutoConfigUrl) |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
471 GlobalFree(ie_proxy_config.lpszAutoConfigUrl); |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
472 if (ie_proxy_config.lpszProxy) |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
473 GlobalFree(ie_proxy_config.lpszProxy); |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
474 if (ie_proxy_config.lpszProxyBypass) |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
475 GlobalFree(ie_proxy_config.lpszProxyBypass); |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
476 |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
477 /* There are proxy settings for several protocols */ |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
478 if (tmp && (c = g_strstr_len(tmp, strlen(tmp), "http="))) { |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
479 char *d; |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
480 c += strlen("http="); |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
481 d = strchr(c, ';'); |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
482 if (d) |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
483 *d = '\0'; |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
484 /* c now points the proxy server (and port) */ |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
485 /* There is only a global proxy */ |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
486 } else if (tmp && strlen(tmp) > 0 && !strchr(tmp, ';')) { |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
487 c = tmp; |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
488 } |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
489 |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
490 if (c && *c) { |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
491 const char *current = g_getenv("HTTP_PROXY"); |
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
492 if (!current || strcmp(current, c)) { |
15823 | 493 purple_debug_info("wpurple", "Setting HTTP Proxy: 'http://%s'\n", c); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
494 g_setenv("HTTP_PROXY", c, TRUE); |
20579
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
495 changed = TRUE; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
496 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
497 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
498 /* If there previously was a proxy set and there isn't one now, clear it */ |
20579
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
499 else if (getenv("HTTP_PROXY")) { |
15823 | 500 purple_debug_info("wpurple", "Clearing HTTP Proxy\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
501 g_unsetenv("HTTP_PROXY"); |
20579
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
502 changed = TRUE; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
503 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
504 |
20579
73b18278c04e
More robust win32 IE proxy settings detection using winhttp. This essentially parses the same registry entries, but we don't have to do the grunt work and it seems to work better. This gives us a start to apply proxy bypass support and autoconfig via PAC file when we can change the API in 3.0.0. I'd also like to change this so we can parse a SOCKS proxy setting and not just fill in the environment variables.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20514
diff
changeset
|
505 g_free(tmp); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
506 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
507 return changed; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
508 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
509 |
15823 | 510 void wpurple_init(void) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
511 WORD wVersionRequested; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
512 WSADATA wsaData; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
513 const char *perlenv; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
514 char *newenv; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
515 |
15823 | 516 purple_debug_info("wpurple", "wpurple_init start\n"); |
21030
3cc856ca2338
Add a --with-extraversion option to ./configure so packagers can fine tune
Stu Tomlinson <stu@nosnilmot.com>
parents:
20685
diff
changeset
|
517 purple_debug_info("wpurple", "libpurple version: " DISPLAY_VERSION "\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
518 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
519 |
15823 | 520 purple_debug_info("wpurple", "Glib:%u.%u.%u\n", |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
521 glib_major_version, glib_minor_version, glib_micro_version); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
522 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
523 /* Winsock init */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
524 wVersionRequested = MAKEWORD(2, 2); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
525 WSAStartup(wVersionRequested, &wsaData); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
526 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
527 /* Confirm that the winsock DLL supports 2.2 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
528 /* Note that if the DLL supports versions greater than |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
529 2.2 in addition to 2.2, it will still return 2.2 in |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
530 wVersion since that is the version we requested. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
531 if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { |
15823 | 532 purple_debug_error("wpurple", "Could not find a usable WinSock DLL. Oh well.\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
533 WSACleanup(); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
534 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
535 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
536 /* Set Environmental Variables */ |
15823 | 537 /* Tell perl where to find Purple's perl modules */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
538 perlenv = g_getenv("PERL5LIB"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
539 newenv = g_strdup_printf("%s%s%s" G_DIR_SEPARATOR_S "perlmod;", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
540 perlenv ? perlenv : "", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
541 perlenv ? ";" : "", |
15823 | 542 wpurple_install_dir()); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
543 if (!g_setenv("PERL5LIB", newenv, TRUE)) |
15823 | 544 purple_debug_warning("wpurple", "putenv failed for PERL5LIB\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
545 g_free(newenv); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
546 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
547 if (!g_thread_supported()) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
548 g_thread_init(NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
549 |
15823 | 550 purple_debug_info("wpurple", "wpurple_init end\n"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
551 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
552 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
553 /* Windows Cleanup */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
554 |
15823 | 555 void wpurple_cleanup(void) { |
556 purple_debug_info("wpurple", "wpurple_cleanup\n"); | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
557 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
558 /* winsock cleanup */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
559 WSACleanup(); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
560 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
561 g_free(app_data_dir); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
562 app_data_dir = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
563 |
15823 | 564 libpurpledll_hInstance = NULL; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
565 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
566 |
20503
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
18448
diff
changeset
|
567 long |
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
18448
diff
changeset
|
568 wpurple_get_tz_offset() { |
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
18448
diff
changeset
|
569 TIME_ZONE_INFORMATION tzi; |
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
18448
diff
changeset
|
570 DWORD ret; |
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
18448
diff
changeset
|
571 long off = -1; |
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
18448
diff
changeset
|
572 |
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
18448
diff
changeset
|
573 if ((ret = GetTimeZoneInformation(&tzi)) != TIME_ZONE_ID_INVALID) |
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
18448
diff
changeset
|
574 { |
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
18448
diff
changeset
|
575 off = -(tzi.Bias * 60); |
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
18448
diff
changeset
|
576 if (ret == TIME_ZONE_ID_DAYLIGHT) |
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
18448
diff
changeset
|
577 off -= tzi.DaylightBias * 60; |
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
18448
diff
changeset
|
578 } |
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
18448
diff
changeset
|
579 |
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
18448
diff
changeset
|
580 return off; |
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
18448
diff
changeset
|
581 } |
905891855710
3rd time the charm? Fixes #2990, maybe
Ka-Hing Cheung <khc@hxbc.us>
parents:
18448
diff
changeset
|
582 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
583 /* DLL initializer */ |
15728
8e08e961813c
I forgot to add the new mingw makefiles.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15374
diff
changeset
|
584 /* suppress gcc "no previous prototype" warning */ |
8e08e961813c
I forgot to add the new mingw makefiles.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
15374
diff
changeset
|
585 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
586 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { |
15823 | 587 libpurpledll_hInstance = hinstDLL; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
588 return TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
589 } |