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