annotate src/main.c @ 7132:d17a587efeb3

[gaim-migrate @ 7699] new blist parser code, and some tweaks to the account code to make my next commit possible. the other parser code can get moved over to this model to make things cleaner, but i'm too lazy to do it now. committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Fri, 03 Oct 2003 21:49:11 +0000
parents 9220c7490cd1
children e09020153d85
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
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6313
diff changeset
22 #include "gtkinternal.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
23
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
24 #include "account.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
25 #include "conversation.h"
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
26 #include "core.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
27 #include "debug.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
28 #include "ft.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
29 #include "log.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
30 #include "notify.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
31 #include "prefs.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
32 #include "prpl.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
33 #include "pounce.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
34 #include "sound.h"
6106
99f4bbeb27bc [gaim-migrate @ 6567]
Mark Doliner <mark@kingant.net>
parents: 6065
diff changeset
35 #include "status.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
36 #include "util.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
37
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
38 #include "gtkaccount.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
39 #include "gtkblist.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
40 #include "gtkconn.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
41 #include "gtkconv.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
42 #include "gtkdebug.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
43 #include "gtkft.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
44 #include "gtknotify.h"
5875
448f2f4ca3ec [gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents: 5874
diff changeset
45 #include "gtkpounce.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
46 #include "gtkprefs.h"
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6313
diff changeset
47 #include "gtkprivacy.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
48 #include "gtkrequest.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
49 #include "gtksound.h"
5943
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5909
diff changeset
50 #include "gtkutils.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
51 #include "stock.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
52
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
53 #include "ui.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
54
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
55 #if HAVE_SIGNAL_H
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
56 # include <signal.h>
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
57 #endif
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
58
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
59 #include "locale.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
60 #include <getopt.h>
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
61
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
62 extern void load_prefs();
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5866
diff changeset
63 extern void load_pounces();
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
64
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
65 static GtkWidget *name;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
66 static GtkWidget *pass;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
67
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
68 GtkWidget *mainwindow = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
69
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
70 int opt_away = 0;
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4635
diff changeset
71 int docklet_count = 0;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
72 char *opt_away_arg = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
73 char *opt_rcfile_arg = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
74 int opt_debug = 0;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
75 #ifdef _WIN32
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
76 int opt_gdebug = 0;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
77 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
78
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
79 #if HAVE_SIGNAL_H
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
80 /*
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
81 * 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
82 * Each list terminated with -1
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
83 */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
84 static int catch_sig_list[] = {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
85 SIGSEGV,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
86 SIGHUP,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
87 SIGINT,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
88 SIGTERM,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
89 SIGQUIT,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
90 SIGCHLD,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
91 -1
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
92 };
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 static int ignore_sig_list[] = {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
95 SIGPIPE,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
96 -1
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
97 };
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
98 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
99
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4514
diff changeset
100 static guint snd_tmout = 0;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
101 static gboolean sound_timeout(gpointer data)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
102 {
5684
b61520e71679 [gaim-migrate @ 6104]
Nathan Walp <nwalp@pidgin.im>
parents: 5683
diff changeset
103 gaim_gtk_sound_set_login_mute(FALSE);
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4514
diff changeset
104 snd_tmout = 0;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
105 return FALSE;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
106 }
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 /* 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
109 * 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
110 * 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
111 void gaim_setup(GaimConnection *gc)
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
112 {
5734
5cd96052bc45 [gaim-migrate @ 6158]
Nathan Walp <nwalp@pidgin.im>
parents: 5717
diff changeset
113 if (gaim_prefs_get_bool("/gaim/gtk/sound/enabled/login")
5cd96052bc45 [gaim-migrate @ 6158]
Nathan Walp <nwalp@pidgin.im>
parents: 5717
diff changeset
114 && gaim_prefs_get_bool("/gaim/gtk/sound/silent_signon")) {
4561
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4514
diff changeset
115 if(snd_tmout) {
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4514
diff changeset
116 g_source_remove(snd_tmout);
9df99116840a [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4514
diff changeset
117 }
5684
b61520e71679 [gaim-migrate @ 6104]
Nathan Walp <nwalp@pidgin.im>
parents: 5683
diff changeset
118 gaim_gtk_sound_set_login_mute(TRUE);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
119 snd_tmout = g_timeout_add(10000, sound_timeout, NULL);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
120 }
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
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
123 static gboolean domiddleclick(GtkWidget *w, GdkEventButton *event, gpointer null)
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 if (event->button != 2)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
126 return FALSE;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
127
5780
a9029bed0479 [gaim-migrate @ 6205]
Christian Hammond <chipx86@chipx86.com>
parents: 5766
diff changeset
128 gaim_accounts_auto_login(GAIM_GTK_UI);
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
129
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
130 return TRUE;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
131 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
132
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
133 static void dologin(GtkWidget *widget, GtkWidget *w)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
134 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
135 GaimAccount *account;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
136 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
137 const char *password = gtk_entry_get_text(GTK_ENTRY(pass));
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
138
6036
547ba881bc7e [gaim-migrate @ 6486]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
139 if (*username == '\0') {
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
140 gaim_notify_error(NULL, NULL, _("Please enter your login."), NULL);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
141 return;
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
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
144 /* 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
145 * them, they just have to use the account editor to sign in
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
146 * the second one */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
147
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7107
diff changeset
148 account = gaim_accounts_find(username, NULL);
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
149 if (!account) {
5943
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5909
diff changeset
150 account = gaim_account_new(username, "prpl-oscar");
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
151 gaim_account_set_remember_password(account, TRUE);
6231
1fc158d6ebdb [gaim-migrate @ 6724]
Mark Doliner <mark@kingant.net>
parents: 6179
diff changeset
152 gaim_accounts_add(account);
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
153 }
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
154
6036
547ba881bc7e [gaim-migrate @ 6486]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
155 gaim_account_set_password(account, (*password != '\0') ? password : NULL);
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
156
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
157 gaim_account_connect(account);
4489
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 /* <name> is a comma-separated list of names, or NULL
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
161 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
162 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
163 .gaimrc and, if it's there, try to login.
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
164 returns: 0 if successful
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
165 -1 if no user was found that had a saved password
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
166 */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
167 static int dologin_named(char *name)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
168 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
169 GaimAccount *account;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
170 char **names, **n;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
171 int retval = -1;
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 if (name !=NULL) { /* list of names given */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
174 names = g_strsplit(name, ",", 32);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
175 for (n = names; *n != NULL; n++) {
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7107
diff changeset
176 account = gaim_accounts_find(*n, NULL);
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4489
diff changeset
177 if (account) { /* found a user */
6231
1fc158d6ebdb [gaim-migrate @ 6724]
Mark Doliner <mark@kingant.net>
parents: 6179
diff changeset
178 retval = 0;
1fc158d6ebdb [gaim-migrate @ 6724]
Mark Doliner <mark@kingant.net>
parents: 6179
diff changeset
179 gaim_account_connect(account);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
180 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
181 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
182 g_strfreev(names);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
183 } else { /* no name given, use default */
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5573
diff changeset
184 account = (GaimAccount *)gaim_accounts_get_all()->data;
6231
1fc158d6ebdb [gaim-migrate @ 6724]
Mark Doliner <mark@kingant.net>
parents: 6179
diff changeset
185 retval = 0;
1fc158d6ebdb [gaim-migrate @ 6724]
Mark Doliner <mark@kingant.net>
parents: 6179
diff changeset
186 gaim_account_connect(account);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
187 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
188
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
189 return retval;
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
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
192
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
193 static void doenter(GtkWidget *widget, GtkWidget *w)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
194 {
6109
0922bb7a7bbc [gaim-migrate @ 6571]
Mark Doliner <mark@kingant.net>
parents: 6106
diff changeset
195 gtk_entry_set_text(GTK_ENTRY(pass), "");
0922bb7a7bbc [gaim-migrate @ 6571]
Mark Doliner <mark@kingant.net>
parents: 6106
diff changeset
196 gtk_editable_select_region(GTK_EDITABLE(GTK_COMBO(name)->entry), 0, 0);
0922bb7a7bbc [gaim-migrate @ 6571]
Mark Doliner <mark@kingant.net>
parents: 6106
diff changeset
197 gtk_widget_grab_focus(pass);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
198 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
199
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
200
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
201 static void combo_changed(GtkWidget *w, GtkWidget *combo)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
202 {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
203 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
204 GaimAccount *account;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
205
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7107
diff changeset
206 account = gaim_accounts_find(txt, NULL);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
207
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
208 if (account && gaim_account_get_remember_password(account)) {
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4489
diff changeset
209 gtk_entry_set_text(GTK_ENTRY(pass), account->password);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
210 } else {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
211 gtk_entry_set_text(GTK_ENTRY(pass), "");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
212 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
213 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
214
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
215
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
216 static GList *combo_user_names()
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
217 {
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5573
diff changeset
218 GList *accts = gaim_accounts_get_all();
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
219 GList *tmp = NULL;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
220 GaimAccount *account;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
221
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4489
diff changeset
222 if (!accts)
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
223 return g_list_append(NULL, _("<New User>"));
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
224
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4489
diff changeset
225 while (accts) {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
226 account = (GaimAccount *)accts->data;
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4489
diff changeset
227 tmp = g_list_append(tmp, account->username);
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4489
diff changeset
228 accts = accts->next;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
229 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
230
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
231 return tmp;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
232 }
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 static void login_window_closed(GtkWidget *w, GdkEvent *ev, gpointer d)
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 if(docklet_count) {
4880
9b51c090236a [gaim-migrate @ 5210]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 4800
diff changeset
237 #ifdef _WIN32
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
238 wgaim_systray_minimize(mainwindow);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
239 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
240 gtk_widget_hide(mainwindow);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
241 } else
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
242 gaim_core_quit();
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 void show_login()
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
246 {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
247 GtkWidget *image;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
248 GtkWidget *vbox;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
249 GtkWidget *button;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
250 GtkWidget *hbox;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
251 GtkWidget *label;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
252 GtkWidget *vbox2;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
253 GList *tmp;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
254
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
255 /* 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
256 if (mainwindow) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
257 gtk_window_present(GTK_WINDOW(mainwindow));
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
258 return;
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 mainwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
262
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
263 gtk_window_set_role(GTK_WINDOW(mainwindow), "login");
4635
42d53c416bb9 [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4589
diff changeset
264 gtk_window_set_resizable(GTK_WINDOW(mainwindow), FALSE);
4703
e4dda06a3143 [gaim-migrate @ 5014]
Sean Egan <seanegan@gmail.com>
parents: 4695
diff changeset
265 gtk_window_set_title(GTK_WINDOW(mainwindow), _("Login"));
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
266 gtk_widget_realize(mainwindow);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
267 gdk_window_set_group(mainwindow->window, mainwindow->window);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
268 gtk_container_set_border_width(GTK_CONTAINER(mainwindow), 5);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
269 g_signal_connect(G_OBJECT(mainwindow), "delete_event",
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
270 G_CALLBACK(login_window_closed), mainwindow);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
271
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
272 vbox = gtk_vbox_new(FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
273 gtk_container_add(GTK_CONTAINER(mainwindow), vbox);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
274
5024
8e55a4d362a3 [gaim-migrate @ 5361]
Sean Egan <seanegan@gmail.com>
parents: 4978
diff changeset
275 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
276 gtk_box_pack_start(GTK_BOX(vbox), image, FALSE, FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
277
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
278 vbox2 = gtk_vbox_new(FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
279 gtk_container_set_border_width(GTK_CONTAINER(vbox2), 5);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
280
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
281 label = gtk_label_new(_("Screen Name:"));
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
282 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
283 gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
284
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
285 name = gtk_combo_new();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
286 tmp = combo_user_names();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
287 gtk_combo_set_popdown_strings(GTK_COMBO(name), tmp);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
288 g_list_free(tmp);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
289 g_signal_connect(G_OBJECT(GTK_COMBO(name)->entry), "activate",
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
290 G_CALLBACK(doenter), mainwindow);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
291 g_signal_connect(G_OBJECT(GTK_COMBO(name)->entry), "changed",
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
292 G_CALLBACK(combo_changed), name);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
293 gtk_box_pack_start(GTK_BOX(vbox2), name, FALSE, TRUE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
294 gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, TRUE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
295
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
296 vbox2 = gtk_vbox_new(FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
297 gtk_container_set_border_width(GTK_CONTAINER(vbox2), 5);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
298
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
299 label = gtk_label_new(_("Password:"));
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
300 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
301 gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
302
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
303 pass = gtk_entry_new();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
304 gtk_entry_set_visibility(GTK_ENTRY(pass), FALSE);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
305 g_signal_connect(G_OBJECT(pass), "activate",
6109
0922bb7a7bbc [gaim-migrate @ 6571]
Mark Doliner <mark@kingant.net>
parents: 6106
diff changeset
306 G_CALLBACK(dologin), mainwindow);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
307 gtk_box_pack_start(GTK_BOX(vbox2), pass, FALSE, TRUE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
308 gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, TRUE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
309
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
310 /* Now for the button box */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
311 hbox = gtk_hbox_new(TRUE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
312 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 5);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
313
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
314 /* And now for the buttons */
5024
8e55a4d362a3 [gaim-migrate @ 5361]
Sean Egan <seanegan@gmail.com>
parents: 4978
diff changeset
315 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
316 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
317 g_signal_connect(G_OBJECT(button), "clicked",
6119
0d2bd49c611e [gaim-migrate @ 6588]
Christian Hammond <chipx86@chipx86.com>
parents: 6109
diff changeset
318 G_CALLBACK(gaim_gtk_accounts_window_show), mainwindow);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
319 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
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 #ifdef NO_MULTI
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
322 gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
323 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
324
5024
8e55a4d362a3 [gaim-migrate @ 5361]
Sean Egan <seanegan@gmail.com>
parents: 4978
diff changeset
325 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
326 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
327 g_signal_connect(G_OBJECT(button), "clicked",
5530
2c4c975620f0 [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5492
diff changeset
328 G_CALLBACK(gaim_gtk_prefs_show), mainwindow);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
329 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
330
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6479
diff changeset
331 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
332 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
333 g_signal_connect(G_OBJECT(button), "clicked",
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
334 G_CALLBACK(dologin), mainwindow);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
335 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
336 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
337
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
338 /* Now grab the focus that we need */
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5573
diff changeset
339 if (gaim_accounts_get_all()) {
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5573
diff changeset
340 GaimAccount *account = gaim_accounts_get_all()->data;
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
341
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
342 if (gaim_account_get_remember_password(account)) {
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
343 combo_changed(NULL, name);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
344 gtk_widget_grab_focus(button);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
345 } else {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
346 gtk_widget_grab_focus(pass);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
347 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
348 } else {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
349 gtk_widget_grab_focus(name);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
350 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
351
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
352 /* And raise the curtain! */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
353 gtk_widget_show_all(mainwindow);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
354
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
355 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
356
7107
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
357 static void
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
358 clean_pid(void)
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
359 {
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
360 #ifndef _WIN32
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
361 int status;
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
362 pid_t pid;
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
363
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
364 do {
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
365 pid = waitpid(-1, &status, WNOHANG);
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
366 } while (pid != 0 && pid != (pid_t)-1);
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
367 if(pid == (pid_t)-1 && errno != ECHILD) {
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
368 char errmsg[BUFSIZ];
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
369 snprintf(errmsg, BUFSIZ, "Warning: waitpid() returned %d", pid);
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
370 perror(errmsg);
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
371 }
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
372 #endif
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
373 }
9220c7490cd1 [gaim-migrate @ 7672]
Christian Hammond <chipx86@chipx86.com>
parents: 7102
diff changeset
374
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
375 #if HAVE_SIGNAL_H
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
376 void sighandler(int sig)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
377 {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
378 switch (sig) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
379 case SIGHUP:
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
380 gaim_debug(GAIM_DEBUG_WARNING, "sighandler",
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
381 "Caught signal %d\n", sig);
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
382 gaim_connections_disconnect_all();
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
383 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
384 case SIGSEGV:
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
385 #ifndef DEBUG
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
386 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
387 "This is a bug in the software and has happened through\n"
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
388 "no fault of your own.\n\n"
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
389 "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
390 "If you can reproduce the crash, please notify the gaim\n"
7ec0cd751e6b [gaim-migrate @ 6172]
Luke Schierer <lschiere@pidgin.im>
parents: 5734
diff changeset
391 "maintainers by reporting a bug at\n"
6383
d6777fa16645 [gaim-migrate @ 6888]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
392 GAIM_WEBSITE "bug.php\n\n"
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
393 "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
394 "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
395 "how to get the backtrace, please get instructions at\n"
6383
d6777fa16645 [gaim-migrate @ 6888]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
396 GAIM_WEBSITE "gdb.php. If you need further\n"
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
397 "assistance, please IM either RobFlynn or SeanEgn and\n"
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
398 "they can help you.\n");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
399 #else
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
400 fprintf(stderr, "Oh no! Segmentation fault!\n");
4703
e4dda06a3143 [gaim-migrate @ 5014]
Sean Egan <seanegan@gmail.com>
parents: 4695
diff changeset
401 /*g_on_error_query (g_get_prgname());*/
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
402 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
403 abort();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
404 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
405 case SIGCHLD:
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
406 clean_pid();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
407 #if HAVE_SIGNAL_H
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
408 signal(SIGCHLD, sighandler); /* restore signal catching on this one! */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
409 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
410 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
411 default:
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
412 gaim_debug(GAIM_DEBUG_WARNING, "sighandler",
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
413 "Caught signal %d\n", sig);
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
414 gaim_connections_disconnect_all();
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
415
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
416 gaim_plugins_unload_all();
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
417
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
418 if (gtk_main_level())
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
419 gtk_main_quit();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
420 exit(0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
421 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
422 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
423 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
424
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
425 static int ui_main()
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
426 {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
427 #ifndef _WIN32
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
428 GList *icons = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
429 GdkPixbuf *icon = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
430 char *icon_path;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
431 #endif
4978
307c16c4b57e [gaim-migrate @ 5313]
Luke Schierer <lschiere@pidgin.im>
parents: 4957
diff changeset
432
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
433 if (current_smiley_theme == NULL) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
434 smiley_theme_probe();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
435 if (smiley_themes) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
436 struct smiley_theme *smile = smiley_themes->data;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
437 load_smiley_theme(smile->path, TRUE);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
438 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
439 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
440
5422
af62169c74fd [gaim-migrate @ 5801]
Sean Egan <seanegan@gmail.com>
parents: 5242
diff changeset
441 gaim_gtk_blist_setup_sort_methods();
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
442
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
443 #ifndef _WIN32
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
444 /* use the nice PNG icon for all the windows */
5024
8e55a4d362a3 [gaim-migrate @ 5361]
Sean Egan <seanegan@gmail.com>
parents: 4978
diff changeset
445 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
446 icon = gdk_pixbuf_new_from_file(icon_path, NULL);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
447 g_free(icon_path);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
448 if (icon) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
449 icons = g_list_append(icons,icon);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
450 gtk_window_set_default_icon_list(icons);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
451 g_object_unref(G_OBJECT(icon));
4978
307c16c4b57e [gaim-migrate @ 5313]
Luke Schierer <lschiere@pidgin.im>
parents: 4957
diff changeset
452 g_list_free(icons);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
453 } else {
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
454 gaim_debug(GAIM_DEBUG_ERROR, "ui_main",
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
455 "Failed to load the default window icon!\n");
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
456 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
457 #endif
4978
307c16c4b57e [gaim-migrate @ 5313]
Luke Schierer <lschiere@pidgin.im>
parents: 4957
diff changeset
458
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
459 return 0;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
460 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
461
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
462 static void set_first_user(char *name)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
463 {
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
464 GaimAccount *account;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
465
7132
d17a587efeb3 [gaim-migrate @ 7699]
Nathan Walp <nwalp@pidgin.im>
parents: 7107
diff changeset
466 account = gaim_accounts_find(name, NULL);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
467
6231
1fc158d6ebdb [gaim-migrate @ 6724]
Mark Doliner <mark@kingant.net>
parents: 6179
diff changeset
468 if (account == NULL) { /* new user */
5943
a4f2aba0848d [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5909
diff changeset
469 account = gaim_account_new(name, "prpl-oscar");
6231
1fc158d6ebdb [gaim-migrate @ 6724]
Mark Doliner <mark@kingant.net>
parents: 6179
diff changeset
470 gaim_accounts_add(account);
1fc158d6ebdb [gaim-migrate @ 6724]
Mark Doliner <mark@kingant.net>
parents: 6179
diff changeset
471 }
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5573
diff changeset
472
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5573
diff changeset
473 /* Place it as the first user. */
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5573
diff changeset
474 gaim_accounts_reorder(account, 0);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
475 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
476
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
477 #ifdef _WIN32
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
478 /* WIN32 print and log handlers */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
479
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
480 static void gaim_dummy_print( const gchar* string ) {
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
481 return;
4489
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 static void gaim_dummy_log_handler (const gchar *domain,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
485 GLogLevelFlags flags,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
486 const gchar *msg,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
487 gpointer user_data) {
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
488 return;
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
489 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
490
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
491 static void gaim_log_handler (const gchar *domain,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
492 GLogLevelFlags flags,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
493 const gchar *msg,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
494 gpointer user_data) {
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
495 gaim_debug(GAIM_DEBUG_MISC, "log", "%s - %s\n", domain, msg);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
496 g_log_default_handler(domain, flags, msg, user_data);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
497 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
498 #endif /* _WIN32 */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
499
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
500 static void
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
501 debug_init(void)
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
502 {
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
503 gaim_debug_set_ui_ops(gaim_gtk_debug_get_ui_ops());
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
504 gaim_gtk_debug_init();
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
505 }
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
506
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
507 static void
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
508 gaim_gtk_ui_init(void)
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
509 {
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
510 /* Set the UI operation structures. */
7015
dece74f05509 [gaim-migrate @ 7578]
Christian Hammond <chipx86@chipx86.com>
parents: 6890
diff changeset
511 gaim_accounts_set_ui_ops(gaim_gtk_accounts_get_ui_ops());
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
512 gaim_conversations_set_win_ui_ops(gaim_gtk_conversations_get_win_ui_ops());
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
513 gaim_xfers_set_ui_ops(gaim_gtk_xfers_get_ui_ops());
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
514 gaim_blist_set_ui_ops(gaim_gtk_blist_get_ui_ops());
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
515 gaim_notify_set_ui_ops(gaim_gtk_notify_get_ui_ops());
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
516 gaim_privacy_set_ui_ops(gaim_gtk_privacy_get_ui_ops());
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
517 gaim_request_set_ui_ops(gaim_gtk_request_get_ui_ops());
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
518 gaim_sound_set_ui_ops(gaim_gtk_sound_get_ui_ops());
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
519 gaim_connections_set_ui_ops(gaim_gtk_connections_get_ui_ops());
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
520
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
521 gaim_gtk_prefs_init();
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
522 gaim_gtk_blist_init();
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
523 gaim_gtk_conversations_init();
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
524 gaim_gtk_pounces_init();
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6313
diff changeset
525 gaim_gtk_privacy_init();
6263
3565ee7a5dd3 [gaim-migrate @ 6760]
Christian Hammond <chipx86@chipx86.com>
parents: 6231
diff changeset
526 gaim_gtk_xfers_init();
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
527 }
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
528
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
529 static void
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
530 gaim_gtk_quit(void)
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
531 {
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
532 /* XXX? */
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
533
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
534 /* captain's log, stardate... */
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
535 system_log(log_quit, NULL, NULL, OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON);
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
536
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
537 #ifdef USE_SM
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
538 /* unplug */
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
539 session_end();
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
540 #endif
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
541
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
542 /* and end it all... */
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
543 gtk_main_quit();
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
544 }
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
545
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
546 static GaimCoreUiOps core_ops =
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
547 {
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
548 gaim_gtk_prefs_init,
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
549 debug_init,
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
550 gaim_gtk_ui_init,
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
551 gaim_gtk_quit
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
552 };
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
553
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
554 static GaimCoreUiOps *
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
555 gaim_gtk_core_get_ui_ops(void)
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
556 {
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
557 return &core_ops;
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
558 }
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
559
7102
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
560 static void
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
561 show_usage(int mode, const char *name)
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
562 {
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
563 switch (mode) {
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
564 case 0: /* full help text */
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
565 printf(_("Gaim %s\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
566 "Usage: %s [OPTION]...\n\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
567 " -a, --acct display account editor window\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
568 " -w, --away[=MESG] make away on signon (optional argument MESG specifies\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
569 " name of away message to use)\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
570 " -l, --login[=NAME] automatically login (optional argument NAME specifies\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
571 " account(s) to use, seperated by commas)\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
572 " -n, --loginwin don't automatically login; show login window\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
573 " -u, --user=NAME use account NAME\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
574 " -f, --file=FILE use FILE as config\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
575 " -d, --debug print debugging messages to stdout\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
576 " -v, --version display the current version and exit\n"
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
577 " -h, --help display this help and exit\n"), VERSION, name);
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
578 break;
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
579 case 1: /* short message */
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
580 printf(_("Gaim %s. Try `%s -h' for more information.\n"), VERSION, name);
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
581 break;
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
582 }
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
583 }
c4faffdc0862 [gaim-migrate @ 7667]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
584
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
585 /* FUCKING GET ME A TOWEL! */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
586 #ifdef _WIN32
6890
4eee806af511 [gaim-migrate @ 7436]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 6816
diff changeset
587 int gaim_main(HINSTANCE hint, int argc, char *argv[])
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
588 #else
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
589 int main(int argc, char *argv[])
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
590 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
591 {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
592 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
593 char *opt_user_arg = NULL, *opt_login_arg = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
594 char *opt_session_arg = NULL;
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
595 char *plugin_search_paths[3];
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
596 #if HAVE_SIGNAL_H
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
597 int sig_indx; /* for setting up signal catching */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
598 sigset_t sigset;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
599 void (*prev_sig_disp)();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
600 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
601 int opt, opt_user = 0;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
602 int i;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
603
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
604 struct option long_options[] = {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
605 {"acct", no_argument, NULL, 'a'},
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
606 /*{"away", optional_argument, NULL, 'w'}, */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
607 {"help", no_argument, NULL, 'h'},
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
608 /*{"login", optional_argument, NULL, 'l'}, */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
609 {"loginwin", no_argument, NULL, 'n'},
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
610 {"user", required_argument, NULL, 'u'},
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
611 {"file", required_argument, NULL, 'f'},
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
612 {"debug", no_argument, NULL, 'd'},
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
613 {"version", no_argument, NULL, 'v'},
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
614 {"session", required_argument, NULL, 's'},
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
615 {0, 0, 0, 0}
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 #ifdef DEBUG
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
619 opt_debug = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
620 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
621 #ifdef ENABLE_NLS
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
622 bindtextdomain(PACKAGE, LOCALEDIR);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
623 bind_textdomain_codeset(PACKAGE, "UTF-8");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
624 textdomain(PACKAGE);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
625 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
626
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
627 #if HAVE_SIGNAL_H
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
628 /* Let's not violate any PLA's!!!! */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
629 /* jseymour: whatever the fsck that means */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
630 /* Robot101: for some reason things like gdm like to block *
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
631 * useful signals like SIGCHLD, so we unblock all the ones we *
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
632 * declare a handler for. thanks JSeymour and Vann. */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
633 if (sigemptyset(&sigset)) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
634 char errmsg[BUFSIZ];
5435
a2f26666de42 [gaim-migrate @ 5817]
Mark Doliner <mark@kingant.net>
parents: 5422
diff changeset
635 snprintf(errmsg, BUFSIZ, "Warning: couldn't initialise empty signal set");
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
636 perror(errmsg);
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 for(sig_indx = 0; catch_sig_list[sig_indx] != -1; ++sig_indx) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
639 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
640 char errmsg[BUFSIZ];
5435
a2f26666de42 [gaim-migrate @ 5817]
Mark Doliner <mark@kingant.net>
parents: 5422
diff changeset
641 snprintf(errmsg, BUFSIZ, "Warning: couldn't set signal %d for catching",
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
642 catch_sig_list[sig_indx]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
643 perror(errmsg);
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 if(sigaddset(&sigset, catch_sig_list[sig_indx])) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
646 char errmsg[BUFSIZ];
5435
a2f26666de42 [gaim-migrate @ 5817]
Mark Doliner <mark@kingant.net>
parents: 5422
diff changeset
647 snprintf(errmsg, BUFSIZ, "Warning: couldn't include signal %d for unblocking",
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
648 catch_sig_list[sig_indx]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
649 perror(errmsg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
650 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
651 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
652 for(sig_indx = 0; ignore_sig_list[sig_indx] != -1; ++sig_indx) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
653 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
654 char errmsg[BUFSIZ];
5435
a2f26666de42 [gaim-migrate @ 5817]
Mark Doliner <mark@kingant.net>
parents: 5422
diff changeset
655 snprintf(errmsg, BUFSIZ, "Warning: couldn't set signal %d to ignore",
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
656 ignore_sig_list[sig_indx]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
657 perror(errmsg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
658 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
659 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
660
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
661 if (sigprocmask(SIG_UNBLOCK, &sigset, NULL)) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
662 char errmsg[BUFSIZ];
5435
a2f26666de42 [gaim-migrate @ 5817]
Mark Doliner <mark@kingant.net>
parents: 5422
diff changeset
663 snprintf(errmsg, BUFSIZ, "Warning: couldn't unblock signals");
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
664 perror(errmsg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
665 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
666 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
667
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
668 for (i = 0; i < argc; i++) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
669 /* --login option */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
670 if (strstr(argv[i], "--l") == argv[i]) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
671 char *equals;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
672 opt_login = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
673 if ((equals = strchr(argv[i], '=')) != NULL) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
674 /* --login=NAME */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
675 opt_login_arg = g_strdup(equals + 1);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
676 if (strlen(opt_login_arg) == 0) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
677 g_free(opt_login_arg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
678 opt_login_arg = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
679 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
680 } else if (i + 1 < argc && argv[i + 1][0] != '-') {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
681 /* --login NAME */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
682 opt_login_arg = g_strdup(argv[i + 1]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
683 strcpy(argv[i + 1], " ");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
684 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
685 strcpy(argv[i], " ");
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 /* -l option */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
688 else if (strstr(argv[i], "-l") == argv[i]) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
689 opt_login = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
690 if (strlen(argv[i]) > 2) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
691 /* -lNAME */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
692 opt_login_arg = g_strdup(argv[i] + 2);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
693 } else if (i + 1 < argc && argv[i + 1][0] != '-') {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
694 /* -l NAME */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
695 opt_login_arg = g_strdup(argv[i + 1]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
696 strcpy(argv[i + 1], " ");
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 strcpy(argv[i], " ");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
699 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
700 /* --away option */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
701 else if (strstr(argv[i], "--aw") == argv[i]) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
702 char *equals;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
703 opt_away = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
704 if ((equals = strchr(argv[i], '=')) != NULL) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
705 /* --away=MESG */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
706 opt_away_arg = g_strdup(equals + 1);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
707 if (strlen(opt_away_arg) == 0) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
708 g_free(opt_away_arg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
709 opt_away_arg = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
710 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
711 } else if (i + 1 < argc && argv[i + 1][0] != '-') {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
712 /* --away MESG */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
713 opt_away_arg = g_strdup(argv[i + 1]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
714 strcpy(argv[i + 1], " ");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
715 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
716 strcpy(argv[i], " ");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
717 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
718 /* -w option */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
719 else if (strstr(argv[i], "-w") == argv[i]) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
720 opt_away = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
721 if (strlen(argv[i]) > 2) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
722 /* -wMESG */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
723 opt_away_arg = g_strdup(argv[i] + 2);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
724 } else if (i + 1 < argc && argv[i + 1][0] != '-') {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
725 /* -w MESG */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
726 opt_away_arg = g_strdup(argv[i + 1]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
727 strcpy(argv[i + 1], " ");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
728 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
729 strcpy(argv[i], " ");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
730 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
731 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
732 /*
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
733 if (opt_login) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
734 printf ("--login given with arg %s\n",
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
735 opt_login_arg ? opt_login_arg : "NULL");
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
736 exit(0);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
737 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
738 */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
739
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
740 gtk_set_locale();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
741 gtk_init(&argc, &argv);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
742
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
743 /* scan command-line options */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
744 opterr = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
745 while ((opt = getopt_long(argc, argv,
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
746 #ifndef _WIN32
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
747 "adhu:f:vns:",
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
748 #else
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
749 "adghu:f:vn",
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
750 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
751 long_options, NULL)) != -1) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
752 switch (opt) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
753 case 'u': /* set user */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
754 opt_user = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
755 opt_user_arg = g_strdup(optarg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
756 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
757 case 'a': /* account editor */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
758 opt_acct = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
759 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
760 case 'd': /* debug */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
761 opt_debug = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
762 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
763 case 'f':
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
764 opt_rcfile_arg = g_strdup(optarg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
765 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
766 case 's': /* use existing session ID */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
767 opt_session_arg = g_strdup(optarg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
768 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
769 case 'v': /* version */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
770 opt_version = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
771 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
772 case 'h': /* help */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
773 opt_help = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
774 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
775 case 'n': /* don't autologin */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
776 opt_nologin = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
777 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
778 #ifdef _WIN32
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
779 case 'g': /* debug GTK and GLIB */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
780 opt_gdebug = 1;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
781 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
782 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
783 case '?':
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
784 default:
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
785 show_usage(1, argv[0]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
786 return 0;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
787 break;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
788 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
789 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
790
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
791 #ifdef _WIN32
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
792 /* We don't want a console window.. */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
793 /*
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
794 * 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
795 * 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
796 * 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
797 * ignore messages by setting dummy log handlers, or redirect messages.
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
798 * 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
799 */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
800
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
801 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
802 (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler),
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
803 NULL);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
804 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
805 (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler),
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
806 NULL);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
807 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
808 (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler),
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
809 NULL);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
810 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
811 (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler),
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
812 NULL);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
813 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
814 (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler),
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
815 NULL);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
816 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
817 (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler),
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
818 NULL);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
819 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
820 (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler),
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
821 NULL);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
822
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
823 /* 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
824 set here aswell */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
825 if(!opt_debug)
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
826 g_set_print_handler( gaim_dummy_print );
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
827
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
828 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
829
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
830 /* show help message */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
831 if (opt_help) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
832 show_usage(0, argv[0]);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
833 return 0;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
834 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
835 /* show version message */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
836 if (opt_version) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
837 printf("Gaim %s\n",VERSION);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
838 return 0;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
839 }
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
840
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
841 gaim_gtk_stock_init();
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
842
7035
feb3d21a7794 [gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents: 7015
diff changeset
843 gaim_core_set_ui_ops(gaim_gtk_core_get_ui_ops());
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
844
7054
7c04a0775918 [gaim-migrate @ 7617]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7035
diff changeset
845 #ifdef _WIN32
7c04a0775918 [gaim-migrate @ 7617]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7035
diff changeset
846 wgaim_set_hinstance(hint);
7c04a0775918 [gaim-migrate @ 7617]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7035
diff changeset
847 wgaim_pre_plugin_init();
7c04a0775918 [gaim-migrate @ 7617]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7035
diff changeset
848 #endif
7c04a0775918 [gaim-migrate @ 7617]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7035
diff changeset
849
6179
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
850 if (!gaim_core_init(GAIM_GTK_UI)) {
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
851 fprintf(stderr,
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
852 "Initialization of the Gaim core failed. Dumping core.\n"
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
853 "Please report this!\n");
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
854 abort();
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
855 }
16e384bb7fbf [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6119
diff changeset
856
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
857 plugin_search_paths[0] = LIBDIR;
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
858 plugin_search_paths[1] = gaim_user_dir();
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
859 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
860
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
861 gaim_plugins_set_search_paths(sizeof(plugin_search_paths) /
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
862 sizeof(*plugin_search_paths),
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
863 plugin_search_paths);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
864
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
865 g_free(plugin_search_paths[2]);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
866
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
867 gaim_plugins_probe(NULL);
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5032
diff changeset
868
5909
1a7f7feab916 [gaim-migrate @ 6341]
Nathan Walp <nwalp@pidgin.im>
parents: 5906
diff changeset
869 gaim_prefs_load();
1a7f7feab916 [gaim-migrate @ 6341]
Nathan Walp <nwalp@pidgin.im>
parents: 5906
diff changeset
870
1a7f7feab916 [gaim-migrate @ 6341]
Nathan Walp <nwalp@pidgin.im>
parents: 5906
diff changeset
871
1a7f7feab916 [gaim-migrate @ 6341]
Nathan Walp <nwalp@pidgin.im>
parents: 5906
diff changeset
872 /* we only read ~/.gaimrc (load_prefs()) if there is no accounts.xml
1a7f7feab916 [gaim-migrate @ 6341]
Nathan Walp <nwalp@pidgin.im>
parents: 5906
diff changeset
873 * since prefs.xml existed alongside ~/.gaim in 0.64 */
1a7f7feab916 [gaim-migrate @ 6341]
Nathan Walp <nwalp@pidgin.im>
parents: 5906
diff changeset
874 if (!gaim_accounts_load()) {
5665
132a30783c3d [gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents: 5642
diff changeset
875 load_prefs();
132a30783c3d [gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents: 5642
diff changeset
876 gaim_prefs_sync();
132a30783c3d [gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents: 5642
diff changeset
877 }
132a30783c3d [gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents: 5642
diff changeset
878
6693
8c1b5dd87fbf [gaim-migrate @ 7219]
Nathan Walp <nwalp@pidgin.im>
parents: 6623
diff changeset
879 gaim_prefs_rename_old();
8c1b5dd87fbf [gaim-migrate @ 7219]
Nathan Walp <nwalp@pidgin.im>
parents: 6623
diff changeset
880
5838
6aa7651c7c15 [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5826
diff changeset
881 /* load plugins we had when we quit */
5949
90d0849abd3c [gaim-migrate @ 6393]
Christian Hammond <chipx86@chipx86.com>
parents: 5943
diff changeset
882 gaim_plugins_load_saved("/gaim/gtk/plugins/loaded");
5665
132a30783c3d [gaim-migrate @ 6081]
Christian Hammond <chipx86@chipx86.com>
parents: 5642
diff changeset
883
5866
d6b5cab288bb [gaim-migrate @ 6297]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
884 gaim_pounces_load();
6065
3a40666c08b4 [gaim-migrate @ 6515]
Sean Egan <seanegan@gmail.com>
parents: 6036
diff changeset
885 gaim_status_load();
5581
3a9b54f260e3 [gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
886
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
887 #ifdef _WIN32
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
888 /* Various win32 initializations */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
889 wgaim_init();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
890 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
891
5859
022786c7ab53 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
892 gaim_set_blist(gaim_blist_new());
022786c7ab53 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
893 gaim_blist_load();
022786c7ab53 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
894
5032
cb700c07ee07 [gaim-migrate @ 5375]
Christian Hammond <chipx86@chipx86.com>
parents: 5024
diff changeset
895 load_pounces();
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
896 ui_main();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
897
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
898 #ifdef USE_SM
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
899 session_init(argv[0], opt_session_arg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
900 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
901 if (opt_session_arg != NULL) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
902 g_free(opt_session_arg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
903 opt_session_arg = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
904 };
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
905
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
906 /* set the default username */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
907 if (opt_user_arg != NULL) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
908 set_first_user(opt_user_arg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
909 g_free(opt_user_arg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
910 opt_user_arg = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
911 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
912
5535
933739f789f9 [gaim-migrate @ 5935]
Nathan Walp <nwalp@pidgin.im>
parents: 5534
diff changeset
913 if (gaim_prefs_get_bool("/gaim/gtk/debug/enabled"))
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
914 gaim_gtk_debug_window_show();
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
915
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
916 /* deal with --login */
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
917 if (opt_login) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
918 dologin_ret = dologin_named(opt_login_arg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
919 if (opt_login_arg != NULL) {
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
920 g_free(opt_login_arg);
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
921 opt_login_arg = NULL;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
922 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
923 }
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
924
5859
022786c7ab53 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5858
diff changeset
925 if (!opt_acct && !opt_nologin)
5780
a9029bed0479 [gaim-migrate @ 6205]
Christian Hammond <chipx86@chipx86.com>
parents: 5766
diff changeset
926 gaim_accounts_auto_login(GAIM_GTK_UI);
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
927
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
928 if (opt_acct) {
6119
0d2bd49c611e [gaim-migrate @ 6588]
Christian Hammond <chipx86@chipx86.com>
parents: 6109
diff changeset
929 gaim_gtk_accounts_window_show();
5563
9eb5b13fd412 [gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents: 5549
diff changeset
930 } else if ((dologin_ret == -1) && !gaim_connections_get_all())
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
931 show_login();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
932
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
933 gtk_main();
5684
b61520e71679 [gaim-migrate @ 6104]
Nathan Walp <nwalp@pidgin.im>
parents: 5683
diff changeset
934 gaim_sound_shutdown();
4489
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
935 #ifdef _WIN32
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
936 wgaim_cleanup();
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
937 #endif
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
938 return 0;
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
939
58c3c6cfd537 [gaim-migrate @ 4764]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
940 }