annotate src/main.c @ 4561:9df99116840a

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