annotate src/win32/win32dep.c @ 11171:ebb02ea3c789

[gaim-migrate @ 13272] Moved DBUS init call from gtkmain.c to core.c Reimplemented DBUS bindings mechamism to use low-level GLib bindings as described in my last blog entry. This way plugins can add new DBUS methods on the fly. Also wrote an example plugin that demonstrate how to do it. committer: Tailor Script <tailor@pidgin.im>
author Piotr Zielinski <zielaj>
date Sat, 30 Jul 2005 00:23:21 +0000
parents 50224ac8184d
children bb0d7b719af2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1 /*
5913
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
2 * gaim
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
3 *
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
4 * File: win32dep.c
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
5 * Date: June, 2002
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
6 * Description: Windows dependant code for Gaim
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
7 *
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
8 * Copyright (C) 2002-2003, Herman Bloggs <hermanator12002@yahoo.com>
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
9 *
5913
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
10 * This program is free software; you can redistribute it and/or modify
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
11 * it under the terms of the GNU General Public License as published by
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
13 * (at your option) any later version.
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
14 *
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
15 * This program is distributed in the hope that it will be useful,
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
18 * GNU General Public License for more details.
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
19 *
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
20 * You should have received a copy of the GNU General Public License
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
21 * along with this program; if not, write to the Free Software
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
23 *
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
24 */
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
25 #include <windows.h>
6425
26b739bc9f1a [gaim-migrate @ 6933]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6423
diff changeset
26 #include <io.h>
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
27 #include <stdlib.h>
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
28 #include <stdio.h>
3983
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
29 #include <winuser.h>
5913
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
30
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
31 #include <gtk/gtk.h>
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
32 #include <glib.h>
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
33 #if GLIB_CHECK_VERSION(2,6,0)
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
34 # include <glib/gstdio.h>
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
35 #else
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
36 # define g_fopen fopen
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
37 # define g_unlink unlink
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
38 #endif
3973
d9287e87ba56 [gaim-migrate @ 4157]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3950
diff changeset
39 #include <gdk/gdkwin32.h>
4097
929d23ef2ded [gaim-migrate @ 4312]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4042
diff changeset
40
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
41 #include "gaim.h"
5913
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
42 #include "debug.h"
6929
906567be99b2 [gaim-migrate @ 7476]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6890
diff changeset
43 #include "notify.h"
5913
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
44
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
45 #include "stdafx.h"
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
46 #include "resource.h"
3950
c25cf0495533 [gaim-migrate @ 4129]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3907
diff changeset
47 #include "MinimizeToTray.h"
3973
d9287e87ba56 [gaim-migrate @ 4157]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3950
diff changeset
48 #include "winuser_extra.h"
4535
de9f45c815df [gaim-migrate @ 4814]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4411
diff changeset
49 #include "idletrack.h"
5008
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
50 #include "zlib.h"
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
51 #include "untar.h"
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
52
7523
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
53 #include <libintl.h>
5913
9657e243d001 [gaim-migrate @ 6345]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5854
diff changeset
54
10673
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
55 #include "win32dep.h"
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
56
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
57 /*
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
58 * DEFINES & MACROS
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
59 */
7523
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
60 #define _(x) gettext(x)
3950
c25cf0495533 [gaim-migrate @ 4129]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3907
diff changeset
61
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
62 /*
3983
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
63 * DATA STRUCTS
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
64 */
7523
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
65
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
66 /* For shfolder.dll */
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
67 typedef HRESULT (CALLBACK* LPFNSHGETFOLDERPATHA)(HWND, int, HANDLE, DWORD, LPSTR);
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
68 typedef HRESULT (CALLBACK* LPFNSHGETFOLDERPATHW)(HWND, int, HANDLE, DWORD, LPWSTR);
7523
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
69
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
70 typedef enum {
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
71 SHGFP_TYPE_CURRENT = 0, // current value for user, verify it exists
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
72 SHGFP_TYPE_DEFAULT = 1, // default value, may not exist
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
73 } SHGFP_TYPE;
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
74
3983
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
75 /*
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
76 * LOCALS
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
77 */
10673
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
78 static char *app_data_dir;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
79 static char install_dir[MAXPATHLEN];
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
80 static char lib_dir[MAXPATHLEN];
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
81 static char locale_dir[MAXPATHLEN];
3950
c25cf0495533 [gaim-migrate @ 4129]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3907
diff changeset
82
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
83 /*
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
84 * GLOBALS
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
85 */
3856
50ac7e205045 [gaim-migrate @ 4008]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3630
diff changeset
86 HINSTANCE gaimexe_hInstance = 0;
50ac7e205045 [gaim-migrate @ 4008]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3630
diff changeset
87 HINSTANCE gaimdll_hInstance = 0;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
88
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
89 /*
3983
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
90 * PROTOS
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
91 */
6848
060aa79a733e [gaim-migrate @ 7393]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
92
4097
929d23ef2ded [gaim-migrate @ 4312]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4042
diff changeset
93 FARPROC wgaim_find_and_loadproc(char*, char*);
5008
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
94 extern void wgaim_gtkspell_init();
7523
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
95 char* wgaim_data_dir(void);
3983
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
96
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
97 /*
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
98 * STATIC CODE
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
99 */
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
100
7526
77727178a1df [gaim-migrate @ 8139]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7523
diff changeset
101 static void wgaim_debug_print(GaimDebugLevel level, const char *category, const char *format, va_list args) {
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
102 char *str = NULL;
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
103 if (args != NULL) {
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
104 str = g_strdup_vprintf(format, args);
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
105 } else {
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
106 str = g_strdup(format);
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
107 }
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
108 printf("%s%s%s", category?category:"", category?": ":"",str);
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
109 g_free(str);
7526
77727178a1df [gaim-migrate @ 8139]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7523
diff changeset
110 }
77727178a1df [gaim-migrate @ 8139]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7523
diff changeset
111
7803
ec291c2cad6a [gaim-migrate @ 8449]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7606
diff changeset
112 static GaimDebugUiOps ops = {
7526
77727178a1df [gaim-migrate @ 8139]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7523
diff changeset
113 wgaim_debug_print
77727178a1df [gaim-migrate @ 8139]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7523
diff changeset
114 };
77727178a1df [gaim-migrate @ 8139]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7523
diff changeset
115
4097
929d23ef2ded [gaim-migrate @ 4312]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4042
diff changeset
116 /*
929d23ef2ded [gaim-migrate @ 4312]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4042
diff changeset
117 * PUBLIC CODE
929d23ef2ded [gaim-migrate @ 4312]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4042
diff changeset
118 */
929d23ef2ded [gaim-migrate @ 4312]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4042
diff changeset
119
929d23ef2ded [gaim-migrate @ 4312]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4042
diff changeset
120 HINSTANCE wgaim_hinstance(void) {
929d23ef2ded [gaim-migrate @ 4312]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4042
diff changeset
121 return gaimexe_hInstance;
929d23ef2ded [gaim-migrate @ 4312]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4042
diff changeset
122 }
929d23ef2ded [gaim-migrate @ 4312]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4042
diff changeset
123
4406
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
124 /* Escape windows dir separators. This is needed when paths are saved,
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
125 and on being read back have their '\' chars used as an escape char.
4555
75f75ef235e4 [gaim-migrate @ 4835]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4535
diff changeset
126 Returns an allocated string which needs to be freed.
4406
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
127 */
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
128 char* wgaim_escape_dirsep( char* filename ) {
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
129 int sepcount=0;
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
130 char* ret=NULL;
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
131 int cnt=0;
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
132
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
133 ret = filename;
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
134 while(*ret) {
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
135 if(*ret == '\\')
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
136 sepcount++;
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
137 ret++;
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
138 }
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
139 ret = g_malloc0(strlen(filename) + sepcount + 1);
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
140 while(*filename) {
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
141 ret[cnt] = *filename;
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
142 if(*filename == '\\')
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
143 ret[++cnt] = '\\';
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
144 filename++;
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
145 cnt++;
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
146 }
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
147 ret[cnt] = '\0';
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
148 return ret;
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
149 }
217572342740 [gaim-migrate @ 4675]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4168
diff changeset
150
3983
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
151 /* Determine whether the specified dll contains the specified procedure.
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
152 If so, load it (if not already loaded). */
4097
929d23ef2ded [gaim-migrate @ 4312]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4042
diff changeset
153 FARPROC wgaim_find_and_loadproc( char* dllname, char* procedure ) {
3983
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
154 HMODULE hmod;
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
155 int did_load=0;
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
156 FARPROC proc = 0;
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
157
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
158 if(!(hmod=GetModuleHandle(dllname))) {
5854
14891982dbee [gaim-migrate @ 6285]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5472
diff changeset
159 gaim_debug(GAIM_DEBUG_WARNING, "wgaim", "%s not found. Loading it..\n", dllname);
3983
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
160 if(!(hmod = LoadLibrary(dllname))) {
5854
14891982dbee [gaim-migrate @ 6285]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5472
diff changeset
161 gaim_debug(GAIM_DEBUG_ERROR, "wgaim", "Could not load: %s\n", dllname);
3983
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
162 return NULL;
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
163 }
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
164 else
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
165 did_load = 1;
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
166 }
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
167
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
168 if((proc=GetProcAddress(hmod, procedure))) {
5854
14891982dbee [gaim-migrate @ 6285]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5472
diff changeset
169 gaim_debug(GAIM_DEBUG_INFO, "wgaim", "This version of %s contains %s\n",
4555
75f75ef235e4 [gaim-migrate @ 4835]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4535
diff changeset
170 dllname, procedure);
3983
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
171 return proc;
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
172 }
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
173 else {
5854
14891982dbee [gaim-migrate @ 6285]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5472
diff changeset
174 gaim_debug(GAIM_DEBUG_WARNING, "wgaim", "Function %s not found in dll %s\n",
4555
75f75ef235e4 [gaim-migrate @ 4835]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4535
diff changeset
175 procedure, dllname);
3983
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
176 if(did_load) {
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
177 /* unload dll */
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
178 FreeLibrary(hmod);
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
179 }
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
180 return NULL;
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
181 }
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
182 }
a1245dcf7b31 [gaim-migrate @ 4174]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3973
diff changeset
183
3856
50ac7e205045 [gaim-migrate @ 4008]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3630
diff changeset
184 /* Determine Gaim Paths during Runtime */
50ac7e205045 [gaim-migrate @ 4008]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3630
diff changeset
185
10673
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
186 /* Get paths to special Windows folders. */
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
187 char *wgaim_get_special_folder(int folder_type) {
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
188 static LPFNSHGETFOLDERPATHA MySHGetFolderPathA = NULL;
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
189 char *retval = NULL;
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
190 #if GLIB_CHECK_VERSION(2,6,0)
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
191 static LPFNSHGETFOLDERPATHW MySHGetFolderPathW = NULL;
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
192
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
193 if (!MySHGetFolderPathW) {
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
194 MySHGetFolderPathW = (LPFNSHGETFOLDERPATHW)
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
195 wgaim_find_and_loadproc("shfolder.dll", "SHGetFolderPathW");
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
196 }
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
197
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
198 if (MySHGetFolderPathW) {
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
199 wchar_t utf_16_dir[MAX_PATH + 1];
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
200
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
201 if (SUCCEEDED(MySHGetFolderPathW(NULL, folder_type, NULL,
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
202 SHGFP_TYPE_CURRENT, utf_16_dir))) {
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
203 retval = g_utf16_to_utf8(utf_16_dir, -1, NULL, NULL, NULL);
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
204 }
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
205 }
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
206 #endif
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
207
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
208 if (!retval) {
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
209 if (!MySHGetFolderPathA) {
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
210 MySHGetFolderPathA = (LPFNSHGETFOLDERPATHA)
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
211 wgaim_find_and_loadproc("shfolder.dll", "SHGetFolderPathA");
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
212 }
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
213 if (MySHGetFolderPathA) {
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
214 char locale_dir[MAX_PATH + 1];
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
215
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
216 if (SUCCEEDED(MySHGetFolderPathA(NULL, folder_type, NULL,
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
217 SHGFP_TYPE_CURRENT, locale_dir))) {
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
218 #if GLIB_CHECK_VERSION(2,6,0)
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
219 retval = g_locale_to_utf8(locale_dir, -1, NULL, NULL, NULL);
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
220 #else
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
221 retval = g_strdup(locale_dir);
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
222 #endif
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
223 }
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
224 }
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
225 }
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
226
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
227 return retval;
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
228 }
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
229
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
230 char* wgaim_install_dir(void) {
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
231 HMODULE hmod;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
232 char* buf;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
233
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
234 hmod = GetModuleHandle(NULL);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
235 if( hmod == 0 ) {
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
236 buf = g_win32_error_message( GetLastError() );
5854
14891982dbee [gaim-migrate @ 6285]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5472
diff changeset
237 gaim_debug(GAIM_DEBUG_ERROR, "wgaim", "GetModuleHandle error: %s\n", buf);
7606
08c9d0dcf906 [gaim-migrate @ 8229]
Luke Schierer <lschiere@pidgin.im>
parents: 7526
diff changeset
238 g_free(buf);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
239 return NULL;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
240 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
241 if(GetModuleFileName( hmod, (char*)&install_dir, MAXPATHLEN ) == 0) {
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
242 buf = g_win32_error_message( GetLastError() );
5854
14891982dbee [gaim-migrate @ 6285]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5472
diff changeset
243 gaim_debug(GAIM_DEBUG_ERROR, "wgaim", "GetModuleFileName error: %s\n", buf);
7606
08c9d0dcf906 [gaim-migrate @ 8229]
Luke Schierer <lschiere@pidgin.im>
parents: 7526
diff changeset
244 g_free(buf);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
245 return NULL;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
246 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
247 buf = g_path_get_dirname( install_dir );
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
248 strcpy( (char*)&install_dir, buf );
7606
08c9d0dcf906 [gaim-migrate @ 8229]
Luke Schierer <lschiere@pidgin.im>
parents: 7526
diff changeset
249 g_free( buf );
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
250
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
251 return (char*)&install_dir;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
252 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
253
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
254 char* wgaim_lib_dir(void) {
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
255 strcpy(lib_dir, wgaim_install_dir());
9916
4d17a945aab3 [gaim-migrate @ 10808]
Luke Schierer <lschiere@pidgin.im>
parents: 9141
diff changeset
256 g_strlcat(lib_dir, G_DIR_SEPARATOR_S "plugins", sizeof(lib_dir));
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
257 return (char*)&lib_dir;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
258 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
259
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
260 char* wgaim_locale_dir(void) {
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
261 strcpy(locale_dir, wgaim_install_dir());
9916
4d17a945aab3 [gaim-migrate @ 10808]
Luke Schierer <lschiere@pidgin.im>
parents: 9141
diff changeset
262 g_strlcat(locale_dir, G_DIR_SEPARATOR_S "locale", sizeof(locale_dir));
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
263 return (char*)&locale_dir;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
264 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
265
6848
060aa79a733e [gaim-migrate @ 7393]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
266 char* wgaim_data_dir(void) {
10673
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
267 return app_data_dir;
6848
060aa79a733e [gaim-migrate @ 7393]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
268 }
060aa79a733e [gaim-migrate @ 7393]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
269
3973
d9287e87ba56 [gaim-migrate @ 4157]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3950
diff changeset
270 /* Miscellaneous */
d9287e87ba56 [gaim-migrate @ 4157]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3950
diff changeset
271
6437
ae4c3abbaac1 [gaim-migrate @ 6945]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6425
diff changeset
272 gboolean wgaim_read_reg_string(HKEY key, char* sub_key, char* val_name, LPBYTE data, LPDWORD data_len) {
ae4c3abbaac1 [gaim-migrate @ 6945]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6425
diff changeset
273 HKEY hkey;
ae4c3abbaac1 [gaim-migrate @ 6945]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6425
diff changeset
274 gboolean ret = FALSE;
ae4c3abbaac1 [gaim-migrate @ 6945]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6425
diff changeset
275
ae4c3abbaac1 [gaim-migrate @ 6945]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6425
diff changeset
276 if(ERROR_SUCCESS == RegOpenKeyEx(key,
ae4c3abbaac1 [gaim-migrate @ 6945]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6425
diff changeset
277 sub_key,
ae4c3abbaac1 [gaim-migrate @ 6945]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6425
diff changeset
278 0, KEY_QUERY_VALUE, &hkey)) {
ae4c3abbaac1 [gaim-migrate @ 6945]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6425
diff changeset
279 if(ERROR_SUCCESS == RegQueryValueEx(hkey, val_name, 0, NULL, data, data_len))
ae4c3abbaac1 [gaim-migrate @ 6945]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6425
diff changeset
280 ret = TRUE;
ae4c3abbaac1 [gaim-migrate @ 6945]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6425
diff changeset
281 RegCloseKey(key);
ae4c3abbaac1 [gaim-migrate @ 6945]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6425
diff changeset
282 }
ae4c3abbaac1 [gaim-migrate @ 6945]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6425
diff changeset
283 return ret;
ae4c3abbaac1 [gaim-migrate @ 6945]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6425
diff changeset
284 }
ae4c3abbaac1 [gaim-migrate @ 6945]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6425
diff changeset
285
5008
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
286 int wgaim_gz_decompress(const char* in, const char* out) {
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
287 gzFile fin;
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
288 FILE *fout;
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
289 char buf[1024];
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
290 int ret;
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
291
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
292 if((fin = gzopen(in, "rb"))) {
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
293 if(!(fout = g_fopen(out, "wb"))) {
5854
14891982dbee [gaim-migrate @ 6285]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5472
diff changeset
294 gaim_debug(GAIM_DEBUG_ERROR, "wgaim_gz_decompress", "Error opening file: %s\n", out);
5008
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
295 gzclose(fin);
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
296 return 0;
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
297 }
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
298 }
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
299 else {
5854
14891982dbee [gaim-migrate @ 6285]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5472
diff changeset
300 gaim_debug(GAIM_DEBUG_ERROR, "wgaim_gz_decompress", "gzopen failed to open: %s\n", in);
5008
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
301 return 0;
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
302 }
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
303
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
304 while((ret=gzread(fin, buf, 1024))) {
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
305 if(fwrite(buf, 1, ret, fout) < ret) {
5854
14891982dbee [gaim-migrate @ 6285]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5472
diff changeset
306 gaim_debug(GAIM_DEBUG_ERROR, "wgaim_gz_decompress", "Error writing %d bytes to file\n", ret);
5008
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
307 gzclose(fin);
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
308 fclose(fout);
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
309 return 0;
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
310 }
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
311 }
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
312 fclose(fout);
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
313 gzclose(fin);
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
314
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
315 if(ret < 0) {
5854
14891982dbee [gaim-migrate @ 6285]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5472
diff changeset
316 gaim_debug(GAIM_DEBUG_ERROR, "wgaim_gz_decompress", "gzread failed while reading: %s\n", in);
5008
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
317 return 0;
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
318 }
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
319
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
320 return 1;
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
321 }
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
322
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
323 int wgaim_gz_untar(const char* filename, const char* destdir) {
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
324 char tmpfile[_MAX_PATH];
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
325 char template[]="wgaimXXXXXX";
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
326
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
327 sprintf(tmpfile, "%s%s%s", g_get_tmp_dir(), G_DIR_SEPARATOR_S, _mktemp(template));
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
328 if(wgaim_gz_decompress(filename, tmpfile)) {
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
329 int ret;
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
330 if(untar(tmpfile, destdir, UNTAR_FORCE | UNTAR_QUIET))
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
331 ret=1;
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
332 else {
5854
14891982dbee [gaim-migrate @ 6285]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5472
diff changeset
333 gaim_debug(GAIM_DEBUG_ERROR, "wgaim_gz_untar", "Failure untaring %s\n", tmpfile);
5008
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
334 ret=0;
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
335 }
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
336 g_unlink(tmpfile);
5008
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
337 return ret;
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
338 }
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
339 else {
5854
14891982dbee [gaim-migrate @ 6285]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5472
diff changeset
340 gaim_debug(GAIM_DEBUG_ERROR, "wgaim_gz_untar", "Failed to gz decompress %s\n", filename);
5008
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
341 return 0;
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
342 }
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
343 }
89a5b0e23ea4 [gaim-migrate @ 5343]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4984
diff changeset
344
6083
65fad4831077 [gaim-migrate @ 6542]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5913
diff changeset
345 /* Moved over from old systray.c */
65fad4831077 [gaim-migrate @ 6542]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5913
diff changeset
346 void wgaim_systray_minimize( GtkWidget *window ) {
65fad4831077 [gaim-migrate @ 6542]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5913
diff changeset
347 MinimizeWndToTray(GDK_WINDOW_HWND(window->window));
65fad4831077 [gaim-migrate @ 6542]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5913
diff changeset
348 }
65fad4831077 [gaim-migrate @ 6542]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5913
diff changeset
349
65fad4831077 [gaim-migrate @ 6542]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5913
diff changeset
350 void wgaim_systray_maximize( GtkWidget *window ) {
65fad4831077 [gaim-migrate @ 6542]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5913
diff changeset
351 RestoreWndFromTray(GDK_WINDOW_HWND(window->window));
65fad4831077 [gaim-migrate @ 6542]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5913
diff changeset
352 }
65fad4831077 [gaim-migrate @ 6542]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5913
diff changeset
353
10240
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
354 void wgaim_notify_uri(const char *uri) {
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
355 SHELLEXECUTEINFO sinfo;
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
356
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
357 memset(&sinfo, 0, sizeof(sinfo));
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
358 sinfo.cbSize = sizeof(sinfo);
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
359 sinfo.fMask = SEE_MASK_CLASSNAME;
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
360 sinfo.lpVerb = "open";
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
361 sinfo.lpFile = uri;
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
362 sinfo.nShow = SW_SHOWNORMAL;
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
363 sinfo.lpClass = "http";
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
364
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
365 /* We'll allow whatever URI schemes are supported by the
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
366 default http browser.
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
367 */
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
368 if(!ShellExecuteEx(&sinfo))
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
369 gaim_debug_error("wgaim", "Error opening URI: %s error: %d\n", uri, (int)sinfo.hInstApp);
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
370 }
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10213
diff changeset
371
7523
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
372 void wgaim_init(HINSTANCE hint) {
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
373 WORD wVersionRequested;
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
374 WSADATA wsaData;
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
375 char *perlenv;
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
376 char *newenv;
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
377
7526
77727178a1df [gaim-migrate @ 8139]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7523
diff changeset
378 gaim_debug_set_ui_ops(&ops);
11033
50224ac8184d [gaim-migrate @ 12919]
Etan Reisner <pidgin@unreliablesource.net>
parents: 11003
diff changeset
379 gaim_debug_register_category("wgaim");
50224ac8184d [gaim-migrate @ 12919]
Etan Reisner <pidgin@unreliablesource.net>
parents: 11003
diff changeset
380 gaim_debug_register_category("wgaim_gz_decompress");
50224ac8184d [gaim-migrate @ 12919]
Etan Reisner <pidgin@unreliablesource.net>
parents: 11003
diff changeset
381 gaim_debug_register_category("wgaim_gz_untar");
7523
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
382 gaim_debug(GAIM_DEBUG_INFO, "wgaim", "wgaim_init start\n");
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
383
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
384 gaimexe_hInstance = hint;
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
385
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
386 /* Winsock init */
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
387 wVersionRequested = MAKEWORD( 2, 2 );
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
388 WSAStartup( wVersionRequested, &wsaData );
6848
060aa79a733e [gaim-migrate @ 7393]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
389
7523
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
390 /* Confirm that the winsock DLL supports 2.2 */
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
391 /* Note that if the DLL supports versions greater than
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
392 2.2 in addition to 2.2, it will still return 2.2 in
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
393 wVersion since that is the version we requested. */
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
394 if ( LOBYTE( wsaData.wVersion ) != 2 ||
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
395 HIBYTE( wsaData.wVersion ) != 2 ) {
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
396 gaim_debug(GAIM_DEBUG_WARNING, "wgaim", "Could not find a usable WinSock DLL. Oh well.\n");
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
397 WSACleanup();
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
398 }
3856
50ac7e205045 [gaim-migrate @ 4008]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3630
diff changeset
399
7523
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
400 /* Set Environmental Variables */
6816
5aeba37b303c [gaim-migrate @ 7356]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6437
diff changeset
401 /* Tell perl where to find Gaim's perl modules */
5aeba37b303c [gaim-migrate @ 7356]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6437
diff changeset
402 perlenv = (char*)g_getenv("PERL5LIB");
5aeba37b303c [gaim-migrate @ 7356]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6437
diff changeset
403 newenv = g_strdup_printf("PERL5LIB=%s%s%s%s",
5aeba37b303c [gaim-migrate @ 7356]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6437
diff changeset
404 perlenv ? perlenv : "",
5aeba37b303c [gaim-migrate @ 7356]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6437
diff changeset
405 perlenv ? ";" : "",
5aeba37b303c [gaim-migrate @ 7356]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6437
diff changeset
406 wgaim_install_dir(),
5aeba37b303c [gaim-migrate @ 7356]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6437
diff changeset
407 "\\perlmod;");
5aeba37b303c [gaim-migrate @ 7356]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6437
diff changeset
408 if(putenv(newenv)<0)
5aeba37b303c [gaim-migrate @ 7356]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6437
diff changeset
409 gaim_debug(GAIM_DEBUG_WARNING, "wgaim", "putenv failed\n");
5aeba37b303c [gaim-migrate @ 7356]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6437
diff changeset
410 g_free(newenv);
6848
060aa79a733e [gaim-migrate @ 7393]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
411
7523
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
412 /* Set app data dir, used by gaim_home_dir */
10673
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
413 newenv = (char*) g_getenv("GAIMHOME");
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
414 if (newenv) {
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
415 app_data_dir = g_strdup(newenv);
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
416 } else {
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
417 app_data_dir = wgaim_get_special_folder(CSIDL_APPDATA);
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
418 if (!app_data_dir) {
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
419 app_data_dir = g_strdup("C:");
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10335
diff changeset
420 }
6848
060aa79a733e [gaim-migrate @ 7393]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
421 }
10673
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
422
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
423 gaim_debug(GAIM_DEBUG_INFO, "wgaim", "Gaim settings dir: %s\n", app_data_dir);
3907
41e7544a9c67 [gaim-migrate @ 4060]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3905
diff changeset
424
7523
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
425 /* IdleTracker Initialization */
4535
de9f45c815df [gaim-migrate @ 4814]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4411
diff changeset
426 if(!wgaim_set_idlehooks())
5854
14891982dbee [gaim-migrate @ 6285]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5472
diff changeset
427 gaim_debug(GAIM_DEBUG_ERROR, "wgaim", "Failed to initialize idle tracker\n");
4861
6cb8b0686e46 [gaim-migrate @ 5188]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4728
diff changeset
428
6cb8b0686e46 [gaim-migrate @ 5188]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4728
diff changeset
429 wgaim_gtkspell_init();
7523
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
430 gaim_debug(GAIM_DEBUG_INFO, "wgaim", "wgaim_init end\n");
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
431 }
3856
50ac7e205045 [gaim-migrate @ 4008]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3630
diff changeset
432
3907
41e7544a9c67 [gaim-migrate @ 4060]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3905
diff changeset
433 /* Windows Cleanup */
41e7544a9c67 [gaim-migrate @ 4060]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3905
diff changeset
434
41e7544a9c67 [gaim-migrate @ 4060]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3905
diff changeset
435 void wgaim_cleanup(void) {
5854
14891982dbee [gaim-migrate @ 6285]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 5472
diff changeset
436 gaim_debug(GAIM_DEBUG_INFO, "wgaim", "wgaim_cleanup\n");
3907
41e7544a9c67 [gaim-migrate @ 4060]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3905
diff changeset
437
41e7544a9c67 [gaim-migrate @ 4060]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3905
diff changeset
438 /* winsock cleanup */
7523
7c3db2b2a790 [gaim-migrate @ 8136]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7350
diff changeset
439 WSACleanup();
3907
41e7544a9c67 [gaim-migrate @ 4060]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3905
diff changeset
440
4535
de9f45c815df [gaim-migrate @ 4814]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4411
diff changeset
441 /* Idle tracker cleanup */
de9f45c815df [gaim-migrate @ 4814]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4411
diff changeset
442 wgaim_remove_idlehooks();
10673
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
443
179b0245a2f7 [gaim-migrate @ 12213]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10589
diff changeset
444 g_free(app_data_dir);
11033
50224ac8184d [gaim-migrate @ 12919]
Etan Reisner <pidgin@unreliablesource.net>
parents: 11003
diff changeset
445
50224ac8184d [gaim-migrate @ 12919]
Etan Reisner <pidgin@unreliablesource.net>
parents: 11003
diff changeset
446 gaim_debug_unregister_category("wgaim");
50224ac8184d [gaim-migrate @ 12919]
Etan Reisner <pidgin@unreliablesource.net>
parents: 11003
diff changeset
447 gaim_debug_unregister_category("wgaim_gz_decompress");
50224ac8184d [gaim-migrate @ 12919]
Etan Reisner <pidgin@unreliablesource.net>
parents: 11003
diff changeset
448 gaim_debug_unregister_category("wgaim_gz_untar");
3907
41e7544a9c67 [gaim-migrate @ 4060]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3905
diff changeset
449 }
41e7544a9c67 [gaim-migrate @ 4060]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3905
diff changeset
450
3950
c25cf0495533 [gaim-migrate @ 4129]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3907
diff changeset
451 /* DLL initializer */
3856
50ac7e205045 [gaim-migrate @ 4008]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3630
diff changeset
452 BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved ) {
50ac7e205045 [gaim-migrate @ 4008]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3630
diff changeset
453 gaimdll_hInstance = hinstDLL;
50ac7e205045 [gaim-migrate @ 4008]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3630
diff changeset
454 return TRUE;
50ac7e205045 [gaim-migrate @ 4008]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3630
diff changeset
455 }