Sat, 05 Jul 2003 21:54:19 +0000
[gaim-migrate @ 6485]
gaim_request_input() now takes a masked bool, which, if enabled, masks the
text on the entry field so that it cannot be seen. Good for password input
requests, and what do you know, that's why this is written!
| 4489 | 1 | /* |
| 2 | * gaim | |
| 3 | * | |
| 4 | * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
| 5 | * | |
| 6 | * This program is free software; you can redistribute it and/or modify | |
| 7 | * it under the terms of the GNU General Public License as published by | |
| 8 | * the Free Software Foundation; either version 2 of the License, or | |
| 9 | * (at your option) any later version. | |
| 10 | * | |
| 11 | * This program is distributed in the hope that it will be useful, | |
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | * GNU General Public License for more details. | |
| 15 | * | |
| 16 | * You should have received a copy of the GNU General Public License | |
| 17 | * along with this program; if not, write to the Free Software | |
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 19 | * | |
| 20 | */ | |
| 21 | ||
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
22 | #include "internal.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
23 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
24 | #include "account.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
25 | #include "conversation.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
26 | #include "debug.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
27 | #include "ft.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
28 | #include "log.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
29 | #include "notify.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
30 | #include "prefs.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
31 | #include "prpl.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
32 | #include "pounce.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
33 | #include "sound.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
34 | #include "util.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
35 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
36 | //#include "gaim.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
37 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
38 | #include "gtkaccount.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
39 | #include "gtkblist.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
40 | #include "gtkconn.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
41 | #include "gtkconv.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
42 | #include "gtkdebug.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
43 | #include "gtkft.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
44 | #include "gtknotify.h" |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5874
diff
changeset
|
45 | #include "gtkpounce.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
46 | #include "gtkprefs.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
47 | #include "gtkrequest.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
48 | #include "gtksound.h" |
|
5943
8a052155157a
[gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents:
5909
diff
changeset
|
49 | #include "gtkutils.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
50 | #include "stock.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
51 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
52 | #include "ui.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
53 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
54 | #if HAVE_SIGNAL_H |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
55 | # include <signal.h> |
| 4489 | 56 | #endif |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
57 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
58 | #include "locale.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
59 | #include <getopt.h> |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
60 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
61 | #if 0 |
| 4489 | 62 | #ifdef GAIM_PLUGINS |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
63 | # ifndef _WIN32 |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
64 | # include <dlfcn.h> |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
65 | # endif |
| 4489 | 66 | #endif /* GAIM_PLUGINS */ |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
67 | |
| 4489 | 68 | #include <gtk/gtk.h> |
| 69 | #ifndef _WIN32 | |
| 70 | #include <gdk/gdkx.h> | |
| 71 | #include <unistd.h> | |
| 72 | #include <sys/socket.h> | |
| 73 | #include <netinet/in.h> | |
| 74 | #include <arpa/inet.h> | |
| 75 | #include <sys/un.h> | |
| 76 | #include <sys/wait.h> | |
| 77 | #endif /* !_WIN32 */ | |
| 78 | #include <gdk/gdk.h> | |
| 79 | #include <sys/types.h> | |
| 80 | #include <sys/stat.h> | |
| 81 | #include <errno.h> | |
| 82 | #include <stdio.h> | |
| 83 | #include <string.h> | |
| 84 | #include <stdarg.h> | |
| 85 | #include <stdlib.h> | |
| 86 | #include <ctype.h> | |
| 87 | #include "prpl.h" | |
| 4561 | 88 | #include "sound.h" |
| 5684 | 89 | #include "gtksound.h" |
| 4489 | 90 | #include "gaim.h" |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
91 | #include "account.h" |
| 5440 | 92 | #include "prefs.h" |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
93 | #include "notify.h" |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
94 | #include "gtkaccount.h" |
|
5228
83adaad2deb1
[gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
95 | #include "gtkblist.h" |
| 5717 | 96 | #include "gtkconn.h" |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
97 | #include "gtkdebug.h" |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
98 | #include "gtknotify.h" |
|
5492
1255515dfed4
[gaim-migrate @ 5888]
Christian Hammond <chipx86@chipx86.com>
parents:
5480
diff
changeset
|
99 | #include "gtkrequest.h" |
| 5684 | 100 | #include "gtksound.h" |
| 4489 | 101 | #if HAVE_SIGNAL_H |
| 102 | #include <signal.h> | |
| 103 | #endif | |
| 104 | #include "locale.h" | |
| 105 | #include <getopt.h> | |
| 106 | ||
| 107 | #ifdef _WIN32 | |
| 108 | #include "win32dep.h" | |
| 109 | #endif | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
110 | #endif |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
111 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
112 | extern void load_prefs(); |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
113 | extern void load_pounces(); |
| 4489 | 114 | |
| 115 | static GtkWidget *name; | |
| 116 | static GtkWidget *pass; | |
| 117 | ||
| 118 | GSList *away_messages = NULL; | |
| 119 | GSList *message_queue = NULL; | |
| 120 | GSList *unread_message_queue = NULL; | |
| 121 | GSList *away_time_queue = NULL; | |
| 122 | ||
| 123 | GtkWidget *mainwindow = NULL; | |
| 124 | ||
| 4561 | 125 | |
| 4489 | 126 | int opt_away = 0; |
| 4687 | 127 | int docklet_count = 0; |
| 4489 | 128 | char *opt_away_arg = NULL; |
| 129 | char *opt_rcfile_arg = NULL; | |
| 130 | int opt_debug = 0; | |
| 131 | #ifdef _WIN32 | |
| 132 | int opt_gdebug = 0; | |
| 133 | #endif | |
| 134 | ||
| 135 | #if HAVE_SIGNAL_H | |
| 136 | /* | |
| 137 | * Lists of signals we wish to catch and those we wish to ignore. | |
| 138 | * Each list terminated with -1 | |
| 139 | */ | |
| 140 | static int catch_sig_list[] = { | |
| 141 | SIGSEGV, | |
| 142 | SIGHUP, | |
| 143 | SIGINT, | |
| 144 | SIGTERM, | |
| 145 | SIGQUIT, | |
| 146 | SIGCHLD, | |
| 147 | -1 | |
| 148 | }; | |
| 149 | ||
| 150 | static int ignore_sig_list[] = { | |
| 151 | SIGPIPE, | |
| 152 | -1 | |
| 153 | }; | |
| 154 | #endif | |
| 155 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
156 | STATIC_PROTO_INIT |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
157 | |
| 4489 | 158 | void do_quit() |
| 159 | { | |
| 160 | /* captain's log, stardate... */ | |
| 161 | system_log(log_quit, NULL, NULL, OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); | |
| 162 | ||
| 163 | /* the self destruct sequence has been initiated */ | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
164 | gaim_event_broadcast(event_quit); |
| 4489 | 165 | |
| 166 | /* transmission ends */ | |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
167 | gaim_connections_disconnect_all(); |
| 4489 | 168 | |
| 169 | /* record what we have before we blow it away... */ | |
| 5534 | 170 | gaim_prefs_sync(); |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
171 | gaim_accounts_sync(); |
| 4489 | 172 | |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
173 | gaim_debug(GAIM_DEBUG_INFO, "main", "Unloading all plugins\n"); |
|
5242
155da5e9bbf0
[gaim-migrate @ 5613]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
174 | gaim_plugins_destroy_all(); |
| 4489 | 175 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
176 | /* XXX */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
177 | #if 0 |
| 4489 | 178 | #ifdef USE_PERL |
| 179 | /* yup, perl too */ | |
| 180 | perl_end(); | |
| 181 | #endif | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
182 | #endif |
| 4489 | 183 | |
| 184 | #ifdef USE_SM | |
| 185 | /* unplug */ | |
| 186 | session_end(); | |
| 187 | #endif | |
| 188 | ||
| 189 | /* and end it all... */ | |
| 190 | gtk_main_quit(); | |
| 191 | } | |
| 192 | ||
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
193 | |
| 4561 | 194 | static guint snd_tmout = 0; |
| 4489 | 195 | static gboolean sound_timeout(gpointer data) |
| 196 | { | |
| 5684 | 197 | gaim_gtk_sound_set_login_mute(FALSE); |
| 4561 | 198 | snd_tmout = 0; |
| 4489 | 199 | return FALSE; |
| 200 | } | |
| 201 | ||
| 202 | /* we need to do this for Oscar because serv_login only starts the login | |
| 203 | * process, it doesn't end there. gaim_setup will be called later from | |
| 204 | * oscar.c, after the buddy list is made and serv_finish_login is called */ | |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
205 | void gaim_setup(GaimConnection *gc) |
| 4489 | 206 | { |
| 5734 | 207 | if (gaim_prefs_get_bool("/gaim/gtk/sound/enabled/login") |
| 208 | && gaim_prefs_get_bool("/gaim/gtk/sound/silent_signon")) { | |
| 4561 | 209 | if(snd_tmout) { |
| 210 | g_source_remove(snd_tmout); | |
| 211 | } | |
| 5684 | 212 | gaim_gtk_sound_set_login_mute(TRUE); |
| 4489 | 213 | snd_tmout = g_timeout_add(10000, sound_timeout, NULL); |
| 214 | } | |
| 215 | } | |
| 216 | ||
| 217 | static gboolean domiddleclick(GtkWidget *w, GdkEventButton *event, gpointer null) | |
| 218 | { | |
| 219 | if (event->button != 2) | |
| 220 | return FALSE; | |
| 221 | ||
|
5780
c2388268514e
[gaim-migrate @ 6205]
Christian Hammond <chipx86@chipx86.com>
parents:
5766
diff
changeset
|
222 | gaim_accounts_auto_login(GAIM_GTK_UI); |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
223 | |
| 4489 | 224 | return TRUE; |
| 225 | } | |
| 226 | ||
| 227 | static void dologin(GtkWidget *widget, GtkWidget *w) | |
| 228 | { | |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
229 | GaimAccount *account; |
| 4489 | 230 | const char *username = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(name)->entry)); |
| 231 | const char *password = gtk_entry_get_text(GTK_ENTRY(pass)); | |
| 232 | ||
| 233 | if (!strlen(username)) { | |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
234 | gaim_notify_error(NULL, NULL, _("Please enter your login."), NULL); |
| 4489 | 235 | return; |
| 236 | } | |
| 237 | ||
| 238 | /* if there is more than one user of the same name, then fuck | |
| 239 | * them, they just have to use the account editor to sign in | |
| 240 | * the second one */ | |
| 241 | ||
|
5874
5e19273d3c6f
[gaim-migrate @ 6306]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
242 | account = gaim_accounts_find(username, -1); |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
243 | if (!account) { |
|
5943
8a052155157a
[gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents:
5909
diff
changeset
|
244 | account = gaim_account_new(username, "prpl-oscar"); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
245 | |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
246 | gaim_account_set_remember_password(account, TRUE); |
|
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
247 | } |
|
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
248 | |
|
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
249 | gaim_account_set_password(account, password); |
|
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
250 | |
|
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
251 | gaim_account_connect(account); |
| 4489 | 252 | } |
| 253 | ||
| 254 | /* <name> is a comma-separated list of names, or NULL | |
| 255 | if NULL and there is at least one user defined in .gaimrc, try to login. | |
| 256 | if not NULL, parse <name> into separate strings, look up each one in | |
| 257 | .gaimrc and, if it's there, try to login. | |
| 258 | returns: 0 if successful | |
| 259 | -1 if no user was found that had a saved password | |
| 260 | */ | |
| 261 | static int dologin_named(char *name) | |
| 262 | { | |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
263 | GaimAccount *account; |
| 4489 | 264 | char **names, **n; |
| 265 | int retval = -1; | |
| 266 | ||
| 267 | if (name !=NULL) { /* list of names given */ | |
| 268 | names = g_strsplit(name, ",", 32); | |
| 269 | for (n = names; *n != NULL; n++) { | |
|
5874
5e19273d3c6f
[gaim-migrate @ 6306]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
270 | account = gaim_accounts_find(*n, -1); |
| 4491 | 271 | if (account) { /* found a user */ |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
272 | if (gaim_account_get_remember_password(account)) { |
| 4489 | 273 | retval = 0; |
| 4491 | 274 | serv_login(account); |
| 4489 | 275 | } |
| 276 | } | |
| 277 | } | |
| 278 | g_strfreev(names); | |
| 279 | } else { /* no name given, use default */ | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5573
diff
changeset
|
280 | account = (GaimAccount *)gaim_accounts_get_all()->data; |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
281 | |
|
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
282 | if (gaim_account_get_remember_password(account)) { |
| 4489 | 283 | retval = 0; |
| 4491 | 284 | serv_login(account); |
| 4489 | 285 | } |
| 286 | } | |
| 287 | ||
| 288 | return retval; | |
| 289 | } | |
| 290 | ||
| 291 | ||
| 292 | static void doenter(GtkWidget *widget, GtkWidget *w) | |
| 293 | { | |
| 294 | if (widget == name) { | |
| 295 | gtk_entry_set_text(GTK_ENTRY(pass), ""); | |
| 4635 | 296 | gtk_editable_select_region(GTK_EDITABLE(GTK_COMBO(name)->entry), 0, 0); |
| 4489 | 297 | gtk_widget_grab_focus(pass); |
| 298 | } else if (widget == pass) { | |
| 299 | dologin(widget, w); | |
| 300 | } | |
| 301 | } | |
| 302 | ||
| 303 | ||
| 304 | static void combo_changed(GtkWidget *w, GtkWidget *combo) | |
| 305 | { | |
| 306 | const char *txt = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(combo)->entry)); | |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
307 | GaimAccount *account; |
| 4489 | 308 | |
|
5874
5e19273d3c6f
[gaim-migrate @ 6306]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
309 | account = gaim_accounts_find(txt, -1); |
| 4489 | 310 | |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
311 | if (account && gaim_account_get_remember_password(account)) { |
| 4491 | 312 | gtk_entry_set_text(GTK_ENTRY(pass), account->password); |
| 4489 | 313 | } else { |
| 314 | gtk_entry_set_text(GTK_ENTRY(pass), ""); | |
| 315 | } | |
| 316 | } | |
| 317 | ||
| 318 | ||
| 319 | static GList *combo_user_names() | |
| 320 | { | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5573
diff
changeset
|
321 | GList *accts = gaim_accounts_get_all(); |
| 4489 | 322 | GList *tmp = NULL; |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
323 | GaimAccount *account; |
| 4489 | 324 | |
| 4491 | 325 | if (!accts) |
| 4489 | 326 | return g_list_append(NULL, _("<New User>")); |
| 327 | ||
| 4491 | 328 | while (accts) { |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
329 | account = (GaimAccount *)accts->data; |
| 4491 | 330 | tmp = g_list_append(tmp, account->username); |
| 331 | accts = accts->next; | |
| 4489 | 332 | } |
| 333 | ||
| 334 | return tmp; | |
| 335 | } | |
| 336 | ||
| 337 | static void login_window_closed(GtkWidget *w, GdkEvent *ev, gpointer d) | |
| 338 | { | |
| 339 | if(docklet_count) { | |
|
4880
d161e86c25e9
[gaim-migrate @ 5210]
Herman Bloggs <herman@bluedigits.com>
parents:
4800
diff
changeset
|
340 | #ifdef _WIN32 |
| 4489 | 341 | wgaim_systray_minimize(mainwindow); |
| 342 | #endif | |
| 343 | gtk_widget_hide(mainwindow); | |
| 344 | } else | |
| 345 | do_quit(); | |
| 346 | } | |
| 347 | ||
| 348 | void show_login() | |
| 349 | { | |
| 350 | GtkWidget *image; | |
| 351 | GtkWidget *vbox; | |
| 352 | GtkWidget *button; | |
| 353 | GtkWidget *hbox; | |
| 354 | GtkWidget *label; | |
| 355 | GtkWidget *vbox2; | |
| 356 | GList *tmp; | |
| 357 | ||
| 358 | /* Do we already have a main window opened? If so, bring it back, baby... ribs... yeah */ | |
| 359 | if (mainwindow) { | |
| 360 | gtk_window_present(GTK_WINDOW(mainwindow)); | |
| 361 | return; | |
| 362 | } | |
| 363 | ||
| 364 | mainwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
| 365 | ||
| 366 | gtk_window_set_role(GTK_WINDOW(mainwindow), "login"); | |
| 4635 | 367 | gtk_window_set_resizable(GTK_WINDOW(mainwindow), FALSE); |
| 4703 | 368 | gtk_window_set_title(GTK_WINDOW(mainwindow), _("Login")); |
| 4489 | 369 | gtk_widget_realize(mainwindow); |
| 370 | gdk_window_set_group(mainwindow->window, mainwindow->window); | |
| 371 | gtk_container_set_border_width(GTK_CONTAINER(mainwindow), 5); | |
| 372 | g_signal_connect(G_OBJECT(mainwindow), "delete_event", | |
| 373 | G_CALLBACK(login_window_closed), mainwindow); | |
| 374 | ||
| 375 | vbox = gtk_vbox_new(FALSE, 0); | |
| 376 | gtk_container_add(GTK_CONTAINER(mainwindow), vbox); | |
| 377 | ||
|
5024
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4978
diff
changeset
|
378 | image = gtk_image_new_from_stock(GAIM_STOCK_LOGO, gtk_icon_size_from_name(GAIM_ICON_SIZE_LOGO)); |
| 4489 | 379 | gtk_box_pack_start(GTK_BOX(vbox), image, FALSE, FALSE, 0); |
| 380 | ||
| 381 | vbox2 = gtk_vbox_new(FALSE, 0); | |
| 382 | gtk_container_set_border_width(GTK_CONTAINER(vbox2), 5); | |
| 383 | ||
| 384 | label = gtk_label_new(_("Screen Name:")); | |
| 385 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
| 386 | gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 0); | |
| 387 | ||
| 388 | name = gtk_combo_new(); | |
| 389 | tmp = combo_user_names(); | |
| 390 | gtk_combo_set_popdown_strings(GTK_COMBO(name), tmp); | |
| 391 | g_list_free(tmp); | |
| 392 | g_signal_connect(G_OBJECT(GTK_COMBO(name)->entry), "activate", | |
| 393 | G_CALLBACK(doenter), mainwindow); | |
| 394 | g_signal_connect(G_OBJECT(GTK_COMBO(name)->entry), "changed", | |
| 395 | G_CALLBACK(combo_changed), name); | |
| 396 | gtk_box_pack_start(GTK_BOX(vbox2), name, FALSE, TRUE, 0); | |
| 397 | gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, TRUE, 0); | |
| 398 | ||
| 399 | vbox2 = gtk_vbox_new(FALSE, 0); | |
| 400 | gtk_container_set_border_width(GTK_CONTAINER(vbox2), 5); | |
| 401 | ||
| 402 | label = gtk_label_new(_("Password:")); | |
| 403 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
| 404 | gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 0); | |
| 405 | ||
| 406 | pass = gtk_entry_new(); | |
| 407 | gtk_entry_set_visibility(GTK_ENTRY(pass), FALSE); | |
| 408 | g_signal_connect(G_OBJECT(pass), "activate", | |
| 409 | G_CALLBACK(doenter), mainwindow); | |
| 410 | gtk_box_pack_start(GTK_BOX(vbox2), pass, FALSE, TRUE, 0); | |
| 411 | gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, TRUE, 0); | |
| 412 | ||
| 413 | /* Now for the button box */ | |
| 414 | hbox = gtk_hbox_new(TRUE, 0); | |
| 415 | gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 5); | |
| 416 | ||
| 417 | /* And now for the buttons */ | |
|
5024
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4978
diff
changeset
|
418 | button = gaim_pixbuf_button_from_stock(_("Accounts"), GAIM_STOCK_ACCOUNTS, GAIM_BUTTON_VERTICAL); |
| 4489 | 419 | gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); |
| 420 | g_signal_connect(G_OBJECT(button), "clicked", | |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
421 | G_CALLBACK(gaim_gtk_account_dialog_show), mainwindow); |
| 4489 | 422 | gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
| 423 | ||
| 424 | #ifdef NO_MULTI | |
| 425 | gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); | |
| 426 | #endif | |
| 427 | ||
|
5024
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4978
diff
changeset
|
428 | button = gaim_pixbuf_button_from_stock(_("Preferences"), GTK_STOCK_PREFERENCES, GAIM_BUTTON_VERTICAL); |
| 4489 | 429 | gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); |
| 430 | g_signal_connect(G_OBJECT(button), "clicked", | |
|
5530
ba1ad464b56f
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5492
diff
changeset
|
431 | G_CALLBACK(gaim_gtk_prefs_show), mainwindow); |
| 4489 | 432 | gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
| 433 | ||
|
5024
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4978
diff
changeset
|
434 | button = gaim_pixbuf_button_from_stock(_("Sign On"), GAIM_STOCK_SIGN_ON, GAIM_BUTTON_VERTICAL); |
| 4489 | 435 | gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); |
| 436 | g_signal_connect(G_OBJECT(button), "clicked", | |
| 437 | G_CALLBACK(dologin), mainwindow); | |
| 438 | g_signal_connect(G_OBJECT(button), "button-press-event", G_CALLBACK(domiddleclick), NULL); | |
| 439 | gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
| 440 | ||
| 441 | /* Now grab the focus that we need */ | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5573
diff
changeset
|
442 | if (gaim_accounts_get_all()) { |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5573
diff
changeset
|
443 | GaimAccount *account = gaim_accounts_get_all()->data; |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
444 | |
|
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
445 | if (gaim_account_get_remember_password(account)) { |
| 4489 | 446 | combo_changed(NULL, name); |
| 447 | gtk_widget_grab_focus(button); | |
| 448 | } else { | |
| 449 | gtk_widget_grab_focus(pass); | |
| 450 | } | |
| 451 | } else { | |
| 452 | gtk_widget_grab_focus(name); | |
| 453 | } | |
| 454 | ||
| 455 | /* And raise the curtain! */ | |
| 456 | gtk_widget_show_all(mainwindow); | |
| 457 | ||
| 458 | } | |
| 459 | ||
| 460 | #if HAVE_SIGNAL_H | |
| 461 | void sighandler(int sig) | |
| 462 | { | |
| 463 | switch (sig) { | |
| 464 | case SIGHUP: | |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
465 | gaim_debug(GAIM_DEBUG_WARNING, "sighandler", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
466 | "Caught signal %d\n", sig); |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
467 | gaim_connections_disconnect_all(); |
| 4489 | 468 | break; |
| 469 | case SIGSEGV: | |
| 470 | #ifndef DEBUG | |
| 471 | fprintf(stderr, "Gaim has segfaulted and attempted to dump a core file.\n" | |
| 472 | "This is a bug in the software and has happened through\n" | |
| 473 | "no fault of your own.\n\n" | |
| 474 | "It is possible that this bug is already fixed in CVS.\n" | |
| 5747 | 475 | "If you can reproduce the crash, please notify the gaim\n" |
| 476 | "maintainers by reporting a bug at\n" | |
| 4489 | 477 | WEBSITE "bug.php\n\n" |
| 478 | "Please make sure to specify what you were doing at the time,\n" | |
| 479 | "and post the backtrace from the core file. If you do not know\n" | |
| 480 | "how to get the backtrace, please get instructions at\n" | |
| 481 | WEBSITE "gdb.php. If you need further\n" | |
| 482 | "assistance, please IM either RobFlynn or SeanEgn and\n" | |
| 483 | "they can help you.\n"); | |
| 484 | #else | |
| 485 | fprintf(stderr, "Oh no! Segmentation fault!\n"); | |
| 4703 | 486 | /*g_on_error_query (g_get_prgname());*/ |
| 4489 | 487 | #endif |
| 488 | abort(); | |
| 489 | break; | |
| 490 | case SIGCHLD: | |
| 491 | clean_pid(); | |
| 492 | #if HAVE_SIGNAL_H | |
| 493 | signal(SIGCHLD, sighandler); /* restore signal catching on this one! */ | |
| 494 | #endif | |
| 495 | break; | |
| 496 | default: | |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
497 | gaim_debug(GAIM_DEBUG_WARNING, "sighandler", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
498 | "Caught signal %d\n", sig); |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
499 | gaim_connections_disconnect_all(); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
500 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
501 | gaim_plugins_unload_all(); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
502 | |
| 4489 | 503 | if (gtk_main_level()) |
| 504 | gtk_main_quit(); | |
| 505 | exit(0); | |
| 506 | } | |
| 507 | } | |
| 508 | #endif | |
| 509 | ||
| 510 | static int ui_main() | |
| 511 | { | |
| 512 | #ifndef _WIN32 | |
| 513 | GList *icons = NULL; | |
| 514 | GdkPixbuf *icon = NULL; | |
| 515 | char *icon_path; | |
| 516 | #endif | |
|
4978
a9b21b98aa1f
[gaim-migrate @ 5313]
Robert McQueen <robot101@debian.org>
parents:
4957
diff
changeset
|
517 | |
| 4489 | 518 | if (current_smiley_theme == NULL) { |
| 519 | smiley_theme_probe(); | |
| 520 | if (smiley_themes) { | |
| 521 | struct smiley_theme *smile = smiley_themes->data; | |
| 522 | load_smiley_theme(smile->path, TRUE); | |
| 523 | } | |
| 524 | } | |
| 525 | ||
| 5422 | 526 | gaim_gtk_blist_setup_sort_methods(); |
| 4489 | 527 | |
| 528 | #ifndef _WIN32 | |
| 529 | /* use the nice PNG icon for all the windows */ | |
|
5024
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4978
diff
changeset
|
530 | icon_path = g_build_filename(DATADIR, "pixmaps", "gaim", "icons", "online.png", NULL); |
| 4489 | 531 | icon = gdk_pixbuf_new_from_file(icon_path, NULL); |
| 532 | g_free(icon_path); | |
| 533 | if (icon) { | |
| 534 | icons = g_list_append(icons,icon); | |
| 535 | gtk_window_set_default_icon_list(icons); | |
| 536 | g_object_unref(G_OBJECT(icon)); | |
|
4978
a9b21b98aa1f
[gaim-migrate @ 5313]
Robert McQueen <robot101@debian.org>
parents:
4957
diff
changeset
|
537 | g_list_free(icons); |
| 4489 | 538 | } else { |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
539 | gaim_debug(GAIM_DEBUG_ERROR, "ui_main", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
540 | "Failed to load the default window icon!\n"); |
| 4489 | 541 | } |
| 542 | #endif | |
|
4978
a9b21b98aa1f
[gaim-migrate @ 5313]
Robert McQueen <robot101@debian.org>
parents:
4957
diff
changeset
|
543 | |
| 4489 | 544 | return 0; |
| 545 | } | |
| 546 | ||
| 547 | static void set_first_user(char *name) | |
| 548 | { | |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
549 | GaimAccount *account; |
| 4489 | 550 | |
|
5874
5e19273d3c6f
[gaim-migrate @ 6306]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
551 | account = gaim_accounts_find(name, -1); |
| 4489 | 552 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5573
diff
changeset
|
553 | if (account == NULL) /* new user */ |
|
5943
8a052155157a
[gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents:
5909
diff
changeset
|
554 | account = gaim_account_new(name, "prpl-oscar"); |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5573
diff
changeset
|
555 | |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5573
diff
changeset
|
556 | /* Place it as the first user. */ |
|
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5573
diff
changeset
|
557 | gaim_accounts_reorder(account, 0); |
| 4489 | 558 | } |
| 559 | ||
| 560 | #ifdef _WIN32 | |
| 561 | /* WIN32 print and log handlers */ | |
| 562 | ||
| 563 | static void gaim_dummy_print( const gchar* string ) { | |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
564 | return; |
| 4489 | 565 | } |
| 566 | ||
| 567 | static void gaim_dummy_log_handler (const gchar *domain, | |
| 568 | GLogLevelFlags flags, | |
| 569 | const gchar *msg, | |
| 570 | gpointer user_data) { | |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
571 | return; |
| 4489 | 572 | } |
| 573 | ||
| 574 | static void gaim_log_handler (const gchar *domain, | |
| 575 | GLogLevelFlags flags, | |
| 576 | const gchar *msg, | |
| 577 | gpointer user_data) { | |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
578 | gaim_debug(GAIM_DEBUG_MISC, "log", "%s - %s\n", domain, msg); |
| 4489 | 579 | g_log_default_handler(domain, flags, msg, user_data); |
| 580 | } | |
| 581 | #endif /* _WIN32 */ | |
| 582 | ||
| 583 | /* FUCKING GET ME A TOWEL! */ | |
| 584 | #ifdef _WIN32 | |
| 585 | int gaim_main(int argc, char *argv[]) | |
| 586 | #else | |
| 587 | int main(int argc, char *argv[]) | |
| 588 | #endif | |
| 589 | { | |
| 590 | int opt_acct = 0, opt_help = 0, opt_version = 0, opt_login = 0, opt_nologin = 0, dologin_ret = -1; | |
| 591 | char *opt_user_arg = NULL, *opt_login_arg = NULL; | |
| 592 | char *opt_session_arg = NULL; | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
593 | char *plugin_search_paths[3]; |
| 4489 | 594 | #if HAVE_SIGNAL_H |
| 595 | int sig_indx; /* for setting up signal catching */ | |
| 596 | sigset_t sigset; | |
| 597 | void (*prev_sig_disp)(); | |
| 598 | #endif | |
| 599 | int opt, opt_user = 0; | |
| 600 | int i; | |
| 601 | ||
| 602 | struct option long_options[] = { | |
| 603 | {"acct", no_argument, NULL, 'a'}, | |
| 604 | /*{"away", optional_argument, NULL, 'w'}, */ | |
| 605 | {"help", no_argument, NULL, 'h'}, | |
| 606 | /*{"login", optional_argument, NULL, 'l'}, */ | |
| 607 | {"loginwin", no_argument, NULL, 'n'}, | |
| 608 | {"user", required_argument, NULL, 'u'}, | |
| 609 | {"file", required_argument, NULL, 'f'}, | |
| 610 | {"debug", no_argument, NULL, 'd'}, | |
| 611 | {"version", no_argument, NULL, 'v'}, | |
| 612 | {"session", required_argument, NULL, 's'}, | |
| 613 | {0, 0, 0, 0} | |
| 614 | }; | |
| 615 | ||
| 616 | #ifdef DEBUG | |
| 617 | opt_debug = 1; | |
| 618 | #endif | |
| 619 | #ifdef ENABLE_NLS | |
| 620 | bindtextdomain(PACKAGE, LOCALEDIR); | |
| 621 | bind_textdomain_codeset(PACKAGE, "UTF-8"); | |
| 622 | textdomain(PACKAGE); | |
| 623 | #endif | |
| 624 | ||
| 625 | #if HAVE_SIGNAL_H | |
| 626 | /* Let's not violate any PLA's!!!! */ | |
| 627 | /* jseymour: whatever the fsck that means */ | |
| 628 | /* Robot101: for some reason things like gdm like to block * | |
| 629 | * useful signals like SIGCHLD, so we unblock all the ones we * | |
| 630 | * declare a handler for. thanks JSeymour and Vann. */ | |
| 631 | if (sigemptyset(&sigset)) { | |
| 632 | char errmsg[BUFSIZ]; | |
|
5435
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5422
diff
changeset
|
633 | snprintf(errmsg, BUFSIZ, "Warning: couldn't initialise empty signal set"); |
| 4489 | 634 | perror(errmsg); |
| 635 | } | |
| 636 | for(sig_indx = 0; catch_sig_list[sig_indx] != -1; ++sig_indx) { | |
| 637 | if((prev_sig_disp = signal(catch_sig_list[sig_indx], sighandler)) == SIG_ERR) { | |
| 638 | char errmsg[BUFSIZ]; | |
|
5435
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5422
diff
changeset
|
639 | snprintf(errmsg, BUFSIZ, "Warning: couldn't set signal %d for catching", |
| 4489 | 640 | catch_sig_list[sig_indx]); |
| 641 | perror(errmsg); | |
| 642 | } | |
| 643 | if(sigaddset(&sigset, catch_sig_list[sig_indx])) { | |
| 644 | char errmsg[BUFSIZ]; | |
|
5435
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5422
diff
changeset
|
645 | snprintf(errmsg, BUFSIZ, "Warning: couldn't include signal %d for unblocking", |
| 4489 | 646 | catch_sig_list[sig_indx]); |
| 647 | perror(errmsg); | |
| 648 | } | |
| 649 | } | |
| 650 | for(sig_indx = 0; ignore_sig_list[sig_indx] != -1; ++sig_indx) { | |
| 651 | if((prev_sig_disp = signal(ignore_sig_list[sig_indx], SIG_IGN)) == SIG_ERR) { | |
| 652 | char errmsg[BUFSIZ]; | |
|
5435
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5422
diff
changeset
|
653 | snprintf(errmsg, BUFSIZ, "Warning: couldn't set signal %d to ignore", |
| 4489 | 654 | ignore_sig_list[sig_indx]); |
| 655 | perror(errmsg); | |
| 656 | } | |
| 657 | } | |
| 658 | ||
| 659 | if (sigprocmask(SIG_UNBLOCK, &sigset, NULL)) { | |
| 660 | char errmsg[BUFSIZ]; | |
|
5435
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5422
diff
changeset
|
661 | snprintf(errmsg, BUFSIZ, "Warning: couldn't unblock signals"); |
| 4489 | 662 | perror(errmsg); |
| 663 | } | |
| 664 | #endif | |
| 665 | ||
| 666 | for (i = 0; i < argc; i++) { | |
| 667 | /* --login option */ | |
| 668 | if (strstr(argv[i], "--l") == argv[i]) { | |
| 669 | char *equals; | |
| 670 | opt_login = 1; | |
| 671 | if ((equals = strchr(argv[i], '=')) != NULL) { | |
| 672 | /* --login=NAME */ | |
| 673 | opt_login_arg = g_strdup(equals + 1); | |
| 674 | if (strlen(opt_login_arg) == 0) { | |
| 675 | g_free(opt_login_arg); | |
| 676 | opt_login_arg = NULL; | |
| 677 | } | |
| 678 | } else if (i + 1 < argc && argv[i + 1][0] != '-') { | |
| 679 | /* --login NAME */ | |
| 680 | opt_login_arg = g_strdup(argv[i + 1]); | |
| 681 | strcpy(argv[i + 1], " "); | |
| 682 | } | |
| 683 | strcpy(argv[i], " "); | |
| 684 | } | |
| 685 | /* -l option */ | |
| 686 | else if (strstr(argv[i], "-l") == argv[i]) { | |
| 687 | opt_login = 1; | |
| 688 | if (strlen(argv[i]) > 2) { | |
| 689 | /* -lNAME */ | |
| 690 | opt_login_arg = g_strdup(argv[i] + 2); | |
| 691 | } else if (i + 1 < argc && argv[i + 1][0] != '-') { | |
| 692 | /* -l NAME */ | |
| 693 | opt_login_arg = g_strdup(argv[i + 1]); | |
| 694 | strcpy(argv[i + 1], " "); | |
| 695 | } | |
| 696 | strcpy(argv[i], " "); | |
| 697 | } | |
| 698 | /* --away option */ | |
| 699 | else if (strstr(argv[i], "--aw") == argv[i]) { | |
| 700 | char *equals; | |
| 701 | opt_away = 1; | |
| 702 | if ((equals = strchr(argv[i], '=')) != NULL) { | |
| 703 | /* --away=MESG */ | |
| 704 | opt_away_arg = g_strdup(equals + 1); | |
| 705 | if (strlen(opt_away_arg) == 0) { | |
| 706 | g_free(opt_away_arg); | |
| 707 | opt_away_arg = NULL; | |
| 708 | } | |
| 709 | } else if (i + 1 < argc && argv[i + 1][0] != '-') { | |
| 710 | /* --away MESG */ | |
| 711 | opt_away_arg = g_strdup(argv[i + 1]); | |
| 712 | strcpy(argv[i + 1], " "); | |
| 713 | } | |
| 714 | strcpy(argv[i], " "); | |
| 715 | } | |
| 716 | /* -w option */ | |
| 717 | else if (strstr(argv[i], "-w") == argv[i]) { | |
| 718 | opt_away = 1; | |
| 719 | if (strlen(argv[i]) > 2) { | |
| 720 | /* -wMESG */ | |
| 721 | opt_away_arg = g_strdup(argv[i] + 2); | |
| 722 | } else if (i + 1 < argc && argv[i + 1][0] != '-') { | |
| 723 | /* -w MESG */ | |
| 724 | opt_away_arg = g_strdup(argv[i + 1]); | |
| 725 | strcpy(argv[i + 1], " "); | |
| 726 | } | |
| 727 | strcpy(argv[i], " "); | |
| 728 | } | |
| 729 | } | |
| 730 | /* | |
| 731 | if (opt_login) { | |
| 732 | printf ("--login given with arg %s\n", | |
| 733 | opt_login_arg ? opt_login_arg : "NULL"); | |
| 734 | exit(0); | |
| 735 | } | |
| 736 | */ | |
| 737 | ||
| 738 | gtk_set_locale(); | |
| 739 | gtk_init(&argc, &argv); | |
| 740 | ||
| 741 | /* scan command-line options */ | |
| 742 | opterr = 1; | |
| 743 | while ((opt = getopt_long(argc, argv, | |
| 744 | #ifndef _WIN32 | |
| 745 | "adhu:f:vns:", | |
| 746 | #else | |
| 747 | "adghu:f:vn", | |
| 748 | #endif | |
| 749 | long_options, NULL)) != -1) { | |
| 750 | switch (opt) { | |
| 751 | case 'u': /* set user */ | |
| 752 | opt_user = 1; | |
| 753 | opt_user_arg = g_strdup(optarg); | |
| 754 | break; | |
| 755 | case 'a': /* account editor */ | |
| 756 | opt_acct = 1; | |
| 757 | break; | |
| 758 | case 'd': /* debug */ | |
| 759 | opt_debug = 1; | |
| 760 | break; | |
| 761 | case 'f': | |
| 762 | opt_rcfile_arg = g_strdup(optarg); | |
| 763 | break; | |
| 764 | case 's': /* use existing session ID */ | |
| 765 | opt_session_arg = g_strdup(optarg); | |
| 766 | break; | |
| 767 | case 'v': /* version */ | |
| 768 | opt_version = 1; | |
| 769 | break; | |
| 770 | case 'h': /* help */ | |
| 771 | opt_help = 1; | |
| 772 | break; | |
| 773 | case 'n': /* don't autologin */ | |
| 774 | opt_nologin = 1; | |
| 775 | break; | |
| 776 | #ifdef _WIN32 | |
| 777 | case 'g': /* debug GTK and GLIB */ | |
| 778 | opt_gdebug = 1; | |
| 779 | break; | |
| 780 | #endif | |
| 781 | case '?': | |
| 782 | default: | |
| 783 | show_usage(1, argv[0]); | |
| 784 | return 0; | |
| 785 | break; | |
| 786 | } | |
| 787 | } | |
| 788 | ||
| 789 | #ifdef _WIN32 | |
| 790 | /* We don't want a console window.. */ | |
| 791 | /* | |
| 792 | * Any calls to the glib logging functions, result in a call to AllocConsole(). | |
| 793 | * ME and 98 will in such cases produce a console window (2000 not), despite | |
| 794 | * being built as a windows app rather than a console app. So we should either | |
| 795 | * ignore messages by setting dummy log handlers, or redirect messages. | |
| 796 | * This requires setting handlers for all domains (any lib which uses g_logging). | |
| 797 | */ | |
| 798 | ||
| 799 | g_log_set_handler (NULL, G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION, | |
| 800 | (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler), | |
| 801 | NULL); | |
| 802 | g_log_set_handler ("Gdk", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION, | |
| 803 | (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler), | |
| 804 | NULL); | |
| 805 | g_log_set_handler ("Gtk", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION, | |
| 806 | (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler), | |
| 807 | NULL); | |
| 808 | g_log_set_handler ("GLib", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION, | |
| 809 | (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler), | |
| 810 | NULL); | |
| 811 | g_log_set_handler ("GModule", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION, | |
| 812 | (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler), | |
| 813 | NULL); | |
| 814 | g_log_set_handler ("GLib-GObject", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION, | |
| 815 | (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler), | |
| 816 | NULL); | |
| 817 | g_log_set_handler ("GThread", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION, | |
| 818 | (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler), | |
| 819 | NULL); | |
| 820 | ||
| 821 | /* g_print also makes a call to AllocConsole(), therefore a handler needs to be | |
| 822 | set here aswell */ | |
| 823 | if(!opt_debug) | |
| 824 | g_set_print_handler( gaim_dummy_print ); | |
| 825 | ||
| 826 | #endif | |
| 827 | ||
| 828 | /* show help message */ | |
| 829 | if (opt_help) { | |
| 830 | show_usage(0, argv[0]); | |
| 831 | return 0; | |
| 832 | } | |
| 833 | /* show version message */ | |
| 834 | if (opt_version) { | |
| 835 | printf("Gaim %s\n",VERSION); | |
| 836 | return 0; | |
| 837 | } | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
838 | |
|
6009
971bff448e46
[gaim-migrate @ 6457]
Christian Hammond <chipx86@chipx86.com>
parents:
5996
diff
changeset
|
839 | /* This has to be done before the debug stuff. */ |
|
971bff448e46
[gaim-migrate @ 6457]
Christian Hammond <chipx86@chipx86.com>
parents:
5996
diff
changeset
|
840 | gaim_gtk_stock_init(); |
|
6019
5be866245659
[gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents:
6009
diff
changeset
|
841 | |
|
5be866245659
[gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents:
6009
diff
changeset
|
842 | static_proto_init(); |
|
6009
971bff448e46
[gaim-migrate @ 6457]
Christian Hammond <chipx86@chipx86.com>
parents:
5996
diff
changeset
|
843 | |
| 5684 | 844 | gaim_prefs_init(); |
| 845 | gaim_gtk_prefs_init(); | |
| 846 | ||
| 847 | /* This kind of has to be here.. sucks, but it's important. */ | |
| 848 | gaim_set_debug_ui_ops(gaim_get_gtk_debug_ui_ops()); | |
| 849 | gaim_gtk_debug_init(); | |
| 850 | ||
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
851 | /* Set the UI operation structures. */ |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
852 | gaim_set_win_ui_ops(gaim_get_gtk_window_ui_ops()); |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
853 | gaim_set_xfer_ui_ops(gaim_get_gtk_xfer_ui_ops()); |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
854 | gaim_set_blist_ui_ops(gaim_get_gtk_blist_ui_ops()); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
855 | gaim_set_notify_ui_ops(gaim_get_gtk_notify_ui_ops()); |
|
5480
bd0befec6d55
[gaim-migrate @ 5876]
Christian Hammond <chipx86@chipx86.com>
parents:
5440
diff
changeset
|
856 | gaim_set_request_ui_ops(gaim_get_gtk_request_ui_ops()); |
| 5684 | 857 | gaim_set_sound_ui_ops(gaim_get_gtk_sound_ui_ops()); |
| 5717 | 858 | gaim_set_connection_ui_ops(gaim_get_gtk_connection_ui_ops()); |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
859 | |
| 5858 | 860 | gaim_conversation_init(); |
|
5683
a88cd460f614
[gaim-migrate @ 6102]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
861 | gaim_proxy_init(); |
| 5684 | 862 | gaim_sound_init(); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5874
diff
changeset
|
863 | gaim_pounces_init(); |
|
5683
a88cd460f614
[gaim-migrate @ 6102]
Christian Hammond <chipx86@chipx86.com>
parents:
5673
diff
changeset
|
864 | |
| 5906 | 865 | gaim_gtk_blist_init(); |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5665
diff
changeset
|
866 | gaim_gtk_conversation_init(); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5874
diff
changeset
|
867 | gaim_gtk_pounces_init(); |
|
5974
00c68435d9f3
[gaim-migrate @ 6421]
Mark Doliner <markdoliner@pidgin.im>
parents:
5949
diff
changeset
|
868 | gaim_gtk_xfer_init(); |
|
5673
47f654fb5134
[gaim-migrate @ 6091]
Christian Hammond <chipx86@chipx86.com>
parents:
5665
diff
changeset
|
869 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
870 | plugin_search_paths[0] = LIBDIR; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
871 | plugin_search_paths[1] = gaim_user_dir(); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
872 | plugin_search_paths[2] = g_strdup_printf("%s/plugins", gaim_user_dir()); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
873 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
874 | gaim_plugins_set_search_paths(sizeof(plugin_search_paths) / |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
875 | sizeof(*plugin_search_paths), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
876 | plugin_search_paths); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
877 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
878 | g_free(plugin_search_paths[2]); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
879 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
880 | gaim_plugins_probe(NULL); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
881 | |
| 5909 | 882 | gaim_prefs_load(); |
| 883 | ||
| 884 | ||
| 885 | /* we only read ~/.gaimrc (load_prefs()) if there is no accounts.xml | |
| 886 | * since prefs.xml existed alongside ~/.gaim in 0.64 */ | |
| 887 | if (!gaim_accounts_load()) { | |
|
5665
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5642
diff
changeset
|
888 | load_prefs(); |
|
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5642
diff
changeset
|
889 | gaim_prefs_sync(); |
|
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5642
diff
changeset
|
890 | } |
|
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5642
diff
changeset
|
891 | |
| 5838 | 892 | /* load plugins we had when we quit */ |
|
5949
bb7cbf02dda9
[gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents:
5943
diff
changeset
|
893 | gaim_plugins_load_saved("/gaim/gtk/plugins/loaded"); |
|
5665
0115e8068f51
[gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents:
5642
diff
changeset
|
894 | |
|
5866
5caedbcd1bb7
[gaim-migrate @ 6297]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
895 | gaim_pounces_load(); |
|
5581
646cda748437
[gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents:
5580
diff
changeset
|
896 | |
| 4489 | 897 | #ifdef _WIN32 |
| 898 | /* Various win32 initializations */ | |
| 899 | wgaim_init(); | |
| 900 | #endif | |
| 901 | ||
|
5859
e9e5fb0bbfe9
[gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
902 | gaim_set_blist(gaim_blist_new()); |
|
e9e5fb0bbfe9
[gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
903 | gaim_blist_load(); |
|
e9e5fb0bbfe9
[gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
904 | |
|
5032
2276c67b0243
[gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
905 | load_pounces(); |
| 4489 | 906 | ui_main(); |
| 907 | ||
| 908 | #ifdef USE_SM | |
| 909 | session_init(argv[0], opt_session_arg); | |
| 910 | #endif | |
| 911 | if (opt_session_arg != NULL) { | |
| 912 | g_free(opt_session_arg); | |
| 913 | opt_session_arg = NULL; | |
| 914 | }; | |
| 915 | ||
| 916 | /* set the default username */ | |
| 917 | if (opt_user_arg != NULL) { | |
| 918 | set_first_user(opt_user_arg); | |
| 919 | g_free(opt_user_arg); | |
| 920 | opt_user_arg = NULL; | |
| 921 | } | |
| 922 | ||
| 5535 | 923 | if (gaim_prefs_get_bool("/gaim/gtk/debug/enabled")) |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
924 | gaim_gtk_debug_window_show(); |
| 4489 | 925 | |
| 926 | /* deal with --login */ | |
| 927 | if (opt_login) { | |
| 928 | dologin_ret = dologin_named(opt_login_arg); | |
| 929 | if (opt_login_arg != NULL) { | |
| 930 | g_free(opt_login_arg); | |
| 931 | opt_login_arg = NULL; | |
| 932 | } | |
| 933 | } | |
| 934 | ||
|
5859
e9e5fb0bbfe9
[gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
5858
diff
changeset
|
935 | if (!opt_acct && !opt_nologin) |
|
5780
c2388268514e
[gaim-migrate @ 6205]
Christian Hammond <chipx86@chipx86.com>
parents:
5766
diff
changeset
|
936 | gaim_accounts_auto_login(GAIM_GTK_UI); |
| 4489 | 937 | |
| 938 | if (opt_acct) { | |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
939 | gaim_gtk_account_dialog_show(); |
|
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5549
diff
changeset
|
940 | } else if ((dologin_ret == -1) && !gaim_connections_get_all()) |
| 4489 | 941 | show_login(); |
| 942 | ||
| 943 | gtk_main(); | |
| 5684 | 944 | gaim_sound_shutdown(); |
| 4489 | 945 | #ifdef _WIN32 |
| 946 | wgaim_cleanup(); | |
| 947 | #endif | |
| 948 | return 0; | |
| 949 | ||
| 950 | } |