annotate src/aim.c @ 3752:b32474e522fa

[gaim-migrate @ 3890] From: "William T. Mahan" <wtm2@duke.edu> This patch, against CVS HEAD, fixes three bugs in Oscar File Transfer support. I can split it up further if desired. * Send a null checksum when initiating a file transfer, which fixes "files don't match" warnings produced by some versions of WinAIM; add a compile-time option to actually compute the checksum, which is slow but necessary when sending to some Mac clients. * Don't allow sending files to oneself, because it causes all kinds of subtle problems and it's not useful. * Don't crash when there is an error writing to the output file when receiving. From: "William T. Mahan" <wtm2@duke.edu> This patch 2 of 3, which applies on top of the first, adds support for reverse connections for Oscar File Transfer, the lack of which has been the biggest complaint so far. Reverse connections are used by newer AIM clients when there is difficulty verifying the IP of the sender. From: "William T. Mahan" <wtm2@duke.edu> This patch 3 of 3, which applies on top of the first 2, removes the alarm() and sigaction() calls that were added by my original FT patch to detect transfer timeouts. Besides apparently not working on Windows, they involved a lot of ugly code to handle a special case. My new approach is to add destructors that can called when SNACs are freed; a timeout is detected when a request SNAC is cleaned up before the transfer is accepted. Although this touches several files, it is more generic than the old method. I tried to implement this in an unintrusive manner, so that there is little preformance penalty for SNACs that do not use destructors. My first two patches should work fine without this. If there are any objections to the third patch, I ask that the first two patches be applied, in which case I will set up a SourceForge page for this one. committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Sat, 19 Oct 2002 05:22:30 +0000
parents d85208a99af2
children 9bcb42faccc0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1 /*
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
2 * gaim
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
3 *
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
4 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
5 *
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or modify
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
9 * (at your option) any later version.
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
10 *
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful,
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
14 * GNU General Public License for more details.
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
15 *
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
19 *
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
20 */
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
21
349
b402a23f35df [gaim-migrate @ 359]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 342
diff changeset
22 #ifdef HAVE_CONFIG_H
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2083
diff changeset
23 #include <config.h>
349
b402a23f35df [gaim-migrate @ 359]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 342
diff changeset
24 #endif
395
9a436c1d128d [gaim-migrate @ 405]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 392
diff changeset
25 #ifdef GAIM_PLUGINS
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
26 #ifndef _WIN32
395
9a436c1d128d [gaim-migrate @ 405]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 392
diff changeset
27 #include <dlfcn.h>
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
28 #endif
395
9a436c1d128d [gaim-migrate @ 405]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 392
diff changeset
29 #endif /* GAIM_PLUGINS */
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
30 #include <gtk/gtk.h>
3716
d7e83b4db191 [gaim-migrate @ 3849]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3652
diff changeset
31 #ifndef _WIN32
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
32 #include <gdk/gdkx.h>
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
33 #include <unistd.h>
2482
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
34 #include <sys/socket.h>
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
35 #include <netinet/in.h>
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
36 #include <arpa/inet.h>
2482
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
37 #include <sys/un.h>
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
38 #include <sys/wait.h>
3716
d7e83b4db191 [gaim-migrate @ 3849]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3652
diff changeset
39 #endif /* !_WIN32 */
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
40 #include <gdk/gdk.h>
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
41 #include <sys/types.h>
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
42 #include <sys/stat.h>
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
43 #include <errno.h>
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
44 #include <stdio.h>
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
45 #include <string.h>
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
46 #include <stdarg.h>
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
47 #include <stdlib.h>
228
f3b61c04f44e [gaim-migrate @ 238]
Syd Logan <slogan>
parents: 216
diff changeset
48 #include <ctype.h>
991
3dbc2cd326e2 [gaim-migrate @ 1001]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 989
diff changeset
49 #include "prpl.h"
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
50 #include "gaim.h"
614
a3e32af35b30 [gaim-migrate @ 624]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 600
diff changeset
51 #if HAVE_SIGNAL_H
a3e32af35b30 [gaim-migrate @ 624]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 600
diff changeset
52 #include <signal.h>
a3e32af35b30 [gaim-migrate @ 624]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 600
diff changeset
53 #endif
462
9a5da5b17722 [gaim-migrate @ 472]
Rob Flynn <gaim@robflynn.com>
parents: 436
diff changeset
54 #include "locale.h"
1117
f3e0f41beddb [gaim-migrate @ 1127]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1093
diff changeset
55 #include "gtkspell.h"
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
56 #include <getopt.h>
3716
d7e83b4db191 [gaim-migrate @ 3849]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3652
diff changeset
57
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
58 #ifdef _WIN32
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
59 #include "win32dep.h"
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
60 #endif
430
0cd2ba801eb4 [gaim-migrate @ 440]
Syd Logan <slogan>
parents: 423
diff changeset
61
3716
d7e83b4db191 [gaim-migrate @ 3849]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3652
diff changeset
62 #ifndef _WIN32
3209
265a3c9d0557 [gaim-migrate @ 3226]
Sean Egan <seanegan@gmail.com>
parents: 3138
diff changeset
63 static gchar *aspell_cmd[] = { "aspell", "--sug-mode=fast","-a", NULL };
1128
418b1738a9a7 [gaim-migrate @ 1138]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1124
diff changeset
64 static gchar *ispell_cmd[] = { "ispell", "-a", NULL };
3716
d7e83b4db191 [gaim-migrate @ 3849]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3652
diff changeset
65 #endif
1128
418b1738a9a7 [gaim-migrate @ 1138]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1124
diff changeset
66
989
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
67 static GtkWidget *name;
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
68 static GtkWidget *pass;
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
69
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
70 GList *log_conversations = NULL;
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
71 GList *buddy_pounces = NULL;
940
9fca1293f871 [gaim-migrate @ 950]
Rob Flynn <gaim@robflynn.com>
parents: 917
diff changeset
72 GSList *away_messages = NULL;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
73 GList *conversations = NULL;
1768
9aae465eeb6e [gaim-migrate @ 1778]
Rob Flynn <gaim@robflynn.com>
parents: 1750
diff changeset
74 GSList *message_queue = NULL;
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
75 GSList *unread_message_queue = NULL;
1774
9d0c91c705b7 [gaim-migrate @ 1784]
Rob Flynn <gaim@robflynn.com>
parents: 1768
diff changeset
76 GSList *away_time_queue = NULL;
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
77
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
78 GtkWidget *mainwindow = NULL;
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
79
1254
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
80 int opt_away = 0;
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
81 char *opt_away_arg = NULL;
1560
72235e3fcff6 [gaim-migrate @ 1570]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
82 char *opt_rcfile_arg = NULL;
2823
cd23279122ed [gaim-migrate @ 2836]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2755
diff changeset
83 int opt_debug = 0;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
84 #ifdef _WIN32
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
85 int opt_gdebug = 0;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
86 #endif
1254
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
87
3105
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
88 #if HAVE_SIGNAL_H
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
89 /*
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
90 * Lists of signals we wish to catch and those we wish to ignore.
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
91 * Each list terminated with -1
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
92 */
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
93 static int catch_sig_list[] = {
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
94 SIGSEGV,
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
95 SIGHUP,
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
96 SIGINT,
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
97 SIGTERM,
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
98 SIGQUIT,
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
99 SIGCHLD,
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
100 -1
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
101 };
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
102
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
103 static int ignore_sig_list[] = {
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
104 SIGPIPE,
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
105 -1
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
106 };
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
107 #endif
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
108
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
109
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
110 void cancel_logon(void)
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
111 {
392
df5127560034 [gaim-migrate @ 402]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 369
diff changeset
112 #ifdef GAIM_PLUGINS
df5127560034 [gaim-migrate @ 402]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 369
diff changeset
113 /* first we tell those who have requested it we're quitting */
3517
6b0cb60162f4 [gaim-migrate @ 3590]
Sean Egan <seanegan@gmail.com>
parents: 3510
diff changeset
114 plugin_event(event_quit);
392
df5127560034 [gaim-migrate @ 402]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 369
diff changeset
115
df5127560034 [gaim-migrate @ 402]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 369
diff changeset
116 /* then we remove everyone in a mass suicide */
2125
af59d854de29 [gaim-migrate @ 2135]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2121
diff changeset
117 remove_all_plugins();
392
df5127560034 [gaim-migrate @ 402]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 369
diff changeset
118 #endif /* GAIM_PLUGINS */
784
4c292b3f74ea [gaim-migrate @ 794]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 780
diff changeset
119 #ifdef USE_PERL
4c292b3f74ea [gaim-migrate @ 794]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 780
diff changeset
120 perl_end();
4c292b3f74ea [gaim-migrate @ 794]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 780
diff changeset
121 #endif
392
df5127560034 [gaim-migrate @ 402]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 369
diff changeset
122
1117
f3e0f41beddb [gaim-migrate @ 1127]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1093
diff changeset
123 gtk_main_quit();
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
124 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
125
109
45bcfa3b584c [gaim-migrate @ 119]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 107
diff changeset
126 static int snd_tmout;
133
e277d5f0c1dd [gaim-migrate @ 143]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 109
diff changeset
127 int logins_not_muted = 1;
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
128 static void sound_timeout()
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
129 {
133
e277d5f0c1dd [gaim-migrate @ 143]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 109
diff changeset
130 logins_not_muted = 1;
109
45bcfa3b584c [gaim-migrate @ 119]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 107
diff changeset
131 gtk_timeout_remove(snd_tmout);
45bcfa3b584c [gaim-migrate @ 119]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 107
diff changeset
132 }
45bcfa3b584c [gaim-migrate @ 119]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 107
diff changeset
133
265
59f1748b09a6 [gaim-migrate @ 275]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 253
diff changeset
134 /* we need to do this for Oscar because serv_login only starts the login
59f1748b09a6 [gaim-migrate @ 275]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 253
diff changeset
135 * process, it doesn't end there. gaim_setup will be called later from
59f1748b09a6 [gaim-migrate @ 275]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 253
diff changeset
136 * oscar.c, after the buddy list is made and serv_finish_login is called */
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
137 void gaim_setup(struct gaim_connection *gc)
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
138 {
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
139 if ((sound_options & OPT_SOUND_LOGIN) && (sound_options & OPT_SOUND_SILENT_SIGNON)) {
133
e277d5f0c1dd [gaim-migrate @ 143]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 109
diff changeset
140 logins_not_muted = 0;
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
141 snd_tmout = gtk_timeout_add(10000, (GtkFunction)sound_timeout, NULL);
109
45bcfa3b584c [gaim-migrate @ 119]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 107
diff changeset
142 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
143 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
144
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
145
989
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
146 static void dologin(GtkWidget *widget, GtkWidget *w)
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
147 {
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
148 struct aim_user *u;
1942
ba421d552093 [gaim-migrate @ 1952]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1878
diff changeset
149 const char *username = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(name)->entry));
ba421d552093 [gaim-migrate @ 1952]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1878
diff changeset
150 const char *password = gtk_entry_get_text(GTK_ENTRY(pass));
989
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
151
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
152 if (!strlen(username)) {
3427
8fa61405af2b [gaim-migrate @ 3453]
Sean Egan <seanegan@gmail.com>
parents: 3391
diff changeset
153 do_error_dialog(_("Please enter your login."), NULL, GAIM_ERROR);
989
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
154 return;
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
155 }
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
156
2531
93b50fa8f410 [gaim-migrate @ 2544]
Rob Flynn <gaim@robflynn.com>
parents: 2511
diff changeset
157 /* if there is more than one user of the same name, then fuck
93b50fa8f410 [gaim-migrate @ 2544]
Rob Flynn <gaim@robflynn.com>
parents: 2511
diff changeset
158 * them, they just have to use the account editor to sign in
93b50fa8f410 [gaim-migrate @ 2544]
Rob Flynn <gaim@robflynn.com>
parents: 2511
diff changeset
159 * the second one */
989
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
160
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
161 u = find_user(username, -1);
1355
04874e92af24 [gaim-migrate @ 1365]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1333
diff changeset
162 if (!u)
1878
75643b9f4261 [gaim-migrate @ 1888]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1820
diff changeset
163 u = new_user(username, DEFAULT_PROTO, OPT_USR_REM_PASS);
989
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
164 g_snprintf(u->password, sizeof u->password, "%s", password);
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
165 save_prefs();
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
166 serv_login(u);
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
167 }
3726
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
168
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
169 /* <name> is a comma-separated list of names, or NULL
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
170 if NULL and there is at least one user defined in .gaimrc, try to login.
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
171 if not NULL, parse <name> into separate strings, look up each one in
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
172 .gaimrc and, if it's there, try to login.
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
173 returns: 0 if successful
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
174 -1 if no user was found that had a saved password
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
175 */
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
176 static int dologin_named(char *name)
3483
abaee81fdea2 [gaim-migrate @ 3537]
Sean Egan <seanegan@gmail.com>
parents: 3481
diff changeset
177 {
abaee81fdea2 [gaim-migrate @ 3537]
Sean Egan <seanegan@gmail.com>
parents: 3481
diff changeset
178 struct aim_user *u;
3726
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
179 char **names, **n;
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
180 int retval = -1;
3483
abaee81fdea2 [gaim-migrate @ 3537]
Sean Egan <seanegan@gmail.com>
parents: 3481
diff changeset
181
3726
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
182 if (name !=NULL) { /* list of names given */
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
183 names = g_strsplit(name, ",", 32);
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
184 for (n = names; *n != NULL; n++) {
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
185 u = find_user(*n, -1);
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
186 if (u) { /* found a user */
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
187 if (u->options & OPT_USR_REM_PASS) {
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
188 retval = 0;
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
189 serv_login(u);
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
190 }
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
191 }
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
192 }
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
193 g_strfreev(names);
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
194 } else { /* no name given, use default */
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
195 u = (struct aim_user *)aim_users->data;
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
196 if (u->options & OPT_USR_REM_PASS) {
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
197 retval = 0;
3483
abaee81fdea2 [gaim-migrate @ 3537]
Sean Egan <seanegan@gmail.com>
parents: 3481
diff changeset
198 serv_login(u);
3726
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
199 }
3483
abaee81fdea2 [gaim-migrate @ 3537]
Sean Egan <seanegan@gmail.com>
parents: 3481
diff changeset
200 }
3726
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
201
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
202 return retval;
3483
abaee81fdea2 [gaim-migrate @ 3537]
Sean Egan <seanegan@gmail.com>
parents: 3481
diff changeset
203 }
3726
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
204
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
205
989
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
206 static void doenter(GtkWidget *widget, GtkWidget *w)
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
207 {
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
208 if (widget == name) {
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
209 gtk_entry_set_text(GTK_ENTRY(pass), "");
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
210 gtk_entry_select_region(GTK_ENTRY(GTK_COMBO(name)->entry), 0, 0);
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
211 gtk_widget_grab_focus(pass);
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
212 } else if (widget == pass) {
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
213 dologin(widget, w);
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
214 }
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
215 }
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
216
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
217
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
218 static void combo_changed(GtkWidget *w, GtkWidget *combo)
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
219 {
1942
ba421d552093 [gaim-migrate @ 1952]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1878
diff changeset
220 const char *txt = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(combo)->entry));
989
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
221 struct aim_user *u;
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
222
1030
38452403563b [gaim-migrate @ 1040]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1026
diff changeset
223 u = find_user(txt, -1);
989
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
224
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
225 if (u && u->options & OPT_USR_REM_PASS) {
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
226 gtk_entry_set_text(GTK_ENTRY(pass), u->password);
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
227 } else {
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
228 gtk_entry_set_text(GTK_ENTRY(pass), "");
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
229 }
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
230 }
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
231
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
232
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
233 static GList *combo_user_names()
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
234 {
2397
520257562955 [gaim-migrate @ 2410]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2379
diff changeset
235 GSList *usr = aim_users;
989
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
236 GList *tmp = NULL;
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
237 struct aim_user *u;
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
238
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
239 if (!usr)
1409
17e544f8c7fb [gaim-migrate @ 1419]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1400
diff changeset
240 return g_list_append(NULL, "<New User>");
989
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
241
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
242 while (usr) {
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
243 u = (struct aim_user *)usr->data;
2257
eae25a0309c1 [gaim-migrate @ 2267]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2232
diff changeset
244 tmp = g_list_append(tmp, u->username);
989
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
245 usr = usr->next;
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
246 }
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
247
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
248 return tmp;
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
249 }
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
250
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
251 void show_login()
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
252 {
3649
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
253 GdkPixbuf *icon;
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
254 GtkWidget *image;
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
255 GtkWidget *vbox;
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
256 GtkWidget *button;
96
247f540ea6e1 [gaim-migrate @ 106]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 94
diff changeset
257 GtkWidget *hbox;
989
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
258 GtkWidget *label;
3652
239981ebcb05 [gaim-migrate @ 3776]
Rob Flynn <gaim@robflynn.com>
parents: 3649
diff changeset
259 GtkWidget *vbox2;
2257
eae25a0309c1 [gaim-migrate @ 2267]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2232
diff changeset
260 GList *tmp;
eae25a0309c1 [gaim-migrate @ 2267]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2232
diff changeset
261
3649
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
262 /* Do we already have a main window opened? If so, bring it back, baby... ribs... yeah */
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
263 if (mainwindow) {
3649
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
264 gtk_window_present(GTK_WINDOW(mainwindow));
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
265 return;
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
266 }
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
267
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
268 mainwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
269
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
270 gtk_window_set_wmclass(GTK_WINDOW(mainwindow), "login", "Gaim");
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
271 gtk_window_set_policy(GTK_WINDOW(mainwindow), FALSE, FALSE, TRUE);
1360
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
272 gtk_window_set_title(GTK_WINDOW(mainwindow), _("Gaim - Login"));
621
991bf4e3c9fe [gaim-migrate @ 631]
Todd Kulesza <fflewddur>
parents: 614
diff changeset
273 gtk_widget_realize(mainwindow);
1360
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
274 gdk_window_set_group(mainwindow->window, mainwindow->window);
3649
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
275 gtk_container_set_border_width(GTK_CONTAINER(mainwindow), 5);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
276 gtk_signal_connect(GTK_OBJECT(mainwindow), "delete_event",
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
277 GTK_SIGNAL_FUNC(cancel_logon), mainwindow);
1360
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
278
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
279
3649
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
280 icon = gaim_pixbuf(NULL, "gaim.png");
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
281 if (icon) {
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
282 gtk_window_set_icon(GTK_WINDOW(mainwindow), icon);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
283 gdk_pixbuf_unref(icon);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
284 }
1360
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
285
3649
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
286 vbox = gtk_vbox_new(FALSE, 0);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
287 gtk_container_add(GTK_CONTAINER(mainwindow), vbox);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
288
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
289 image = gaim_pixmap(NULL, "logo.png");
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
290 gtk_box_pack_start(GTK_BOX(vbox), image, FALSE, FALSE, 0);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
291
3652
239981ebcb05 [gaim-migrate @ 3776]
Rob Flynn <gaim@robflynn.com>
parents: 3649
diff changeset
292 vbox2 = gtk_vbox_new(FALSE, 0);
239981ebcb05 [gaim-migrate @ 3776]
Rob Flynn <gaim@robflynn.com>
parents: 3649
diff changeset
293 gtk_container_set_border_width(GTK_CONTAINER(vbox2), 5);
239981ebcb05 [gaim-migrate @ 3776]
Rob Flynn <gaim@robflynn.com>
parents: 3649
diff changeset
294
3649
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
295 label = gtk_label_new(_("Screen Name:"));
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
296 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
3652
239981ebcb05 [gaim-migrate @ 3776]
Rob Flynn <gaim@robflynn.com>
parents: 3649
diff changeset
297 gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 0);
989
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
298
1360
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
299 name = gtk_combo_new();
2257
eae25a0309c1 [gaim-migrate @ 2267]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2232
diff changeset
300 tmp = combo_user_names();
eae25a0309c1 [gaim-migrate @ 2267]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2232
diff changeset
301 gtk_combo_set_popdown_strings(GTK_COMBO(name), tmp);
eae25a0309c1 [gaim-migrate @ 2267]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2232
diff changeset
302 g_list_free(tmp);
1360
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
303 gtk_signal_connect(GTK_OBJECT(GTK_COMBO(name)->entry), "activate",
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
304 GTK_SIGNAL_FUNC(doenter), mainwindow);
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
305 gtk_signal_connect(GTK_OBJECT(GTK_COMBO(name)->entry), "changed",
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
306 GTK_SIGNAL_FUNC(combo_changed), name);
3652
239981ebcb05 [gaim-migrate @ 3776]
Rob Flynn <gaim@robflynn.com>
parents: 3649
diff changeset
307 gtk_box_pack_start(GTK_BOX(vbox2), name, FALSE, TRUE, 0);
239981ebcb05 [gaim-migrate @ 3776]
Rob Flynn <gaim@robflynn.com>
parents: 3649
diff changeset
308 gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, TRUE, 0);
239981ebcb05 [gaim-migrate @ 3776]
Rob Flynn <gaim@robflynn.com>
parents: 3649
diff changeset
309
239981ebcb05 [gaim-migrate @ 3776]
Rob Flynn <gaim@robflynn.com>
parents: 3649
diff changeset
310 vbox2 = gtk_vbox_new(FALSE, 0);
239981ebcb05 [gaim-migrate @ 3776]
Rob Flynn <gaim@robflynn.com>
parents: 3649
diff changeset
311 gtk_container_set_border_width(GTK_CONTAINER(vbox2), 5);
1360
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
312
3649
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
313 label = gtk_label_new(_("Password:"));
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
314 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
3652
239981ebcb05 [gaim-migrate @ 3776]
Rob Flynn <gaim@robflynn.com>
parents: 3649
diff changeset
315 gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 0);
1360
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
316
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
317 pass = gtk_entry_new();
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
318 gtk_entry_set_visibility(GTK_ENTRY(pass), FALSE);
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
319 gtk_signal_connect(GTK_OBJECT(pass), "activate", GTK_SIGNAL_FUNC(doenter), mainwindow);
3652
239981ebcb05 [gaim-migrate @ 3776]
Rob Flynn <gaim@robflynn.com>
parents: 3649
diff changeset
320 gtk_box_pack_start(GTK_BOX(vbox2), pass, FALSE, TRUE, 0);
239981ebcb05 [gaim-migrate @ 3776]
Rob Flynn <gaim@robflynn.com>
parents: 3649
diff changeset
321 gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, TRUE, 0);
1360
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
322
3649
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
323 /* Now for the button box */
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
324 hbox = gtk_hbox_new(TRUE, 0);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
325 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 5);
1360
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
326
3649
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
327 /* And now for the buttons */
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
328 button = gaim_pixbuf_button("Accounts", "accounts.png", GAIM_BUTTON_VERTICAL);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
329 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
330 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(account_editor), mainwindow);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
331 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
1360
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
332
3649
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
333 #ifdef NO_MULTI
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
334 gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE);
1360
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
335 #endif
ed8b24a73764 [gaim-migrate @ 1370]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1355
diff changeset
336
3649
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
337 button = gaim_pixbuf_button("Settings", "preferences.png", GAIM_BUTTON_VERTICAL);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
338 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
339 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(show_prefs), mainwindow);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
340 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
535
f03f041c1aa9 [gaim-migrate @ 545]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 508
diff changeset
341
3649
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
342 button = gaim_pixbuf_button("Sign On", "signon.png", GAIM_BUTTON_VERTICAL);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
343 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
344 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(dologin), mainwindow);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
345 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
346
3649
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
347 /* Now grab the focus that we need */
989
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
348 if (aim_users) {
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
349 struct aim_user *c = (struct aim_user *)aim_users->data;
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
350 if (c->options & OPT_USR_REM_PASS) {
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
351 combo_changed(NULL, name);
3649
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
352 gtk_widget_grab_focus(button);
989
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
353 } else {
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
354 gtk_widget_grab_focus(pass);
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
355 }
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
356 } else {
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
357 gtk_widget_grab_focus(name);
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
358 }
bd8eb3efe14e [gaim-migrate @ 999]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 988
diff changeset
359
3649
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
360 /* And raise the curtain! */
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
361 gtk_widget_show_all(mainwindow);
f09193608fd3 [gaim-migrate @ 3773]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
362
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
363 }
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
364
614
a3e32af35b30 [gaim-migrate @ 624]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 600
diff changeset
365 #if HAVE_SIGNAL_H
a3e32af35b30 [gaim-migrate @ 624]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 600
diff changeset
366 void sighandler(int sig)
a3e32af35b30 [gaim-migrate @ 624]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 600
diff changeset
367 {
1415
3dfd2a83fb5e [gaim-migrate @ 1425]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1409
diff changeset
368 switch (sig) {
2083
f5659096bcd6 [gaim-migrate @ 2093]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2075
diff changeset
369 case SIGHUP:
f5659096bcd6 [gaim-migrate @ 2093]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2075
diff changeset
370 debug_printf("caught signal %d\n", sig);
f5659096bcd6 [gaim-migrate @ 2093]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2075
diff changeset
371 signoff_all(NULL, NULL);
f5659096bcd6 [gaim-migrate @ 2093]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2075
diff changeset
372 break;
1415
3dfd2a83fb5e [gaim-migrate @ 1425]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1409
diff changeset
373 case SIGSEGV:
2416
61b816a7b467 [gaim-migrate @ 2429]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2397
diff changeset
374 core_quit();
2755
adbda5d9b50c [gaim-migrate @ 2768]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2591
diff changeset
375 #ifndef DEBUG
1697
23ad4f7b644f [gaim-migrate @ 1707]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1560
diff changeset
376 fprintf(stderr, "Gaim has segfaulted and attempted to dump a core file.\n"
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
377 "This is a bug in the software and has happened through\n"
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
378 "no fault of your own.\n\n"
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
379 "It is possible that this bug is already fixed in CVS.\n"
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
380 "You can get a tarball of CVS from the Gaim website, at\n"
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
381 WEBSITE "gaim-CVS.tar.gz.\n\n"
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
382 "If you are already using CVS, or can reproduce the crash\n"
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
383 "using the CVS version, please notify the gaim maintainers\n"
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
384 "by reporting a bug at\n"
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
385 WEBSITE "bug.php3\n\n"
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
386 "Please make sure to specify what you were doing at the time,\n"
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
387 "and post the backtrace from the core file. If you do not know\n"
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
388 "how to get the backtrace, please get instructions at\n"
2554
7f312efd287f [gaim-migrate @ 2567]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2533
diff changeset
389 WEBSITE "gdb.php. If you need further\n"
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2902
diff changeset
390 "assistance, please IM either RobFlynn or SeanEgn and\n"
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
391 "they can help you.\n");
3481
443b3311871d [gaim-migrate @ 3535]
Sean Egan <seanegan@gmail.com>
parents: 3478
diff changeset
392 #else
443b3311871d [gaim-migrate @ 3535]
Sean Egan <seanegan@gmail.com>
parents: 3478
diff changeset
393 fprintf(stderr, "Oh no! Segmentation fault!\n");
3528
aa5bb19435ce [gaim-migrate @ 3601]
Sean Egan <seanegan@gmail.com>
parents: 3525
diff changeset
394 g_on_error_query (g_get_prgname());
3525
1c5d35f767c5 [gaim-migrate @ 3598]
Sean Egan <seanegan@gmail.com>
parents: 3517
diff changeset
395 exit(1);
2755
adbda5d9b50c [gaim-migrate @ 2768]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2591
diff changeset
396 #endif
1415
3dfd2a83fb5e [gaim-migrate @ 1425]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1409
diff changeset
397 abort();
3dfd2a83fb5e [gaim-migrate @ 1425]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1409
diff changeset
398 break;
3076
a7e03c5d2205 [gaim-migrate @ 3090]
Rob Flynn <gaim@robflynn.com>
parents: 2993
diff changeset
399 case SIGCHLD:
a7e03c5d2205 [gaim-migrate @ 3090]
Rob Flynn <gaim@robflynn.com>
parents: 2993
diff changeset
400 clean_pid();
3105
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
401 #if HAVE_SIGNAL_H
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
402 signal(SIGCHLD, sighandler); /* restore signal catching on this one! */
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
403 #endif
3076
a7e03c5d2205 [gaim-migrate @ 3090]
Rob Flynn <gaim@robflynn.com>
parents: 2993
diff changeset
404 break;
1415
3dfd2a83fb5e [gaim-migrate @ 1425]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1409
diff changeset
405 default:
2125
af59d854de29 [gaim-migrate @ 2135]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2121
diff changeset
406 debug_printf("caught signal %d\n", sig);
1820
73bb4244165f [gaim-migrate @ 1830]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1815
diff changeset
407 gtkspell_stop();
2591
b771cbe7e161 [gaim-migrate @ 2604]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2554
diff changeset
408 signoff_all(NULL, NULL);
2140
66a84ff0445a [gaim-migrate @ 2150]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2130
diff changeset
409 #ifdef GAIM_PLUGINS
2125
af59d854de29 [gaim-migrate @ 2135]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2121
diff changeset
410 remove_all_plugins();
2140
66a84ff0445a [gaim-migrate @ 2150]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2130
diff changeset
411 #endif
1792
de88617f542c [gaim-migrate @ 1802]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
412 if (gtk_main_level())
de88617f542c [gaim-migrate @ 1802]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1774
diff changeset
413 gtk_main_quit();
2416
61b816a7b467 [gaim-migrate @ 2429]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2397
diff changeset
414 core_quit();
1415
3dfd2a83fb5e [gaim-migrate @ 1425]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1409
diff changeset
415 exit(0);
3dfd2a83fb5e [gaim-migrate @ 1425]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1409
diff changeset
416 }
614
a3e32af35b30 [gaim-migrate @ 624]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 600
diff changeset
417 }
a3e32af35b30 [gaim-migrate @ 624]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 600
diff changeset
418 #endif
a3e32af35b30 [gaim-migrate @ 624]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 600
diff changeset
419
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
420 #ifndef _WIN32
2482
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
421 static gboolean socket_readable(GIOChannel *source, GIOCondition cond, gpointer ud)
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
422 {
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
423 guchar type;
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
424 guchar subtype;
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
425 guint32 len;
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
426 guchar *data;
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
427 guint32 x;
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
428
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
429 debug_printf("Core says: ");
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
430 g_io_channel_read(source, &type, sizeof(type), &x);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
431 if (x == 0) {
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
432 debug_printf("CORE IS GONE!\n");
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
433 g_io_channel_close(source);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
434 return FALSE;
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
435 }
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
436 debug_printf("%d ", type);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
437 g_io_channel_read(source, &subtype, sizeof(subtype), &x);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
438 if (x == 0) {
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
439 debug_printf("CORE IS GONE!\n");
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
440 g_io_channel_close(source);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
441 return FALSE;
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
442 }
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
443 debug_printf("%d ", subtype);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
444 g_io_channel_read(source, (guchar *)&len, sizeof(len), &x);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
445 if (x == 0) {
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
446 debug_printf("CORE IS GONE!\n");
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
447 g_io_channel_close(source);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
448 return FALSE;
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
449 }
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
450 debug_printf("(%d bytes)\n", len);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
451
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
452 data = g_malloc(len);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
453 g_io_channel_read(source, data, len, &x);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
454 if (x != len) {
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
455 debug_printf("CORE IS GONE! (read %d/%d bytes)\n", x, len);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
456 g_free(data);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
457 g_io_channel_close(source);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
458 return FALSE;
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
459 }
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
460
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
461 g_free(data);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
462 return TRUE;
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
463 }
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
464
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
465 static int ui_main()
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
466 {
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
467 GIOChannel *channel;
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
468 int UI_fd;
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
469 char name[256];
3474
cfbdfe334975 [gaim-migrate @ 3525]
Sean Egan <seanegan@gmail.com>
parents: 3472
diff changeset
470 GList *icons = NULL;
cfbdfe334975 [gaim-migrate @ 3525]
Sean Egan <seanegan@gmail.com>
parents: 3472
diff changeset
471 GdkPixbuf *icon = NULL;
cfbdfe334975 [gaim-migrate @ 3525]
Sean Egan <seanegan@gmail.com>
parents: 3472
diff changeset
472
cfbdfe334975 [gaim-migrate @ 3525]
Sean Egan <seanegan@gmail.com>
parents: 3472
diff changeset
473 /* use the nice PNG icon for all the windows */
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
474 icon = gdk_pixbuf_new_from_file(DATADIR G_DIR_SEPARATOR_S "pixmaps" G_DIR_SEPARATOR_S "gaim.png",NULL);
3474
cfbdfe334975 [gaim-migrate @ 3525]
Sean Egan <seanegan@gmail.com>
parents: 3472
diff changeset
475 if (icon) {
cfbdfe334975 [gaim-migrate @ 3525]
Sean Egan <seanegan@gmail.com>
parents: 3472
diff changeset
476 icons = g_list_append(icons,icon);
cfbdfe334975 [gaim-migrate @ 3525]
Sean Egan <seanegan@gmail.com>
parents: 3472
diff changeset
477 gtk_window_set_default_icon_list(icons);
cfbdfe334975 [gaim-migrate @ 3525]
Sean Egan <seanegan@gmail.com>
parents: 3472
diff changeset
478 g_object_unref(G_OBJECT(icon));
cfbdfe334975 [gaim-migrate @ 3525]
Sean Egan <seanegan@gmail.com>
parents: 3472
diff changeset
479 } else {
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
480 debug_printf("Failed to load icon from %s" G_DIR_SEPARATOR_S "pixmaps" G_DIR_SEPARATOR_S "gaim.png\n",DATADIR);
3474
cfbdfe334975 [gaim-migrate @ 3525]
Sean Egan <seanegan@gmail.com>
parents: 3472
diff changeset
481 }
2482
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
482
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
483 g_snprintf(name, sizeof(name), "%s" G_DIR_SEPARATOR_S "gaim_%s.%d", g_get_tmp_dir(), g_get_user_name(), gaim_session);
2482
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
484
3533
6c32036050cf [gaim-migrate @ 3607]
Sean Egan <seanegan@gmail.com>
parents: 3531
diff changeset
485 UI_fd = gaim_connect_to_session(0);
2482
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
486 if (UI_fd < 0)
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
487 return 1;
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
488
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
489 channel = g_io_channel_unix_new(UI_fd);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
490 g_io_add_watch(channel, G_IO_IN | G_IO_HUP | G_IO_ERR, socket_readable, NULL);
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
491 return 0;
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
492 }
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
493 #endif /* _WIN32 */
2482
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
494
2379
cacaf7ace3a5 [gaim-migrate @ 2392]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
495 static void set_first_user(char *name)
cacaf7ace3a5 [gaim-migrate @ 2392]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
496 {
cacaf7ace3a5 [gaim-migrate @ 2392]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
497 struct aim_user *u;
cacaf7ace3a5 [gaim-migrate @ 2392]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
498
cacaf7ace3a5 [gaim-migrate @ 2392]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
499 u = find_user(name, -1);
cacaf7ace3a5 [gaim-migrate @ 2392]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
500
cacaf7ace3a5 [gaim-migrate @ 2392]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
501 if (!u) { /* new user */
cacaf7ace3a5 [gaim-migrate @ 2392]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
502 u = g_new0(struct aim_user, 1);
cacaf7ace3a5 [gaim-migrate @ 2392]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
503 g_snprintf(u->username, sizeof(u->username), "%s", name);
cacaf7ace3a5 [gaim-migrate @ 2392]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
504 u->protocol = DEFAULT_PROTO;
2397
520257562955 [gaim-migrate @ 2410]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2379
diff changeset
505 aim_users = g_slist_prepend(aim_users, u);
2379
cacaf7ace3a5 [gaim-migrate @ 2392]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
506 } else { /* user already exists */
2397
520257562955 [gaim-migrate @ 2410]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2379
diff changeset
507 aim_users = g_slist_remove(aim_users, u);
520257562955 [gaim-migrate @ 2410]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2379
diff changeset
508 aim_users = g_slist_prepend(aim_users, u);
2379
cacaf7ace3a5 [gaim-migrate @ 2392]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
509 }
cacaf7ace3a5 [gaim-migrate @ 2392]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
510 save_prefs();
cacaf7ace3a5 [gaim-migrate @ 2392]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
511 }
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
512
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
513 #ifdef _WIN32
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
514 /* WIN32 print and log handlers */
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
515
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
516 static void gaim_dummy_print( const gchar* string ) {
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
517 return;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
518 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
519
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
520 static void gaim_dummy_log_handler (const gchar *domain,
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
521 GLogLevelFlags flags,
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
522 const gchar *msg,
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
523 gpointer user_data) {
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
524 return;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
525 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
526
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
527 static void gaim_log_handler (const gchar *domain,
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
528 GLogLevelFlags flags,
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
529 const gchar *msg,
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
530 gpointer user_data) {
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
531 debug_printf("%s - %s\n", domain, msg);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
532 g_log_default_handler(domain, flags, msg, user_data);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
533 }
3716
d7e83b4db191 [gaim-migrate @ 3849]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 3652
diff changeset
534 #endif /* _WIN32 */
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
535
2500
1697ecbf1bcc [gaim-migrate @ 2513]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2484
diff changeset
536 /* FUCKING GET ME A TOWEL! */
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
537 #ifdef _WIN32
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
538 int gaim_main(int argc, char *argv[])
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
539 #else
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
540 int main(int argc, char *argv[])
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
541 #endif
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
542 {
3726
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
543 int opt_acct = 0, opt_help = 0, opt_version = 0, opt_login = 0, opt_nologin = 0, dologin_ret = -1;
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
544 char *opt_user_arg = NULL, *opt_login_arg = NULL;
3105
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
545 #if HAVE_SIGNAL_H
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
546 int sig_indx; /* for setting up signal catching */
3138
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
547 sigset_t sigset;
3105
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
548 void (*prev_sig_disp)();
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
549 #endif
2307
64dd9e99884c [gaim-migrate @ 2317]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2257
diff changeset
550 int opt, opt_user = 0;
2068
e38eb507b261 [gaim-migrate @ 2078]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2006
diff changeset
551 int i;
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
552
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
553 struct option long_options[] = {
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
554 {"acct", no_argument, NULL, 'a'},
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
555 /*{"away", optional_argument, NULL, 'w'}, */
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
556 {"help", no_argument, NULL, 'h'},
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
557 /*{"login", optional_argument, NULL, 'l'}, */
3360
f06c87748d91 [gaim-migrate @ 3379]
Sean Egan <seanegan@gmail.com>
parents: 3285
diff changeset
558 {"loginwin", no_argument, NULL, 'n'},
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
559 {"user", required_argument, NULL, 'u'},
1560
72235e3fcff6 [gaim-migrate @ 1570]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
560 {"file", required_argument, NULL, 'f'},
2823
cd23279122ed [gaim-migrate @ 2836]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2755
diff changeset
561 {"debug", no_argument, NULL, 'd'},
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
562 {"version", no_argument, NULL, 'v'},
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
563 {0, 0, 0, 0}
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
564 };
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
565
2823
cd23279122ed [gaim-migrate @ 2836]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2755
diff changeset
566 #ifdef DEBUG
cd23279122ed [gaim-migrate @ 2836]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2755
diff changeset
567 opt_debug = 1;
cd23279122ed [gaim-migrate @ 2836]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2755
diff changeset
568 #endif
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
569
369
cf895313fc50 [gaim-migrate @ 379]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 357
diff changeset
570 #ifdef ENABLE_NLS
cf895313fc50 [gaim-migrate @ 379]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 357
diff changeset
571 bindtextdomain(PACKAGE, LOCALEDIR);
3531
84d2cd1d0ec9 [gaim-migrate @ 3605]
Sean Egan <seanegan@gmail.com>
parents: 3528
diff changeset
572 bind_textdomain_codeset(PACKAGE, "UTF-8");
369
cf895313fc50 [gaim-migrate @ 379]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 357
diff changeset
573 textdomain(PACKAGE);
cf895313fc50 [gaim-migrate @ 379]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 357
diff changeset
574 #endif
cf895313fc50 [gaim-migrate @ 379]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 357
diff changeset
575
614
a3e32af35b30 [gaim-migrate @ 624]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 600
diff changeset
576 #if HAVE_SIGNAL_H
a3e32af35b30 [gaim-migrate @ 624]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 600
diff changeset
577 /* Let's not violate any PLA's!!!! */
3105
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
578 /* jseymour: whatever the fsck that means */
3138
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
579 /* Robot101: for some reason things like gdm like to block *
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
580 * useful signals like SIGCHLD, so we unblock all the ones we *
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
581 * declare a handler for. thanks JSeymour and Vann. */
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
582 if (sigemptyset(&sigset)) {
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
583 char errmsg[BUFSIZ];
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
584 sprintf(errmsg, "Warning: couldn't initialise empty signal set");
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
585 perror(errmsg);
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
586 }
3105
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
587 for(sig_indx = 0; catch_sig_list[sig_indx] != -1; ++sig_indx) {
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
588 if((prev_sig_disp = signal(catch_sig_list[sig_indx], sighandler)) == SIG_ERR) {
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
589 char errmsg[BUFSIZ];
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
590 sprintf(errmsg, "Warning: couldn't set signal %d for catching",
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
591 catch_sig_list[sig_indx]);
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
592 perror(errmsg);
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
593 }
3138
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
594 if(sigaddset(&sigset, catch_sig_list[sig_indx])) {
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
595 char errmsg[BUFSIZ];
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
596 sprintf(errmsg, "Warning: couldn't include signal %d for unblocking",
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
597 catch_sig_list[sig_indx]);
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
598 perror(errmsg);
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
599 }
3105
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
600 }
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
601 for(sig_indx = 0; ignore_sig_list[sig_indx] != -1; ++sig_indx) {
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
602 if((prev_sig_disp = signal(ignore_sig_list[sig_indx], SIG_IGN)) == SIG_ERR) {
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
603 char errmsg[BUFSIZ];
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
604 sprintf(errmsg, "Warning: couldn't set signal %d to ignore",
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
605 ignore_sig_list[sig_indx]);
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
606 perror(errmsg);
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
607 }
da324fe688b3 [gaim-migrate @ 3119]
Sean Egan <seanegan@gmail.com>
parents: 3076
diff changeset
608 }
3138
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
609
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
610 if (sigprocmask(SIG_UNBLOCK, &sigset, NULL)) {
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
611 char errmsg[BUFSIZ];
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
612 sprintf(errmsg, "Warning: couldn't unblock signals");
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
613 perror(errmsg);
e970fccae757 [gaim-migrate @ 3153]
Rob Flynn <gaim@robflynn.com>
parents: 3105
diff changeset
614 }
614
a3e32af35b30 [gaim-migrate @ 624]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 600
diff changeset
615 #endif
a3e32af35b30 [gaim-migrate @ 624]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 600
diff changeset
616
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
617 for (i = 0; i < argc; i++) {
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
618 /* --login option */
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
619 if (strstr(argv[i], "--l") == argv[i]) {
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
620 char *equals;
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
621 opt_login = 1;
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
622 if ((equals = strchr(argv[i], '=')) != NULL) {
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
623 /* --login=NAME */
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
624 opt_login_arg = g_strdup(equals + 1);
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
625 if (strlen(opt_login_arg) == 0) {
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
626 g_free(opt_login_arg);
2068
e38eb507b261 [gaim-migrate @ 2078]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2006
diff changeset
627 opt_login_arg = NULL;
e38eb507b261 [gaim-migrate @ 2078]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2006
diff changeset
628 }
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
629 } else if (i + 1 < argc && argv[i + 1][0] != '-') {
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
630 /* --login NAME */
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
631 opt_login_arg = g_strdup(argv[i + 1]);
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
632 strcpy(argv[i + 1], " ");
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
633 }
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
634 strcpy(argv[i], " ");
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
635 }
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
636 /* -l option */
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
637 else if (strstr(argv[i], "-l") == argv[i]) {
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
638 opt_login = 1;
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
639 if (strlen(argv[i]) > 2) {
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
640 /* -lNAME */
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
641 opt_login_arg = g_strdup(argv[i] + 2);
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
642 } else if (i + 1 < argc && argv[i + 1][0] != '-') {
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
643 /* -l NAME */
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
644 opt_login_arg = g_strdup(argv[i + 1]);
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
645 strcpy(argv[i + 1], " ");
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
646 }
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
647 strcpy(argv[i], " ");
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
648 }
1254
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
649 /* --away option */
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
650 else if (strstr(argv[i], "--aw") == argv[i]) {
1254
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
651 char *equals;
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
652 opt_away = 1;
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
653 if ((equals = strchr(argv[i], '=')) != NULL) {
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
654 /* --away=MESG */
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
655 opt_away_arg = g_strdup(equals + 1);
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
656 if (strlen(opt_away_arg) == 0) {
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
657 g_free(opt_away_arg);
2068
e38eb507b261 [gaim-migrate @ 2078]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2006
diff changeset
658 opt_away_arg = NULL;
e38eb507b261 [gaim-migrate @ 2078]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2006
diff changeset
659 }
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
660 } else if (i + 1 < argc && argv[i + 1][0] != '-') {
1254
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
661 /* --away MESG */
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
662 opt_away_arg = g_strdup(argv[i + 1]);
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
663 strcpy(argv[i + 1], " ");
1254
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
664 }
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
665 strcpy(argv[i], " ");
1254
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
666 }
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
667 /* -w option */
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
668 else if (strstr(argv[i], "-w") == argv[i]) {
1254
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
669 opt_away = 1;
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
670 if (strlen(argv[i]) > 2) {
1254
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
671 /* -wMESG */
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
672 opt_away_arg = g_strdup(argv[i] + 2);
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
673 } else if (i + 1 < argc && argv[i + 1][0] != '-') {
1254
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
674 /* -w MESG */
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
675 opt_away_arg = g_strdup(argv[i + 1]);
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
676 strcpy(argv[i + 1], " ");
1254
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
677 }
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
678 strcpy(argv[i], " ");
9da444224f0e [gaim-migrate @ 1264]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1250
diff changeset
679 }
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
680 }
2068
e38eb507b261 [gaim-migrate @ 2078]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2006
diff changeset
681 /*
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
682 if (opt_login) {
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
683 printf ("--login given with arg %s\n",
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
684 opt_login_arg ? opt_login_arg : "NULL");
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
685 exit(0);
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
686 }
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
687 */
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
688
2075
75c06bcb022e [gaim-migrate @ 2085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2068
diff changeset
689 gtk_set_locale();
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
690 gtk_init(&argc, &argv);
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
691
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
692 /* scan command-line options */
2120
9e2475cb0010 [gaim-migrate @ 2130]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2119
diff changeset
693 opterr = 1;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
694 while ((opt = getopt_long(argc, argv,
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
695 #ifndef _WIN32
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
696 "adhu:f:vn",
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
697 #else
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
698 "adghu:f:vn",
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
699 #endif
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
700 long_options, NULL)) != -1) {
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
701 switch (opt) {
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
702 case 'u': /* set user */
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
703 opt_user = 1;
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
704 opt_user_arg = g_strdup(optarg);
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
705 break;
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
706 case 'a': /* account editor */
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
707 opt_acct = 1;
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
708 break;
2823
cd23279122ed [gaim-migrate @ 2836]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2755
diff changeset
709 case 'd': /* debug */
cd23279122ed [gaim-migrate @ 2836]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2755
diff changeset
710 opt_debug = 1;
cd23279122ed [gaim-migrate @ 2836]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2755
diff changeset
711 break;
1560
72235e3fcff6 [gaim-migrate @ 1570]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
712 case 'f':
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2329
diff changeset
713 opt_rcfile_arg = g_strdup(optarg);
1560
72235e3fcff6 [gaim-migrate @ 1570]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1555
diff changeset
714 break;
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
715 case 'v': /* version */
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
716 opt_version = 1;
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
717 break;
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
718 case 'h': /* help */
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
719 opt_help = 1;
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
720 break;
3360
f06c87748d91 [gaim-migrate @ 3379]
Sean Egan <seanegan@gmail.com>
parents: 3285
diff changeset
721 case 'n': /* don't autologin */
f06c87748d91 [gaim-migrate @ 3379]
Sean Egan <seanegan@gmail.com>
parents: 3285
diff changeset
722 opt_nologin = 1;
f06c87748d91 [gaim-migrate @ 3379]
Sean Egan <seanegan@gmail.com>
parents: 3285
diff changeset
723 break;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
724 #ifdef _WIN32
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
725 case 'g': /* debug GTK and GLIB */
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
726 opt_gdebug = 1;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
727 break;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
728 #endif
2120
9e2475cb0010 [gaim-migrate @ 2130]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2119
diff changeset
729 case '?':
9e2475cb0010 [gaim-migrate @ 2130]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2119
diff changeset
730 default:
2121
388b2d23442a [gaim-migrate @ 2131]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2120
diff changeset
731 show_usage(1, argv[0]);
2120
9e2475cb0010 [gaim-migrate @ 2130]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2119
diff changeset
732 return 0;
9e2475cb0010 [gaim-migrate @ 2130]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2119
diff changeset
733 break;
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
734 }
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
735 }
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
736
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
737 #ifdef _WIN32
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
738 /* We don't want a console window.. */
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
739 /*
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
740 * Any calls to the glib logging functions, result in a call to AllocConsole().
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
741 * ME and 98 will in such cases produce a console window (2000 not), despite
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
742 * being built as a windows app rather than a console app. So we should either
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
743 * ignore messages by setting dummy log handlers, or redirect messages.
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
744 * This requires setting handlers for all domains (any lib which uses g_logging).
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
745 */
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
746
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
747 g_log_set_handler ("Gdk", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION,
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
748 (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler),
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
749 NULL);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
750 g_log_set_handler ("Gtk", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION,
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
751 (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler),
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
752 NULL);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
753 g_log_set_handler ("GLib", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION,
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
754 (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler),
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
755 NULL);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
756 g_log_set_handler ("GModule", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION,
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
757 (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler),
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
758 NULL);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
759 g_log_set_handler ("GLib-GObject", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION,
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
760 (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler),
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
761 NULL);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
762 g_log_set_handler ("GThread", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION,
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
763 (opt_gdebug ? gaim_log_handler : gaim_dummy_log_handler),
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
764 NULL);
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
765
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
766 /* g_print also makes a call to AllocConsole(), therefore a handler needs to be
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
767 set here aswell */
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
768 if(!opt_debug)
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
769 g_set_print_handler( gaim_dummy_print );
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
770
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
771 #endif
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
772
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
773 /* show help message */
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
774 if (opt_help) {
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
775 show_usage(0, argv[0]);
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
776 return 0;
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
777 }
3474
cfbdfe334975 [gaim-migrate @ 3525]
Sean Egan <seanegan@gmail.com>
parents: 3472
diff changeset
778 /* show version message */
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
779 if (opt_version) {
3474
cfbdfe334975 [gaim-migrate @ 3525]
Sean Egan <seanegan@gmail.com>
parents: 3472
diff changeset
780 printf("Gaim %s\n",VERSION);
546
e312b8b9bee5 [gaim-migrate @ 556]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 535
diff changeset
781 return 0;
e312b8b9bee5 [gaim-migrate @ 556]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 535
diff changeset
782 }
3551
cd938f18f3f8 [gaim-migrate @ 3626]
Sean Egan <seanegan@gmail.com>
parents: 3533
diff changeset
783
cd938f18f3f8 [gaim-migrate @ 3626]
Sean Egan <seanegan@gmail.com>
parents: 3533
diff changeset
784 #if GAIM_PLUGINS || USE_PERL
cd938f18f3f8 [gaim-migrate @ 3626]
Sean Egan <seanegan@gmail.com>
parents: 3533
diff changeset
785 gaim_probe_plugins();
cd938f18f3f8 [gaim-migrate @ 3626]
Sean Egan <seanegan@gmail.com>
parents: 3533
diff changeset
786 #endif
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
787 load_prefs();
2416
61b816a7b467 [gaim-migrate @ 2429]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2397
diff changeset
788 core_main();
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
789 #ifndef _WIN32
2482
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
790 ui_main();
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
791 #endif
2416
61b816a7b467 [gaim-migrate @ 2429]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2397
diff changeset
792
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
793 /* set the default username */
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
794 if (opt_user_arg != NULL) {
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
795 set_first_user(opt_user_arg);
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
796 g_free(opt_user_arg);
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
797 opt_user_arg = NULL;
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
798 }
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
799
2313
bd9d403fb15b [gaim-migrate @ 2323]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2307
diff changeset
800 if (misc_options & OPT_MISC_DEBUG)
bd9d403fb15b [gaim-migrate @ 2323]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2307
diff changeset
801 show_debug();
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
802 #ifndef _WIN32
3209
265a3c9d0557 [gaim-migrate @ 3226]
Sean Egan <seanegan@gmail.com>
parents: 3138
diff changeset
803 /*If ispell fails to start, try using aspell in ispell compatibitity mode.
265a3c9d0557 [gaim-migrate @ 3226]
Sean Egan <seanegan@gmail.com>
parents: 3138
diff changeset
804 Gabber does this the same way -- lorien420@myrealbox.com*/
265a3c9d0557 [gaim-migrate @ 3226]
Sean Egan <seanegan@gmail.com>
parents: 3138
diff changeset
805 if (convo_options & OPT_CONVO_CHECK_SPELLING){
265a3c9d0557 [gaim-migrate @ 3226]
Sean Egan <seanegan@gmail.com>
parents: 3138
diff changeset
806 if (gtkspell_start(NULL, ispell_cmd)<0){
265a3c9d0557 [gaim-migrate @ 3226]
Sean Egan <seanegan@gmail.com>
parents: 3138
diff changeset
807 debug_printf("gtkspell failed to start when using ispell\n");
265a3c9d0557 [gaim-migrate @ 3226]
Sean Egan <seanegan@gmail.com>
parents: 3138
diff changeset
808 if (gtkspell_start(NULL, aspell_cmd)<0){
265a3c9d0557 [gaim-migrate @ 3226]
Sean Egan <seanegan@gmail.com>
parents: 3138
diff changeset
809 debug_printf("gtkspell failed to start when using aspell\n");
265a3c9d0557 [gaim-migrate @ 3226]
Sean Egan <seanegan@gmail.com>
parents: 3138
diff changeset
810 } else
265a3c9d0557 [gaim-migrate @ 3226]
Sean Egan <seanegan@gmail.com>
parents: 3138
diff changeset
811 debug_printf("gtkspell started with aspell\n");
265a3c9d0557 [gaim-migrate @ 3226]
Sean Egan <seanegan@gmail.com>
parents: 3138
diff changeset
812 } else {
265a3c9d0557 [gaim-migrate @ 3226]
Sean Egan <seanegan@gmail.com>
parents: 3138
diff changeset
813 debug_printf("gtkspell started with ispell\n");
265a3c9d0557 [gaim-migrate @ 3226]
Sean Egan <seanegan@gmail.com>
parents: 3138
diff changeset
814 }
265a3c9d0557 [gaim-migrate @ 3226]
Sean Egan <seanegan@gmail.com>
parents: 3138
diff changeset
815 }
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
816 #endif
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
817 static_proto_init();
784
4c292b3f74ea [gaim-migrate @ 794]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 780
diff changeset
818
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
819 /* deal with --login */
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
820 if (opt_login) {
3726
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
821 dologin_ret = dologin_named(opt_login_arg);
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
822 if (opt_login_arg != NULL) {
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
823 g_free(opt_login_arg);
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
824 opt_login_arg = NULL;
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
825 }
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
826 }
981
7e231bc0018a [gaim-migrate @ 991]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 975
diff changeset
827
3478
3da42b64304e [gaim-migrate @ 3532]
Sean Egan <seanegan@gmail.com>
parents: 3477
diff changeset
828 if (!opt_acct && !opt_nologin && gaim_session == 0)
1361
5d4464379703 [gaim-migrate @ 1371]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1360
diff changeset
829 auto_login();
5d4464379703 [gaim-migrate @ 1371]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1360
diff changeset
830
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
831 if (opt_acct) {
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
832 account_editor(NULL, NULL);
3726
d85208a99af2 [gaim-migrate @ 3862]
Luke Schierer <lschiere@pidgin.im>
parents: 3716
diff changeset
833 } else if ((dologin_ret == -1) && !connections)
1009
d496fe2614a6 [gaim-migrate @ 1019]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1002
diff changeset
834 show_login();
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
835 #ifdef _WIN32
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
836 /* Various win32 initializations */
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
837 wgaim_init();
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
838 #endif
1137
5b5d03dfa48a [gaim-migrate @ 1147]
Rob Flynn <gaim@robflynn.com>
parents: 1128
diff changeset
839
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
840 gtk_main();
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
841 #ifndef _WIN32
2460
049822b93239 [gaim-migrate @ 2473]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2416
diff changeset
842 if (convo_options & OPT_CONVO_CHECK_SPELLING)
049822b93239 [gaim-migrate @ 2473]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2416
diff changeset
843 gtkspell_stop();
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3551
diff changeset
844 #endif
2416
61b816a7b467 [gaim-migrate @ 2429]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2397
diff changeset
845 core_quit();
2482
7e4757801725 [gaim-migrate @ 2495]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2460
diff changeset
846 /* don't need ui_quit here because ui doesn't create anything */
1117
f3e0f41beddb [gaim-migrate @ 1127]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1093
diff changeset
847
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
848 return 0;
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1142
diff changeset
849
1
2846a03bda67 [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
850 }