annotate src/main.c @ 5867:db4df0be06fd

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