Mercurial > pidgin.yaz
annotate finch/finch.c @ 27302:716bd29bdc28
Process the data correctly if the server sends chunked data.
The yahoo servers seem to always send out chunked data, which can cause
errors with aliases, profile pictures etc. Apparently we include 'Host: '
header when we request the URL, hoping that would stop the server from
sending us chunked data. But that at least doesn't work for the yahoo
servers, it seems.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Tue, 30 Jun 2009 20:48:12 +0000 |
parents | a95eed74fdd7 |
children | 88ef8c38a639 |
rev | line source |
---|---|
15823 | 1 /** |
15871
66dff3dfdea6
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
2 * finch |
15823 | 3 * |
15871
66dff3dfdea6
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@wiktel.com>
parents:
15823
diff
changeset
|
4 * Finch is the legal property of its developers, whose names are too numerous |
15823 | 5 * to list here. Please refer to the COPYRIGHT file distributed with this |
6 * source distribution. | |
7 * | |
8 * This program is free software; you can redistribute it and/or modify | |
9 * it under the terms of the GNU General Public License as published by | |
10 * the Free Software Foundation; either version 2 of the License, or | |
11 * (at your option) any later version. | |
12 * | |
13 * This program is distributed in the hope that it will be useful, | |
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 * GNU General Public License for more details. | |
17 * | |
18 * You should have received a copy of the GNU General Public License | |
19 * 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:
19567
diff
changeset
|
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
15823 | 21 */ |
18210
b8572b937c09
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents:
18013
diff
changeset
|
22 #include "finch.h" |
b8572b937c09
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents:
18013
diff
changeset
|
23 |
15823 | 24 #include "account.h" |
25 #include "conversation.h" | |
26 #include "core.h" | |
27 #include "debug.h" | |
28 #include "eventloop.h" | |
29 #include "ft.h" | |
30 #include "log.h" | |
31 #include "notify.h" | |
32 #include "prefs.h" | |
33 #include "prpl.h" | |
34 #include "pounce.h" | |
35 #include "savedstatuses.h" | |
36 #include "sound.h" | |
37 #include "status.h" | |
38 #include "util.h" | |
39 #include "whiteboard.h" | |
40 | |
41 #include "gntdebug.h" | |
42 #include "gntprefs.h" | |
43 #include "gntui.h" | |
44 #include "gntidle.h" | |
45 | |
46 #define _GNU_SOURCE | |
47 #include <getopt.h> | |
48 | |
49 #include "config.h" | |
50 | |
51 static void | |
22007
c38d72677c8a
Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents:
21669
diff
changeset
|
52 debug_init(void) |
15823 | 53 { |
54 finch_debug_init(); | |
55 purple_debug_set_ui_ops(finch_debug_get_ui_ops()); | |
56 } | |
57 | |
18293
5aae8608e1c6
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18210
diff
changeset
|
58 static GHashTable *ui_info = NULL; |
22007
c38d72677c8a
Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents:
21669
diff
changeset
|
59 static GHashTable *finch_ui_get_info(void) |
18293
5aae8608e1c6
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18210
diff
changeset
|
60 { |
18877
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
61 if (ui_info == NULL) { |
18293
5aae8608e1c6
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18210
diff
changeset
|
62 ui_info = g_hash_table_new(g_str_hash, g_str_equal); |
5aae8608e1c6
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18210
diff
changeset
|
63 |
5aae8608e1c6
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18210
diff
changeset
|
64 g_hash_table_insert(ui_info, "name", (char*)_("Finch")); |
5aae8608e1c6
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18210
diff
changeset
|
65 g_hash_table_insert(ui_info, "version", VERSION); |
23405
2ccda8e9046d
Added website and dev_website items to Finch's ui_get_info hash table
Evan Schoenberg <evan.s@dreskin.net>
parents:
22007
diff
changeset
|
66 g_hash_table_insert(ui_info, "website", "http://pidgin.im"); |
2ccda8e9046d
Added website and dev_website items to Finch's ui_get_info hash table
Evan Schoenberg <evan.s@dreskin.net>
parents:
22007
diff
changeset
|
67 g_hash_table_insert(ui_info, "dev_website", "http://developer.pidgin.im"); |
25837
a95eed74fdd7
Changed "type" to "client_type" for the hash value specifying client type
Marcus Lundblad <ml@update.uu.se>
parents:
25836
diff
changeset
|
68 g_hash_table_insert(ui_info, "client_type", "console"); |
18293
5aae8608e1c6
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18210
diff
changeset
|
69 } |
5aae8608e1c6
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18210
diff
changeset
|
70 |
5aae8608e1c6
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18210
diff
changeset
|
71 return ui_info; |
5aae8608e1c6
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18210
diff
changeset
|
72 } |
5aae8608e1c6
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18210
diff
changeset
|
73 |
18877
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
74 static void |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
75 finch_quit(void) |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
76 { |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
77 gnt_ui_uninit(); |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
78 if (ui_info) |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
79 g_hash_table_destroy(ui_info); |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
80 } |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
81 |
15823 | 82 static PurpleCoreUiOps core_ops = |
83 { | |
84 finch_prefs_init, | |
85 debug_init, | |
86 gnt_ui_init, | |
18877
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
87 finch_quit, |
18293
5aae8608e1c6
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18210
diff
changeset
|
88 finch_ui_get_info, |
16677
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16573
diff
changeset
|
89 |
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16573
diff
changeset
|
90 /* padding */ |
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16573
diff
changeset
|
91 NULL, |
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16573
diff
changeset
|
92 NULL, |
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16573
diff
changeset
|
93 NULL |
15823 | 94 }; |
95 | |
96 static PurpleCoreUiOps * | |
22007
c38d72677c8a
Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents:
21669
diff
changeset
|
97 gnt_core_get_ui_ops(void) |
15823 | 98 { |
99 return &core_ops; | |
100 } | |
101 | |
102 /* Anything IO-related is directly copied from gtkpurple's source tree */ | |
103 | |
104 #define FINCH_READ_COND (G_IO_IN | G_IO_HUP | G_IO_ERR) | |
105 #define FINCH_WRITE_COND (G_IO_OUT | G_IO_HUP | G_IO_ERR | G_IO_NVAL) | |
106 | |
107 typedef struct _PurpleGntIOClosure { | |
108 PurpleInputFunction function; | |
109 guint result; | |
110 gpointer data; | |
111 | |
112 } PurpleGntIOClosure; | |
113 | |
114 static void purple_gnt_io_destroy(gpointer data) | |
115 { | |
116 g_free(data); | |
117 } | |
118 | |
119 static gboolean purple_gnt_io_invoke(GIOChannel *source, GIOCondition condition, gpointer data) | |
120 { | |
121 PurpleGntIOClosure *closure = data; | |
122 PurpleInputCondition purple_cond = 0; | |
123 | |
124 if (condition & FINCH_READ_COND) | |
125 purple_cond |= PURPLE_INPUT_READ; | |
126 if (condition & FINCH_WRITE_COND) | |
127 purple_cond |= PURPLE_INPUT_WRITE; | |
128 | |
129 #if 0 | |
130 purple_debug(PURPLE_DEBUG_MISC, "gtk_eventloop", | |
131 "CLOSURE: callback for %d, fd is %d\n", | |
132 closure->result, g_io_channel_unix_get_fd(source)); | |
133 #endif | |
134 | |
135 #ifdef _WIN32 | |
136 if(! purple_cond) { | |
137 #if DEBUG | |
138 purple_debug_misc("gnt_eventloop", | |
139 "CLOSURE received GIOCondition of 0x%x, which does not" | |
140 " match 0x%x (READ) or 0x%x (WRITE)\n", | |
141 condition, FINCH_READ_COND, FINCH_WRITE_COND); | |
142 #endif /* DEBUG */ | |
143 | |
144 return TRUE; | |
145 } | |
146 #endif /* _WIN32 */ | |
147 | |
148 closure->function(closure->data, g_io_channel_unix_get_fd(source), | |
149 purple_cond); | |
150 | |
151 return TRUE; | |
152 } | |
153 | |
154 static guint gnt_input_add(gint fd, PurpleInputCondition condition, PurpleInputFunction function, | |
155 gpointer data) | |
156 { | |
157 PurpleGntIOClosure *closure = g_new0(PurpleGntIOClosure, 1); | |
158 GIOChannel *channel; | |
159 GIOCondition cond = 0; | |
160 | |
161 closure->function = function; | |
162 closure->data = data; | |
163 | |
164 if (condition & PURPLE_INPUT_READ) | |
165 cond |= FINCH_READ_COND; | |
166 if (condition & PURPLE_INPUT_WRITE) | |
167 cond |= FINCH_WRITE_COND; | |
168 | |
169 channel = g_io_channel_unix_new(fd); | |
170 closure->result = g_io_add_watch_full(channel, G_PRIORITY_DEFAULT, cond, | |
171 purple_gnt_io_invoke, closure, purple_gnt_io_destroy); | |
172 | |
173 g_io_channel_unref(channel); | |
174 return closure->result; | |
175 } | |
176 | |
177 static PurpleEventLoopUiOps eventloop_ops = | |
178 { | |
179 g_timeout_add, | |
180 g_source_remove, | |
181 gnt_input_add, | |
19567
b99a158ea85e
disapproval of revision 'c672802b647f1230fbd9b0edf383fb3d558cf719'
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19566
diff
changeset
|
182 g_source_remove, |
16677
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16573
diff
changeset
|
183 NULL, /* input_get_error */ |
18013
58e82c3b697e
It's GLIB_CHECK_VERSION, not GLIB_VERSION_CHECK.
Richard Laager <rlaager@wiktel.com>
parents:
18009
diff
changeset
|
184 #if GLIB_CHECK_VERSION(2,14,0) |
18009
9ffa9af32854
Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents:
17060
diff
changeset
|
185 g_timeout_add_seconds, |
9ffa9af32854
Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents:
17060
diff
changeset
|
186 #else |
9ffa9af32854
Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents:
17060
diff
changeset
|
187 NULL, |
9ffa9af32854
Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents:
17060
diff
changeset
|
188 #endif |
16677
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16573
diff
changeset
|
189 |
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16573
diff
changeset
|
190 /* padding */ |
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16573
diff
changeset
|
191 NULL, |
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16573
diff
changeset
|
192 NULL, |
30829e806dae
And finch is up to date
Gary Kramlich <grim@reaperworld.com>
parents:
16573
diff
changeset
|
193 NULL |
15823 | 194 }; |
195 | |
196 static PurpleEventLoopUiOps * | |
197 gnt_eventloop_get_ui_ops(void) | |
198 { | |
199 return &eventloop_ops; | |
200 } | |
201 | |
202 /* This is mostly copied from gtkpurple's source tree */ | |
203 static void | |
204 show_usage(const char *name, gboolean terse) | |
205 { | |
206 char *text; | |
207 | |
208 if (terse) { | |
21030
3cc856ca2338
Add a --with-extraversion option to ./configure so packagers can fine tune
Stu Tomlinson <stu@nosnilmot.com>
parents:
20204
diff
changeset
|
209 text = g_strdup_printf(_("%s. Try `%s -h' for more information.\n"), DISPLAY_VERSION, name); |
15823 | 210 } else { |
211 text = g_strdup_printf(_("%s\n" | |
212 "Usage: %s [OPTION]...\n\n" | |
213 " -c, --config=DIR use DIR for config files\n" | |
25059
49d51dbcb799
Debug log is sent to stderr. Thanks to whoever noticed it in IRC the other day.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24852
diff
changeset
|
214 " -d, --debug print debugging messages to stderr\n" |
15823 | 215 " -h, --help display this help and exit\n" |
216 " -n, --nologin don't automatically login\n" | |
21030
3cc856ca2338
Add a --with-extraversion option to ./configure so packagers can fine tune
Stu Tomlinson <stu@nosnilmot.com>
parents:
20204
diff
changeset
|
217 " -v, --version display the current version and exit\n"), DISPLAY_VERSION, name); |
15823 | 218 } |
219 | |
220 purple_print_utf8_to_console(stdout, text); | |
221 g_free(text); | |
222 } | |
223 | |
224 static int | |
225 init_libpurple(int argc, char **argv) | |
226 { | |
227 char *path; | |
228 int opt; | |
229 gboolean opt_help = FALSE; | |
230 gboolean opt_nologin = FALSE; | |
231 gboolean opt_version = FALSE; | |
232 char *opt_config_dir_arg = NULL; | |
233 gboolean debug_enabled = FALSE; | |
234 | |
235 struct option long_options[] = { | |
236 {"config", required_argument, NULL, 'c'}, | |
237 {"debug", no_argument, NULL, 'd'}, | |
238 {"help", no_argument, NULL, 'h'}, | |
239 {"nologin", no_argument, NULL, 'n'}, | |
240 {"version", no_argument, NULL, 'v'}, | |
241 {0, 0, 0, 0} | |
242 }; | |
243 | |
244 #ifdef ENABLE_NLS | |
245 bindtextdomain(PACKAGE, LOCALEDIR); | |
246 bind_textdomain_codeset(PACKAGE, "UTF-8"); | |
247 textdomain(PACKAGE); | |
248 #endif | |
249 | |
250 #ifdef HAVE_SETLOCALE | |
251 setlocale(LC_ALL, ""); | |
252 #endif | |
253 | |
254 /* scan command-line options */ | |
255 opterr = 1; | |
256 while ((opt = getopt_long(argc, argv, | |
257 #ifndef _WIN32 | |
24852
b2f8b1e1e7cc
Remove unused option, thanks to KuSh. Closes #7856.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23405
diff
changeset
|
258 "c:dhn::v", |
15823 | 259 #else |
260 "c:dhn::v", | |
261 #endif | |
262 long_options, NULL)) != -1) { | |
263 switch (opt) { | |
264 case 'c': /* config dir */ | |
265 g_free(opt_config_dir_arg); | |
266 opt_config_dir_arg = g_strdup(optarg); | |
267 break; | |
268 case 'd': /* debug */ | |
269 debug_enabled = TRUE; | |
270 break; | |
271 case 'h': /* help */ | |
272 opt_help = TRUE; | |
273 break; | |
274 case 'n': /* no autologin */ | |
275 opt_nologin = TRUE; | |
276 break; | |
277 case 'v': /* version */ | |
278 opt_version = TRUE; | |
279 break; | |
280 case '?': /* show terse help */ | |
281 default: | |
282 show_usage(argv[0], TRUE); | |
283 return 0; | |
284 break; | |
285 } | |
286 } | |
287 | |
288 /* show help message */ | |
289 if (opt_help) { | |
290 show_usage(argv[0], FALSE); | |
291 return 0; | |
292 } | |
293 /* show version message */ | |
294 if (opt_version) { | |
16954
816759ae9644
Clarify the comments on the names for translators.
Richard Laager <rlaager@wiktel.com>
parents:
16942
diff
changeset
|
295 /* Translators may want to transliterate the name. |
816759ae9644
Clarify the comments on the names for translators.
Richard Laager <rlaager@wiktel.com>
parents:
16942
diff
changeset
|
296 It is not to be translated. */ |
21030
3cc856ca2338
Add a --with-extraversion option to ./configure so packagers can fine tune
Stu Tomlinson <stu@nosnilmot.com>
parents:
20204
diff
changeset
|
297 printf("%s %s\n", _("Finch"), DISPLAY_VERSION); |
15823 | 298 return 0; |
299 } | |
300 | |
301 /* set a user-specified config directory */ | |
302 if (opt_config_dir_arg != NULL) { | |
303 purple_util_set_user_dir(opt_config_dir_arg); | |
304 g_free(opt_config_dir_arg); | |
305 } | |
306 | |
307 /* | |
308 * We're done piddling around with command line arguments. | |
309 * Fire up this baby. | |
310 */ | |
311 | |
16380
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
312 /* We don't want debug-messages to show up and corrupt the display */ |
15823 | 313 purple_debug_set_enabled(debug_enabled); |
314 | |
16380
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
315 /* If we're using a custom configuration directory, we |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
316 * do NOT want to migrate, or weird things will happen. */ |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
317 if (opt_config_dir_arg == NULL) |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
318 { |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
319 if (!purple_core_migrate()) |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
320 { |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
321 char *old = g_strconcat(purple_home_dir(), |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
322 G_DIR_SEPARATOR_S ".gaim", NULL); |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
323 char *text = g_strdup_printf(_( |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
324 "%s encountered errors migrating your settings " |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
325 "from %s to %s. Please investigate and complete the " |
16942
dd768c576ab2
disapproval of revision 'e9933d653551beb8b5f477dcf2c6bd1f3d239c55'
Richard Laager <rlaager@wiktel.com>
parents:
16940
diff
changeset
|
326 "migration by hand. Please report this error at http://developer.pidgin.im"), _("Finch"), |
16380
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
327 old, purple_user_dir()); |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
328 |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
329 g_free(old); |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
330 |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
331 purple_print_utf8_to_console(stderr, text); |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
332 g_free(text); |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
333 |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
334 return 0; |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
335 } |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
336 } |
6c97924af83b
Call the migrate code from Finch.
Richard Laager <rlaager@wiktel.com>
parents:
16098
diff
changeset
|
337 |
15823 | 338 purple_core_set_ui_ops(gnt_core_get_ui_ops()); |
339 purple_eventloop_set_ui_ops(gnt_eventloop_get_ui_ops()); | |
340 purple_idle_set_ui_ops(finch_idle_get_ui_ops()); | |
341 | |
342 path = g_build_filename(purple_user_dir(), "plugins", NULL); | |
343 purple_plugins_add_search_path(path); | |
344 g_free(path); | |
345 | |
346 purple_plugins_add_search_path(LIBDIR); | |
347 | |
348 if (!purple_core_init(FINCH_UI)) | |
349 { | |
350 fprintf(stderr, | |
351 "Initialization of the Purple core failed. Dumping core.\n" | |
352 "Please report this!\n"); | |
353 abort(); | |
354 } | |
355 | |
356 /* TODO: Move blist loading into purple_blist_init() */ | |
357 purple_set_blist(purple_blist_new()); | |
358 purple_blist_load(); | |
359 | |
19520
098c04602065
Make a note about purple_prefs_load no longer needing to be called by the UI and update finch accordingly. There doesn't appear to be any negative effects of having the purple_prefs_load called twice.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18877
diff
changeset
|
360 /* TODO: should this be moved into finch_prefs_init() ? */ |
16573
ac0d07c7fd90
Pref migration for finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
16533
diff
changeset
|
361 finch_prefs_update_old(); |
15823 | 362 |
363 /* load plugins we had when we quit */ | |
16427
4999bbc52881
Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@gmail.com>
parents:
16098
diff
changeset
|
364 purple_plugins_load_saved("/finch/plugins/loaded"); |
15823 | 365 |
366 /* TODO: Move pounces loading into purple_pounces_init() */ | |
367 purple_pounces_load(); | |
368 | |
369 if (opt_nologin) | |
370 { | |
371 /* Set all accounts to "offline" */ | |
372 PurpleSavedStatus *saved_status; | |
373 | |
374 /* If we've used this type+message before, lookup the transient status */ | |
375 saved_status = purple_savedstatus_find_transient_by_type_and_message( | |
376 PURPLE_STATUS_OFFLINE, NULL); | |
377 | |
378 /* If this type+message is unique then create a new transient saved status */ | |
379 if (saved_status == NULL) | |
380 saved_status = purple_savedstatus_new(NULL, PURPLE_STATUS_OFFLINE); | |
381 | |
382 /* Set the status for each account */ | |
383 purple_savedstatus_activate(saved_status); | |
384 } | |
385 else | |
386 { | |
387 /* Everything is good to go--sign on already */ | |
16427
4999bbc52881
Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@gmail.com>
parents:
16098
diff
changeset
|
388 if (!purple_prefs_get_bool("/purple/savedstatus/startup_current_status")) |
15823 | 389 purple_savedstatus_activate(purple_savedstatus_get_startup()); |
390 purple_accounts_restore_current_statuses(); | |
391 } | |
392 | |
393 return 1; | |
394 } | |
395 | |
18877
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
396 static gboolean gnt_start(int *argc, char ***argv) |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
397 { |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
398 /* Initialize the libpurple stuff */ |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
399 if (!init_libpurple(*argc, *argv)) |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
400 return FALSE; |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
401 |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
402 purple_blist_show(); |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
403 return TRUE; |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
404 } |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
405 |
8988a205112b
Fix a memory leak from not freeing the ui-info hashtable on exit.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18828
diff
changeset
|
406 int main(int argc, char *argv[]) |
15823 | 407 { |
408 signal(SIGPIPE, SIG_IGN); | |
409 | |
19948
7dbeede6da97
Duplicate the fix from 33d699ec: do g_thread_init before using any other
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19680
diff
changeset
|
410 g_thread_init(NULL); |
7dbeede6da97
Duplicate the fix from 33d699ec: do g_thread_init before using any other
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19680
diff
changeset
|
411 |
18361
9b5b0cbde65f
Let's use g_set_prgname too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18329
diff
changeset
|
412 g_set_prgname("Finch"); |
18828
f8b22b11a126
g_set_application_name requires glib 2.2 for finch
Richard Nelson <wabz@pidgin.im>
parents:
18456
diff
changeset
|
413 #if GLIB_CHECK_VERSION(2,2,0) |
18329
477dd067bdc1
Use g_set_application_name here too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
414 g_set_application_name(_("Finch")); |
18828
f8b22b11a126
g_set_application_name requires glib 2.2 for finch
Richard Nelson <wabz@pidgin.im>
parents:
18456
diff
changeset
|
415 #endif |
18329
477dd067bdc1
Use g_set_application_name here too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18210
diff
changeset
|
416 |
20204
de68625c4c04
applied changes from 1cb036aecbbe359226e69874379d39ce74c8daf6
Richard Laager <rlaager@wiktel.com>
parents:
19948
diff
changeset
|
417 if (gnt_start(&argc, &argv)) { |
de68625c4c04
applied changes from 1cb036aecbbe359226e69874379d39ce74c8daf6
Richard Laager <rlaager@wiktel.com>
parents:
19948
diff
changeset
|
418 gnt_main(); |
15823 | 419 |
420 #ifdef STANDALONE | |
20204
de68625c4c04
applied changes from 1cb036aecbbe359226e69874379d39ce74c8daf6
Richard Laager <rlaager@wiktel.com>
parents:
19948
diff
changeset
|
421 purple_core_quit(); |
15823 | 422 #endif |
20204
de68625c4c04
applied changes from 1cb036aecbbe359226e69874379d39ce74c8daf6
Richard Laager <rlaager@wiktel.com>
parents:
19948
diff
changeset
|
423 } |
15823 | 424 |
425 return 0; | |
426 } | |
427 |