Sun, 22 Jul 2007 08:14:16 +0000
revert 'no visible tabs when only one conversation' as it proved unpopular. Made tabs only fill the entire width of the notebook when there's only one tab to avoid http://pidgin.im/~deryni/that_just_looks_dumb.png
| 10302 | 1 | /* |
|
15931
716b5fac1895
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
2 | * pidgin |
| 10302 | 3 | * |
|
15931
716b5fac1895
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
4 | * Pidgin is the legal property of its developers, whose names are too numerous |
| 10302 | 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 | |
| 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 21 | * | |
| 22 | */ | |
| 23 | ||
| 24 | #include "internal.h" | |
| 15577 | 25 | #include "pidgin.h" |
| 10302 | 26 | |
| 27 | #include "account.h" | |
| 28 | #include "conversation.h" | |
| 29 | #include "core.h" | |
| 30 | #include "debug.h" | |
| 31 | #include "eventloop.h" | |
| 32 | #include "ft.h" | |
| 33 | #include "log.h" | |
| 34 | #include "notify.h" | |
| 35 | #include "prefs.h" | |
| 36 | #include "prpl.h" | |
| 37 | #include "pounce.h" | |
| 38 | #include "sound.h" | |
| 39 | #include "status.h" | |
| 40 | #include "util.h" | |
|
11475
1e222e6e52a0
[gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
11403
diff
changeset
|
41 | #include "whiteboard.h" |
| 10302 | 42 | |
| 43 | #include "gtkaccount.h" | |
| 44 | #include "gtkblist.h" | |
| 45 | #include "gtkconn.h" | |
| 46 | #include "gtkconv.h" | |
| 47 | #include "gtkdebug.h" | |
| 48 | #include "gtkdialogs.h" | |
| 14743 | 49 | #include "gtkdocklet.h" |
| 10302 | 50 | #include "gtkeventloop.h" |
| 51 | #include "gtkft.h" | |
|
11907
de3ea77afe3c
[gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
11906
diff
changeset
|
52 | #include "gtkidle.h" |
|
12838
5c6f36abeee8
[gaim-migrate @ 15186]
Richard Laager <rlaager@pidgin.im>
parents:
12670
diff
changeset
|
53 | #include "gtklog.h" |
| 10302 | 54 | #include "gtknotify.h" |
| 55 | #include "gtkplugin.h" | |
| 56 | #include "gtkpounce.h" | |
| 57 | #include "gtkprefs.h" | |
| 58 | #include "gtkprivacy.h" | |
| 59 | #include "gtkrequest.h" | |
| 60 | #include "gtkroomlist.h" | |
|
10574
5abb2931b6ff
[gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10448
diff
changeset
|
61 | #include "gtksavedstatuses.h" |
|
12246
7af1ef3b1cc4
[gaim-migrate @ 14548]
Mark Doliner <markdoliner@pidgin.im>
parents:
12202
diff
changeset
|
62 | #include "gtksession.h" |
| 10302 | 63 | #include "gtksound.h" |
|
11525
1d06283bdcc9
[gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents:
11520
diff
changeset
|
64 | #include "gtkthemes.h" |
| 10302 | 65 | #include "gtkutils.h" |
|
15883
969b74a3e27a
According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents:
15808
diff
changeset
|
66 | #include "pidginstock.h" |
|
11475
1e222e6e52a0
[gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents:
11403
diff
changeset
|
67 | #include "gtkwhiteboard.h" |
| 10302 | 68 | |
|
13428
78687459c64b
[gaim-migrate @ 15802]
Daniel Atallah <datallah@pidgin.im>
parents:
13322
diff
changeset
|
69 | #ifdef HAVE_SIGNAL_H |
| 10302 | 70 | # include <signal.h> |
| 71 | #endif | |
| 72 | ||
| 73 | #include <getopt.h> | |
| 74 | ||
| 75 | #ifdef HAVE_STARTUP_NOTIFICATION | |
| 76 | # define SN_API_NOT_YET_FROZEN | |
| 77 | # include <libsn/sn-launchee.h> | |
| 78 | # include <gdk/gdkx.h> | |
| 79 | #endif | |
| 80 | ||
|
11055
e564996853bf
[gaim-migrate @ 12996]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11033
diff
changeset
|
81 | |
|
e564996853bf
[gaim-migrate @ 12996]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11033
diff
changeset
|
82 | |
| 10302 | 83 | #ifdef HAVE_STARTUP_NOTIFICATION |
| 84 | static SnLauncheeContext *sn_context = NULL; | |
| 85 | static SnDisplay *sn_display = NULL; | |
| 86 | #endif | |
| 87 | ||
|
13428
78687459c64b
[gaim-migrate @ 15802]
Daniel Atallah <datallah@pidgin.im>
parents:
13322
diff
changeset
|
88 | #ifdef HAVE_SIGNAL_H |
|
14542
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
89 | |
| 10302 | 90 | /* |
| 91 | * Lists of signals we wish to catch and those we wish to ignore. | |
| 92 | * Each list terminated with -1 | |
| 93 | */ | |
| 94 | static int catch_sig_list[] = { | |
| 95 | SIGSEGV, | |
| 96 | SIGHUP, | |
| 97 | SIGINT, | |
| 98 | SIGTERM, | |
| 99 | SIGQUIT, | |
| 100 | SIGCHLD, | |
| 14595 | 101 | SIGALRM, |
| 10302 | 102 | -1 |
| 103 | }; | |
| 104 | ||
| 105 | static int ignore_sig_list[] = { | |
| 106 | SIGPIPE, | |
| 107 | -1 | |
| 108 | }; | |
| 109 | #endif | |
| 110 | ||
|
17719
8070b1610abe
Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17105
diff
changeset
|
111 | static void |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
112 | dologin_named(const char *name) |
| 10302 | 113 | { |
| 15884 | 114 | PurpleAccount *account; |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
115 | char **names; |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
116 | int i; |
| 10302 | 117 | |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
118 | if (name != NULL) { /* list of names given */ |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
119 | names = g_strsplit(name, ",", 64); |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
120 | for (i = 0; names[i] != NULL; i++) { |
| 15884 | 121 | account = purple_accounts_find(names[i], NULL); |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
122 | if (account != NULL) { /* found a user */ |
|
17719
8070b1610abe
Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17105
diff
changeset
|
123 | purple_account_set_enabled(account, PIDGIN_UI, TRUE); |
| 10302 | 124 | } |
| 125 | } | |
| 126 | g_strfreev(names); | |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
127 | } else { /* no name given, use the first account */ |
|
18122
9bf9970c1b6a
disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents:
18121
diff
changeset
|
128 | GList *accounts; |
|
11520
61d34ca357f2
[gaim-migrate @ 13765]
Mark Doliner <markdoliner@pidgin.im>
parents:
11475
diff
changeset
|
129 | |
| 15884 | 130 | accounts = purple_accounts_get_all(); |
|
11520
61d34ca357f2
[gaim-migrate @ 13765]
Mark Doliner <markdoliner@pidgin.im>
parents:
11475
diff
changeset
|
131 | if (accounts != NULL) |
|
61d34ca357f2
[gaim-migrate @ 13765]
Mark Doliner <markdoliner@pidgin.im>
parents:
11475
diff
changeset
|
132 | { |
| 15884 | 133 | account = (PurpleAccount *)accounts->data; |
|
17719
8070b1610abe
Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17105
diff
changeset
|
134 | purple_account_set_enabled(account, PIDGIN_UI, TRUE); |
|
11520
61d34ca357f2
[gaim-migrate @ 13765]
Mark Doliner <markdoliner@pidgin.im>
parents:
11475
diff
changeset
|
135 | } |
| 10302 | 136 | } |
| 137 | } | |
| 138 | ||
|
13428
78687459c64b
[gaim-migrate @ 15802]
Daniel Atallah <datallah@pidgin.im>
parents:
13322
diff
changeset
|
139 | #ifdef HAVE_SIGNAL_H |
|
14542
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
140 | static void sighandler(int sig); |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
141 | |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
142 | /** |
|
16437
7ff7c3405ea2
Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents:
16419
diff
changeset
|
143 | * Reap all our dead children. Sometimes libpurple forks off a separate |
|
14542
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
144 | * process to do some stuff. When that process exits we are |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
145 | * informed about it so that we can call waitpid() and let it |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
146 | * stop being a zombie. |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
147 | * |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
148 | * We used to do this immediately when our signal handler was |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
149 | * called, but because of GStreamer we now wait one second before |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
150 | * reaping anything. Why? For some reason GStreamer fork()s |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
151 | * during their initialization process. I don't understand why... |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
152 | * but they do it, and there's nothing we can do about it. |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
153 | * |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
154 | * Anyway, so then GStreamer waits for its child to die and then |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
155 | * it continues with the initialization process. This means that |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
156 | * we have a race condition where GStreamer is waitpid()ing for its |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
157 | * child to die and we're catching the SIGCHLD signal. If GStreamer |
|
16437
7ff7c3405ea2
Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents:
16419
diff
changeset
|
158 | * is awarded the zombied process then everything is ok. But if libpurple |
|
14542
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
159 | * reaps the zombie process then the GStreamer initialization sequence |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
160 | * fails. |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
161 | * |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
162 | * So the ugly solution is to wait a second to give GStreamer time to |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
163 | * reap that bad boy. |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
164 | * |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
165 | * GStreamer 0.10.10 and newer have a gst_register_fork_set_enabled() |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
166 | * function that can be called by applications to disable forking |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
167 | * during initialization. But it's not in 0.10.0, so we shouldn't |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
168 | * use it. |
| 15808 | 169 | * |
| 170 | * All of this child process reaping stuff is currently only used for | |
| 171 | * processes that were forked to play sounds. It's not needed for | |
| 172 | * forked DNS child, which have their own waitpid() call. It might | |
| 173 | * be wise to move this code into gtksound.c. | |
|
14542
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
174 | */ |
| 14595 | 175 | static void |
| 176 | clean_pid() | |
| 10302 | 177 | { |
| 178 | int status; | |
| 179 | pid_t pid; | |
| 180 | ||
| 181 | do { | |
| 182 | pid = waitpid(-1, &status, WNOHANG); | |
| 183 | } while (pid != 0 && pid != (pid_t)-1); | |
|
10334
11feb68437a8
[gaim-migrate @ 11541]
Mark Doliner <markdoliner@pidgin.im>
parents:
10333
diff
changeset
|
184 | |
|
11feb68437a8
[gaim-migrate @ 11541]
Mark Doliner <markdoliner@pidgin.im>
parents:
10333
diff
changeset
|
185 | if ((pid == (pid_t) - 1) && (errno != ECHILD)) { |
| 10302 | 186 | char errmsg[BUFSIZ]; |
| 187 | snprintf(errmsg, BUFSIZ, "Warning: waitpid() returned %d", pid); | |
| 188 | perror(errmsg); | |
| 189 | } | |
|
14542
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
190 | |
|
7c1dd9601f1d
[gaim-migrate @ 17199]
Mark Doliner <markdoliner@pidgin.im>
parents:
14323
diff
changeset
|
191 | /* Restore signal catching */ |
| 14595 | 192 | signal(SIGALRM, sighandler); |
| 10302 | 193 | } |
| 194 | ||
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
195 | char *segfault_message; |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
196 | |
|
10871
c0282a4f2250
[gaim-migrate @ 12558]
Mark Doliner <markdoliner@pidgin.im>
parents:
10819
diff
changeset
|
197 | static void |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
198 | sighandler(int sig) |
| 10302 | 199 | { |
| 200 | switch (sig) { | |
| 201 | case SIGHUP: | |
| 15884 | 202 | purple_debug_warning("sighandler", "Caught signal %d\n", sig); |
| 203 | purple_connections_disconnect_all(); | |
| 10302 | 204 | break; |
| 205 | case SIGSEGV: | |
|
13215
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
206 | fprintf(stderr, "%s", segfault_message); |
| 10302 | 207 | abort(); |
| 208 | break; | |
| 209 | case SIGCHLD: | |
| 14595 | 210 | /* Restore signal catching */ |
| 211 | signal(SIGCHLD, sighandler); | |
| 212 | alarm(1); | |
| 213 | break; | |
| 214 | case SIGALRM: | |
| 215 | clean_pid(); | |
| 10302 | 216 | break; |
| 217 | default: | |
| 15884 | 218 | purple_debug_warning("sighandler", "Caught signal %d\n", sig); |
| 219 | purple_connections_disconnect_all(); | |
| 10302 | 220 | |
| 15884 | 221 | purple_plugins_unload_all(); |
| 10302 | 222 | |
| 223 | if (gtk_main_level()) | |
| 224 | gtk_main_quit(); | |
| 225 | exit(0); | |
| 226 | } | |
| 227 | } | |
| 228 | #endif | |
| 229 | ||
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
230 | static int |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
231 | ui_main() |
| 10302 | 232 | { |
| 233 | #ifndef _WIN32 | |
| 234 | GList *icons = NULL; | |
| 235 | GdkPixbuf *icon = NULL; | |
| 236 | char *icon_path; | |
|
16052
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
237 | int i; |
|
16504
ae9a01ab4db3
Add the SVG to the default window icon list for really big window icons
Sean Egan <seanegan@pidgin.im>
parents:
16499
diff
changeset
|
238 | struct { |
|
ae9a01ab4db3
Add the SVG to the default window icon list for really big window icons
Sean Egan <seanegan@pidgin.im>
parents:
16499
diff
changeset
|
239 | const char *dir; |
|
ae9a01ab4db3
Add the SVG to the default window icon list for really big window icons
Sean Egan <seanegan@pidgin.im>
parents:
16499
diff
changeset
|
240 | const char *filename; |
|
ae9a01ab4db3
Add the SVG to the default window icon list for really big window icons
Sean Egan <seanegan@pidgin.im>
parents:
16499
diff
changeset
|
241 | } icon_sizes[] = { |
|
ae9a01ab4db3
Add the SVG to the default window icon list for really big window icons
Sean Egan <seanegan@pidgin.im>
parents:
16499
diff
changeset
|
242 | {"16x16", "pidgin.png"}, |
|
ae9a01ab4db3
Add the SVG to the default window icon list for really big window icons
Sean Egan <seanegan@pidgin.im>
parents:
16499
diff
changeset
|
243 | {"24x24", "pidgin.png"}, |
|
ae9a01ab4db3
Add the SVG to the default window icon list for really big window icons
Sean Egan <seanegan@pidgin.im>
parents:
16499
diff
changeset
|
244 | {"32x32", "pidgin.png"}, |
|
ae9a01ab4db3
Add the SVG to the default window icon list for really big window icons
Sean Egan <seanegan@pidgin.im>
parents:
16499
diff
changeset
|
245 | {"48x48", "pidgin.png"}, |
|
ae9a01ab4db3
Add the SVG to the default window icon list for really big window icons
Sean Egan <seanegan@pidgin.im>
parents:
16499
diff
changeset
|
246 | {"scalable", "pidgin.svg"} |
|
16052
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
247 | }; |
|
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
248 | |
| 10302 | 249 | #endif |
| 250 | ||
|
16263
27e0ef0f38e6
Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents:
16193
diff
changeset
|
251 | pidgin_themes_init(); |
| 10302 | 252 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
253 | pidgin_blist_setup_sort_methods(); |
| 10302 | 254 | |
| 255 | #ifndef _WIN32 | |
| 256 | /* use the nice PNG icon for all the windows */ | |
|
16052
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
257 | for(i=0; i<G_N_ELEMENTS(icon_sizes); i++) { |
|
16504
ae9a01ab4db3
Add the SVG to the default window icon list for really big window icons
Sean Egan <seanegan@pidgin.im>
parents:
16499
diff
changeset
|
258 | icon_path = g_build_filename(DATADIR, "icons", "hicolor", icon_sizes[i].dir, "apps", icon_sizes[i].filename, NULL); |
|
16052
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
259 | icon = gdk_pixbuf_new_from_file(icon_path, NULL); |
|
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
260 | g_free(icon_path); |
|
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
261 | if (icon) { |
|
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
262 | icons = g_list_append(icons,icon); |
|
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
263 | } else { |
|
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
264 | purple_debug_error("ui_main", |
|
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
265 | "Failed to load the default window icon (%spx version)!\n", icon_sizes[i]); |
|
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
266 | } |
|
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
267 | } |
|
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
268 | if(NULL == icons) { |
|
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
269 | purple_debug_error("ui_main", "Unable to load any size of default window icon!\n"); |
|
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
270 | } else { |
| 10302 | 271 | gtk_window_set_default_icon_list(icons); |
|
16052
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
272 | |
|
d53fc4f13ff3
new icon goodness (i may have screwed this up, someone check)
Nathan Walp <nwalp@pidgin.im>
parents:
15931
diff
changeset
|
273 | g_list_foreach(icons, (GFunc)g_object_unref, NULL); |
| 10302 | 274 | g_list_free(icons); |
| 275 | } | |
| 276 | #endif | |
| 277 | ||
| 278 | return 0; | |
| 279 | } | |
| 280 | ||
| 281 | static void | |
| 282 | debug_init(void) | |
| 283 | { | |
| 15884 | 284 | purple_debug_set_ui_ops(pidgin_debug_get_ui_ops()); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
285 | pidgin_debug_init(); |
| 10302 | 286 | } |
| 287 | ||
| 288 | static void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
289 | pidgin_ui_init(void) |
| 10302 | 290 | { |
| 291 | /* Set the UI operation structures. */ | |
| 15884 | 292 | purple_accounts_set_ui_ops(pidgin_accounts_get_ui_ops()); |
| 293 | purple_xfers_set_ui_ops(pidgin_xfers_get_ui_ops()); | |
| 294 | purple_blist_set_ui_ops(pidgin_blist_get_ui_ops()); | |
| 295 | purple_notify_set_ui_ops(pidgin_notify_get_ui_ops()); | |
| 296 | purple_privacy_set_ui_ops(pidgin_privacy_get_ui_ops()); | |
| 297 | purple_request_set_ui_ops(pidgin_request_get_ui_ops()); | |
| 298 | purple_sound_set_ui_ops(pidgin_sound_get_ui_ops()); | |
| 299 | purple_connections_set_ui_ops(pidgin_connections_get_ui_ops()); | |
| 300 | purple_whiteboard_set_ui_ops(pidgin_whiteboard_get_ui_ops()); | |
|
12272
4eee92ead973
[gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
12246
diff
changeset
|
301 | #ifdef USE_SCREENSAVER |
| 15884 | 302 | purple_idle_set_ui_ops(pidgin_idle_get_ui_ops()); |
|
12272
4eee92ead973
[gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
12246
diff
changeset
|
303 | #endif |
| 10302 | 304 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
305 | pidgin_stock_init(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
306 | pidgin_account_init(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
307 | pidgin_connection_init(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
308 | pidgin_blist_init(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
309 | pidgin_status_init(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
310 | pidgin_conversations_init(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
311 | pidgin_pounces_init(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
312 | pidgin_privacy_init(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
313 | pidgin_xfers_init(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
314 | pidgin_roomlist_init(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
315 | pidgin_log_init(); |
|
16796
1397249dcde1
Initialize docklet from pidgin_ui_init. This ensures docklet prefs are
Casey Harkins <charkins@pidgin.im>
parents:
16763
diff
changeset
|
316 | pidgin_docklet_init(); |
| 10302 | 317 | } |
| 318 | ||
|
18442
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
319 | static GHashTable *ui_info = NULL; |
|
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
320 | |
| 10302 | 321 | static void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
322 | pidgin_quit(void) |
| 10302 | 323 | { |
| 324 | #ifdef USE_SM | |
| 325 | /* unplug */ | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
326 | pidgin_session_end(); |
| 10302 | 327 | #endif |
| 328 | ||
| 329 | /* Save the plugins we have loaded for next time. */ | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
330 | pidgin_plugins_save(); |
| 10302 | 331 | |
|
10574
5abb2931b6ff
[gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10448
diff
changeset
|
332 | /* Uninit */ |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
333 | pidgin_conversations_uninit(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
334 | pidgin_status_uninit(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
335 | pidgin_docklet_uninit(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
336 | pidgin_blist_uninit(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
337 | pidgin_connection_uninit(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
338 | pidgin_account_uninit(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
339 | pidgin_xfers_uninit(); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
340 | pidgin_debug_uninit(); |
|
10574
5abb2931b6ff
[gaim-migrate @ 11966]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10448
diff
changeset
|
341 | |
|
18442
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
342 | if(NULL != ui_info) |
|
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
343 | g_hash_table_destroy(ui_info); |
|
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
344 | |
| 10302 | 345 | /* and end it all... */ |
| 346 | gtk_main_quit(); | |
| 347 | } | |
| 348 | ||
|
18442
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
349 | static GHashTable *pidgin_ui_get_info() |
|
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
350 | { |
|
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
351 | if(NULL == ui_info) { |
|
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
352 | ui_info = g_hash_table_new(g_str_hash, g_str_equal); |
|
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
353 | |
|
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
354 | g_hash_table_insert(ui_info, "name", (char*)PIDGIN_NAME); |
|
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
355 | g_hash_table_insert(ui_info, "version", VERSION); |
|
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
356 | } |
|
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
357 | |
|
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
358 | return ui_info; |
|
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
359 | } |
|
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
360 | |
| 15884 | 361 | static PurpleCoreUiOps core_ops = |
| 10302 | 362 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
363 | pidgin_prefs_init, |
| 10302 | 364 | debug_init, |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
365 | pidgin_ui_init, |
|
16752
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16545
diff
changeset
|
366 | pidgin_quit, |
|
18442
99c6a0271b1d
UI info for finch and pidgin (finch guys probably want to take a look
Nathan Walp <nwalp@pidgin.im>
parents:
18256
diff
changeset
|
367 | pidgin_ui_get_info, |
|
16752
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16545
diff
changeset
|
368 | NULL, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16545
diff
changeset
|
369 | NULL, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16545
diff
changeset
|
370 | NULL |
| 10302 | 371 | }; |
| 372 | ||
| 15884 | 373 | static PurpleCoreUiOps * |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
374 | pidgin_core_get_ui_ops(void) |
| 10302 | 375 | { |
| 376 | return &core_ops; | |
| 377 | } | |
| 378 | ||
| 379 | static void | |
|
10320
f5b0f5cf8562
[gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents:
10317
diff
changeset
|
380 | show_usage(const char *name, gboolean terse) |
| 10302 | 381 | { |
|
10320
f5b0f5cf8562
[gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents:
10317
diff
changeset
|
382 | char *text; |
|
12846
93ff2d8dd1e7
[gaim-migrate @ 15194]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
12838
diff
changeset
|
383 | |
|
10320
f5b0f5cf8562
[gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents:
10317
diff
changeset
|
384 | if (terse) { |
|
16071
044392e01c96
make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents:
16052
diff
changeset
|
385 | text = g_strdup_printf(_("%s %s. Try `%s -h' for more information.\n"), PIDGIN_NAME, VERSION, name); |
|
10320
f5b0f5cf8562
[gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents:
10317
diff
changeset
|
386 | } else { |
|
16071
044392e01c96
make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents:
16052
diff
changeset
|
387 | text = g_strdup_printf(_("%s %s\n" |
| 10302 | 388 | "Usage: %s [OPTION]...\n\n" |
| 389 | " -c, --config=DIR use DIR for config files\n" | |
| 390 | " -d, --debug print debugging messages to stdout\n" | |
|
10320
f5b0f5cf8562
[gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents:
10317
diff
changeset
|
391 | " -h, --help display this help and exit\n" |
|
18208
a27936adb5ca
1. Show the usage of -m in the help message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18207
diff
changeset
|
392 | " -m, --multiple do not ensure single instance\n" |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
393 | " -n, --nologin don't automatically login\n" |
|
10320
f5b0f5cf8562
[gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents:
10317
diff
changeset
|
394 | " -l, --login[=NAME] automatically login (optional argument NAME specifies\n" |
|
11673
6171cf0386a5
[gaim-migrate @ 13959]
Michael Carlson <corfe83@users.sourceforge.net>
parents:
11581
diff
changeset
|
395 | " account(s) to use, separated by commas)\n" |
|
16071
044392e01c96
make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents:
16052
diff
changeset
|
396 | " -v, --version display the current version and exit\n"), PIDGIN_NAME, VERSION, name); |
| 10302 | 397 | } |
| 398 | ||
| 15884 | 399 | purple_print_utf8_to_console(stdout, text); |
|
10320
f5b0f5cf8562
[gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents:
10317
diff
changeset
|
400 | g_free(text); |
| 10302 | 401 | } |
| 402 | ||
| 403 | #ifdef HAVE_STARTUP_NOTIFICATION | |
| 404 | static void | |
| 405 | sn_error_trap_push(SnDisplay *display, Display *xdisplay) | |
| 406 | { | |
| 407 | gdk_error_trap_push(); | |
| 408 | } | |
| 409 | ||
| 410 | static void | |
| 411 | sn_error_trap_pop(SnDisplay *display, Display *xdisplay) | |
| 412 | { | |
| 413 | gdk_error_trap_pop(); | |
| 414 | } | |
| 415 | ||
| 416 | static void | |
| 417 | startup_notification_complete(void) | |
| 418 | { | |
| 419 | Display *xdisplay; | |
| 420 | ||
| 421 | xdisplay = GDK_DISPLAY(); | |
| 422 | sn_display = sn_display_new(xdisplay, | |
| 423 | sn_error_trap_push, | |
| 424 | sn_error_trap_pop); | |
| 425 | sn_context = | |
| 426 | sn_launchee_context_new_from_environment(sn_display, | |
| 427 | DefaultScreen(xdisplay)); | |
| 428 | ||
| 429 | if (sn_context != NULL) | |
| 430 | { | |
| 431 | sn_launchee_context_complete(sn_context); | |
| 432 | sn_launchee_context_unref(sn_context); | |
| 433 | ||
| 434 | sn_display_unref(sn_display); | |
| 435 | } | |
| 436 | } | |
| 437 | #endif /* HAVE_STARTUP_NOTIFICATION */ | |
| 438 | ||
| 439 | /* FUCKING GET ME A TOWEL! */ | |
| 440 | #ifdef _WIN32 | |
|
15697
78ddac185d80
winpidgin warning fixes
Daniel Atallah <datallah@pidgin.im>
parents:
15578
diff
changeset
|
441 | /* suppress gcc "no previous prototype" warning */ |
|
78ddac185d80
winpidgin warning fixes
Daniel Atallah <datallah@pidgin.im>
parents:
15578
diff
changeset
|
442 | int pidgin_main(HINSTANCE hint, int argc, char *argv[]); |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15567
diff
changeset
|
443 | int pidgin_main(HINSTANCE hint, int argc, char *argv[]) |
| 10302 | 444 | #else |
| 445 | int main(int argc, char *argv[]) | |
| 446 | #endif | |
| 447 | { | |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
448 | gboolean opt_help = FALSE; |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
449 | gboolean opt_login = FALSE; |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
450 | gboolean opt_nologin = FALSE; |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
451 | gboolean opt_version = FALSE; |
|
18207
e89bf4430ea6
Allow disabling check for single instance.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18191
diff
changeset
|
452 | gboolean opt_si = TRUE; /* Check for single instance? */ |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
453 | char *opt_config_dir_arg = NULL; |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
454 | char *opt_login_arg = NULL; |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
455 | char *opt_session_arg = NULL; |
|
10447
887380ec66f5
[gaim-migrate @ 11712]
Mark Doliner <markdoliner@pidgin.im>
parents:
10433
diff
changeset
|
456 | char *search_path; |
|
18122
9bf9970c1b6a
disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents:
18121
diff
changeset
|
457 | GList *accounts; |
|
13428
78687459c64b
[gaim-migrate @ 15802]
Daniel Atallah <datallah@pidgin.im>
parents:
13322
diff
changeset
|
458 | #ifdef HAVE_SIGNAL_H |
| 10302 | 459 | int sig_indx; /* for setting up signal catching */ |
| 460 | sigset_t sigset; | |
|
12409
d89ccce310aa
[gaim-migrate @ 14716]
Richard Laager <rlaager@pidgin.im>
parents:
12342
diff
changeset
|
461 | RETSIGTYPE (*prev_sig_disp)(int); |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
462 | char errmsg[BUFSIZ]; |
|
13215
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
463 | #ifndef DEBUG |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
464 | char *segfault_message_tmp; |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
465 | GError *error = NULL; |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
466 | #endif |
|
10334
11feb68437a8
[gaim-migrate @ 11541]
Mark Doliner <markdoliner@pidgin.im>
parents:
10333
diff
changeset
|
467 | #endif |
|
14636
5306c329992c
[gaim-migrate @ 17298]
Daniel Atallah <datallah@pidgin.im>
parents:
14623
diff
changeset
|
468 | int opt; |
|
5306c329992c
[gaim-migrate @ 17298]
Daniel Atallah <datallah@pidgin.im>
parents:
14623
diff
changeset
|
469 | gboolean gui_check; |
|
5306c329992c
[gaim-migrate @ 17298]
Daniel Atallah <datallah@pidgin.im>
parents:
14623
diff
changeset
|
470 | gboolean debug_enabled; |
|
16419
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
471 | gboolean migration_failed = FALSE; |
|
18121
2d8ea56b9097
Mark the return type const for the following functions. I noticed this
Richard Laager <rlaager@pidgin.im>
parents:
18093
diff
changeset
|
472 | GList *active_accounts; |
| 10302 | 473 | |
| 474 | struct option long_options[] = { | |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
475 | {"config", required_argument, NULL, 'c'}, |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
476 | {"debug", no_argument, NULL, 'd'}, |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
477 | {"help", no_argument, NULL, 'h'}, |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
478 | {"login", optional_argument, NULL, 'l'}, |
|
18208
a27936adb5ca
1. Show the usage of -m in the help message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18207
diff
changeset
|
479 | {"multiple", no_argument, NULL, 'm'}, |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
480 | {"nologin", no_argument, NULL, 'n'}, |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
481 | {"session", required_argument, NULL, 's'}, |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
482 | {"version", no_argument, NULL, 'v'}, |
| 10302 | 483 | {0, 0, 0, 0} |
| 484 | }; | |
| 485 | ||
| 486 | #ifdef DEBUG | |
|
10307
f3ba80364053
[gaim-migrate @ 11497]
Mark Doliner <markdoliner@pidgin.im>
parents:
10306
diff
changeset
|
487 | debug_enabled = TRUE; |
|
f3ba80364053
[gaim-migrate @ 11497]
Mark Doliner <markdoliner@pidgin.im>
parents:
10306
diff
changeset
|
488 | #else |
|
f3ba80364053
[gaim-migrate @ 11497]
Mark Doliner <markdoliner@pidgin.im>
parents:
10306
diff
changeset
|
489 | debug_enabled = FALSE; |
| 10302 | 490 | #endif |
|
17105
c0a8e07ee507
disapproval of revision 'd3231850edf096c5afacfab40b53717b34098355'
Sean Egan <seanegan@pidgin.im>
parents:
17104
diff
changeset
|
491 | |
|
c0a8e07ee507
disapproval of revision 'd3231850edf096c5afacfab40b53717b34098355'
Sean Egan <seanegan@pidgin.im>
parents:
17104
diff
changeset
|
492 | /* This is the first Glib function call. Make sure to initialize GThread bfeore then */ |
|
c0a8e07ee507
disapproval of revision 'd3231850edf096c5afacfab40b53717b34098355'
Sean Egan <seanegan@pidgin.im>
parents:
17104
diff
changeset
|
493 | g_thread_init(NULL); |
|
18232
2b0a1d552f56
Use g_set_application_name() so unnamed dialogs get given a name, my
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
18208
diff
changeset
|
494 | |
| 10302 | 495 | #ifdef ENABLE_NLS |
| 496 | bindtextdomain(PACKAGE, LOCALEDIR); | |
| 497 | bind_textdomain_codeset(PACKAGE, "UTF-8"); | |
| 498 | textdomain(PACKAGE); | |
| 499 | #endif | |
| 500 | ||
|
13090
aee4ed853ff3
[gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13024
diff
changeset
|
501 | #ifdef HAVE_SETLOCALE |
|
aee4ed853ff3
[gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13024
diff
changeset
|
502 | /* Locale initialization is not complete here. See gtk_init_check() */ |
|
aee4ed853ff3
[gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13024
diff
changeset
|
503 | setlocale(LC_ALL, ""); |
|
aee4ed853ff3
[gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13024
diff
changeset
|
504 | #endif |
|
11080
0578003800d0
[gaim-migrate @ 13092]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11067
diff
changeset
|
505 | |
|
13428
78687459c64b
[gaim-migrate @ 15802]
Daniel Atallah <datallah@pidgin.im>
parents:
13322
diff
changeset
|
506 | #ifdef HAVE_SIGNAL_H |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
507 | |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
508 | #ifndef DEBUG |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
509 | /* We translate this here in case the crash breaks gettext. */ |
|
13215
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
510 | segfault_message_tmp = g_strdup_printf(_( |
|
16071
044392e01c96
make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents:
16052
diff
changeset
|
511 | "%s has segfaulted and attempted to dump a core file.\n" |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
512 | "This is a bug in the software and has happened through\n" |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
513 | "no fault of your own.\n\n" |
|
16977
c9cb49bea66d
Change the PIDGIN_NAME stuff to allow translators to transliterate the
Richard Laager <rlaager@pidgin.im>
parents:
16967
diff
changeset
|
514 | "If you can reproduce the crash, please notify the developers\n" |
|
c9cb49bea66d
Change the PIDGIN_NAME stuff to allow translators to transliterate the
Richard Laager <rlaager@pidgin.im>
parents:
16967
diff
changeset
|
515 | "by reporting a bug at:\n" |
|
18256
63c91e6c806e
I believe the great unwashed should be using simpleticket for submitting
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
18232
diff
changeset
|
516 | "%ssimpleticket/\n\n" |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
517 | "Please make sure to specify what you were doing at the time\n" |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
518 | "and post the backtrace from the core file. If you do not know\n" |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
519 | "how to get the backtrace, please read the instructions at\n" |
| 16967 | 520 | "%swiki/GetABacktrace\n\n" |
|
13215
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
521 | "If you need further assistance, please IM either SeanEgn or \n" |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
522 | "LSchiere (via AIM). Contact information for Sean and Luke \n" |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
523 | "on other protocols is at\n" |
| 16967 | 524 | "%swiki/DeveloperPages\n"), |
| 525 | PIDGIN_NAME, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE | |
|
13090
aee4ed853ff3
[gaim-migrate @ 15451]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13024
diff
changeset
|
526 | ); |
|
13587
fb0245a7ccab
[gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents:
13429
diff
changeset
|
527 | |
|
13215
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
528 | /* we have to convert the message (UTF-8 to console |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
529 | charset) early because after a segmentation fault |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
530 | it's not a good practice to allocate memory */ |
|
13587
fb0245a7ccab
[gaim-migrate @ 15971]
Daniel Atallah <datallah@pidgin.im>
parents:
13429
diff
changeset
|
531 | segfault_message = g_locale_from_utf8(segfault_message_tmp, |
|
13215
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
532 | -1, NULL, NULL, &error); |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
533 | if (segfault_message != NULL) { |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
534 | g_free(segfault_message_tmp); |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
535 | } |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
536 | else { |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
537 | /* use 'segfault_message_tmp' (UTF-8) as a fallback */ |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
538 | g_warning("%s\n", error->message); |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
539 | g_error_free(error); |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
540 | segfault_message = segfault_message_tmp; |
|
c3e72e316531
[gaim-migrate @ 15578]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
13111
diff
changeset
|
541 | } |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
542 | #else |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
543 | /* Don't mark this for translation. */ |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
544 | segfault_message = g_strdup( |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
545 | "Hi, user. We need to talk.\n" |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
546 | "I think something's gone wrong here. It's probably my fault.\n" |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
547 | "No, really, it's not you... it's me... no no no, I think we get along well\n" |
| 12670 | 548 | "it's just that.... well, I want to see other people. I... what?!? NO! I \n" |
| 549 | "haven't been cheating on you!! How many times do you want me to tell you?! And\n" | |
| 550 | "for the last time, it's just a rash!\n" | |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
551 | ); |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
552 | #endif |
|
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
553 | |
| 10302 | 554 | /* Let's not violate any PLA's!!!! */ |
| 555 | /* jseymour: whatever the fsck that means */ | |
| 556 | /* Robot101: for some reason things like gdm like to block * | |
| 557 | * useful signals like SIGCHLD, so we unblock all the ones we * | |
| 558 | * declare a handler for. thanks JSeymour and Vann. */ | |
| 559 | if (sigemptyset(&sigset)) { | |
| 560 | snprintf(errmsg, BUFSIZ, "Warning: couldn't initialise empty signal set"); | |
| 561 | perror(errmsg); | |
| 562 | } | |
| 563 | for(sig_indx = 0; catch_sig_list[sig_indx] != -1; ++sig_indx) { | |
| 564 | if((prev_sig_disp = signal(catch_sig_list[sig_indx], sighandler)) == SIG_ERR) { | |
| 565 | snprintf(errmsg, BUFSIZ, "Warning: couldn't set signal %d for catching", | |
| 566 | catch_sig_list[sig_indx]); | |
| 567 | perror(errmsg); | |
| 568 | } | |
| 569 | if(sigaddset(&sigset, catch_sig_list[sig_indx])) { | |
| 570 | snprintf(errmsg, BUFSIZ, "Warning: couldn't include signal %d for unblocking", | |
| 571 | catch_sig_list[sig_indx]); | |
| 572 | perror(errmsg); | |
| 573 | } | |
| 574 | } | |
| 575 | for(sig_indx = 0; ignore_sig_list[sig_indx] != -1; ++sig_indx) { | |
| 576 | if((prev_sig_disp = signal(ignore_sig_list[sig_indx], SIG_IGN)) == SIG_ERR) { | |
| 577 | snprintf(errmsg, BUFSIZ, "Warning: couldn't set signal %d to ignore", | |
| 578 | ignore_sig_list[sig_indx]); | |
| 579 | perror(errmsg); | |
| 580 | } | |
| 581 | } | |
| 582 | ||
| 583 | if (sigprocmask(SIG_UNBLOCK, &sigset, NULL)) { | |
| 584 | snprintf(errmsg, BUFSIZ, "Warning: couldn't unblock signals"); | |
| 585 | perror(errmsg); | |
|
10307
f3ba80364053
[gaim-migrate @ 11497]
Mark Doliner <markdoliner@pidgin.im>
parents:
10306
diff
changeset
|
586 | } |
| 10302 | 587 | #endif |
| 588 | ||
| 589 | /* scan command-line options */ | |
| 590 | opterr = 1; | |
| 591 | while ((opt = getopt_long(argc, argv, | |
| 592 | #ifndef _WIN32 | |
|
18207
e89bf4430ea6
Allow disabling check for single instance.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18191
diff
changeset
|
593 | "c:dhmnl::s:v", |
| 10302 | 594 | #else |
|
11795
ab7b200b552e
[gaim-migrate @ 14086]
Richard Laager <rlaager@pidgin.im>
parents:
11785
diff
changeset
|
595 | "c:dhnl::v", |
| 10302 | 596 | #endif |
| 597 | long_options, NULL)) != -1) { | |
| 598 | switch (opt) { | |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
599 | case 'c': /* config dir */ |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
600 | g_free(opt_config_dir_arg); |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
601 | opt_config_dir_arg = g_strdup(optarg); |
| 10302 | 602 | break; |
| 603 | case 'd': /* debug */ | |
|
10307
f3ba80364053
[gaim-migrate @ 11497]
Mark Doliner <markdoliner@pidgin.im>
parents:
10306
diff
changeset
|
604 | debug_enabled = TRUE; |
| 10302 | 605 | break; |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
606 | case 'h': /* help */ |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
607 | opt_help = TRUE; |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
608 | break; |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
609 | case 'n': /* no autologin */ |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
610 | opt_nologin = TRUE; |
| 10302 | 611 | break; |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
612 | case 'l': /* login, option username */ |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
613 | opt_login = TRUE; |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
614 | g_free(opt_login_arg); |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
615 | if (optarg != NULL) |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
616 | opt_login_arg = g_strdup(optarg); |
| 10302 | 617 | break; |
|
10320
f5b0f5cf8562
[gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents:
10317
diff
changeset
|
618 | case 's': /* use existing session ID */ |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
619 | g_free(opt_session_arg); |
|
10320
f5b0f5cf8562
[gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents:
10317
diff
changeset
|
620 | opt_session_arg = g_strdup(optarg); |
|
f5b0f5cf8562
[gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents:
10317
diff
changeset
|
621 | break; |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
622 | case 'v': /* version */ |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
623 | opt_version = TRUE; |
|
10320
f5b0f5cf8562
[gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents:
10317
diff
changeset
|
624 | break; |
|
18207
e89bf4430ea6
Allow disabling check for single instance.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18191
diff
changeset
|
625 | case 'm': /* do not ensure single instance. */ |
|
e89bf4430ea6
Allow disabling check for single instance.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18191
diff
changeset
|
626 | opt_si = FALSE; |
|
e89bf4430ea6
Allow disabling check for single instance.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18191
diff
changeset
|
627 | break; |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
628 | case '?': /* show terse help */ |
| 10302 | 629 | default: |
|
10320
f5b0f5cf8562
[gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents:
10317
diff
changeset
|
630 | show_usage(argv[0], TRUE); |
|
16193
e27165dcba9b
Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents:
16158
diff
changeset
|
631 | #ifdef HAVE_SIGNAL_H |
|
e27165dcba9b
Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents:
16158
diff
changeset
|
632 | g_free(segfault_message); |
|
e27165dcba9b
Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents:
16158
diff
changeset
|
633 | #endif |
| 10302 | 634 | return 0; |
| 635 | break; | |
| 636 | } | |
| 637 | } | |
| 638 | ||
| 639 | /* show help message */ | |
| 640 | if (opt_help) { | |
|
10320
f5b0f5cf8562
[gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents:
10317
diff
changeset
|
641 | show_usage(argv[0], FALSE); |
|
16193
e27165dcba9b
Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents:
16158
diff
changeset
|
642 | #ifdef HAVE_SIGNAL_H |
|
e27165dcba9b
Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents:
16158
diff
changeset
|
643 | g_free(segfault_message); |
|
e27165dcba9b
Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents:
16158
diff
changeset
|
644 | #endif |
| 10302 | 645 | return 0; |
| 646 | } | |
| 647 | /* show version message */ | |
| 648 | if (opt_version) { | |
|
16977
c9cb49bea66d
Change the PIDGIN_NAME stuff to allow translators to transliterate the
Richard Laager <rlaager@pidgin.im>
parents:
16967
diff
changeset
|
649 | printf("%s %s\n", PIDGIN_NAME, VERSION); |
|
16193
e27165dcba9b
Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents:
16158
diff
changeset
|
650 | #ifdef HAVE_SIGNAL_H |
|
e27165dcba9b
Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents:
16158
diff
changeset
|
651 | g_free(segfault_message); |
|
e27165dcba9b
Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents:
16158
diff
changeset
|
652 | #endif |
| 10302 | 653 | return 0; |
| 654 | } | |
| 655 | ||
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
656 | /* set a user-specified config directory */ |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
657 | if (opt_config_dir_arg != NULL) { |
| 15884 | 658 | purple_util_set_user_dir(opt_config_dir_arg); |
|
10323
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
659 | } |
|
f4a013ac9e7c
[gaim-migrate @ 11530]
Mark Doliner <markdoliner@pidgin.im>
parents:
10322
diff
changeset
|
660 | |
|
10448
4415ffba12e9
[gaim-migrate @ 11713]
Mark Doliner <markdoliner@pidgin.im>
parents:
10447
diff
changeset
|
661 | /* |
|
4415ffba12e9
[gaim-migrate @ 11713]
Mark Doliner <markdoliner@pidgin.im>
parents:
10447
diff
changeset
|
662 | * We're done piddling around with command line arguments. |
|
4415ffba12e9
[gaim-migrate @ 11713]
Mark Doliner <markdoliner@pidgin.im>
parents:
10447
diff
changeset
|
663 | * Fire up this baby. |
|
4415ffba12e9
[gaim-migrate @ 11713]
Mark Doliner <markdoliner@pidgin.im>
parents:
10447
diff
changeset
|
664 | */ |
|
4415ffba12e9
[gaim-migrate @ 11713]
Mark Doliner <markdoliner@pidgin.im>
parents:
10447
diff
changeset
|
665 | |
| 15884 | 666 | purple_debug_set_enabled(debug_enabled); |
|
10448
4415ffba12e9
[gaim-migrate @ 11713]
Mark Doliner <markdoliner@pidgin.im>
parents:
10447
diff
changeset
|
667 | |
|
16419
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
668 | /* If we're using a custom configuration directory, we |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
669 | * do NOT want to migrate, or weird things will happen. */ |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
670 | if (opt_config_dir_arg == NULL) |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
671 | { |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
672 | if (!purple_core_migrate()) |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
673 | { |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
674 | migration_failed = TRUE; |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
675 | } |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
676 | } |
|
11067
b6353889a9ba
[gaim-migrate @ 13048]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11055
diff
changeset
|
677 | |
| 15884 | 678 | search_path = g_build_filename(purple_user_dir(), "gtkrc-2.0", NULL); |
|
12572
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
679 | gtk_rc_add_default_file(search_path); |
|
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
680 | g_free(search_path); |
|
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
681 | |
|
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
682 | gui_check = gtk_init_check(&argc, &argv); |
|
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
683 | if (!gui_check) { |
|
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
684 | char *display = gdk_get_display(); |
|
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
685 | |
|
16977
c9cb49bea66d
Change the PIDGIN_NAME stuff to allow translators to transliterate the
Richard Laager <rlaager@pidgin.im>
parents:
16967
diff
changeset
|
686 | printf("%s %s\n", PIDGIN_NAME, VERSION); |
|
12572
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
687 | |
|
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
688 | g_warning("cannot open display: %s", display ? display : "unset"); |
|
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
689 | g_free(display); |
|
16193
e27165dcba9b
Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents:
16158
diff
changeset
|
690 | #ifdef HAVE_SIGNAL_H |
|
e27165dcba9b
Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents:
16158
diff
changeset
|
691 | g_free(segfault_message); |
|
e27165dcba9b
Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents:
16158
diff
changeset
|
692 | #endif |
|
12572
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
693 | |
|
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
694 | return 1; |
|
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
695 | } |
|
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
696 | |
|
18345
a51a9c1e4314
Move g_set_application_name to a point before the pidgin UI is created
Gabriel Schulhof <nix@go-nix.ca>
parents:
18256
diff
changeset
|
697 | g_set_application_name(_("Pidgin")); |
|
a51a9c1e4314
Move g_set_application_name to a point before the pidgin UI is created
Gabriel Schulhof <nix@go-nix.ca>
parents:
18256
diff
changeset
|
698 | |
|
12572
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
699 | #ifdef _WIN32 |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15567
diff
changeset
|
700 | winpidgin_init(hint); |
|
12572
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
701 | #endif |
|
a71b6aef215b
[gaim-migrate @ 14891]
Daniel Atallah <datallah@pidgin.im>
parents:
12562
diff
changeset
|
702 | |
|
16419
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
703 | if (migration_failed) |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
704 | { |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
705 | char *old = g_strconcat(purple_home_dir(), |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
706 | G_DIR_SEPARATOR_S ".gaim", NULL); |
|
16437
7ff7c3405ea2
Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents:
16419
diff
changeset
|
707 | const char *text = _( |
|
16446
3a6ed6c3400e
Fix the custom icon stuff, and various memory leaks. At this point, custom
Richard Laager <rlaager@pidgin.im>
parents:
16437
diff
changeset
|
708 | "%s encountered errors migrating your settings " |
|
16419
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
709 | "from %s to %s. Please investigate and complete the " |
| 16763 | 710 | "migration by hand. Please report this error at http://developer.pidgin.im"); |
|
16419
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
711 | GtkWidget *dialog; |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
712 | |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
713 | dialog = gtk_message_dialog_new(NULL, |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
714 | 0, |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
715 | GTK_MESSAGE_ERROR, |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
716 | GTK_BUTTONS_CLOSE, |
|
16446
3a6ed6c3400e
Fix the custom icon stuff, and various memory leaks. At this point, custom
Richard Laager <rlaager@pidgin.im>
parents:
16437
diff
changeset
|
717 | text, PIDGIN_NAME, |
|
3a6ed6c3400e
Fix the custom icon stuff, and various memory leaks. At this point, custom
Richard Laager <rlaager@pidgin.im>
parents:
16437
diff
changeset
|
718 | old, purple_user_dir()); |
|
16419
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
719 | g_free(old); |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
720 | |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
721 | g_signal_connect_swapped(dialog, "response", |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
722 | G_CALLBACK(gtk_main_quit), NULL); |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
723 | |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
724 | gtk_widget_show_all(dialog); |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
725 | |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
726 | gtk_main(); |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
727 | |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
728 | #ifdef HAVE_SIGNAL_H |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
729 | g_free(segfault_message); |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
730 | #endif |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
731 | return 0; |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
732 | } |
|
8a5a3e2cd3a7
Call the core migrate code.
Richard Laager <rlaager@pidgin.im>
parents:
16263
diff
changeset
|
733 | |
| 15884 | 734 | purple_core_set_ui_ops(pidgin_core_get_ui_ops()); |
| 735 | purple_eventloop_set_ui_ops(pidgin_eventloop_get_ui_ops()); | |
| 10302 | 736 | |
|
12342
da61b726d595
[gaim-migrate @ 14646]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12272
diff
changeset
|
737 | /* |
|
da61b726d595
[gaim-migrate @ 14646]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12272
diff
changeset
|
738 | * Set plugin search directories. Give priority to the plugins |
|
da61b726d595
[gaim-migrate @ 14646]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12272
diff
changeset
|
739 | * in user's home directory. |
|
da61b726d595
[gaim-migrate @ 14646]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12272
diff
changeset
|
740 | */ |
| 15884 | 741 | search_path = g_build_filename(purple_user_dir(), "plugins", NULL); |
| 742 | purple_plugins_add_search_path(search_path); | |
|
10447
887380ec66f5
[gaim-migrate @ 11712]
Mark Doliner <markdoliner@pidgin.im>
parents:
10433
diff
changeset
|
743 | g_free(search_path); |
| 15884 | 744 | purple_plugins_add_search_path(LIBDIR); |
|
10447
887380ec66f5
[gaim-migrate @ 11712]
Mark Doliner <markdoliner@pidgin.im>
parents:
10433
diff
changeset
|
745 | |
| 15884 | 746 | if (!purple_core_init(PIDGIN_UI)) { |
| 10302 | 747 | fprintf(stderr, |
|
16977
c9cb49bea66d
Change the PIDGIN_NAME stuff to allow translators to transliterate the
Richard Laager <rlaager@pidgin.im>
parents:
16967
diff
changeset
|
748 | "Initialization of the libpurple core failed. Dumping core.\n" |
| 10302 | 749 | "Please report this!\n"); |
|
16193
e27165dcba9b
Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents:
16158
diff
changeset
|
750 | #ifdef HAVE_SIGNAL_H |
|
e27165dcba9b
Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents:
16158
diff
changeset
|
751 | g_free(segfault_message); |
|
e27165dcba9b
Free segfault_message when Pidgin exits abnormally
Mark Doliner <markdoliner@pidgin.im>
parents:
16158
diff
changeset
|
752 | #endif |
| 10302 | 753 | abort(); |
| 754 | } | |
| 755 | ||
|
18207
e89bf4430ea6
Allow disabling check for single instance.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18191
diff
changeset
|
756 | if (opt_si && !purple_core_ensure_single_instance()) { |
|
17126
909c4e988d00
Added purple_core_quit to cleanup.
Gabriel Schulhof <nix@go-nix.ca>
parents:
17122
diff
changeset
|
757 | purple_core_quit(); |
|
17121
43d41f5ce17b
Alternative dbus_uniq implementation
Gabriel Schulhof <nix@go-nix.ca>
parents:
17104
diff
changeset
|
758 | #ifdef HAVE_SIGNAL_H |
|
43d41f5ce17b
Alternative dbus_uniq implementation
Gabriel Schulhof <nix@go-nix.ca>
parents:
17104
diff
changeset
|
759 | g_free(segfault_message); |
|
43d41f5ce17b
Alternative dbus_uniq implementation
Gabriel Schulhof <nix@go-nix.ca>
parents:
17104
diff
changeset
|
760 | #endif |
|
17124
f3952abcaad9
Whitespace fix in the dbus_uniq code.
Richard Laager <rlaager@pidgin.im>
parents:
17122
diff
changeset
|
761 | return 0; |
|
17122
5ba216aa4583
Style changes + removed unnecessary NULL checks.
Gabriel Schulhof <nix@go-nix.ca>
parents:
17121
diff
changeset
|
762 | } |
|
17121
43d41f5ce17b
Alternative dbus_uniq implementation
Gabriel Schulhof <nix@go-nix.ca>
parents:
17104
diff
changeset
|
763 | |
|
43d41f5ce17b
Alternative dbus_uniq implementation
Gabriel Schulhof <nix@go-nix.ca>
parents:
17104
diff
changeset
|
764 | |
| 15884 | 765 | /* TODO: Move blist loading into purple_blist_init() */ |
| 766 | purple_set_blist(purple_blist_new()); | |
| 767 | purple_blist_load(); | |
| 10302 | 768 | |
| 15884 | 769 | /* TODO: Move prefs loading into purple_prefs_init() */ |
| 770 | purple_prefs_load(); | |
| 771 | purple_prefs_update_old(); | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
772 | pidgin_prefs_update_old(); |
| 10302 | 773 | |
| 774 | /* load plugins we had when we quit */ | |
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
775 | purple_plugins_load_saved(PIDGIN_PREFS_ROOT "/plugins/loaded"); |
| 10302 | 776 | |
| 15884 | 777 | /* TODO: Move pounces loading into purple_pounces_init() */ |
| 778 | purple_pounces_load(); | |
| 10302 | 779 | |
|
15697
78ddac185d80
winpidgin warning fixes
Daniel Atallah <datallah@pidgin.im>
parents:
15578
diff
changeset
|
780 | |
| 15052 | 781 | /* HACK BY SEANEGAN: |
| 782 | * We've renamed prpl-oscar to prpl-aim and prpl-icq, accordingly. | |
| 783 | * Let's do that change right here... after everything's loaded, but | |
| 784 | * before anything has happened | |
| 785 | */ | |
| 15884 | 786 | for (accounts = purple_accounts_get_all(); accounts != NULL; accounts = accounts->next) { |
| 787 | PurpleAccount *account = accounts->data; | |
| 788 | if (!strcmp(purple_account_get_protocol_id(account), "prpl-oscar")) { | |
| 789 | if (isdigit(*purple_account_get_username(account))) | |
| 790 | purple_account_set_protocol_id(account, "prpl-icq"); | |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15567
diff
changeset
|
791 | else |
| 15884 | 792 | purple_account_set_protocol_id(account, "prpl-aim"); |
| 15052 | 793 | } |
| 794 | } | |
|
15697
78ddac185d80
winpidgin warning fixes
Daniel Atallah <datallah@pidgin.im>
parents:
15578
diff
changeset
|
795 | |
| 10302 | 796 | ui_main(); |
| 797 | ||
| 798 | #ifdef USE_SM | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
799 | pidgin_session_init(argv[0], opt_session_arg, opt_config_dir_arg); |
| 10302 | 800 | #endif |
| 801 | if (opt_session_arg != NULL) { | |
| 802 | g_free(opt_session_arg); | |
| 803 | opt_session_arg = NULL; | |
| 804 | } | |
| 805 | if (opt_config_dir_arg != NULL) { | |
| 806 | g_free(opt_config_dir_arg); | |
| 807 | opt_config_dir_arg = NULL; | |
| 808 | } | |
| 809 | ||
|
12011
85a627679414
[gaim-migrate @ 14304]
Mark Doliner <markdoliner@pidgin.im>
parents:
11928
diff
changeset
|
810 | /* |
|
85a627679414
[gaim-migrate @ 14304]
Mark Doliner <markdoliner@pidgin.im>
parents:
11928
diff
changeset
|
811 | * We want to show the blist early in the init process so the |
|
85a627679414
[gaim-migrate @ 14304]
Mark Doliner <markdoliner@pidgin.im>
parents:
11928
diff
changeset
|
812 | * user feels warm and fuzzy (not cold and prickley). |
|
85a627679414
[gaim-migrate @ 14304]
Mark Doliner <markdoliner@pidgin.im>
parents:
11928
diff
changeset
|
813 | */ |
| 15884 | 814 | purple_blist_show(); |
|
12011
85a627679414
[gaim-migrate @ 14304]
Mark Doliner <markdoliner@pidgin.im>
parents:
11928
diff
changeset
|
815 | |
|
16123
8b98683319e7
Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16071
diff
changeset
|
816 | if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/debug/enabled")) |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
817 | pidgin_debug_window_show(); |
| 10302 | 818 | |
| 819 | if (opt_login) { | |
|
17719
8070b1610abe
Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17105
diff
changeset
|
820 | /* disable all accounts */ |
|
8070b1610abe
Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17105
diff
changeset
|
821 | for (accounts = purple_accounts_get_all(); accounts != NULL; accounts = accounts->next) { |
|
8070b1610abe
Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17105
diff
changeset
|
822 | PurpleAccount *account = accounts->data; |
|
8070b1610abe
Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17105
diff
changeset
|
823 | purple_account_set_enabled(account, PIDGIN_UI, FALSE); |
|
8070b1610abe
Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17105
diff
changeset
|
824 | } |
|
8070b1610abe
Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17105
diff
changeset
|
825 | /* honor the startup status preference */ |
|
8070b1610abe
Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17105
diff
changeset
|
826 | if (!purple_prefs_get_bool("/purple/savedstatus/startup_current_status")) |
|
8070b1610abe
Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17105
diff
changeset
|
827 | purple_savedstatus_activate(purple_savedstatus_get_startup()); |
|
8070b1610abe
Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17105
diff
changeset
|
828 | /* now enable the requested ones */ |
|
8070b1610abe
Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17105
diff
changeset
|
829 | dologin_named(opt_login_arg); |
| 10302 | 830 | if (opt_login_arg != NULL) { |
| 831 | g_free(opt_login_arg); | |
| 832 | opt_login_arg = NULL; | |
| 833 | } | |
| 834 | } | |
| 835 | ||
|
17719
8070b1610abe
Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17105
diff
changeset
|
836 | if (opt_nologin && !opt_login) |
|
11806
269e9f78cf89
[gaim-migrate @ 14097]
Mark Doliner <markdoliner@pidgin.im>
parents:
11795
diff
changeset
|
837 | { |
|
269e9f78cf89
[gaim-migrate @ 14097]
Mark Doliner <markdoliner@pidgin.im>
parents:
11795
diff
changeset
|
838 | /* Set all accounts to "offline" */ |
| 15884 | 839 | PurpleSavedStatus *saved_status; |
|
13111
31caa48825f7
[gaim-migrate @ 15472]
Mark Doliner <markdoliner@pidgin.im>
parents:
13106
diff
changeset
|
840 | |
|
31caa48825f7
[gaim-migrate @ 15472]
Mark Doliner <markdoliner@pidgin.im>
parents:
13106
diff
changeset
|
841 | /* If we've used this type+message before, lookup the transient status */ |
| 15884 | 842 | saved_status = purple_savedstatus_find_transient_by_type_and_message( |
| 843 | PURPLE_STATUS_OFFLINE, NULL); | |
|
13111
31caa48825f7
[gaim-migrate @ 15472]
Mark Doliner <markdoliner@pidgin.im>
parents:
13106
diff
changeset
|
844 | |
|
31caa48825f7
[gaim-migrate @ 15472]
Mark Doliner <markdoliner@pidgin.im>
parents:
13106
diff
changeset
|
845 | /* If this type+message is unique then create a new transient saved status */ |
|
31caa48825f7
[gaim-migrate @ 15472]
Mark Doliner <markdoliner@pidgin.im>
parents:
13106
diff
changeset
|
846 | if (saved_status == NULL) |
| 15884 | 847 | saved_status = purple_savedstatus_new(NULL, PURPLE_STATUS_OFFLINE); |
|
13111
31caa48825f7
[gaim-migrate @ 15472]
Mark Doliner <markdoliner@pidgin.im>
parents:
13106
diff
changeset
|
848 | |
|
31caa48825f7
[gaim-migrate @ 15472]
Mark Doliner <markdoliner@pidgin.im>
parents:
13106
diff
changeset
|
849 | /* Set the status for each account */ |
| 15884 | 850 | purple_savedstatus_activate(saved_status); |
|
11806
269e9f78cf89
[gaim-migrate @ 14097]
Mark Doliner <markdoliner@pidgin.im>
parents:
11795
diff
changeset
|
851 | } |
|
17719
8070b1610abe
Make -l do something slightly more sane than it does now, even though it
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
17105
diff
changeset
|
852 | else if (!opt_login) |
|
10738
63ca8277c234
[gaim-migrate @ 12340]
Mark Doliner <markdoliner@pidgin.im>
parents:
10638
diff
changeset
|
853 | { |
|
11348
b8938b189d61
[gaim-migrate @ 13565]
Mark Doliner <markdoliner@pidgin.im>
parents:
11277
diff
changeset
|
854 | /* Everything is good to go--sign on already */ |
|
16478
19107605c565
Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents:
16263
diff
changeset
|
855 | if (!purple_prefs_get_bool("/purple/savedstatus/startup_current_status")) |
| 15884 | 856 | purple_savedstatus_activate(purple_savedstatus_get_startup()); |
| 857 | purple_accounts_restore_current_statuses(); | |
|
10738
63ca8277c234
[gaim-migrate @ 12340]
Mark Doliner <markdoliner@pidgin.im>
parents:
10638
diff
changeset
|
858 | } |
| 10302 | 859 | |
|
18121
2d8ea56b9097
Mark the return type const for the following functions. I noticed this
Richard Laager <rlaager@pidgin.im>
parents:
18093
diff
changeset
|
860 | if ((active_accounts = purple_accounts_get_all_active()) == NULL) |
|
11403
e7e7ed37dc51
[gaim-migrate @ 13638]
Mark Doliner <markdoliner@pidgin.im>
parents:
11348
diff
changeset
|
861 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15498
diff
changeset
|
862 | pidgin_accounts_window_show(); |
| 10315 | 863 | } |
| 13835 | 864 | else |
| 865 | { | |
|
18121
2d8ea56b9097
Mark the return type const for the following functions. I noticed this
Richard Laager <rlaager@pidgin.im>
parents:
18093
diff
changeset
|
866 | g_list_free(active_accounts); |
| 13835 | 867 | } |
| 10302 | 868 | |
| 869 | #ifdef HAVE_STARTUP_NOTIFICATION | |
| 870 | startup_notification_complete(); | |
| 871 | #endif | |
|
14762
f494a5f12981
[gaim-migrate @ 17452]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
872 | |
|
f494a5f12981
[gaim-migrate @ 17452]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
873 | #ifdef _WIN32 |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15567
diff
changeset
|
874 | winpidgin_post_init(); |
|
14762
f494a5f12981
[gaim-migrate @ 17452]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
875 | #endif |
|
f494a5f12981
[gaim-migrate @ 17452]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
876 | |
| 10302 | 877 | gtk_main(); |
|
10320
f5b0f5cf8562
[gaim-migrate @ 11527]
Mark Doliner <markdoliner@pidgin.im>
parents:
10317
diff
changeset
|
878 | |
|
13428
78687459c64b
[gaim-migrate @ 15802]
Daniel Atallah <datallah@pidgin.im>
parents:
13322
diff
changeset
|
879 | #ifdef HAVE_SIGNAL_H |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
880 | g_free(segfault_message); |
|
12562
adbcee61068b
[gaim-migrate @ 14881]
Daniel Atallah <datallah@pidgin.im>
parents:
12556
diff
changeset
|
881 | #endif |
|
12556
f4d4e4e3a825
[gaim-migrate @ 14875]
Richard Laager <rlaager@pidgin.im>
parents:
12409
diff
changeset
|
882 | |
| 10302 | 883 | #ifdef _WIN32 |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15567
diff
changeset
|
884 | winpidgin_cleanup(); |
| 10302 | 885 | #endif |
| 886 | ||
| 887 | return 0; | |
| 888 | } |