annotate src/protocols/oscar/oscar.c @ 13875:eb20e674ccf2

[gaim-migrate @ 16349] Three changes: 1. When you try to sign on with an oscar screen name that is not valid ("123abc" for example), the PRPL will set gc->wants_to_die to TRUE so that the account will not be auto-reconnected. 2. When we get an AIM userinfo packet about someone in our buddy list, if the person has some kind of screen name formatting set ("Mark Doliner" instead of "markdoliner") then we set the buddies server_nick to that formatted name. 3. Add a "Get AIM Info" to the context menu for ICQ buddies who are in the buddy list of an ICQ user. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Mon, 26 Jun 2006 09:03:54 +0000
parents 77a50840d9e2
children cab785a7c766
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1 /*
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2 * gaim
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4 * Some code copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
6302
511003c99302 [gaim-migrate @ 6801]
Mark Doliner <mark@kingant.net>
parents: 6292
diff changeset
5 * Some code copyright (C) 1999-2001, Eric Warmenhoven
511003c99302 [gaim-migrate @ 6801]
Mark Doliner <mark@kingant.net>
parents: 6292
diff changeset
6 * Some code copyright (C) 2001-2003, Sean Egan
11155
92453bf9b86b [gaim-migrate @ 13237]
Mark Doliner <mark@kingant.net>
parents: 11153
diff changeset
7 * Some code copyright (C) 2001-2005, Mark Doliner <thekingant@users.sourceforge.net>
11049
c716cc44bfaa [gaim-migrate @ 12983]
Jonathan Clark <ardentlygnarly>
parents: 11033
diff changeset
8 * Some code copyright (C) 2005, Jonathan Clark <ardentlygnarly@users.sourceforge.net>
6302
511003c99302 [gaim-migrate @ 6801]
Mark Doliner <mark@kingant.net>
parents: 6292
diff changeset
9 *
511003c99302 [gaim-migrate @ 6801]
Mark Doliner <mark@kingant.net>
parents: 6292
diff changeset
10 * Most libfaim code copyright (C) 1998-2001 Adam Fritzler <afritz@auk.cx>
8151
b619ee745ec0 [gaim-migrate @ 8863]
Mark Doliner <mark@kingant.net>
parents: 8150
diff changeset
11 * Some libfaim code copyright (C) 2001-2004 Mark Doliner <thekingant@users.sourceforge.net>
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
12 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
13 * This program is free software; you can redistribute it and/or modify
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
14 * it under the terms of the GNU General Public License as published by
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
15 * the Free Software Foundation; either version 2 of the License, or
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
16 * (at your option) any later version.
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
17 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
18 * This program is distributed in the hope that it will be useful,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10485
58ab47ed31bf [gaim-migrate @ 11775]
Nathan Walp <nwalp@pidgin.im>
parents: 10475
diff changeset
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
21 * GNU General Public License for more details.
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
22 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
23 * You should have received a copy of the GNU General Public License
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
24 * along with this program; if not, write to the Free Software
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
25 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
26 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
27 */
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
28 #include "internal.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
29
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
30 #include "account.h"
5638
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
31 #include "accountopt.h"
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
32 #include "buddyicon.h"
11404
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
33 #include "cipher.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
34 #include "conversation.h"
7083
3100a6e03644 [gaim-migrate @ 7648]
Christian Hammond <chipx86@chipx86.com>
parents: 7082
diff changeset
35 #include "core.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
36 #include "debug.h"
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
37 #include "imgstore.h"
8231
f50c059b6384 [gaim-migrate @ 8954]
Christian Hammond <chipx86@chipx86.com>
parents: 8227
diff changeset
38 #include "network.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
39 #include "notify.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
40 #include "privacy.h"
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
41 #include "prpl.h"
4889
f7150929332b [gaim-migrate @ 5219]
Mark Doliner <mark@kingant.net>
parents: 4870
diff changeset
42 #include "proxy.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
43 #include "request.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
44 #include "util.h"
9943
f8e395a054e2 [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
45 #include "version.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
46
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
47 #include "oscar.h"
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
48 #include "peer.h"
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
49
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
50 #define OSCAR_STATUS_ID_INVISIBLE "invisible"
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
51 #define OSCAR_STATUS_ID_OFFLINE "offline"
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
52 #define OSCAR_STATUS_ID_AVAILABLE "available"
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
53 #define OSCAR_STATUS_ID_AWAY "away"
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
54 #define OSCAR_STATUS_ID_DND "dnd"
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
55 #define OSCAR_STATUS_ID_NA "na"
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
56 #define OSCAR_STATUS_ID_OCCUPIED "occupied"
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
57 #define OSCAR_STATUS_ID_FREE4CHAT "free4chat"
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
58 #define OSCAR_STATUS_ID_CUSTOM "custom"
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
59
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
60 #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3"
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
61
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
62 #define OSCAR_CONNECT_STEPS 6
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
63 #define OSCAR_DEFAULT_LOGIN_SERVER "login.oscar.aol.com"
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
64 #define OSCAR_DEFAULT_LOGIN_PORT 5190
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
65 #define OSCAR_DEFAULT_CUSTOM_ENCODING "ISO-8859-1"
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
66 #define OSCAR_DEFAULT_AUTHORIZATION TRUE
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
67 #define OSCAR_DEFAULT_HIDE_IP TRUE
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
68 #define OSCAR_DEFAULT_WEB_AWARE FALSE
13672
e5c3bfc208a9 [gaim-migrate @ 16074]
Mark Doliner <mark@kingant.net>
parents: 13664
diff changeset
69 #define OSCAR_DEFAULT_ALWAYS_USE_RV_PROXY FALSE
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
70
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
71 static int caps_aim = OSCAR_CAPABILITY_CHAT | OSCAR_CAPABILITY_BUDDYICON | OSCAR_CAPABILITY_DIRECTIM | OSCAR_CAPABILITY_SENDFILE | OSCAR_CAPABILITY_INTEROPERATE | OSCAR_CAPABILITY_ICHAT;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
72 static int caps_icq = OSCAR_CAPABILITY_BUDDYICON | OSCAR_CAPABILITY_DIRECTIM | OSCAR_CAPABILITY_SENDFILE | OSCAR_CAPABILITY_ICQUTF8 | OSCAR_CAPABILITY_INTEROPERATE | OSCAR_CAPABILITY_ICHAT;
3458
66b1ad9782a9 [gaim-migrate @ 3506]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
73
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
74 static guint8 features_aim[] = {0x01, 0x01, 0x01, 0x02};
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
75 static guint8 features_icq[] = {0x01, 0x06};
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
76 static guint8 features_icq_offline[] = {0x01};
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
77 static guint8 ck[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
78
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
79 typedef struct _NewFlapConnectionData NewFlapConnectionData;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
80 struct _NewFlapConnectionData
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
81 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
82 GaimConnection *gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
83 FlapConnection *conn;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
84 guint16 cookielen;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
85 guint8 *cookie;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
86 gpointer data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
87 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
88
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
89 struct create_room {
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
90 char *name;
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
91 int exchange;
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
92 };
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
93
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
94 struct chat_connection
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
95 {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
96 char *name;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
97 char *show; /* AOL did something funny to us */
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
98 guint16 exchange;
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
99 guint16 instance;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
100 FlapConnection *conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
101 int id;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
102 GaimConnection *gc; /* i hate this. */
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
103 GaimConversation *conv; /* bah. */
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
104 int maxlen;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
105 int maxvis;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
106 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
107
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
108 struct oscar_ask_directim_data
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
109 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
110 OscarData *od;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
111 char *who;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
112 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
113
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
114 /*
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
115 * Various PRPL-specific buddy info that we want to keep track of
11651
723487d07aa0 [gaim-migrate @ 13935]
Mark Doliner <mark@kingant.net>
parents: 11643
diff changeset
116 * Some other info is maintained by locate.c, and I'd like to move
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
117 * the rest of this to libfaim, mostly im.c
11651
723487d07aa0 [gaim-migrate @ 13935]
Mark Doliner <mark@kingant.net>
parents: 11643
diff changeset
118 *
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
119 * TODO: More of this should use the status API.
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
120 */
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
121 struct buddyinfo {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
122 gboolean typingnot;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
123 guint32 ipaddr;
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
124
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
125 unsigned long ico_me_len;
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
126 unsigned long ico_me_csum;
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
127 time_t ico_me_time;
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
128 gboolean ico_informed;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
129
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
130 unsigned long ico_len;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
131 unsigned long ico_csum;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
132 time_t ico_time;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
133 gboolean ico_need;
7406
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
134 gboolean ico_sent;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
135 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
136
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
137 struct name_data {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
138 GaimConnection *gc;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
139 gchar *name;
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
140 gchar *nick;
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
141 };
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
142
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
143 static char *msgerrreason[] = {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
144 N_("Invalid error"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
145 N_("Invalid SNAC"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
146 N_("Rate to host"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
147 N_("Rate to client"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
148 N_("Not logged in"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
149 N_("Service unavailable"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
150 N_("Service not defined"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
151 N_("Obsolete SNAC"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
152 N_("Not supported by host"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
153 N_("Not supported by client"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
154 N_("Refused by client"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
155 N_("Reply too big"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
156 N_("Responses lost"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
157 N_("Request denied"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
158 N_("Busted SNAC payload"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
159 N_("Insufficient rights"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
160 N_("In local permit/deny"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
161 N_("Too evil (sender)"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
162 N_("Too evil (receiver)"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
163 N_("User temporarily unavailable"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
164 N_("No match"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
165 N_("List overflow"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
166 N_("Request ambiguous"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
167 N_("Queue full"),
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
168 N_("Not while on AOL")
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
169 };
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
170 static int msgerrreasonlen = 25;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
171
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
172 /* All the libfaim->gaim callback functions */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
173 static int gaim_parse_auth_resp (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
174 static int gaim_parse_login (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
175 static int gaim_parse_auth_securid_request(OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
176 static int gaim_handle_redirect (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
177 static int gaim_info_change (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
178 static int gaim_account_confirm (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
179 static int gaim_parse_oncoming (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
180 static int gaim_parse_offgoing (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
181 static int gaim_parse_incoming_im(OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
182 static int gaim_parse_misses (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
183 static int gaim_parse_clientauto (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
184 static int gaim_parse_userinfo (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
185 static int gaim_got_infoblock (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
186 static int gaim_parse_motd (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
187 static int gaim_chatnav_info (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
188 static int gaim_conv_chat_join (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
189 static int gaim_conv_chat_leave (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
190 static int gaim_conv_chat_info_update (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
191 static int gaim_conv_chat_incoming_msg(OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
192 static int gaim_email_parseupdate(OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
193 static int gaim_icon_error (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
194 static int gaim_icon_parseicon (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
195 static int oscar_icon_req (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
196 static int gaim_parse_msgack (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
197 static int gaim_parse_ratechange (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
198 static int gaim_parse_evilnotify (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
199 static int gaim_parse_searcherror(OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
200 static int gaim_parse_searchreply(OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
201 static int gaim_bosrights (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
202 static int gaim_connerr (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
203 static int gaim_parse_msgerr (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
204 static int gaim_parse_mtn (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
205 static int gaim_parse_locaterights(OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
206 static int gaim_parse_buddyrights(OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
207 static int gaim_parse_locerr (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
208 static int gaim_icbm_param_info (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
209 static int gaim_parse_genericerr (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
210 static int gaim_memrequest (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
211 static int gaim_selfinfo (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
212 static int gaim_offlinemsg (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
213 static int gaim_offlinemsgdone (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
214 static int gaim_icqalias (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
215 static int gaim_icqinfo (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
216 static int gaim_popup (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
217 static int gaim_ssi_parseerr (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
218 static int gaim_ssi_parserights (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
219 static int gaim_ssi_parselist (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
220 static int gaim_ssi_parseack (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
221 static int gaim_ssi_parseadd (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
222 static int gaim_ssi_authgiven (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
223 static int gaim_ssi_authrequest (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
224 static int gaim_ssi_authreply (OscarData *, FlapConnection *, FlapFrame *, ...);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
225 static int gaim_ssi_gotadded (OscarData *, FlapConnection *, FlapFrame *, ...);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
226
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
227 static gboolean gaim_icon_timerfunc(gpointer data);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
228
12816
ff267281e882 [gaim-migrate @ 15164]
Mark Doliner <mark@kingant.net>
parents: 12730
diff changeset
229 static void recent_buddies_cb(const char *name, GaimPrefType type, gconstpointer value, gpointer data);
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
230 static void oscar_set_info(GaimConnection *gc, const char *info);
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
231 static void oscar_set_info_and_status(GaimAccount *account, gboolean setinfo, const char *rawinfo, gboolean setstatus, GaimStatus *status);
12652
e739ace2688b [gaim-migrate @ 14995]
Mark Doliner <mark@kingant.net>
parents: 12645
diff changeset
232 static void oscar_set_extendedstatus(GaimConnection *gc);
12663
09a241749828 [gaim-migrate @ 15006]
Mark Doliner <mark@kingant.net>
parents: 12662
diff changeset
233 static gboolean gaim_ssi_rerequestdata(gpointer data);
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
234
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
235 static void oscar_free_name_data(struct name_data *data) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
236 g_free(data->name);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
237 g_free(data->nick);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
238 g_free(data);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
239 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
240
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
241 /**
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
242 * Determine how we can send this message. Per the warnings elsewhere
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
243 * in this file, these little checks determine the simplest encoding
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
244 * we can use for a given message send using it.
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
245 */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
246 static guint32
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
247 oscar_charset_check(const char *utf8)
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
248 {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
249 int i = 0;
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
250 int charset = AIM_CHARSET_ASCII;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
251
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
252 /*
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
253 * Can we get away with using our custom encoding?
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
254 */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
255 while (utf8[i])
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
256 {
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
257 if ((unsigned char)utf8[i] > 0x7f) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
258 /* not ASCII! */
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
259 charset = AIM_CHARSET_CUSTOM;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
260 break;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
261 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
262 i++;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
263 }
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
264
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
265 /*
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
266 * Must we send this message as UNICODE (in the UCS-2BE encoding)?
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
267 */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
268 while (utf8[i])
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
269 {
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
270 /* ISO-8859-1 is 0x00-0xbf in the first byte
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
271 * followed by 0xc0-0xc3 in the second */
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
272 if ((unsigned char)utf8[i] < 0x80) {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
273 i++;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
274 continue;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
275 } else if (((unsigned char)utf8[i] & 0xfc) == 0xc0 &&
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
276 ((unsigned char)utf8[i + 1] & 0xc0) == 0x80) {
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
277 i += 2;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
278 continue;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
279 }
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
280 charset = AIM_CHARSET_UNICODE;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
281 break;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
282 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
283
9807
0c170246a9ec [gaim-migrate @ 10675]
Mark Doliner <mark@kingant.net>
parents: 9806
diff changeset
284 return charset;
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
285 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
286
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
287 /**
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
288 * Take a string of the form charset="bleh" where bleh is
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
289 * one of us-ascii, utf-8, iso-8859-1, or unicode-2-0, and
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
290 * return a newly allocated string containing bleh.
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
291 */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
292 static gchar *
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
293 oscar_encoding_extract(const char *encoding)
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
294 {
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
295 gchar *ret = NULL;
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
296 char *begin, *end;
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
297
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
298 g_return_val_if_fail(encoding != NULL, NULL);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
299
8735
92cbf9713795 [gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents: 8733
diff changeset
300 /* Make sure encoding begins with charset= */
10540
b08a37897395 [gaim-migrate @ 11903]
Mark Doliner <mark@kingant.net>
parents: 10517
diff changeset
301 if (strncmp(encoding, "text/aolrtf; charset=", 21) &&
b08a37897395 [gaim-migrate @ 11903]
Mark Doliner <mark@kingant.net>
parents: 10517
diff changeset
302 strncmp(encoding, "text/x-aolrtf; charset=", 23))
b08a37897395 [gaim-migrate @ 11903]
Mark Doliner <mark@kingant.net>
parents: 10517
diff changeset
303 {
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
304 return NULL;
10540
b08a37897395 [gaim-migrate @ 11903]
Mark Doliner <mark@kingant.net>
parents: 10517
diff changeset
305 }
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
306
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
307 begin = strchr(encoding, '"');
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
308 end = strrchr(encoding, '"');
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
309
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
310 if ((begin == NULL) || (end == NULL) || (begin >= end))
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
311 return NULL;
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
312
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
313 ret = g_strndup(begin+1, (end-1) - begin);
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
314
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
315 return ret;
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
316 }
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
317
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
318 gchar *
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
319 oscar_encoding_to_utf8(const char *encoding, const char *text, int textlen)
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
320 {
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
321 gchar *utf8 = NULL;
9595
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
322
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
323 if ((encoding == NULL) || encoding[0] == '\0') {
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
324 gaim_debug_info("oscar", "Empty encoding, assuming UTF-8\n");
10396
3cf69ffdc25e [gaim-migrate @ 11626]
Mark Doliner <mark@kingant.net>
parents: 10376
diff changeset
325 } else if (!strcasecmp(encoding, "iso-8859-1")) {
10376
7196933335d9 [gaim-migrate @ 11601]
Sean Egan <seanegan@gmail.com>
parents: 10375
diff changeset
326 utf8 = g_convert(text, textlen, "UTF-8", "iso-8859-1", NULL, NULL, NULL);
10396
3cf69ffdc25e [gaim-migrate @ 11626]
Mark Doliner <mark@kingant.net>
parents: 10376
diff changeset
327 } else if (!strcasecmp(encoding, "ISO-8859-1-Windows-3.1-Latin-1")) {
10375
cbfd90f7fa47 [gaim-migrate @ 11600]
Sean Egan <seanegan@gmail.com>
parents: 10329
diff changeset
328 utf8 = g_convert(text, textlen, "UTF-8", "Windows-1252", NULL, NULL, NULL);
10396
3cf69ffdc25e [gaim-migrate @ 11626]
Mark Doliner <mark@kingant.net>
parents: 10376
diff changeset
329 } else if (!strcasecmp(encoding, "unicode-2-0")) {
9595
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
330 utf8 = g_convert(text, textlen, "UTF-8", "UCS-2BE", NULL, NULL, NULL);
10396
3cf69ffdc25e [gaim-migrate @ 11626]
Mark Doliner <mark@kingant.net>
parents: 10376
diff changeset
331 } else if (strcasecmp(encoding, "us-ascii") && strcmp(encoding, "utf-8")) {
9595
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
332 gaim_debug_warning("oscar", "Unrecognized character encoding \"%s\", "
10096
2923a6c59192 [gaim-migrate @ 11118]
Mark Doliner <mark@kingant.net>
parents: 10087
diff changeset
333 "attempting to convert to UTF-8 anyway\n", encoding);
9595
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
334 utf8 = g_convert(text, textlen, "UTF-8", encoding, NULL, NULL, NULL);
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
335 }
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
336
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
337 /*
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
338 * If utf8 is still NULL then either the encoding is us-ascii/utf-8 or
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
339 * we have been unable to convert the text to utf-8 from the encoding
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
340 * that was specified. So we check if the text is valid utf-8 then
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
341 * just copy it.
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
342 */
7541a9bee2cd [gaim-migrate @ 10438]
Mark Doliner <mark@kingant.net>
parents: 9586
diff changeset
343 if (utf8 == NULL) {
9638
201c8fe4cee3 [gaim-migrate @ 10486]
Ethan Blanton <elb@pidgin.im>
parents: 9634
diff changeset
344 if (textlen != 0 && *text != '\0'
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
345 && !g_utf8_validate(text, textlen, NULL))
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
346 utf8 = g_strdup(_("(There was an error receiving this message. The buddy you are speaking with is probably using a different encoding than expected. If you know what encoding he is using, you can specify it in the advanced account options for your AIM/ICQ account.)"));
9476
4d39f4d1034b [gaim-migrate @ 10301]
Ethan Blanton <elb@pidgin.im>
parents: 9475
diff changeset
347 else
9481
683660b4efeb [gaim-migrate @ 10306]
Ethan Blanton <elb@pidgin.im>
parents: 9476
diff changeset
348 utf8 = g_strndup(text, textlen);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
349 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
350
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
351 return utf8;
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
352 }
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
353
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
354 static gchar *
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
355 oscar_utf8_try_convert(GaimAccount *account, const gchar *msg)
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
356 {
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
357 const char *charset = NULL;
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
358 char *ret = NULL;
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
359
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
360 if(aim_sn_is_icq(gaim_account_get_username(account)))
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
361 charset = gaim_account_get_string(account, "encoding", NULL);
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
362
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
363 if(charset && *charset)
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
364 ret = g_convert(msg, -1, "UTF-8", charset, NULL, NULL, NULL);
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
365
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
366 if(!ret)
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
367 ret = gaim_utf8_try_convert(msg);
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
368
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
369 return ret;
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
370 }
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
371
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
372 static gchar *
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
373 gaim_plugin_oscar_convert_to_utf8(const gchar *data, gsize datalen, const char *charsetstr, gboolean fallback)
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
374 {
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
375 gchar *ret = NULL;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
376 GError *err = NULL;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
377
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
378 if ((charsetstr == NULL) || (*charsetstr == '\0'))
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
379 return NULL;
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
380
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
381 if (strcasecmp("UTF-8", charsetstr)) {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
382 if (fallback)
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
383 ret = g_convert_with_fallback(data, datalen, "UTF-8", charsetstr, "?", NULL, NULL, &err);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
384 else
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
385 ret = g_convert(data, datalen, "UTF-8", charsetstr, NULL, NULL, &err);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
386 if (err != NULL) {
13717
3b3430042849 [gaim-migrate @ 16126]
Richard Laager <rlaager@wiktel.com>
parents: 13715
diff changeset
387 gaim_debug_warning("oscar", "Conversion from %s failed: %s.\n",
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
388 charsetstr, err->message);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
389 g_error_free(err);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
390 }
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
391 } else {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
392 if (g_utf8_validate(data, datalen, NULL))
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
393 ret = g_strndup(data, datalen);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
394 else
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
395 gaim_debug_warning("oscar", "String is not valid UTF-8.\n");
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
396 }
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
397
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
398 return ret;
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
399 }
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
400
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
401 /**
11081
3fc99df46dae [gaim-migrate @ 13095]
Mark Doliner <mark@kingant.net>
parents: 11049
diff changeset
402 * This attemps to decode an incoming IM into a UTF8 string.
3fc99df46dae [gaim-migrate @ 13095]
Mark Doliner <mark@kingant.net>
parents: 11049
diff changeset
403 *
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
404 * We try decoding using two different character sets. The charset
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
405 * specified in the IM determines the order in which we attempt to
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
406 * decode. We do this because there are lots of broken ICQ clients
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
407 * that don't correctly send non-ASCII messages. And if Gaim isn't
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
408 * able to deal with that crap, then people complain like banshees.
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
409 * charsetstr1 is always set to what the correct encoding should be.
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
410 */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
411 gchar *
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
412 gaim_plugin_oscar_decode_im_part(GaimAccount *account, const char *sourcesn, guint16 charset, guint16 charsubset, const gchar *data, gsize datalen)
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
413 {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
414 gchar *ret = NULL;
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
415 const gchar *charsetstr1, *charsetstr2;
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
416
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
417 gaim_debug_info("oscar", "Parsing IM part, charset=0x%04hx, charsubset=0x%04hx, datalen=%hd\n", charset, charsubset, datalen);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
418
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
419 if ((datalen == 0) || (data == NULL))
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
420 return NULL;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
421
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
422 if (charset == AIM_CHARSET_UNICODE) {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
423 charsetstr1 = "UCS-2BE";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
424 charsetstr2 = "UTF-8";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
425 } else if (charset == AIM_CHARSET_CUSTOM) {
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
426 if ((sourcesn != NULL) && isdigit(sourcesn[0]))
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
427 charsetstr1 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
428 else
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
429 charsetstr1 = "ISO-8859-1";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
430 charsetstr2 = "UTF-8";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
431 } else if (charset == AIM_CHARSET_ASCII) {
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
432 /* Should just be "ASCII" */
9914
3df9ffcb9b06 [gaim-migrate @ 10806]
Mark Doliner <mark@kingant.net>
parents: 9908
diff changeset
433 charsetstr1 = "ASCII";
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
434 charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
435 } else if (charset == 0x000d) {
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
436 /* Mobile AIM client on a Nokia 3100 and an LG VX6000 */
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
437 charsetstr1 = "ISO-8859-1";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
438 charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
439 } else {
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
440 /* Unknown, hope for valid UTF-8... */
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
441 charsetstr1 = "UTF-8";
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
442 charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
443 }
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
444
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
445 ret = gaim_plugin_oscar_convert_to_utf8(data, datalen, charsetstr1, FALSE);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
446 if (ret == NULL)
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
447 ret = gaim_plugin_oscar_convert_to_utf8(data, datalen, charsetstr2, TRUE);
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
448 if (ret == NULL)
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
449 ret = g_strdup(_("(There was an error receiving this message. The buddy you are speaking to most likely has a buggy client.)"));
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
450
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
451 return ret;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
452 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
453
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
454 /**
11081
3fc99df46dae [gaim-migrate @ 13095]
Mark Doliner <mark@kingant.net>
parents: 11049
diff changeset
455 * Figure out what encoding to use when sending a given outgoing message.
3fc99df46dae [gaim-migrate @ 13095]
Mark Doliner <mark@kingant.net>
parents: 11049
diff changeset
456 */
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
457 static void
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
458 gaim_plugin_oscar_convert_to_best_encoding(GaimConnection *gc,
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
459 const char *destsn, const gchar *from,
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
460 gchar **msg, int *msglen_int,
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
461 guint16 *charset, guint16 *charsubset)
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
462 {
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
463 OscarData *od = gc->proto_data;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
464 GaimAccount *account = gaim_connection_get_account(gc);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
465 GError *err = NULL;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
466 aim_userinfo_t *userinfo = NULL;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
467 const gchar *charsetstr;
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
468 gsize msglen;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
469
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
470 /* Attempt to send as ASCII */
10098
fb4216714dac [gaim-migrate @ 11120]
Mark Doliner <mark@kingant.net>
parents: 10097
diff changeset
471 if (oscar_charset_check(from) == AIM_CHARSET_ASCII) {
10097
158950e7996d [gaim-migrate @ 11119]
Mark Doliner <mark@kingant.net>
parents: 10096
diff changeset
472 *msg = g_convert(from, strlen(from), "ASCII", "UTF-8", NULL, &msglen, NULL);
10098
fb4216714dac [gaim-migrate @ 11120]
Mark Doliner <mark@kingant.net>
parents: 10097
diff changeset
473 *charset = AIM_CHARSET_ASCII;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
474 *charsubset = 0x0000;
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
475 *msglen_int = msglen;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
476 return;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
477 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
478
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
479 /*
10565
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
480 * If we're sending to an ICQ user, and they are in our
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
481 * buddy list, and they are advertising the Unicode
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
482 * capability, and they are online, then attempt to send
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
483 * as UCS-2BE.
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
484 */
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
485 if ((destsn != NULL) && aim_sn_is_icq(destsn))
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
486 userinfo = aim_locate_finduserinfo(od, destsn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
487
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
488 if ((userinfo != NULL) && (userinfo->capabilities & OSCAR_CAPABILITY_ICQUTF8))
10565
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
489 {
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
490 GaimBuddy *b;
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
491 b = gaim_find_buddy(account, destsn);
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
492 if ((b != NULL) && (GAIM_BUDDY_IS_ONLINE(b)))
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
493 {
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
494 *msg = g_convert(from, strlen(from), "UCS-2BE", "UTF-8", NULL, &msglen, NULL);
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
495 if (*msg != NULL)
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
496 {
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
497 *charset = AIM_CHARSET_UNICODE;
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
498 *charsubset = 0x0000;
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
499 *msglen_int = msglen;
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
500 return;
3b66a8f25bad [gaim-migrate @ 11947]
Mark Doliner <mark@kingant.net>
parents: 10563
diff changeset
501 }
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
502 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
503 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
504
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
505 /*
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
506 * If this is AIM then attempt to send as ISO-8859-1. If this is
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
507 * ICQ then attempt to send as the user specified character encoding.
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
508 */
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
509 charsetstr = "ISO-8859-1";
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
510 if ((destsn != NULL) && aim_sn_is_icq(destsn))
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
511 charsetstr = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
512
10097
158950e7996d [gaim-migrate @ 11119]
Mark Doliner <mark@kingant.net>
parents: 10096
diff changeset
513 /*
158950e7996d [gaim-migrate @ 11119]
Mark Doliner <mark@kingant.net>
parents: 10096
diff changeset
514 * XXX - We need a way to only attempt to convert if we KNOW "from"
158950e7996d [gaim-migrate @ 11119]
Mark Doliner <mark@kingant.net>
parents: 10096
diff changeset
515 * can be converted to "charsetstr"
158950e7996d [gaim-migrate @ 11119]
Mark Doliner <mark@kingant.net>
parents: 10096
diff changeset
516 */
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
517 *msg = g_convert(from, strlen(from), charsetstr, "UTF-8", NULL, &msglen, NULL);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
518 if (*msg != NULL) {
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
519 *charset = AIM_CHARSET_CUSTOM;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
520 *charsubset = 0x0000;
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
521 *msglen_int = msglen;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
522 return;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
523 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
524
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
525 /*
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
526 * Nothing else worked, so send as UCS-2BE.
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
527 */
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
528 *msg = g_convert(from, strlen(from), "UCS-2BE", "UTF-8", NULL, &msglen, &err);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
529 if (*msg != NULL) {
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
530 *charset = AIM_CHARSET_UNICODE;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
531 *charsubset = 0x0000;
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
532 *msglen_int = msglen;
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
533 return;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
534 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
535
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
536 gaim_debug_error("oscar", "Error converting a Unicode message: %s\n", err->message);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
537 g_error_free(err);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
538
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
539 gaim_debug_error("oscar", "This should NEVER happen! Sending UTF-8 text flagged as ASCII.\n");
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
540 *msg = g_strdup(from);
10039
cf02e7104706 [gaim-migrate @ 10998]
Mark Doliner <mark@kingant.net>
parents: 10022
diff changeset
541 *msglen_int = strlen(*msg);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
542 *charset = AIM_CHARSET_ASCII;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
543 *charsubset = 0x0000;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
544 return;
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
545 }
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
546
13356
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
547 /**
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
548 * Looks for %n, %d, or %t in a string, and replaces them with the
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
549 * specified name, date, and time, respectively.
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
550 *
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
551 * @param str The string that may contain the special variables.
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
552 * @param name The sender name.
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
553 *
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
554 * @return A newly allocated string where the special variables are
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
555 * expanded. This should be g_free'd by the caller.
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
556 */
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
557 static gchar *
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
558 gaim_str_sub_away_formatters(const char *str, const char *name)
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
559 {
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
560 char *c;
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
561 GString *cpy;
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
562 time_t t;
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
563 struct tm *tme;
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
564
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
565 g_return_val_if_fail(str != NULL, NULL);
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
566 g_return_val_if_fail(name != NULL, NULL);
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
567
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
568 /* Create an empty GString that is hopefully big enough for most messages */
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
569 cpy = g_string_sized_new(1024);
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
570
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
571 t = time(NULL);
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
572 tme = localtime(&t);
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
573
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
574 c = (char *)str;
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
575 while (*c) {
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
576 switch (*c) {
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
577 case '%':
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
578 if (*(c + 1)) {
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
579 switch (*(c + 1)) {
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
580 case 'n':
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
581 /* append name */
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
582 g_string_append(cpy, name);
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
583 c++;
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
584 break;
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
585 case 'd':
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
586 /* append date */
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
587 g_string_append(cpy, gaim_date_format_short(tme));
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
588 c++;
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
589 break;
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
590 case 't':
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
591 /* append time */
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
592 g_string_append(cpy, gaim_time_format(tme));
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
593 c++;
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
594 break;
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
595 default:
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
596 g_string_append_c(cpy, *c);
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
597 }
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
598 } else {
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
599 g_string_append_c(cpy, *c);
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
600 }
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
601 break;
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
602 default:
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
603 g_string_append_c(cpy, *c);
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
604 }
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
605 c++;
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
606 }
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
607
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
608 return g_string_free(cpy, FALSE);
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
609 }
554575d1f9b5 [gaim-migrate @ 15729]
Mark Doliner <mark@kingant.net>
parents: 13311
diff changeset
610
12412
a88ca6da0b38 [gaim-migrate @ 14719]
Richard Laager <rlaager@wiktel.com>
parents: 12393
diff changeset
611 static gchar *oscar_caps_to_string(guint caps)
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
612 {
9407
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
613 GString *str;
13104
e1e5462b7d81 [gaim-migrate @ 15466]
Richard Laager <rlaager@wiktel.com>
parents: 13074
diff changeset
614 const gchar *tmp;
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
615 guint bit = 1;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
616
9407
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
617 str = g_string_new("");
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
618
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
619 if (!caps) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
620 return NULL;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
621 } else while (bit <= OSCAR_CAPABILITY_LAST) {
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
622 if (bit & caps) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
623 switch (bit) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
624 case OSCAR_CAPABILITY_BUDDYICON:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
625 tmp = _("Buddy Icon");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
626 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
627 case OSCAR_CAPABILITY_TALK:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
628 tmp = _("Voice");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
629 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
630 case OSCAR_CAPABILITY_DIRECTIM:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
631 tmp = _("AIM Direct IM");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
632 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
633 case OSCAR_CAPABILITY_CHAT:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
634 tmp = _("Chat");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
635 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
636 case OSCAR_CAPABILITY_GETFILE:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
637 tmp = _("Get File");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
638 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
639 case OSCAR_CAPABILITY_SENDFILE:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
640 tmp = _("Send File");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
641 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
642 case OSCAR_CAPABILITY_GAMES:
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
643 case OSCAR_CAPABILITY_GAMES2:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
644 tmp = _("Games");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
645 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
646 case OSCAR_CAPABILITY_ADDINS:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
647 tmp = _("Add-Ins");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
648 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
649 case OSCAR_CAPABILITY_SENDBUDDYLIST:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
650 tmp = _("Send Buddy List");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
651 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
652 case OSCAR_CAPABILITY_ICQ_DIRECT:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
653 tmp = _("ICQ Direct Connect");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
654 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
655 case OSCAR_CAPABILITY_APINFO:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
656 tmp = _("AP User");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
657 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
658 case OSCAR_CAPABILITY_ICQRTF:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
659 tmp = _("ICQ RTF");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
660 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
661 case OSCAR_CAPABILITY_EMPTY:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
662 tmp = _("Nihilist");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
663 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
664 case OSCAR_CAPABILITY_ICQSERVERRELAY:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
665 tmp = _("ICQ Server Relay");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
666 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
667 case OSCAR_CAPABILITY_ICQUTF8OLD:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
668 tmp = _("Old ICQ UTF8");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
669 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
670 case OSCAR_CAPABILITY_TRILLIANCRYPT:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
671 tmp = _("Trillian Encryption");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
672 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
673 case OSCAR_CAPABILITY_ICQUTF8:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
674 tmp = _("ICQ UTF8");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
675 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
676 case OSCAR_CAPABILITY_HIPTOP:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
677 tmp = _("Hiptop");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
678 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
679 case OSCAR_CAPABILITY_SECUREIM:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
680 tmp = _("Security Enabled");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
681 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
682 case OSCAR_CAPABILITY_VIDEO:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
683 tmp = _("Video Chat");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
684 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
685 /* Not actually sure about this one... WinAIM doesn't show anything */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
686 case OSCAR_CAPABILITY_ICHATAV:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
687 tmp = _("iChat AV");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
688 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
689 case OSCAR_CAPABILITY_LIVEVIDEO:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
690 tmp = _("Live Video");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
691 break;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
692 case OSCAR_CAPABILITY_CAMERA:
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
693 tmp = _("Camera");
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
694 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
695 default:
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
696 tmp = NULL;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
697 break;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
698 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
699 if (tmp)
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
700 g_string_append_printf(str, "%s%s", (*(str->str) == '\0' ? "" : ", "), tmp);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
701 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
702 bit <<= 1;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
703 }
9407
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
704
379f59c5b1ff [gaim-migrate @ 10222]
Mark Doliner <mark@kingant.net>
parents: 9381
diff changeset
705 return g_string_free(str, FALSE);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
706 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
707
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
708 static char *oscar_icqstatus(int state) {
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
709 /* Make a cute little string that shows the status of the dude or dudet */
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
710 if (state & AIM_ICQ_STATE_CHAT)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
711 return g_strdup_printf(_("Free For Chat"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
712 else if (state & AIM_ICQ_STATE_DND)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
713 return g_strdup_printf(_("Do Not Disturb"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
714 else if (state & AIM_ICQ_STATE_OUT)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
715 return g_strdup_printf(_("Not Available"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
716 else if (state & AIM_ICQ_STATE_BUSY)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
717 return g_strdup_printf(_("Occupied"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
718 else if (state & AIM_ICQ_STATE_AWAY)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
719 return g_strdup_printf(_("Away"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
720 else if (state & AIM_ICQ_STATE_WEBAWARE)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
721 return g_strdup_printf(_("Web Aware"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
722 else if (state & AIM_ICQ_STATE_INVISIBLE)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
723 return g_strdup_printf(_("Invisible"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
724 else
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
725 return g_strdup_printf(_("Online"));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
726 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
727
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
728 static void
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
729 oscar_string_append(GString *str, const char *newline,
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
730 const char *name, const char *value)
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
731 {
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
732 if (value && value[0]) {
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
733 g_string_append_printf(str, "%s<b>%s:</b> %s", newline, name, value);
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
734 }
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
735 }
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
736
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
737 static void
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
738 oscar_string_convert_and_append(GaimAccount *account, GString *str, const char *newline,
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
739 const char *name, const char *value)
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
740 {
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
741 gchar *utf8;
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
742
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
743 if (value && value[0] && (utf8 = oscar_utf8_try_convert(account, value))) {
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
744 g_string_append_printf(str, "%s<b>%s:</b> %s", newline, name, utf8);
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
745 g_free(utf8);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
746 }
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
747 }
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
748
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
749 static void oscar_string_append_info(GaimConnection *gc, GString *str, const char *newline, GaimBuddy *b, aim_userinfo_t *userinfo)
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
750 {
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
751 OscarData *od;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
752 GaimAccount *account;
10517
461334f300d7 [gaim-migrate @ 11821]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10504
diff changeset
753 GaimPresence *presence = NULL;
461334f300d7 [gaim-migrate @ 11821]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10504
diff changeset
754 GaimStatus *status = NULL;
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
755 GaimGroup *g = NULL;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
756 struct buddyinfo *bi = NULL;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
757 char *tmp;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
758
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
759 od = gc->proto_data;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
760 account = gaim_connection_get_account(gc);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
761
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
762 if ((str == NULL) || (newline == NULL) || ((b == NULL) && (userinfo == NULL)))
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
763 return;
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
764
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
765 if (userinfo == NULL)
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
766 userinfo = aim_locate_finduserinfo(od, b->name);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
767
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
768 if (b == NULL)
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
769 b = gaim_find_buddy(account, userinfo->sn);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
770
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
771 if (b != NULL) {
12088
980c877bd238 [gaim-migrate @ 14385]
Mark Doliner <mark@kingant.net>
parents: 12049
diff changeset
772 g = gaim_buddy_get_group(b);
10498
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
773 presence = gaim_buddy_get_presence(b);
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
774 status = gaim_presence_get_active_status(presence);
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
775 }
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
776
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
777 if (userinfo != NULL)
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
778 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, userinfo->sn));
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
779
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
780 if (b != NULL) {
10498
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
781 if (gaim_presence_is_online(presence)) {
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
782 if (aim_sn_is_icq(b->name)) {
11510
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
783 GaimStatus *status = gaim_presence_get_active_status(presence);
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
784 oscar_string_append(str, newline, _("Status"),
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
785 gaim_status_get_name(status));
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
786 }
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
787 } else {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
788 tmp = aim_ssi_itemlist_findparentname(od->ssi.local, b->name);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
789 if (aim_ssi_waitingforauth(od->ssi.local, tmp, b->name))
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
790 oscar_string_append(str, newline, _("Status"),
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
791 _("Not Authorized"));
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
792 else
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
793 oscar_string_append(str, newline, _("Status"),
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
794 _("Offline"));
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
795 }
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
796 }
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
797
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
798 if ((bi != NULL) && (bi->ipaddr != 0)) {
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
799 tmp = g_strdup_printf("%hhu.%hhu.%hhu.%hhu",
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
800 (bi->ipaddr & 0xff000000) >> 24,
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
801 (bi->ipaddr & 0x00ff0000) >> 16,
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
802 (bi->ipaddr & 0x0000ff00) >> 8,
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
803 (bi->ipaddr & 0x000000ff));
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
804 oscar_string_append(str, newline, _("IP Address"), tmp);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
805 g_free(tmp);
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
806 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
807
11257
90be432e8385 [gaim-migrate @ 13432]
Sean Egan <seanegan@gmail.com>
parents: 11256
diff changeset
808
90be432e8385 [gaim-migrate @ 13432]
Sean Egan <seanegan@gmail.com>
parents: 11256
diff changeset
809 if ((userinfo != NULL) && (userinfo->warnlevel != 0)) {
11285
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
810 tmp = g_strdup_printf("%d", (int)(userinfo->warnlevel/10.0 + .5));
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
811 oscar_string_append(str, newline, _("Warning Level"), tmp);
11257
90be432e8385 [gaim-migrate @ 13432]
Sean Egan <seanegan@gmail.com>
parents: 11256
diff changeset
812 g_free(tmp);
90be432e8385 [gaim-migrate @ 13432]
Sean Egan <seanegan@gmail.com>
parents: 11256
diff changeset
813 }
90be432e8385 [gaim-migrate @ 13432]
Sean Egan <seanegan@gmail.com>
parents: 11256
diff changeset
814
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
815 if ((b != NULL) && (b->name != NULL) && (g != NULL) && (g->name != NULL)) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
816 tmp = aim_ssi_getcomment(od->ssi.local, g->name, b->name);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
817 if (tmp != NULL) {
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
818 char *tmp2 = g_markup_escape_text(tmp, strlen(tmp));
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
819 g_free(tmp);
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
820 oscar_string_convert_and_append(account, str, newline, _("Buddy Comment"), tmp2);
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
821 g_free(tmp2);
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
822 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
823 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
824 }
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
825
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
826 static char *extract_name(const char *name) {
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
827 char *tmp, *x;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
828 int i, j;
4120
697217b52ebd [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
829
697217b52ebd [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
830 if (!name)
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
831 return NULL;
13381
d1b29fb3b6d0 [gaim-migrate @ 15754]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 13356
diff changeset
832
4120
697217b52ebd [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
833 x = strchr(name, '-');
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
834
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
835 if (!x) return NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
836 x = strchr(++x, '-');
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
837 if (!x) return NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
838 tmp = g_strdup(++x);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
839
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
840 for (i = 0, j = 0; x[i]; i++) {
2361
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
841 char hex[3];
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
842 if (x[i] != '%') {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
843 tmp[j++] = x[i];
2361
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
844 continue;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
845 }
2361
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
846 strncpy(hex, x + ++i, 2); hex[2] = 0;
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
847 i++;
554b001d7d98 [gaim-migrate @ 2374]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2357
diff changeset
848 tmp[j++] = strtol(hex, NULL, 16);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
849 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
850
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
851 tmp[j] = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
852 return tmp;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
853 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
854
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
855 static struct chat_connection *
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
856 find_oscar_chat(GaimConnection *gc, int id)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
857 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
858 OscarData *od = (OscarData *)gc->proto_data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
859 GSList *cur;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
860 struct chat_connection *cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
861
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
862 for (cur = od->oscar_chats; cur != NULL; cur = cur->next)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
863 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
864 cc = (struct chat_connection *)cur->data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
865 if (cc->id == id)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
866 return cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
867 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
868
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
869 return NULL;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
870 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
871
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
872 static struct chat_connection *
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
873 find_oscar_chat_by_conn(GaimConnection *gc, FlapConnection *conn)
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
874 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
875 OscarData *od = (OscarData *)gc->proto_data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
876 GSList *cur;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
877 struct chat_connection *cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
878
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
879 for (cur = od->oscar_chats; cur != NULL; cur = cur->next)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
880 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
881 cc = (struct chat_connection *)cur->data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
882 if (cc->conn == conn)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
883 return cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
884 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
885
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
886 return NULL;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
887 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
888
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
889 static struct chat_connection *
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
890 find_oscar_chat_by_conv(GaimConnection *gc, GaimConversation *conv)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
891 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
892 OscarData *od = (OscarData *)gc->proto_data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
893 GSList *cur;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
894 struct chat_connection *cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
895
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
896 for (cur = od->oscar_chats; cur != NULL; cur = cur->next)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
897 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
898 cc = (struct chat_connection *)cur->data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
899 if (cc->conv == conv)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
900 return cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
901 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
902
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
903 return NULL;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
904 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
905
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
906 static void
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
907 oscar_chat_destroy(struct chat_connection *cc)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
908 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
909 g_free(cc->name);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
910 g_free(cc->show);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
911 g_free(cc);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
912 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
913
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
914 static void
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
915 oscar_chat_kill(GaimConnection *gc, struct chat_connection *cc)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
916 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
917 OscarData *od = (OscarData *)gc->proto_data;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
918
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
919 /* Notify the conversation window that we've left the chat */
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
920 serv_got_chat_left(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(cc->conv)));
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
921
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
922 /* Destroy the chat_connection */
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
923 od->oscar_chats = g_slist_remove(od->oscar_chats, cc);
13608
6c34fbb75bbd [gaim-migrate @ 15994]
Mark Doliner <mark@kingant.net>
parents: 13605
diff changeset
924 flap_connection_schedule_destroy(cc->conn, OSCAR_DISCONNECT_DONE);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
925 oscar_chat_destroy(cc);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
926 }
12909
8e3b85fe4a55 [gaim-migrate @ 15262]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 12816
diff changeset
927
8e3b85fe4a55 [gaim-migrate @ 15262]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 12816
diff changeset
928 static void
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
929 destroy_new_conn_data(NewFlapConnectionData *new_conn_data)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
930 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
931 if ((new_conn_data->data != NULL) &&
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
932 (new_conn_data->conn->type == SNAC_FAMILY_CHAT))
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
933 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
934 oscar_chat_destroy(new_conn_data->data);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
935 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
936 g_free(new_conn_data->cookie);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
937 g_free(new_conn_data);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
938 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
939
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
940 /**
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
941 * This is the callback function anytime gaim_proxy_connect()
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
942 * establishes a new TCP connection with an oscar host. Depending
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
943 * on the type of host, we do a few different things here.
8983
460d02fe03df [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
944 */
13231
af3d6c6aee6b [gaim-migrate @ 15596]
Mark Doliner <mark@kingant.net>
parents: 13226
diff changeset
945 static void
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
946 connection_established_cb(gpointer data, gint source, GaimInputCondition cond)
13231
af3d6c6aee6b [gaim-migrate @ 15596]
Mark Doliner <mark@kingant.net>
parents: 13226
diff changeset
947 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
948 NewFlapConnectionData *new_conn_data;
13231
af3d6c6aee6b [gaim-migrate @ 15596]
Mark Doliner <mark@kingant.net>
parents: 13226
diff changeset
949 GaimConnection *gc;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
950 OscarData *od;
13604
7337e7968654 [gaim-migrate @ 15990]
Mark Doliner <mark@kingant.net>
parents: 13603
diff changeset
951 GaimAccount *account;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
952 FlapConnection *conn;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
953
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
954 new_conn_data = data;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
955 gc = new_conn_data->gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
956
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
957 if (!g_list_find(gaim_connections_get_all(), gc))
13231
af3d6c6aee6b [gaim-migrate @ 15596]
Mark Doliner <mark@kingant.net>
parents: 13226
diff changeset
958 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
959 if (source >= 0)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
960 close(source);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
961 destroy_new_conn_data(new_conn_data);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
962 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
963 }
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
964
13231
af3d6c6aee6b [gaim-migrate @ 15596]
Mark Doliner <mark@kingant.net>
parents: 13226
diff changeset
965 od = gc->proto_data;
13604
7337e7968654 [gaim-migrate @ 15990]
Mark Doliner <mark@kingant.net>
parents: 13603
diff changeset
966 account = gaim_connection_get_account(gc);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
967 conn = new_conn_data->conn;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
968 conn->fd = source;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
969
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
970 if (source < 0)
13231
af3d6c6aee6b [gaim-migrate @ 15596]
Mark Doliner <mark@kingant.net>
parents: 13226
diff changeset
971 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
972 gaim_debug_error("oscar", "unable to connect FLAP server "
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
973 "of type 0x%04hx\n", conn->type);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
974 if (conn->type == SNAC_FAMILY_AUTH)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
975 gaim_connection_error(gc, _("Could not connect to authentication server"));
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
976 if (conn->type == SNAC_FAMILY_LOCATE)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
977 gaim_connection_error(gc, _("Could not connect to BOS server"));
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
978 else /* Maybe we should call this for BOS connections, too? */
13608
6c34fbb75bbd [gaim-migrate @ 15994]
Mark Doliner <mark@kingant.net>
parents: 13605
diff changeset
979 flap_connection_schedule_destroy(conn,
6c34fbb75bbd [gaim-migrate @ 15994]
Mark Doliner <mark@kingant.net>
parents: 13605
diff changeset
980 OSCAR_DISCONNECT_COULD_NOT_CONNECT);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
981 destroy_new_conn_data(new_conn_data);
13231
af3d6c6aee6b [gaim-migrate @ 15596]
Mark Doliner <mark@kingant.net>
parents: 13226
diff changeset
982 return;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
983 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
984
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
985 gaim_debug_info("oscar", "connected to FLAP server of type 0x%04hx\n",
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
986 conn->type);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
987 conn->watcher_incoming = gaim_input_add(conn->fd,
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
988 GAIM_INPUT_READ, flap_connection_recv_cb, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
989 if (new_conn_data->cookie == NULL)
13602
57e5d1455ad7 [gaim-migrate @ 15988]
Mark Doliner <mark@kingant.net>
parents: 13601
diff changeset
990 {
13604
7337e7968654 [gaim-migrate @ 15990]
Mark Doliner <mark@kingant.net>
parents: 13603
diff changeset
991 if (!aim_sn_is_icq(gaim_account_get_username(account)))
13602
57e5d1455ad7 [gaim-migrate @ 15988]
Mark Doliner <mark@kingant.net>
parents: 13601
diff changeset
992 /*
57e5d1455ad7 [gaim-migrate @ 15988]
Mark Doliner <mark@kingant.net>
parents: 13601
diff changeset
993 * We don't send this when authenticating an ICQ account
57e5d1455ad7 [gaim-migrate @ 15988]
Mark Doliner <mark@kingant.net>
parents: 13601
diff changeset
994 * because for some reason ICQ is still using the
57e5d1455ad7 [gaim-migrate @ 15988]
Mark Doliner <mark@kingant.net>
parents: 13601
diff changeset
995 * assy/insecure authentication procedure.
57e5d1455ad7 [gaim-migrate @ 15988]
Mark Doliner <mark@kingant.net>
parents: 13601
diff changeset
996 */
57e5d1455ad7 [gaim-migrate @ 15988]
Mark Doliner <mark@kingant.net>
parents: 13601
diff changeset
997 flap_connection_send_version(od, conn);
57e5d1455ad7 [gaim-migrate @ 15988]
Mark Doliner <mark@kingant.net>
parents: 13601
diff changeset
998 }
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
999 else
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1000 flap_connection_send_version_with_cookie(od, conn,
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1001 new_conn_data->cookielen, new_conn_data->cookie);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1002
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1003 if (conn->type == SNAC_FAMILY_AUTH)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1004 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1005 aim_request_login(od, conn, gaim_account_get_username(account));
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1006 gaim_debug_info("oscar", "Screen name sent, waiting for response\n");
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1007 gaim_connection_update_progress(gc, _("Screen name sent"), 1, OSCAR_CONNECT_STEPS);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1008 ck[1] = 0x65;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1009 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1010 else if (conn->type == SNAC_FAMILY_LOCATE)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1011 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1012 gaim_connection_update_progress(gc, _("Connection established, cookie sent"), 4, OSCAR_CONNECT_STEPS);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1013 ck[4] = 0x61;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1014 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1015 else if (conn->type == SNAC_FAMILY_CHAT)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1016 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1017 od->oscar_chats = g_slist_append(od->oscar_chats, new_conn_data->data);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1018 new_conn_data->data = NULL;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1019 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1020
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1021 destroy_new_conn_data(new_conn_data);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1022 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1023
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1024 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1025 flap_connection_established_bos(OscarData *od, FlapConnection *conn)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1026 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1027 GaimConnection *gc = od->gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1028
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1029 aim_reqpersonalinfo(od, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1030
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1031 gaim_debug_info("oscar", "ssi: requesting rights and list\n");
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1032 aim_ssi_reqrights(od);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1033 aim_ssi_reqdata(od);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1034 if (od->getblisttimer > 0)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1035 gaim_timeout_remove(od->getblisttimer);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1036 od->getblisttimer = gaim_timeout_add(30000, gaim_ssi_rerequestdata, od);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1037
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1038 aim_locate_reqrights(od);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1039 aim_buddylist_reqrights(od, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1040 aim_im_reqparams(od);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1041 aim_bos_reqrights(od, conn); /* TODO: Don't call this with ssi */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1042
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1043 gaim_connection_update_progress(gc, _("Finalizing connection"), 5, OSCAR_CONNECT_STEPS);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1044 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1045
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1046 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1047 flap_connection_established_admin(OscarData *od, FlapConnection *conn)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1048 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1049 aim_clientready(od, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1050 gaim_debug_info("oscar", "connected to admin\n");
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1051
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1052 if (od->chpass) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1053 gaim_debug_info("oscar", "changing password\n");
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1054 aim_admin_changepasswd(od, conn, od->newp, od->oldp);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1055 g_free(od->oldp);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1056 od->oldp = NULL;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1057 g_free(od->newp);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1058 od->newp = NULL;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1059 od->chpass = FALSE;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1060 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1061 if (od->setnick) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1062 gaim_debug_info("oscar", "formatting screen name\n");
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1063 aim_admin_setnick(od, conn, od->newsn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1064 g_free(od->newsn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1065 od->newsn = NULL;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1066 od->setnick = FALSE;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1067 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1068 if (od->conf) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1069 gaim_debug_info("oscar", "confirming account\n");
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1070 aim_admin_reqconfirm(od, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1071 od->conf = FALSE;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1072 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1073 if (od->reqemail) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1074 gaim_debug_info("oscar", "requesting e-mail address\n");
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1075 aim_admin_getinfo(od, conn, 0x0011);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1076 od->reqemail = FALSE;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1077 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1078 if (od->setemail) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1079 gaim_debug_info("oscar", "setting e-mail address\n");
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1080 aim_admin_setemail(od, conn, od->email);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1081 g_free(od->email);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1082 od->email = NULL;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1083 od->setemail = FALSE;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1084 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1085 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1086
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1087 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1088 flap_connection_established_chat(OscarData *od, FlapConnection *conn)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1089 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1090 GaimConnection *gc = od->gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1091 struct chat_connection *chatcon;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1092 static int id = 1;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1093
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1094 aim_clientready(od, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1095
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1096 chatcon = find_oscar_chat_by_conn(gc, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1097 chatcon->id = id;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1098 chatcon->conv = serv_got_joined_chat(gc, id++, chatcon->show);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1099 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1100
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1101 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1102 flap_connection_established_chatnav(OscarData *od, FlapConnection *conn)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1103 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1104 aim_clientready(od, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1105 aim_chatnav_reqrights(od, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1106 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1107
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1108 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1109 flap_connection_established_alert(OscarData *od, FlapConnection *conn)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1110 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1111 aim_email_sendcookies(od);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1112 aim_email_activate(od);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1113 aim_clientready(od, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1114 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1115
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1116 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1117 flap_connection_established_bart(OscarData *od, FlapConnection *conn)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1118 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1119 GaimConnection *gc = od->gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1120
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1121 aim_clientready(od, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1122
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1123 od->iconconnecting = FALSE;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1124
13862
84f2675cf87f [gaim-migrate @ 16324]
Mark Doliner <mark@kingant.net>
parents: 13842
diff changeset
1125 if (od->icontimer == 0)
84f2675cf87f [gaim-migrate @ 16324]
Mark Doliner <mark@kingant.net>
parents: 13842
diff changeset
1126 od->icontimer = gaim_timeout_add(100, gaim_icon_timerfunc, gc);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1127 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1128
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1129 static int
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1130 flap_connection_established(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1131 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1132 gaim_debug_info("oscar", "FLAP connection of type 0x%04hx is "
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1133 "now fully connected\n", conn->type);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1134 if (conn->type == SNAC_FAMILY_LOCATE)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1135 flap_connection_established_bos(od, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1136 else if (conn->type == SNAC_FAMILY_ADMIN)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1137 flap_connection_established_admin(od, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1138 else if (conn->type == SNAC_FAMILY_CHAT)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1139 flap_connection_established_chat(od, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1140 else if (conn->type == SNAC_FAMILY_CHATNAV)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1141 flap_connection_established_chatnav(od, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1142 else if (conn->type == SNAC_FAMILY_ALERT)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1143 flap_connection_established_alert(od, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1144 else if (conn->type == SNAC_FAMILY_BART)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1145 flap_connection_established_bart(od, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1146
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1147 return 1;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1148 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1149
10444
6bf9b17c03a5 [gaim-migrate @ 11704]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
1150 static void
11837
fa742ad8068c [gaim-migrate @ 14128]
Mark Doliner <mark@kingant.net>
parents: 11820
diff changeset
1151 oscar_login(GaimAccount *account)
10444
6bf9b17c03a5 [gaim-migrate @ 11704]
Mark Doliner <mark@kingant.net>
parents: 10439
diff changeset
1152 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1153 GaimConnection *gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1154 OscarData *od;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1155 NewFlapConnectionData *new_conn_data;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1156
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1157 gc = gaim_account_get_connection(account);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1158 od = gc->proto_data = oscar_data_new();
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1159 od->gc = gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1160
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1161 oscar_data_addhandler(od, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1162 oscar_data_addhandler(od, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, flap_connection_established, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1163
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1164 oscar_data_addhandler(od, SNAC_FAMILY_ADMIN, 0x0003, gaim_info_change, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1165 oscar_data_addhandler(od, SNAC_FAMILY_ADMIN, 0x0005, gaim_info_change, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1166 oscar_data_addhandler(od, SNAC_FAMILY_ADMIN, 0x0007, gaim_account_confirm, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1167 oscar_data_addhandler(od, SNAC_FAMILY_ALERT, 0x0001, gaim_parse_genericerr, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1168 oscar_data_addhandler(od, SNAC_FAMILY_ALERT, SNAC_SUBTYPE_ALERT_MAILSTATUS, gaim_email_parseupdate, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1169 oscar_data_addhandler(od, SNAC_FAMILY_AUTH, 0x0003, gaim_parse_auth_resp, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1170 oscar_data_addhandler(od, SNAC_FAMILY_AUTH, 0x0007, gaim_parse_login, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1171 oscar_data_addhandler(od, SNAC_FAMILY_AUTH, SNAC_SUBTYPE_AUTH_SECURID_REQUEST, gaim_parse_auth_securid_request, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1172 oscar_data_addhandler(od, SNAC_FAMILY_BART, SNAC_SUBTYPE_BART_ERROR, gaim_icon_error, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1173 oscar_data_addhandler(od, SNAC_FAMILY_BART, SNAC_SUBTYPE_BART_RESPONSE, gaim_icon_parseicon, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1174 oscar_data_addhandler(od, SNAC_FAMILY_BOS, 0x0001, gaim_parse_genericerr, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1175 oscar_data_addhandler(od, SNAC_FAMILY_BOS, 0x0003, gaim_bosrights, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1176 oscar_data_addhandler(od, SNAC_FAMILY_BUDDY, 0x0001, gaim_parse_genericerr, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1177 oscar_data_addhandler(od, SNAC_FAMILY_BUDDY, SNAC_SUBTYPE_BUDDY_RIGHTSINFO, gaim_parse_buddyrights, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1178 oscar_data_addhandler(od, SNAC_FAMILY_BUDDY, SNAC_SUBTYPE_BUDDY_ONCOMING, gaim_parse_oncoming, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1179 oscar_data_addhandler(od, SNAC_FAMILY_BUDDY, SNAC_SUBTYPE_BUDDY_OFFGOING, gaim_parse_offgoing, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1180 oscar_data_addhandler(od, SNAC_FAMILY_CHAT, 0x0001, gaim_parse_genericerr, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1181 oscar_data_addhandler(od, SNAC_FAMILY_CHAT, SNAC_SUBTYPE_CHAT_USERJOIN, gaim_conv_chat_join, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1182 oscar_data_addhandler(od, SNAC_FAMILY_CHAT, SNAC_SUBTYPE_CHAT_USERLEAVE, gaim_conv_chat_leave, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1183 oscar_data_addhandler(od, SNAC_FAMILY_CHAT, SNAC_SUBTYPE_CHAT_ROOMINFOUPDATE, gaim_conv_chat_info_update, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1184 oscar_data_addhandler(od, SNAC_FAMILY_CHAT, SNAC_SUBTYPE_CHAT_INCOMINGMSG, gaim_conv_chat_incoming_msg, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1185 oscar_data_addhandler(od, SNAC_FAMILY_CHATNAV, 0x0001, gaim_parse_genericerr, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1186 oscar_data_addhandler(od, SNAC_FAMILY_CHATNAV, SNAC_SUBTYPE_CHATNAV_INFO, gaim_chatnav_info, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1187 oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_ERROR, gaim_ssi_parseerr, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1188 oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_RIGHTSINFO, gaim_ssi_parserights, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1189 oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_LIST, gaim_ssi_parselist, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1190 oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_SRVACK, gaim_ssi_parseack, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1191 oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_ADD, gaim_ssi_parseadd, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1192 oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_RECVAUTH, gaim_ssi_authgiven, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1193 oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_RECVAUTHREQ, gaim_ssi_authrequest, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1194 oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_RECVAUTHREP, gaim_ssi_authreply, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1195 oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_ADDED, gaim_ssi_gotadded, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1196 oscar_data_addhandler(od, SNAC_FAMILY_ICBM, 0x0005, gaim_icbm_param_info, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1197 oscar_data_addhandler(od, SNAC_FAMILY_ICBM, SNAC_SUBTYPE_ICBM_INCOMING, gaim_parse_incoming_im, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1198 oscar_data_addhandler(od, SNAC_FAMILY_ICBM, SNAC_SUBTYPE_ICBM_MISSEDCALL, gaim_parse_misses, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1199 oscar_data_addhandler(od, SNAC_FAMILY_ICBM, SNAC_SUBTYPE_ICBM_CLIENTAUTORESP, gaim_parse_clientauto, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1200 oscar_data_addhandler(od, SNAC_FAMILY_ICBM, SNAC_SUBTYPE_ICBM_ERROR, gaim_parse_msgerr, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1201 oscar_data_addhandler(od, SNAC_FAMILY_ICBM, SNAC_SUBTYPE_ICBM_MTN, gaim_parse_mtn, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1202 oscar_data_addhandler(od, SNAC_FAMILY_ICBM, SNAC_SUBTYPE_ICBM_ACK, gaim_parse_msgack, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1203 oscar_data_addhandler(od, SNAC_FAMILY_ICQ, SNAC_SUBTYPE_ICQ_OFFLINEMSG, gaim_offlinemsg, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1204 oscar_data_addhandler(od, SNAC_FAMILY_ICQ, SNAC_SUBTYPE_ICQ_OFFLINEMSGCOMPLETE, gaim_offlinemsgdone, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1205 oscar_data_addhandler(od, SNAC_FAMILY_ICQ, SNAC_SUBTYPE_ICQ_ALIAS, gaim_icqalias, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1206 oscar_data_addhandler(od, SNAC_FAMILY_ICQ, SNAC_SUBTYPE_ICQ_INFO, gaim_icqinfo, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1207 oscar_data_addhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_RIGHTSINFO, gaim_parse_locaterights, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1208 oscar_data_addhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_USERINFO, gaim_parse_userinfo, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1209 oscar_data_addhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_ERROR, gaim_parse_locerr, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1210 oscar_data_addhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_GOTINFOBLOCK, gaim_got_infoblock, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1211 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x0001, gaim_parse_genericerr, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1212 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x000f, gaim_selfinfo, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1213 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x001f, gaim_memrequest, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1214 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x0021, oscar_icon_req,0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1215 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, SNAC_SUBTYPE_OSERVICE_RATECHANGE, gaim_parse_ratechange, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1216 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, SNAC_SUBTYPE_OSERVICE_REDIRECT, gaim_handle_redirect, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1217 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, SNAC_SUBTYPE_OSERVICE_MOTD, gaim_parse_motd, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1218 oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, SNAC_SUBTYPE_OSERVICE_EVIL, gaim_parse_evilnotify, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1219 oscar_data_addhandler(od, SNAC_FAMILY_POPUP, 0x0002, gaim_popup, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1220 oscar_data_addhandler(od, SNAC_FAMILY_USERLOOKUP, SNAC_SUBTYPE_USERLOOKUP_ERROR, gaim_parse_searcherror, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1221 oscar_data_addhandler(od, SNAC_FAMILY_USERLOOKUP, 0x0003, gaim_parse_searchreply, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1222
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1223 gaim_debug_misc("oscar", "oscar_login: gc = %p\n", gc);
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
1224
8437
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1225 if (!aim_snvalid(gaim_account_get_username(account))) {
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1226 gchar *buf;
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
1227 buf = g_strdup_printf(_("Unable to login: Could not sign on as %s because the screen name is invalid. Screen names must either start with a letter and contain only letters, numbers and spaces, or contain only numbers."), gaim_account_get_username(account));
13875
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
1228 gc->wants_to_die = TRUE;
8437
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1229 gaim_connection_error(gc, buf);
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1230 g_free(buf);
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1231 }
990314a962fb [gaim-migrate @ 9167]
Mark Doliner <mark@kingant.net>
parents: 8430
diff changeset
1232
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
1233 if (aim_sn_is_icq((gaim_account_get_username(account)))) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1234 od->icq = TRUE;
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
1235 } else {
6622
a4622f1fb5a1 [gaim-migrate @ 7146]
Luke Schierer <lschiere@pidgin.im>
parents: 6621
diff changeset
1236 gc->flags |= GAIM_CONNECTION_HTML;
a4622f1fb5a1 [gaim-migrate @ 7146]
Luke Schierer <lschiere@pidgin.im>
parents: 6621
diff changeset
1237 gc->flags |= GAIM_CONNECTION_AUTO_RESP;
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
1238 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1239
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
1240 /* Connect to core Gaim signals */
10087
9fdbfe832fac [gaim-migrate @ 11098]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10042
diff changeset
1241 gaim_prefs_connect_callback(gc, "/plugins/prpl/oscar/recent_buddies", recent_buddies_cb, gc);
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
1242
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1243 new_conn_data = g_new(NewFlapConnectionData, 1);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1244 new_conn_data->gc = gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1245 new_conn_data->conn = flap_connection_new(od, SNAC_FAMILY_AUTH);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1246 new_conn_data->cookielen = 0;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1247 new_conn_data->cookie = NULL;
13631
35b7b1ae809a [gaim-migrate @ 16020]
Mark Doliner <mark@kingant.net>
parents: 13608
diff changeset
1248 new_conn_data->data = NULL;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1249
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1250 if (gaim_proxy_connect(account,
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1251 gaim_account_get_string(account, "server", OSCAR_DEFAULT_LOGIN_SERVER),
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1252 gaim_account_get_int(account, "port", OSCAR_DEFAULT_LOGIN_PORT),
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1253 connection_established_cb, new_conn_data) < 0)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1254 {
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1255 gaim_connection_error(gc, _("Couldn't connect to host"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1256 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1257 }
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1258
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1259 gaim_connection_update_progress(gc, _("Connecting"), 0, OSCAR_CONNECT_STEPS);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
1260 ck[0] = 0x5a;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1261 }
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1262
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1263 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1264 oscar_close(GaimConnection *gc)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1265 {
13597
4d8927a4f1ef [gaim-migrate @ 15983]
Mark Doliner <mark@kingant.net>
parents: 13595
diff changeset
1266 OscarData *od;
4d8927a4f1ef [gaim-migrate @ 15983]
Mark Doliner <mark@kingant.net>
parents: 13595
diff changeset
1267
4d8927a4f1ef [gaim-migrate @ 15983]
Mark Doliner <mark@kingant.net>
parents: 13595
diff changeset
1268 od = (OscarData *)gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1269
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1270 while (od->oscar_chats)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1271 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1272 struct chat_connection *cc = od->oscar_chats->data;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1273 od->oscar_chats = g_slist_remove(od->oscar_chats, cc);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1274 oscar_chat_destroy(cc);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1275 }
13597
4d8927a4f1ef [gaim-migrate @ 15983]
Mark Doliner <mark@kingant.net>
parents: 13595
diff changeset
1276 while (od->create_rooms)
4d8927a4f1ef [gaim-migrate @ 15983]
Mark Doliner <mark@kingant.net>
parents: 13595
diff changeset
1277 {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1278 struct create_room *cr = od->create_rooms->data;
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
1279 g_free(cr->name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1280 od->create_rooms = g_slist_remove(od->create_rooms, cr);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
1281 g_free(cr);
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
1282 }
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1283 oscar_data_destroy(od);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1284 gc->proto_data = NULL;
13597
4d8927a4f1ef [gaim-migrate @ 15983]
Mark Doliner <mark@kingant.net>
parents: 13595
diff changeset
1285
4d8927a4f1ef [gaim-migrate @ 15983]
Mark Doliner <mark@kingant.net>
parents: 13595
diff changeset
1286 gaim_prefs_disconnect_by_handle(gc);
4d8927a4f1ef [gaim-migrate @ 15983]
Mark Doliner <mark@kingant.net>
parents: 13595
diff changeset
1287
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1288 gaim_debug_info("oscar", "Signed off.\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1289 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1290
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1291 static int
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1292 gaim_parse_auth_resp(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
8446
d9cf0c2f4339 [gaim-migrate @ 9176]
Mark Doliner <mark@kingant.net>
parents: 8437
diff changeset
1293 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1294 GaimConnection *gc = od->gc;
6029
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
1295 GaimAccount *account = gc->account;
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
1296 char *host; int port;
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
1297 int i, rc;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1298 NewFlapConnectionData *new_conn_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1299 va_list ap;
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1300 struct aim_authresp_info *info;
6029
38999b6b1838 [gaim-migrate @ 6479]
Mark Doliner <mark@kingant.net>
parents: 6019
diff changeset
1301
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
1302 port = gaim_account_get_int(account, "port", OSCAR_DEFAULT_LOGIN_PORT);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1303
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1304 va_start(ap, fr);
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1305 info = va_arg(ap, struct aim_authresp_info *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1306 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1307
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1308 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1309 "inside auth_resp (Screen name: %s)\n", info->sn);
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1310
4293
79d871c11eb9 [gaim-migrate @ 4546]
Mark Doliner <mark@kingant.net>
parents: 4292
diff changeset
1311 if (info->errorcode || !info->bosip || !info->cookielen || !info->cookie) {
4056
4f3fb54ee669 [gaim-migrate @ 4266]
Luke Schierer <lschiere@pidgin.im>
parents: 3952
diff changeset
1312 char buf[256];
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1313 switch (info->errorcode) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1314 case 0x05:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1315 /* Incorrect nick/password */
6498
87024723ef17 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
1316 gc->wants_to_die = TRUE;
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1317 gaim_connection_error(gc, _("Incorrect nickname or password."));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1318 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1319 case 0x11:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1320 /* Suspended account */
6498
87024723ef17 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
1321 gc->wants_to_die = TRUE;
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1322 gaim_connection_error(gc, _("Your account is currently suspended."));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1323 break;
3498
5a4569cea6be [gaim-migrate @ 3561]
Mark Doliner <mark@kingant.net>
parents: 3490
diff changeset
1324 case 0x14:
5a4569cea6be [gaim-migrate @ 3561]
Mark Doliner <mark@kingant.net>
parents: 3490
diff changeset
1325 /* service temporarily unavailable */
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1326 gaim_connection_error(gc, _("The AOL Instant Messenger service is temporarily unavailable."));
3498
5a4569cea6be [gaim-migrate @ 3561]
Mark Doliner <mark@kingant.net>
parents: 3490
diff changeset
1327 break;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1328 case 0x18:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1329 /* connecting too frequently */
6498
87024723ef17 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
1330 gc->wants_to_die = TRUE;
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1331 gaim_connection_error(gc, _("You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1332 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1333 case 0x1c:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1334 /* client too old */
6498
87024723ef17 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
1335 gc->wants_to_die = TRUE;
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
1336 g_snprintf(buf, sizeof(buf), _("The client version you are using is too old. Please upgrade at %s"), GAIM_WEBSITE);
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1337 gaim_connection_error(gc, buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1338 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1339 default:
6623
156e6643f9db [gaim-migrate @ 7147]
Luke Schierer <lschiere@pidgin.im>
parents: 6622
diff changeset
1340 gaim_connection_error(gc, _("Authentication failed"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1341 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1342 }
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
1343 gaim_debug_error("oscar", "Login Error Code 0x%04hx\n", info->errorcode);
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
1344 gaim_debug_error("oscar", "Error URL: %s\n", info->errorurl);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1345 od->killme = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1346 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1347 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1348
9992
7596ad640b56 [gaim-migrate @ 10905]
Mark Doliner <mark@kingant.net>
parents: 9991
diff changeset
1349 gaim_debug_misc("oscar", "Reg status: %hu\n", info->regstatus);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1350 gaim_debug_misc("oscar", "E-mail: %s\n",
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1351 (info->email != NULL) ? info->email : "null");
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1352 gaim_debug_misc("oscar", "BOSIP: %s\n", info->bosip);
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
1353 gaim_debug_info("oscar", "Closing auth connection...\n");
13608
6c34fbb75bbd [gaim-migrate @ 15994]
Mark Doliner <mark@kingant.net>
parents: 13605
diff changeset
1354 flap_connection_schedule_destroy(conn, OSCAR_DISCONNECT_DONE);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1355
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1356 for (i = 0; i < strlen(info->bosip); i++) {
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1357 if (info->bosip[i] == ':') {
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1358 port = atoi(&(info->bosip[i+1]));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1359 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1360 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1361 }
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1362 host = g_strndup(info->bosip, i);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1363 new_conn_data = g_new(NewFlapConnectionData, 1);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1364 new_conn_data->gc = gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1365 new_conn_data->conn = flap_connection_new(od, SNAC_FAMILY_LOCATE);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1366 new_conn_data->cookielen = info->cookielen;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1367 new_conn_data->cookie = g_memdup(info->cookie, info->cookielen);
13631
35b7b1ae809a [gaim-migrate @ 16020]
Mark Doliner <mark@kingant.net>
parents: 13608
diff changeset
1368 new_conn_data->data = NULL;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1369 rc = gaim_proxy_connect(gc->account, host, port, connection_established_cb, new_conn_data);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1370 g_free(host);
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
1371 if (rc < 0) {
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1372 gaim_connection_error(gc, _("Could Not Connect"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1373 od->killme = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1374 return 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1375 }
2704
fee85ed7fc3f [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1376
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1377 gaim_connection_update_progress(gc, _("Received authorization"), 3, OSCAR_CONNECT_STEPS);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
1378 ck[3] = 0x64;
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1379
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1380 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1381 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1382
10464
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1383 static void
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1384 gaim_parse_auth_securid_request_yes_cb(gpointer user_data, const char *msg)
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1385 {
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1386 GaimConnection *gc = user_data;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1387 OscarData *od = gc->proto_data;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1388
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1389 aim_auth_securid_send(od, msg);
10464
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1390 }
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1391
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1392 static void
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1393 gaim_parse_auth_securid_request_no_cb(gpointer user_data, const char *value)
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1394 {
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1395 GaimConnection *gc = user_data;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1396 OscarData *od = gc->proto_data;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1397
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1398 /* Disconnect */
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1399 gc->wants_to_die = TRUE;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1400 gaim_connection_error(gc, _("The SecurID key entered is invalid."));
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1401 od->killme = TRUE;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1402 }
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1403
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1404 static int
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1405 gaim_parse_auth_securid_request(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
10464
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1406 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1407 GaimConnection *gc = od->gc;
10464
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1408 GaimAccount *account = gaim_connection_get_account(gc);
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1409 gchar *primary;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1410
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1411 gaim_debug_info("oscar", "Got SecurID request\n");
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1412
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1413 primary = g_strdup_printf("Enter the SecurID key for %s.", gaim_account_get_username(account));
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1414 gaim_request_input(gc, NULL, _("Enter SecurID"), primary,
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1415 _("Enter the 6 digit number from the digital display."),
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1416 FALSE, FALSE, NULL,
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1417 _("OK"), G_CALLBACK(gaim_parse_auth_securid_request_yes_cb),
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1418 _("Cancel"), G_CALLBACK(gaim_parse_auth_securid_request_no_cb),
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1419 gc);
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1420 g_free(primary);
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1421
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1422 return 1;
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1423 }
61ef9a964574 [gaim-migrate @ 11739]
Mark Doliner <mark@kingant.net>
parents: 10458
diff changeset
1424
7285
a50eea7628cb [gaim-migrate @ 7866]
Mark Doliner <mark@kingant.net>
parents: 7283
diff changeset
1425 /* XXX - Should use gaim_url_fetch for the below stuff */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1426 struct pieceofcrap {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1427 GaimConnection *gc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1428 unsigned long offset;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1429 unsigned long len;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1430 char *modname;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1431 int fd;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1432 FlapConnection *conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1433 unsigned int inpa;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1434 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1435
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1436 static void damn_you(gpointer data, gint source, GaimInputCondition c)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1437 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1438 struct pieceofcrap *pos = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1439 OscarData *od = pos->gc->proto_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1440 char in = '\0';
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1441 int x = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1442 unsigned char m[17];
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1443
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1444 while (read(pos->fd, &in, 1) == 1) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1445 if (in == '\n')
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1446 x++;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1447 else if (in != '\r')
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1448 x = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1449 if (x == 2)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1450 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1451 in = '\0';
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1452 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1453 if (in != '\n') {
4056
4f3fb54ee669 [gaim-migrate @ 4266]
Luke Schierer <lschiere@pidgin.im>
parents: 3952
diff changeset
1454 char buf[256];
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
1455 g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until "
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
1456 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1457 gaim_notify_warning(pos->gc, NULL,
7422
d176a85f2581 [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
1458 _("Gaim was unable to get a valid AIM login hash."),
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1459 buf);
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1460 gaim_input_remove(pos->inpa);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1461 close(pos->fd);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1462 g_free(pos);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1463 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1464 }
13662
b198d0c26b83 [gaim-migrate @ 16064]
Mark Doliner <mark@kingant.net>
parents: 13654
diff changeset
1465 if (read(pos->fd, m, 16) != 16)
b198d0c26b83 [gaim-migrate @ 16064]
Mark Doliner <mark@kingant.net>
parents: 13654
diff changeset
1466 {
b198d0c26b83 [gaim-migrate @ 16064]
Mark Doliner <mark@kingant.net>
parents: 13654
diff changeset
1467 gaim_debug_warning("oscar", "Could not read full AIM login hash "
b198d0c26b83 [gaim-migrate @ 16064]
Mark Doliner <mark@kingant.net>
parents: 13654
diff changeset
1468 "from " AIMHASHDATA "--that's bad.\n");
b198d0c26b83 [gaim-migrate @ 16064]
Mark Doliner <mark@kingant.net>
parents: 13654
diff changeset
1469 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1470 m[16] = '\0';
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1471 gaim_debug_misc("oscar", "Sending hash: ");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1472 for (x = 0; x < 16; x++)
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1473 gaim_debug_misc(NULL, "%02hhx ", (unsigned char)m[x]);
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1474
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1475 gaim_debug_misc(NULL, "\n");
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1476 gaim_input_remove(pos->inpa);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1477 close(pos->fd);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1478 aim_sendmemblock(od, pos->conn, 0, 16, m, AIM_SENDMEMBLOCK_FLAG_ISHASH);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1479 g_free(pos);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1480 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1481
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1482 static void straight_to_hell(gpointer data, gint source, GaimInputCondition cond) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1483 struct pieceofcrap *pos = data;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
1484 gchar *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1485
4366
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
1486 pos->fd = source;
7ba9b56a8796 [gaim-migrate @ 4632]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
1487
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1488 if (source < 0) {
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
1489 buf = g_strdup_printf(_("You may be disconnected shortly. You may want to use TOC until "
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
1490 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1491 gaim_notify_warning(pos->gc, NULL,
7422
d176a85f2581 [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
1492 _("Gaim was unable to get a valid AIM login hash."),
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1493 buf);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
1494 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1495 if (pos->modname)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1496 g_free(pos->modname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1497 g_free(pos);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1498 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1499 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1500
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
1501 buf = g_strdup_printf("GET " AIMHASHDATA "?offset=%ld&len=%ld&modname=%s HTTP/1.0\n\n",
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1502 pos->offset, pos->len, pos->modname ? pos->modname : "");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1503 write(pos->fd, buf, strlen(buf));
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
1504 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1505 if (pos->modname)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1506 g_free(pos->modname);
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
1507 pos->inpa = gaim_input_add(pos->fd, GAIM_INPUT_READ, damn_you, pos);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1508 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1509 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1510
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1511 /* size of icbmui.ocm, the largest module in AIM 3.5 */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1512 #define AIM_MAX_FILE_SIZE 98304
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1513
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1514 int gaim_memrequest(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1515 va_list ap;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1516 struct pieceofcrap *pos;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
1517 guint32 offset, len;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1518 char *modname;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1519
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1520 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
1521 offset = va_arg(ap, guint32);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
1522 len = va_arg(ap, guint32);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1523 modname = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1524 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1525
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
1526 gaim_debug_misc("oscar", "offset: %u, len: %u, file: %s\n",
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
1527 offset, len, (modname ? modname : "aim.exe"));
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1528
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1529 if (len == 0) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1530 gaim_debug_misc("oscar", "len is 0, hashing NULL\n");
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1531 aim_sendmemblock(od, conn, offset, len, NULL,
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1532 AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1533 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1534 }
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
1535 /* uncomment this when you're convinced it's right. remember, it's been wrong before. */
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
1536 #if 0
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1537 if (offset > AIM_MAX_FILE_SIZE || len > AIM_MAX_FILE_SIZE) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1538 char *buf;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1539 int i = 8;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1540 if (modname)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1541 i += strlen(modname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1542 buf = g_malloc(i);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1543 i = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1544 if (modname) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1545 memcpy(buf, modname, strlen(modname));
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1546 i += strlen(modname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1547 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1548 buf[i++] = offset & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1549 buf[i++] = (offset >> 8) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1550 buf[i++] = (offset >> 16) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1551 buf[i++] = (offset >> 24) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1552 buf[i++] = len & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1553 buf[i++] = (len >> 8) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1554 buf[i++] = (len >> 16) & 0xff;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1555 buf[i++] = (len >> 24) & 0xff;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1556 gaim_debug_misc("oscar", "len + offset is invalid, "
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1557 "hashing request\n");
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1558 aim_sendmemblock(od, command->conn, offset, i, buf, AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1559 g_free(buf);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1560 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1561 }
9625
3ec0b63d4f2e [gaim-migrate @ 10469]
Mark Doliner <mark@kingant.net>
parents: 9620
diff changeset
1562 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1563
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1564 pos = g_new0(struct pieceofcrap, 1);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1565 pos->gc = od->gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1566 pos->conn = conn;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1567
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1568 pos->offset = offset;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1569 pos->len = len;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1570 pos->modname = modname ? g_strdup(modname) : NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1571
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1572 if (gaim_proxy_connect(pos->gc->account, "gaim.sourceforge.net", 80, straight_to_hell, pos) != 0)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1573 {
4056
4f3fb54ee669 [gaim-migrate @ 4266]
Luke Schierer <lschiere@pidgin.im>
parents: 3952
diff changeset
1574 char buf[256];
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1575 if (pos->modname)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1576 g_free(pos->modname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1577 g_free(pos);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1578 g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. "
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1579 "Check %s for updates."), GAIM_WEBSITE);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1580 gaim_notify_warning(pos->gc, NULL,
7422
d176a85f2581 [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
1581 _("Gaim was unable to get a valid login hash."),
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1582 buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1583 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1584
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1585 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1586 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1587
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1588 static int
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1589 gaim_parse_login(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1590 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1591 GaimConnection *gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1592 GaimAccount *account;
13239
f260d319bbbc [gaim-migrate @ 15605]
Mark Doliner <mark@kingant.net>
parents: 13234
diff changeset
1593 ClientInfo info = CLIENTINFO_GAIM;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
1594 va_list ap;
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
1595 char *key;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1596
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1597 gc = od->gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1598 account = gaim_connection_get_account(gc);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1599
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1600 va_start(ap, fr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1601 key = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1602 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1603
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1604 aim_send_login(od, conn, gaim_account_get_username(account),
12049
d854a6fc7b82 [gaim-migrate @ 14344]
Mark Doliner <mark@kingant.net>
parents: 12000
diff changeset
1605 gaim_connection_get_password(gc), &info, key);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1606
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
1607 gaim_connection_update_progress(gc, _("Password sent"), 2, OSCAR_CONNECT_STEPS);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
1608 ck[2] = 0x6c;
7282
ad243bc63184 [gaim-migrate @ 7861]
Mark Doliner <mark@kingant.net>
parents: 7261
diff changeset
1609
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1610 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1611 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1612
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1613 static int
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1614 gaim_handle_redirect(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1615 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1616 GaimConnection *gc = od->gc;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1617 GaimAccount *account = gaim_connection_get_account(gc);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1618 char *host, *separator;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1619 int port;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1620 NewFlapConnectionData *new_conn_data;
4821
a68d04b268ce [gaim-migrate @ 5146]
Mark Doliner <mark@kingant.net>
parents: 4820
diff changeset
1621 va_list ap;
a68d04b268ce [gaim-migrate @ 5146]
Mark Doliner <mark@kingant.net>
parents: 4820
diff changeset
1622 struct aim_redirect_data *redir;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1623
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1624 va_start(ap, fr);
2821
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1625 redir = va_arg(ap, struct aim_redirect_data *);
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1626 va_end(ap);
9467e4ee81be [gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2820
diff changeset
1627
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1628 port = gaim_account_get_int(account, "port", OSCAR_DEFAULT_LOGIN_PORT);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1629 separator = strchr(redir->ip, ':');
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1630 if (separator != NULL)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1631 {
13595
e9289db48a5d [gaim-migrate @ 15981]
Mark Doliner <mark@kingant.net>
parents: 13592
diff changeset
1632 host = g_strndup(redir->ip, (int)separator - (int)redir->ip);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1633 port = atoi(separator + 1);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1634 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1635 else
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1636 host = g_strdup(redir->ip);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1637
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1638 gaim_debug_info("oscar", "Connecting to FLAP server %s:%d of type 0x%04hx\n",
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1639 host, port, redir->group);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1640 new_conn_data = g_new(NewFlapConnectionData, 1);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1641 new_conn_data->gc = gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1642 new_conn_data->conn = flap_connection_new(od, redir->group);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1643 new_conn_data->cookielen = redir->cookielen;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1644 new_conn_data->cookie = g_memdup(redir->cookie, redir->cookielen);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1645 if (new_conn_data->conn->type == SNAC_FAMILY_CHAT)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1646 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1647 struct chat_connection *cc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1648 cc = g_new0(struct chat_connection, 1);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1649 cc->conn = new_conn_data->conn;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1650 cc->gc = gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1651 cc->name = g_strdup(redir->chat.room);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1652 cc->exchange = redir->chat.exchange;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1653 cc->instance = redir->chat.instance;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1654 cc->show = extract_name(redir->chat.room);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1655 new_conn_data->data = cc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1656 gaim_debug_info("oscar", "Connecting to chat room %s exchange %hu\n", cc->name, cc->exchange);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1657 }
13631
35b7b1ae809a [gaim-migrate @ 16020]
Mark Doliner <mark@kingant.net>
parents: 13608
diff changeset
1658 else
35b7b1ae809a [gaim-migrate @ 16020]
Mark Doliner <mark@kingant.net>
parents: 13608
diff changeset
1659 {
35b7b1ae809a [gaim-migrate @ 16020]
Mark Doliner <mark@kingant.net>
parents: 13608
diff changeset
1660 new_conn_data->data = NULL;
35b7b1ae809a [gaim-migrate @ 16020]
Mark Doliner <mark@kingant.net>
parents: 13608
diff changeset
1661 }
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1662
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1663 if (gaim_proxy_connect(account, host, port, connection_established_cb, new_conn_data) != 0)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1664 {
13608
6c34fbb75bbd [gaim-migrate @ 15994]
Mark Doliner <mark@kingant.net>
parents: 13605
diff changeset
1665 flap_connection_schedule_destroy(new_conn_data->conn,
6c34fbb75bbd [gaim-migrate @ 15994]
Mark Doliner <mark@kingant.net>
parents: 13605
diff changeset
1666 OSCAR_DISCONNECT_COULD_NOT_CONNECT);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1667 gaim_debug_error("oscar", "Unable to connect to FLAP server "
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1668 "of type 0x%04hx\n", redir->group);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1669 destroy_new_conn_data(new_conn_data);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1670 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1671 g_free(host);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1672
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1673 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1674 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1675
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1676 static int gaim_parse_oncoming(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
1677 {
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
1678 GaimConnection *gc;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
1679 GaimAccount *account;
11973
0fab529c01fc [gaim-migrate @ 14266]
Mark Doliner <mark@kingant.net>
parents: 11965
diff changeset
1680 GaimPresence *presence;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1681 struct buddyinfo *bi;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1682 time_t time_idle = 0, signon = 0;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1683 int type = 0;
12349
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1684 gboolean buddy_is_away = FALSE;
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1685 const char *status_id;
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1686 gboolean have_status_message = FALSE;
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1687 char *message = NULL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1688 va_list ap;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1689 aim_userinfo_t *info;
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
1690
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1691 gc = od->gc;
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
1692 account = gaim_connection_get_account(gc);
11973
0fab529c01fc [gaim-migrate @ 14266]
Mark Doliner <mark@kingant.net>
parents: 11965
diff changeset
1693 presence = gaim_account_get_presence(account);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
1694
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1695 va_start(ap, fr);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
1696 info = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1697 va_end(ap);
11973
0fab529c01fc [gaim-migrate @ 14266]
Mark Doliner <mark@kingant.net>
parents: 11965
diff changeset
1698
10130
096197a628bf [gaim-migrate @ 11193]
Mark Doliner <mark@kingant.net>
parents: 10116
diff changeset
1699 g_return_val_if_fail(info != NULL, 1);
096197a628bf [gaim-migrate @ 11193]
Mark Doliner <mark@kingant.net>
parents: 10116
diff changeset
1700 g_return_val_if_fail(info->sn != NULL, 1);
096197a628bf [gaim-migrate @ 11193]
Mark Doliner <mark@kingant.net>
parents: 10116
diff changeset
1701
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
1702 if (info->present & AIM_USERINFO_PRESENT_FLAGS) {
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
1703 if (info->flags & AIM_FLAG_AWAY)
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1704 buddy_is_away = TRUE;
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
1705 }
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1706 if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) {
11510
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
1707 type = info->icqinfo.status;
3013
47d0f8979fb1 [gaim-migrate @ 3026]
Sean Egan <seanegan@gmail.com>
parents: 3009
diff changeset
1708 if (!(info->icqinfo.status & AIM_ICQ_STATE_CHAT) &&
47d0f8979fb1 [gaim-migrate @ 3026]
Sean Egan <seanegan@gmail.com>
parents: 3009
diff changeset
1709 (info->icqinfo.status != AIM_ICQ_STATE_NORMAL)) {
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
1710 buddy_is_away = TRUE;
3013
47d0f8979fb1 [gaim-migrate @ 3026]
Sean Egan <seanegan@gmail.com>
parents: 3009
diff changeset
1711 }
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1712 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1713
12349
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1714 if (aim_sn_is_icq(info->sn)) {
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1715 if (type & AIM_ICQ_STATE_CHAT)
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1716 status_id = OSCAR_STATUS_ID_FREE4CHAT;
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1717 else if (type & AIM_ICQ_STATE_DND)
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1718 status_id = OSCAR_STATUS_ID_DND;
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1719 else if (type & AIM_ICQ_STATE_OUT)
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1720 status_id = OSCAR_STATUS_ID_NA;
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1721 else if (type & AIM_ICQ_STATE_BUSY)
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1722 status_id = OSCAR_STATUS_ID_OCCUPIED;
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1723 else if (type & AIM_ICQ_STATE_AWAY)
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1724 status_id = OSCAR_STATUS_ID_AWAY;
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1725 else if (type & AIM_ICQ_STATE_INVISIBLE)
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1726 status_id = OSCAR_STATUS_ID_INVISIBLE;
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1727 else
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1728 status_id = OSCAR_STATUS_ID_AVAILABLE;
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1729 } else {
12653
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
1730 if (buddy_is_away)
12349
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1731 status_id = OSCAR_STATUS_ID_AWAY;
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1732 else
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1733 status_id = OSCAR_STATUS_ID_AVAILABLE;
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1734 }
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1735
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1736 /*
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1737 * Handle the available message. If info->status is NULL then the user
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1738 * may or may not have an available message, so don't do anything. If
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1739 * info->status is set to the empty string, then the user's client DOES
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1740 * support available messages and the user DOES NOT have one set.
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1741 * Otherwise info->status contains the available message.
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1742 */
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1743 if (info->status != NULL)
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1744 {
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1745 have_status_message = TRUE;
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1746 if (info->status[0] != '\0')
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1747 message = oscar_encoding_to_utf8(info->status_encoding,
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1748 info->status, info->status_len);
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1749 }
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1750
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1751 if (have_status_message)
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1752 {
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1753 gaim_prpl_got_user_status(account, info->sn, status_id,
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1754 "message", message, NULL);
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1755 g_free(message);
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1756 }
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1757 else
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1758 gaim_prpl_got_user_status(account, info->sn, status_id, NULL);
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1759
12350
51c57ebb4ec8 [gaim-migrate @ 14654]
Mark Doliner <mark@kingant.net>
parents: 12349
diff changeset
1760 /* Login time stuff */
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
1761 if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE)
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
1762 signon = info->onlinesince;
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
1763 else if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN)
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1764 signon = time(NULL) - info->sessionlen;
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
1765 if (!aim_sncmp(gaim_account_get_username(account), info->sn)) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
1766 gaim_connection_set_display_name(gc, info->sn);
11973
0fab529c01fc [gaim-migrate @ 14266]
Mark Doliner <mark@kingant.net>
parents: 11965
diff changeset
1767 od->timeoffset = signon - gaim_presence_get_login_time(presence);
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
1768 }
12350
51c57ebb4ec8 [gaim-migrate @ 14654]
Mark Doliner <mark@kingant.net>
parents: 12349
diff changeset
1769 gaim_prpl_got_user_login_time(account, info->sn, signon - od->timeoffset);
51c57ebb4ec8 [gaim-migrate @ 14654]
Mark Doliner <mark@kingant.net>
parents: 12349
diff changeset
1770
51c57ebb4ec8 [gaim-migrate @ 14654]
Mark Doliner <mark@kingant.net>
parents: 12349
diff changeset
1771 /* Idle time stuff */
51c57ebb4ec8 [gaim-migrate @ 14654]
Mark Doliner <mark@kingant.net>
parents: 12349
diff changeset
1772 /* info->idletime is the number of minutes that this user has been idle */
51c57ebb4ec8 [gaim-migrate @ 14654]
Mark Doliner <mark@kingant.net>
parents: 12349
diff changeset
1773 if (info->present & AIM_USERINFO_PRESENT_IDLE)
51c57ebb4ec8 [gaim-migrate @ 14654]
Mark Doliner <mark@kingant.net>
parents: 12349
diff changeset
1774 time_idle = time(NULL) - info->idletime * 60;
51c57ebb4ec8 [gaim-migrate @ 14654]
Mark Doliner <mark@kingant.net>
parents: 12349
diff changeset
1775
51c57ebb4ec8 [gaim-migrate @ 14654]
Mark Doliner <mark@kingant.net>
parents: 12349
diff changeset
1776 if (time_idle > 0)
51c57ebb4ec8 [gaim-migrate @ 14654]
Mark Doliner <mark@kingant.net>
parents: 12349
diff changeset
1777 gaim_prpl_got_user_idle(account, info->sn, TRUE, time_idle);
51c57ebb4ec8 [gaim-migrate @ 14654]
Mark Doliner <mark@kingant.net>
parents: 12349
diff changeset
1778 else
51c57ebb4ec8 [gaim-migrate @ 14654]
Mark Doliner <mark@kingant.net>
parents: 12349
diff changeset
1779 gaim_prpl_got_user_idle(account, info->sn, FALSE, 0);
51c57ebb4ec8 [gaim-migrate @ 14654]
Mark Doliner <mark@kingant.net>
parents: 12349
diff changeset
1780
51c57ebb4ec8 [gaim-migrate @ 14654]
Mark Doliner <mark@kingant.net>
parents: 12349
diff changeset
1781 /* Server stored icon stuff */
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
1782 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, info->sn));
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1783 if (!bi) {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1784 bi = g_new0(struct buddyinfo, 1);
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
1785 g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(account, info->sn)), bi);
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1786 }
4739
5c720bc4c23d [gaim-migrate @ 5054]
Mark Doliner <mark@kingant.net>
parents: 4738
diff changeset
1787 bi->typingnot = FALSE;
5c720bc4c23d [gaim-migrate @ 5054]
Mark Doliner <mark@kingant.net>
parents: 4738
diff changeset
1788 bi->ico_informed = FALSE;
6857
59f6d0b1bdbe [gaim-migrate @ 7402]
Mark Doliner <mark@kingant.net>
parents: 6846
diff changeset
1789 bi->ipaddr = info->icqinfo.ipaddr;
59f6d0b1bdbe [gaim-migrate @ 7402]
Mark Doliner <mark@kingant.net>
parents: 6846
diff changeset
1790
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1791 if (info->iconcsumlen) {
13654
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
1792 const char *filename, *saved_b16 = NULL;
9801
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
1793 char *b16 = NULL, *filepath = NULL;
7093
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1794 GaimBuddy *b = NULL;
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1795
7106
db6bd3e794d8 [gaim-migrate @ 7671]
Christian Hammond <chipx86@chipx86.com>
parents: 7098
diff changeset
1796 b16 = gaim_base16_encode(info->iconcsum, info->iconcsumlen);
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
1797 b = gaim_find_buddy(account, info->sn);
7093
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1798 /*
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1799 * If for some reason the checksum is valid, but cached file is not..
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1800 * we want to know.
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1801 */
13654
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
1802 if (b != NULL)
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
1803 filename = gaim_blist_node_get_string((GaimBlistNode*)b, "buddy_icon");
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
1804 else
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
1805 filename = NULL;
7093
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1806 if (filename != NULL) {
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1807 if (g_file_test(filename, G_FILE_TEST_EXISTS))
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
1808 saved_b16 = gaim_blist_node_get_string((GaimBlistNode*)b,
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
1809 "icon_checksum");
9801
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
1810 else {
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
1811 filepath = g_build_filename(gaim_buddy_icons_get_cache_dir(),
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
1812 filename, NULL);
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
1813 if (g_file_test(filepath, G_FILE_TEST_EXISTS))
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
1814 saved_b16 = gaim_blist_node_get_string((GaimBlistNode*)b,
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
1815 "icon_checksum");
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
1816 g_free(filepath);
7aa5a20519ee [gaim-migrate @ 10669]
Luke Schierer <lschiere@pidgin.im>
parents: 9797
diff changeset
1817 }
7093
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1818 } else
3650612c7daa [gaim-migrate @ 7658]
Mark Doliner <mark@kingant.net>
parents: 7091
diff changeset
1819 saved_b16 = NULL;
7054
7c04a0775918 [gaim-migrate @ 7617]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 7045
diff changeset
1820
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1821 if (!b16 || !saved_b16 || strcmp(b16, saved_b16)) {
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1822 GSList *cur = od->requesticon;
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1823 while (cur && aim_sncmp((char *)cur->data, info->sn))
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1824 cur = cur->next;
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1825 if (!cur) {
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
1826 od->requesticon = g_slist_append(od->requesticon, g_strdup(gaim_normalize(account, info->sn)));
13862
84f2675cf87f [gaim-migrate @ 16324]
Mark Doliner <mark@kingant.net>
parents: 13842
diff changeset
1827 if (od->icontimer == 0)
84f2675cf87f [gaim-migrate @ 16324]
Mark Doliner <mark@kingant.net>
parents: 13842
diff changeset
1828 od->icontimer = gaim_timeout_add(500, gaim_icon_timerfunc, gc);
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1829 }
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1830 }
6053
74b281b4ae29 [gaim-migrate @ 6503]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1831 g_free(b16);
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1832 }
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
1833
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1834 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1835 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1836
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
1837 static void gaim_check_comment(OscarData *od, const char *str) {
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
1838 if ((str == NULL) || strcmp(str, (const char *)ck))
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1839 aim_locate_setcaps(od, caps_aim);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
1840 else
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1841 aim_locate_setcaps(od, caps_aim | OSCAR_CAPABILITY_SECUREIM);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1842 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1843
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1844 static int gaim_parse_offgoing(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1845 GaimConnection *gc = od->gc;
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
1846 GaimAccount *account = gaim_connection_get_account(gc);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1847 va_list ap;
4739
5c720bc4c23d [gaim-migrate @ 5054]
Mark Doliner <mark@kingant.net>
parents: 4738
diff changeset
1848 aim_userinfo_t *info;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1849
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1850 va_start(ap, fr);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
1851 info = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1852 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1853
12349
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
1854 gaim_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_OFFLINE, NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1855
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
1856 g_hash_table_remove(od->buddyinfo, gaim_normalize(gc->account, info->sn));
5837
a48c338dff6c [gaim-migrate @ 6268]
Mark Doliner <mark@kingant.net>
parents: 5836
diff changeset
1857
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1858 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1859 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1860
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1861 static int incomingim_chan1(OscarData *od, FlapConnection *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch1_args *args) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1862 GaimConnection *gc = od->gc;
8708
f71c0a3fcb3d [gaim-migrate @ 9461]
Mark Doliner <mark@kingant.net>
parents: 8701
diff changeset
1863 GaimAccount *account = gaim_connection_get_account(gc);
12216
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
1864 GaimMessageFlags flags = 0;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1865 struct buddyinfo *bi;
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
1866 char *iconfile;
9806
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
1867 GString *message;
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
1868 gchar *tmp;
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
1869 aim_mpmsg_section_t *curpart;
13732
79720436df40 [gaim-migrate @ 16143]
Mark Doliner <mark@kingant.net>
parents: 13728
diff changeset
1870 const char *start, *end;
12675
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1871 GData *attribs;
9806
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
1872
11537
9b58dadf1c16 [gaim-migrate @ 13791]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11533
diff changeset
1873 gaim_debug_misc("oscar", "Received IM from %s with %d parts\n",
9806
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
1874 userinfo->sn, args->mpmsg.numparts);
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1875
10595
de34037a02c7 [gaim-migrate @ 12010]
Mark Doliner <mark@kingant.net>
parents: 10594
diff changeset
1876 if (args->mpmsg.numparts == 0)
de34037a02c7 [gaim-migrate @ 12010]
Mark Doliner <mark@kingant.net>
parents: 10594
diff changeset
1877 return 1;
de34037a02c7 [gaim-migrate @ 12010]
Mark Doliner <mark@kingant.net>
parents: 10594
diff changeset
1878
8708
f71c0a3fcb3d [gaim-migrate @ 9461]
Mark Doliner <mark@kingant.net>
parents: 8701
diff changeset
1879 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, userinfo->sn));
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1880 if (!bi) {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1881 bi = g_new0(struct buddyinfo, 1);
8708
f71c0a3fcb3d [gaim-migrate @ 9461]
Mark Doliner <mark@kingant.net>
parents: 8701
diff changeset
1882 g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(account, userinfo->sn)), bi);
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1883 }
2273
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2249
diff changeset
1884
0b5c3338fa3d [gaim-migrate @ 2283]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2249
diff changeset
1885 if (args->icbmflags & AIM_IMFLAGS_AWAY)
12216
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
1886 flags |= GAIM_MESSAGE_AUTO_RESP;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1887
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1888 if (args->icbmflags & AIM_IMFLAGS_TYPINGNOT)
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1889 bi->typingnot = TRUE;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1890 else
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1891 bi->typingnot = FALSE;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1892
4380
fe465b7d9440 [gaim-migrate @ 4646]
Mark Doliner <mark@kingant.net>
parents: 4374
diff changeset
1893 if ((args->icbmflags & AIM_IMFLAGS_HASICON) && (args->iconlen) && (args->iconsum) && (args->iconstamp)) {
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
1894 gaim_debug_misc("oscar", "%s has an icon\n", userinfo->sn);
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1895 if ((args->iconlen != bi->ico_len) || (args->iconsum != bi->ico_csum) || (args->iconstamp != bi->ico_time)) {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1896 bi->ico_need = TRUE;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1897 bi->ico_len = args->iconlen;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1898 bi->ico_csum = args->iconsum;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
1899 bi->ico_time = args->iconstamp;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1900 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1901 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1902
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
1903 iconfile = gaim_buddy_icons_get_full_path(gaim_account_get_buddy_icon(account));
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
1904 if ((iconfile != NULL) &&
7406
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
1905 (args->icbmflags & AIM_IMFLAGS_BUDDYREQ) && !bi->ico_sent && bi->ico_informed) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1906 FILE *file;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1907 struct stat st;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1908
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
1909 if (!g_stat(iconfile, &st)) {
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
1910 guchar *buf = g_malloc(st.st_size);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
1911 file = g_fopen(iconfile, "rb");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1912 if (file) {
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
1913 /* XXX - Use g_file_get_contents() */
13827
6c3c8d0d389f [gaim-migrate @ 16271]
Mark Doliner <mark@kingant.net>
parents: 13800
diff changeset
1914 /* g_file_get_contents(iconfile, &data, &len, NULL); */
2603
24664768a739 [gaim-migrate @ 2616]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2597
diff changeset
1915 int len = fread(buf, 1, st.st_size, file);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
1916 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1917 "Sending buddy icon to %s (%d bytes, "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1918 "%lu reported)\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1919 userinfo->sn, len, st.st_size);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1920 aim_im_sendch2_icon(od, userinfo->sn, buf, st.st_size,
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
1921 st.st_mtime, aimutil_iconsum(buf, st.st_size));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1922 fclose(file);
2336
c6c5eaf69188 [gaim-migrate @ 2349]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2315
diff changeset
1923 } else
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
1924 gaim_debug_error("oscar", "Can't open buddy icon file!\n");
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1925 g_free(buf);
2336
c6c5eaf69188 [gaim-migrate @ 2349]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2315
diff changeset
1926 } else
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
1927 gaim_debug_error("oscar", "Can't stat buddy icon file!\n");
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1928 }
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
1929 g_free(iconfile);
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1930
9806
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
1931 message = g_string_new("");
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
1932 curpart = args->mpmsg.parts;
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
1933 while (curpart != NULL) {
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
1934 tmp = gaim_plugin_oscar_decode_im_part(account, userinfo->sn, curpart->charset,
12675
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1935 curpart->charsubset, curpart->data, curpart->datalen);
9806
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
1936 if (tmp != NULL) {
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
1937 g_string_append(message, tmp);
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
1938 g_free(tmp);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1939 }
9806
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
1940
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
1941 curpart = curpart->next;
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
1942 }
41b97d72e647 [gaim-migrate @ 10674]
Mark Doliner <mark@kingant.net>
parents: 9801
diff changeset
1943 tmp = g_string_free(message, FALSE);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1944
8666
7a99cfed1996 [gaim-migrate @ 9418]
Mark Doliner <mark@kingant.net>
parents: 8660
diff changeset
1945 /*
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
1946 * If the message is from an ICQ user and to an ICQ user then escape any HTML,
9016
53c1e635f11d [gaim-migrate @ 9792]
Luke Schierer <lschiere@pidgin.im>
parents: 9015
diff changeset
1947 * because HTML is not sent over ICQ as a means to format a message.
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
1948 * So any HTML we receive is intended to be displayed. Also, \r\n must be
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
1949 * replaced with <br>
8995
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
1950 *
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
1951 * Note: There *may* be some clients which send messages as HTML formatted -
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
1952 * they need to be special-cased somehow.
8666
7a99cfed1996 [gaim-migrate @ 9418]
Mark Doliner <mark@kingant.net>
parents: 8660
diff changeset
1953 */
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
1954 if (aim_sn_is_icq(gaim_account_get_username(account)) && aim_sn_is_icq(userinfo->sn)) {
8995
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
1955 /* being recevied by ICQ from ICQ - escape HTML so it is displayed as sent */
10732
c4cb90065e1d [gaim-migrate @ 12334]
Luke Schierer <lschiere@pidgin.im>
parents: 10715
diff changeset
1956 gchar *tmp2 = g_markup_escape_text(tmp, -1);
8493
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
1957 g_free(tmp);
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
1958 tmp = tmp2;
10783
48779a02fe99 [gaim-migrate @ 12412]
Mark Doliner <mark@kingant.net>
parents: 10781
diff changeset
1959 tmp2 = gaim_strreplace(tmp, "\r\n", "<br>");
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
1960 g_free(tmp);
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
1961 tmp = tmp2;
8493
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
1962 }
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
1963
12675
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1964 /*
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1965 * Convert iChat color tags to normal font tags.
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1966 */
13732
79720436df40 [gaim-migrate @ 16143]
Mark Doliner <mark@kingant.net>
parents: 13728
diff changeset
1967 if (gaim_markup_find_tag("body", tmp, &start, &end, &attribs))
12675
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1968 {
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1969 const char *ichattextcolor, *ichatballooncolor;
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1970
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1971 ichattextcolor = g_datalist_get_data(&attribs, "ichattextcolor");
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1972 if (ichattextcolor != NULL)
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1973 {
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1974 gchar *tmp2;
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1975 tmp2 = g_strdup_printf("<font color=\"%s\">%s</font>", ichattextcolor, tmp);
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1976 g_free(tmp);
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1977 tmp = tmp2;
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1978 }
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1979
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1980 ichatballooncolor = g_datalist_get_data(&attribs, "ichatballooncolor");
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1981 if (ichatballooncolor != NULL)
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1982 {
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1983 gchar *tmp2;
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1984 tmp2 = g_strdup_printf("<font back=\"%s\">%s</font>", ichatballooncolor, tmp);
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1985 g_free(tmp);
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1986 tmp = tmp2;
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1987 }
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1988
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1989 g_datalist_clear(&attribs);
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1990 }
323af3853ed5 [gaim-migrate @ 15018]
Mark Doliner <mark@kingant.net>
parents: 12663
diff changeset
1991
6982
083d1e4a9c78 [gaim-migrate @ 7538]
Mark Doliner <mark@kingant.net>
parents: 6907
diff changeset
1992 serv_got_im(gc, userinfo->sn, tmp, flags, time(NULL));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1993 g_free(tmp);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1994
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1995 return 1;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1996 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
1997
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1998 static int
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
1999 incomingim_chan2(OscarData *od, FlapConnection *conn, aim_userinfo_t *userinfo, IcbmArgsCh2 *args)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2000 {
9070
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
2001 GaimConnection *gc;
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2002 GaimAccount *account;
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2003 char *message = NULL;
9070
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
2004
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2005 g_return_val_if_fail(od != NULL, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2006 g_return_val_if_fail(od->gc != NULL, 0);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2007
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2008 gc = od->gc;
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2009 account = gaim_connection_get_account(gc);
9070
f13172eed3ad [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
2010 od = gc->proto_data;
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2011
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2012 if (args == NULL)
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2013 return 0;
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
2014
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2015 gaim_debug_misc("oscar", "Incoming rendezvous message of type %u, "
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2016 "user %s, status %hu\n", args->type, userinfo->sn, args->status);
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2017
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2018 if (args->msg != NULL)
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2019 {
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2020 if (args->encoding != NULL)
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2021 {
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2022 char *encoding = NULL;
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2023 encoding = oscar_encoding_extract(args->encoding);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2024 message = oscar_encoding_to_utf8(encoding, args->msg, args->msglen);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2025 g_free(encoding);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2026 } else {
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2027 if (g_utf8_validate(args->msg, args->msglen, NULL))
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2028 message = g_strdup(args->msg);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2029 }
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2030 }
2869
9b029055cfba [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
2031
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2032 if (args->type & OSCAR_CAPABILITY_CHAT)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2033 {
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2034 char *name;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
2035 GHashTable *components;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
2036
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2037 if (!args->info.chat.roominfo.name || !args->info.chat.roominfo.exchange) {
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2038 g_free(message);
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2039 return 1;
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2040 }
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
2041 components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free,
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
2042 g_free);
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2043 name = extract_name(args->info.chat.roominfo.name);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2044 g_hash_table_replace(components, g_strdup("room"),
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2045 g_strdup(name ? name : args->info.chat.roominfo.name));
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2046 g_hash_table_replace(components, g_strdup("exchange"),
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2047 g_strdup_printf("%d", args->info.chat.roominfo.exchange));
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2048 serv_got_chat_invite(gc,
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2049 name ? name : args->info.chat.roominfo.name,
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2050 userinfo->sn,
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2051 message,
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
2052 components);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2053 if (name)
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2054 g_free(name);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2055 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2056
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2057 else if ((args->type & OSCAR_CAPABILITY_SENDFILE) ||
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2058 (args->type & OSCAR_CAPABILITY_DIRECTIM))
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2059 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2060 if (args->status == AIM_RENDEZVOUS_PROPOSE)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2061 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2062 peer_connection_got_proposition(od, userinfo->sn, message, args);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2063 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2064 else if (args->status == AIM_RENDEZVOUS_CANCEL)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2065 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2066 /* The other user canceled a peer request */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2067 PeerConnection *conn;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2068
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2069 conn = peer_connection_find_by_cookie(od, userinfo->sn, args->cookie);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2070 /*
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2071 * If conn is NULL it means we haven't tried to create
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2072 * a connection with that user. They may be trying to
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2073 * do something malicious.
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2074 */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2075 if (conn != NULL)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2076 {
13608
6c34fbb75bbd [gaim-migrate @ 15994]
Mark Doliner <mark@kingant.net>
parents: 13605
diff changeset
2077 peer_connection_destroy(conn, OSCAR_DISCONNECT_REMOTE_CLOSED);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2078 }
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2079 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2080 else if (args->status == AIM_RENDEZVOUS_CONNECTED)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2081 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2082 /* Remote user has accepted our peer request */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2083 PeerConnection *conn;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2084
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2085 conn = peer_connection_find_by_cookie(od, userinfo->sn, args->cookie);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2086 /*
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2087 * If conn is NULL it means we haven't tried to create
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2088 * a connection with that user. They may be trying to
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2089 * do something malicious.
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2090 */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2091 if (conn != NULL)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2092 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2093 if (conn->listenerfd != -1)
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2094 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2095 /*
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2096 * If they are connecting directly to us then
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2097 * continue the peer negotiation by
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2098 * accepting connections on our listener port.
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2099 */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2100 conn->watcher_incoming = gaim_input_add(conn->listenerfd,
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2101 GAIM_INPUT_READ, peer_connection_listen_cb, conn);
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2102 }
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2103 }
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2104 }
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2105 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2106
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2107 else if (args->type & OSCAR_CAPABILITY_GETFILE)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2108 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2109 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2110
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2111 else if (args->type & OSCAR_CAPABILITY_TALK)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2112 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2113 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2114
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2115 else if (args->type & OSCAR_CAPABILITY_BUDDYICON)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2116 {
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2117 gaim_buddy_icons_set_for_user(account, userinfo->sn,
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2118 args->info.icon.icon,
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
2119 args->info.icon.length);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2120 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2121
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2122 else if (args->type & OSCAR_CAPABILITY_ICQSERVERRELAY)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2123 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2124 gaim_debug_error("oscar", "Got an ICQ Server Relay message of "
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2125 "type %d\n", args->info.rtfmsg.msgtype);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2126 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2127
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2128 else
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2129 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2130 gaim_debug_error("oscar", "Unknown request class %hu\n",
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2131 args->type);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2132 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2133
9933
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2134 g_free(message);
cee849d17167 [gaim-migrate @ 10825]
Mark Doliner <mark@kingant.net>
parents: 9927
diff changeset
2135
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2136 return 1;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2137 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2138
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2139 /*
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2140 * Authorization Functions
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
2141 * Most of these are callbacks from dialogs. They're used by both
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2142 * methods of authorization (SSI and old-school channel 4 ICBM)
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2143 */
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2144 /* When you ask other people for authorization */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2145 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2146 gaim_auth_request(struct name_data *data, char *msg)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2147 {
13654
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2148 GaimConnection *gc;
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2149 OscarData *od;
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2150 GaimBuddy *buddy;
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2151 GaimGroup *group;
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2152
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2153 gc = data->gc;
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2154 od = gc->proto_data;
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2155 buddy = gaim_find_buddy(gaim_connection_get_account(gc), data->name);
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2156 if (buddy != NULL)
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2157 group = gaim_buddy_get_group(buddy);
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2158 else
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2159 group = NULL;
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2160
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2161 if (group != NULL)
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2162 {
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2163 gaim_debug_info("oscar", "ssi: adding buddy %s to group %s\n",
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2164 buddy->name, group->name);
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2165 aim_ssi_sendauthrequest(od, data->name, msg ? msg : _("Please authorize me so I can add you to my buddy list."));
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2166 if (!aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2167 aim_ssi_addbuddy(od, buddy->name, group->name, gaim_buddy_get_alias_only(buddy), NULL, NULL, 1);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2168 }
4337
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
2169 }
368b75c4092f [gaim-migrate @ 4601]
Mark Doliner <mark@kingant.net>
parents: 4336
diff changeset
2170
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2171 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2172 gaim_auth_request_msgprompt(struct name_data *data)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2173 {
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2174 gaim_request_input(data->gc, NULL, _("Authorization Request Message:"),
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
2175 NULL, _("Please authorize me!"), TRUE, FALSE, NULL,
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2176 _("OK"), G_CALLBACK(gaim_auth_request),
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
2177 _("Cancel"), G_CALLBACK(oscar_free_name_data),
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2178 data);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2179 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2180
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2181 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2182 gaim_auth_dontrequest(struct name_data *data)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2183 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2184 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2185
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2186 if (g_list_find(gaim_connections_get_all(), gc)) {
8151
b619ee745ec0 [gaim-migrate @ 8863]
Mark Doliner <mark@kingant.net>
parents: 8150
diff changeset
2187 /* Remove from local list */
b619ee745ec0 [gaim-migrate @ 8863]
Mark Doliner <mark@kingant.net>
parents: 8150
diff changeset
2188 GaimBuddy *b = gaim_find_buddy(gaim_connection_get_account(gc), data->name);
b619ee745ec0 [gaim-migrate @ 8863]
Mark Doliner <mark@kingant.net>
parents: 8150
diff changeset
2189 gaim_blist_remove_buddy(b);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2190 }
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2191
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
2192 oscar_free_name_data(data);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2193 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2194
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2195
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2196 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2197 gaim_auth_sendrequest(GaimConnection *gc, char *name)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2198 {
13262
b08f8f3c9197 [gaim-migrate @ 15628]
Mark Doliner <mark@kingant.net>
parents: 13256
diff changeset
2199 struct name_data *data = g_new0(struct name_data, 1);
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
2200 GaimBuddy *buddy;
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2201 gchar *dialog_msg, *nombre;
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2202
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
2203 buddy = gaim_find_buddy(gc->account, name);
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
2204 if (buddy && (gaim_buddy_get_alias_only(buddy)))
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
2205 nombre = g_strdup_printf("%s (%s)", name, gaim_buddy_get_alias_only(buddy));
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2206 else
4830
46fb754a3c10 [gaim-migrate @ 5155]
Mark Doliner <mark@kingant.net>
parents: 4829
diff changeset
2207 nombre = NULL;
46fb754a3c10 [gaim-migrate @ 5155]
Mark Doliner <mark@kingant.net>
parents: 4829
diff changeset
2208
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
2209 dialog_msg = g_strdup_printf(_("The user %s requires authorization before being added to a buddy list. Do you want to send an authorization request?"), (nombre ? nombre : name));
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2210 data->gc = gc;
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2211 data->name = g_strdup(name);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2212 data->nick = NULL;
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2213
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2214 gaim_request_action(gc, NULL, _("Request Authorization"), dialog_msg,
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2215 0, data, 2,
12603
e4e47871c373 [gaim-migrate @ 14938]
Richard Laager <rlaager@wiktel.com>
parents: 12600
diff changeset
2216 _("_Request Authorization"),
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2217 G_CALLBACK(gaim_auth_request_msgprompt),
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2218 _("Cancel"), G_CALLBACK(gaim_auth_dontrequest));
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2219
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2220 g_free(dialog_msg);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2221 g_free(nombre);
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2222 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
2223
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2224
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2225 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2226 gaim_auth_sendrequest_menu(GaimBlistNode *node, gpointer ignored)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2227 {
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2228 GaimBuddy *buddy;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2229 GaimConnection *gc;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2230
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2231 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2232
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2233 buddy = (GaimBuddy *) node;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2234 gc = gaim_account_get_connection(buddy->account);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2235 gaim_auth_sendrequest(gc, buddy->name);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2236 }
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
2237
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2238 /* When other people ask you for authorization */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2239 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2240 gaim_auth_grant(struct name_data *data)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2241 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2242 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2243
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2244 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2245 OscarData *od = gc->proto_data;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2246 aim_ssi_sendauthreply(od, data->name, 0x01, NULL);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2247 }
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2248
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
2249 oscar_free_name_data(data);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2250 }
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2251
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2252 /* When other people ask you for authorization */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2253 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2254 gaim_auth_dontgrant(struct name_data *data, char *msg)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2255 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2256 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2257
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2258 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2259 OscarData *od = gc->proto_data;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2260 aim_ssi_sendauthreply(od, data->name, 0x00, msg ? msg : _("No reason given."));
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2261 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2262 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2263
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2264 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2265 gaim_auth_dontgrant_msgprompt(struct name_data *data)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2266 {
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2267 gaim_request_input(data->gc, NULL, _("Authorization Denied Message:"),
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
2268 NULL, _("No reason given."), TRUE, FALSE, NULL,
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2269 _("OK"), G_CALLBACK(gaim_auth_dontgrant),
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
2270 _("Cancel"), G_CALLBACK(oscar_free_name_data),
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2271 data);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2272 }
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2273
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2274 /* When someone sends you buddies */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2275 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2276 gaim_icq_buddyadd(struct name_data *data)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2277 {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
2278 GaimConnection *gc = data->gc;
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2279
5580
86456ec3ca25 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2280 if (g_list_find(gaim_connections_get_all(), gc)) {
7060
9946001989a3 [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
2281 gaim_blist_request_add_buddy(gaim_connection_get_account(gc), data->name, NULL, data->nick);
4244
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2282 }
091e9db94ebc [gaim-migrate @ 4494]
Mark Doliner <mark@kingant.net>
parents: 4243
diff changeset
2283
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
2284 oscar_free_name_data(data);
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2285 }
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2286
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2287 static int
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2288 incomingim_chan4(OscarData *od, FlapConnection *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch4_args *args, time_t t)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2289 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2290 GaimConnection *gc = od->gc;
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
2291 GaimAccount *account = gaim_connection_get_account(gc);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2292 gchar **msg1, **msg2;
6051
a170c50b2a48 [gaim-migrate @ 6501]
Mark Doliner <mark@kingant.net>
parents: 6040
diff changeset
2293 int i, numtoks;
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2294
4121
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2295 if (!args->type || !args->msg || !args->uin)
69c049c48a96 [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2296 return 1;
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
2297
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2298 gaim_debug_info("oscar",
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2299 "Received a channel 4 message of type 0x%02hx.\n",
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
2300 args->type);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2301
9919
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
2302 /*
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
2303 * Split up the message at the delimeter character, then convert each
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
2304 * string to UTF-8. Unless, of course, this is a type 1 message. If
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
2305 * this is a type 1 message, then the delimiter 0xfe could be a valid
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
2306 * character in whatever encoding the message was sent in. Type 1
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
2307 * messages are always made up of only one part, so we can easily account
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
2308 * for this suck-ass part of the protocol by splitting the string into at
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
2309 * most 1 baby string.
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
2310 */
1806abd8ccbc [gaim-migrate @ 10811]
Mark Doliner <mark@kingant.net>
parents: 9917
diff changeset
2311 msg1 = g_strsplit(args->msg, "\376", (args->type == 0x01 ? 1 : 0));
6051
a170c50b2a48 [gaim-migrate @ 6501]
Mark Doliner <mark@kingant.net>
parents: 6040
diff changeset
2312 for (numtoks=0; msg1[numtoks]; numtoks++);
a170c50b2a48 [gaim-migrate @ 6501]
Mark Doliner <mark@kingant.net>
parents: 6040
diff changeset
2313 msg2 = (gchar **)g_malloc((numtoks+1)*sizeof(gchar *));
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2314 for (i=0; msg1[i]; i++) {
11920
52f27ffe68a5 [gaim-migrate @ 14211]
Mark Doliner <mark@kingant.net>
parents: 11910
diff changeset
2315 gaim_str_strip_char(msg1[i], '\r');
9908
e46e63a96f07 [gaim-migrate @ 10800]
Mark Doliner <mark@kingant.net>
parents: 9879
diff changeset
2316 msg2[i] = gaim_plugin_oscar_decode_im_part(account, "1", AIM_CHARSET_ASCII, 0x0000, msg1[i], strlen(msg1[i]));
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2317 }
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2318 msg2[i] = NULL;
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2319
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
2320 switch (args->type) {
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2321 case 0x01: { /* MacICQ message or basic offline message */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2322 if (i >= 1) {
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
2323 gchar *uin = g_strdup_printf("%u", args->uin);
8493
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
2324 gchar *tmp;
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
2325
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
2326 /* If the message came from an ICQ user then escape any HTML */
10732
c4cb90065e1d [gaim-migrate @ 12334]
Luke Schierer <lschiere@pidgin.im>
parents: 10715
diff changeset
2327 tmp = g_markup_escape_text(msg2[0], -1);
8493
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
2328
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2329 if (t) { /* This is an offline message */
9680
958cfbb47ad6 [gaim-migrate @ 10532]
Mark Doliner <mark@kingant.net>
parents: 9661
diff changeset
2330 /* The timestamp is UTC-ish, so we need to get the offset */
9698
bd5abccacff2 [gaim-migrate @ 10557]
Mark Doliner <mark@kingant.net>
parents: 9680
diff changeset
2331 #ifdef HAVE_TM_GMTOFF
9724
6b5bd8ee11db [gaim-migrate @ 10585]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
2332 time_t now;
6b5bd8ee11db [gaim-migrate @ 10585]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
2333 struct tm *tm;
6b5bd8ee11db [gaim-migrate @ 10585]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
2334 now = time(NULL);
6b5bd8ee11db [gaim-migrate @ 10585]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
2335 tm = localtime(&now);
6b5bd8ee11db [gaim-migrate @ 10585]
Mark Doliner <mark@kingant.net>
parents: 9713
diff changeset
2336 t += tm->tm_gmtoff;
9698
bd5abccacff2 [gaim-migrate @ 10557]
Mark Doliner <mark@kingant.net>
parents: 9680
diff changeset
2337 #else
bd5abccacff2 [gaim-migrate @ 10557]
Mark Doliner <mark@kingant.net>
parents: 9680
diff changeset
2338 # ifdef HAVE_TIMEZONE
9680
958cfbb47ad6 [gaim-migrate @ 10532]
Mark Doliner <mark@kingant.net>
parents: 9661
diff changeset
2339 tzset();
958cfbb47ad6 [gaim-migrate @ 10532]
Mark Doliner <mark@kingant.net>
parents: 9661
diff changeset
2340 t -= timezone;
9698
bd5abccacff2 [gaim-migrate @ 10557]
Mark Doliner <mark@kingant.net>
parents: 9680
diff changeset
2341 # endif
bd5abccacff2 [gaim-migrate @ 10557]
Mark Doliner <mark@kingant.net>
parents: 9680
diff changeset
2342 #endif
8514
ed1f3a8f0ccd [gaim-migrate @ 9252]
Mark Doliner <mark@kingant.net>
parents: 8501
diff changeset
2343 serv_got_im(gc, uin, tmp, 0, t);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2344 } else { /* This is a message from MacICQ/Miranda */
8514
ed1f3a8f0ccd [gaim-migrate @ 9252]
Mark Doliner <mark@kingant.net>
parents: 8501
diff changeset
2345 serv_got_im(gc, uin, tmp, 0, time(NULL));
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2346 }
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2347 g_free(uin);
8493
244a49ab79ef [gaim-migrate @ 9228]
Mark Doliner <mark@kingant.net>
parents: 8476
diff changeset
2348 g_free(tmp);
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
2349 }
3316
76a0e566d834 [gaim-migrate @ 3334]
Jim Seymour <jseymour>
parents: 3279
diff changeset
2350 } break;
76a0e566d834 [gaim-migrate @ 3334]
Jim Seymour <jseymour>
parents: 3279
diff changeset
2351
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2352 case 0x04: { /* Someone sent you a URL */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2353 if (i >= 2) {
7385
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2354 if (msg2[1] != NULL) {
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2355 gchar *uin = g_strdup_printf("%u", args->uin);
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2356 gchar *message = g_strdup_printf("<A HREF=\"%s\">%s</A>",
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2357 msg2[1],
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2358 (msg2[0] && msg2[0][0]) ? msg2[0] : msg2[1]);
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2359 serv_got_im(gc, uin, message, 0, time(NULL));
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2360 g_free(uin);
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2361 g_free(message);
79d74929693c [gaim-migrate @ 7980]
Mark Doliner <mark@kingant.net>
parents: 7376
diff changeset
2362 }
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2363 }
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2364 } break;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2365
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2366 case 0x06: { /* Someone requested authorization */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2367 if (i >= 6) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2368 struct name_data *data = g_new(struct name_data, 1);
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
2369 gchar *sn = g_strdup_printf("%u", args->uin);
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
2370 gchar *reason;
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
2371 gchar *dialog_msg;
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
2372
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
2373 if (msg2[5] != NULL)
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
2374 reason = gaim_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg2[5], strlen(msg2[5]));
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
2375 else
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
2376 reason = g_strdup(_("No reason given."));
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
2377
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2378 dialog_msg = g_strdup_printf(_("The user %u wants to add %s to their buddy list for the following reason:\n%s"),
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
2379 args->uin, gaim_account_get_username(gc->account), reason);
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
2380 g_free(reason);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2381 gaim_debug_info("oscar",
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
2382 "Received an authorization request from UIN %u\n",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2383 args->uin);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2384 data->gc = gc;
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
2385 data->name = sn;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2386 data->nick = NULL;
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2387
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2388 gaim_request_action(gc, NULL, _("Authorization Request"),
9948
b13013595c08 [gaim-migrate @ 10844]
Luke Schierer <lschiere@pidgin.im>
parents: 9944
diff changeset
2389 dialog_msg, GAIM_DEFAULT_ACTION_NONE, data,
12603
e4e47871c373 [gaim-migrate @ 14938]
Richard Laager <rlaager@wiktel.com>
parents: 12600
diff changeset
2390 2, _("_Authorize"),
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2391 G_CALLBACK(gaim_auth_grant),
12603
e4e47871c373 [gaim-migrate @ 14938]
Richard Laager <rlaager@wiktel.com>
parents: 12600
diff changeset
2392 _("_Deny"),
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2393 G_CALLBACK(gaim_auth_dontgrant_msgprompt));
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2394 g_free(dialog_msg);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2395 }
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2396 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2397
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2398 case 0x07: { /* Someone has denied you authorization */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2399 if (i >= 1) {
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2400 gchar *dialog_msg = g_strdup_printf(_("The user %u has denied your request to add them to your buddy list for the following reason:\n%s"), args->uin, msg2[0] ? msg2[0] : _("No reason given."));
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2401 gaim_notify_info(gc, NULL, _("ICQ authorization denied."),
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2402 dialog_msg);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2403 g_free(dialog_msg);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2404 }
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2405 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2406
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2407 case 0x08: { /* Someone has granted you authorization */
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2408 gchar *dialog_msg = g_strdup_printf(_("The user %u has granted your request to add them to your buddy list."), args->uin);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2409 gaim_notify_info(gc, NULL, "ICQ authorization accepted.",
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2410 dialog_msg);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2411 g_free(dialog_msg);
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2412 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2413
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
2414 case 0x09: { /* Message from the Godly ICQ server itself, I think */
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
2415 if (i >= 5) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
2416 gchar *dialog_msg = g_strdup_printf(_("You have received a special message\n\nFrom: %s [%s]\n%s"), msg2[0], msg2[3], msg2[5]);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2417 gaim_notify_info(gc, NULL, "ICQ Server Message", dialog_msg);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
2418 g_free(dialog_msg);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
2419 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
2420 } break;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
2421
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2422 case 0x0d: { /* Someone has sent you a pager message from http://www.icq.com/your_uin */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2423 if (i >= 6) {
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
2424 gchar *dialog_msg = g_strdup_printf(_("You have received an ICQ page\n\nFrom: %s [%s]\n%s"), msg2[0], msg2[3], msg2[5]);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2425 gaim_notify_info(gc, NULL, "ICQ Page", dialog_msg);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2426 g_free(dialog_msg);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2427 }
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
2428 } break;
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
2429
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2430 case 0x0e: { /* Someone has emailed you at your_uin@pager.icq.com */
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2431 if (i >= 6) {
13545
cfc2f7fcb3dd [gaim-migrate @ 15922]
Richard Laager <rlaager@wiktel.com>
parents: 13477
diff changeset
2432 gchar *dialog_msg = g_strdup_printf(_("You have received an ICQ e-mail from %s [%s]\n\nMessage is:\n%s"), msg2[0], msg2[3], msg2[5]);
cfc2f7fcb3dd [gaim-migrate @ 15922]
Richard Laager <rlaager@wiktel.com>
parents: 13477
diff changeset
2433 gaim_notify_info(gc, NULL, "ICQ E-Mail", dialog_msg);
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2434 g_free(dialog_msg);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2435 }
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
2436 } break;
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
2437
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2438 case 0x12: {
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2439 /* Ack for authorizing/denying someone. Or possibly an ack for sending any system notice */
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2440 /* Someone added you to their buddy list? */
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2441 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2442
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2443 case 0x13: { /* Someone has sent you some ICQ buddies */
7631
ea2d07ad05a9 [gaim-migrate @ 8255]
Nathan Walp <nwalp@pidgin.im>
parents: 7621
diff changeset
2444 guint i, num;
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2445 gchar **text;
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
2446 text = g_strsplit(args->msg, "\376", 0);
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2447 if (text) {
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2448 num = 0;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2449 for (i=0; i<strlen(text[0]); i++)
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2450 num = num*10 + text[0][i]-48;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2451 for (i=0; i<num; i++) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
2452 struct name_data *data = g_new(struct name_data, 1);
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2453 gchar *message = g_strdup_printf(_("ICQ user %u has sent you a buddy: %s (%s)"), args->uin, text[i*2+2], text[i*2+1]);
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2454 data->gc = gc;
4790
4e617a0719ed [gaim-migrate @ 5110]
Mark Doliner <mark@kingant.net>
parents: 4785
diff changeset
2455 data->name = g_strdup(text[i*2+1]);
4e617a0719ed [gaim-migrate @ 5110]
Mark Doliner <mark@kingant.net>
parents: 4785
diff changeset
2456 data->nick = g_strdup(text[i*2+2]);
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2457
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2458 gaim_request_action(gc, NULL, message,
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2459 _("Do you want to add this buddy "
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2460 "to your buddy list?"),
9972
2c7c6bdb938b [gaim-migrate @ 10883]
Mark Doliner <mark@kingant.net>
parents: 9971
diff changeset
2461 GAIM_DEFAULT_ACTION_NONE, data, 2,
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2462 _("Add"), G_CALLBACK(gaim_icq_buddyadd),
12603
e4e47871c373 [gaim-migrate @ 14938]
Richard Laager <rlaager@wiktel.com>
parents: 12600
diff changeset
2463 _("_Decline"), G_CALLBACK(oscar_free_name_data));
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2464 g_free(message);
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2465 }
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2466 g_strfreev(text);
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2467 }
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2468 } break;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2469
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
2470 case 0x1a: { /* Someone has sent you a greeting card or requested buddies? */
3453
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2471 /* This is boring and silly. */
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2472 } break;
736951485ac6 [gaim-migrate @ 3498]
Sean Egan <seanegan@gmail.com>
parents: 3427
diff changeset
2473
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2474 default: {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2475 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2476 "Received a channel 4 message of unknown type "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2477 "(type 0x%02hhx).\n", args->type);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2478 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2479 }
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2480
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2481 g_strfreev(msg1);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2482 g_strfreev(msg2);
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
2483
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2484 return 1;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2485 }
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2486
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2487 static int gaim_parse_incoming_im(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2488 guint16 channel;
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
2489 int ret = 0;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
2490 aim_userinfo_t *userinfo;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2491 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2492
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2493 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2494 channel = (guint16)va_arg(ap, unsigned int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
2495 userinfo = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2496
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2497 switch (channel) {
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2498 case 1: { /* standard message */
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2499 struct aim_incomingim_ch1_args *args;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2500 args = va_arg(ap, struct aim_incomingim_ch1_args *);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2501 ret = incomingim_chan1(od, conn, userinfo, args);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2502 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2503
8735
92cbf9713795 [gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents: 8733
diff changeset
2504 case 2: { /* rendezvous */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2505 IcbmArgsCh2 *args;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2506 args = va_arg(ap, IcbmArgsCh2 *);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2507 ret = incomingim_chan2(od, conn, userinfo, args);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2508 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2509
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2510 case 4: { /* ICQ */
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2511 struct aim_incomingim_ch4_args *args;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2512 args = va_arg(ap, struct aim_incomingim_ch4_args *);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2513 ret = incomingim_chan4(od, conn, userinfo, args, 0);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2514 } break;
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2515
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2516 default: {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2517 gaim_debug_warning("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2518 "ICBM received on unsupported channel (channel "
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2519 "0x%04hx).", channel);
3141
bcdbffc2c3e6 [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2520 } break;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2521 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2522
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2523 va_end(ap);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2524
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2525 return ret;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2526 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2527
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2528 static int gaim_parse_misses(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2529 GaimConnection *gc = od->gc;
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
2530 GaimAccount *account = gaim_connection_get_account(gc);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2531 char *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2532 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2533 guint16 chan, nummissed, reason;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
2534 aim_userinfo_t *userinfo;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2535
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2536 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2537 chan = (guint16)va_arg(ap, unsigned int);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
2538 userinfo = va_arg(ap, aim_userinfo_t *);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2539 nummissed = (guint16)va_arg(ap, unsigned int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2540 reason = (guint16)va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2541 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2542
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2543 switch(reason) {
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2544 case 0: /* Invalid (0) */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2545 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2546 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2547 "You missed %hu message from %s because it was invalid.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2548 "You missed %hu messages from %s because they were invalid.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2549 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2550 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2551 userinfo->sn);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
2552 break;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2553 case 1: /* Message too large */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2554 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2555 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2556 "You missed %hu message from %s because it was too large.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2557 "You missed %hu messages from %s because they were too large.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2558 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2559 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2560 userinfo->sn);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
2561 break;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2562 case 2: /* Rate exceeded */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2563 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2564 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2565 "You missed %hu message from %s because the rate limit has been exceeded.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2566 "You missed %hu messages from %s because the rate limit has been exceeded.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2567 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2568 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2569 userinfo->sn);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
2570 break;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2571 case 3: /* Evil Sender */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2572 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2573 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2574 "You missed %hu message from %s because he/she was too evil.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2575 "You missed %hu messages from %s because he/she was too evil.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2576 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2577 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2578 userinfo->sn);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
2579 break;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2580 case 4: /* Evil Receiver */
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2581 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2582 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2583 "You missed %hu message from %s because you are too evil.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2584 "You missed %hu messages from %s because you are too evil.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2585 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2586 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2587 userinfo->sn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2588 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2589 default:
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2590 buf = g_strdup_printf(
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2591 ngettext(
4276
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2592 "You missed %hu message from %s for an unknown reason.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2593 "You missed %hu messages from %s for an unknown reason.",
32fcf4cf5f80 [gaim-migrate @ 4527]
Luke Schierer <lschiere@pidgin.im>
parents: 4269
diff changeset
2594 nummissed),
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2595 nummissed,
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
2596 userinfo->sn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2597 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2598 }
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
2599
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
2600 if (!gaim_conv_present_error(userinfo->sn, account, buf))
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2601 gaim_notify_error(od->gc, NULL, buf, NULL);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
2602 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2603
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2604 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2605 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2606
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2607 static int
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2608 gaim_parse_clientauto_ch2(OscarData *od, const char *who, guint16 reason, const guchar *cookie)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2609 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2610 if (reason == 0x0003)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2611 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2612 /* Rendezvous was refused. */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2613 PeerConnection *conn;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2614
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2615 conn = peer_connection_find_by_cookie(od, who, cookie);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2616
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2617 if (conn == NULL)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2618 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2619 gaim_debug_info("oscar", "Received a rendezvous cancel message "
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2620 "for a nonexistant connection from %s.\n", who);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2621 }
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2622 else
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2623 {
13608
6c34fbb75bbd [gaim-migrate @ 15994]
Mark Doliner <mark@kingant.net>
parents: 13605
diff changeset
2624 peer_connection_destroy(conn, OSCAR_DISCONNECT_REMOTE_REFUSED);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2625 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2626 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2627 else
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2628 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2629 gaim_debug_warning("oscar", "Received an unknown rendezvous "
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2630 "message from %s. Type 0x%04hx\n", who, reason);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2631 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2632
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2633 return 0;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2634 }
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2635
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2636 static int gaim_parse_clientauto_ch4(OscarData *od, char *who, guint16 reason, guint32 state, char *msg) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2637 GaimConnection *gc = od->gc;
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2638
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2639 switch(reason) {
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2640 case 0x0003: { /* Reply from an ICQ status message request */
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
2641 char *title, *statusmsg, **splitmsg, *dialogmsg;
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
2642
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
2643 title = g_strdup_printf(_("Info for %s"), who);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2644
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2645 /* Split at (carriage return/newline)'s, then rejoin later with BRs between. */
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
2646 statusmsg = oscar_icqstatus(state);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2647 splitmsg = g_strsplit(msg, "\r\n", 0);
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
2648 dialogmsg = g_strdup_printf(_("<B>UIN:</B> %s<BR><B>Status:</B> %s<HR>%s"), who, statusmsg, g_strjoinv("<BR>", splitmsg));
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
2649 g_free(statusmsg);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2650 g_strfreev(splitmsg);
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
2651
11533
c9b815aeddc1 [gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents: 11532
diff changeset
2652 gaim_notify_userinfo(gc, who, dialogmsg, NULL, NULL);
9244
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
2653
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
2654 g_free(title);
e67b8cd33c6c [gaim-migrate @ 10043]
Mark Doliner <mark@kingant.net>
parents: 9126
diff changeset
2655 g_free(dialogmsg);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2656 } break;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2657
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2658 default: {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2659 gaim_debug_warning("oscar",
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
2660 "Received an unknown client auto-response from %s. "
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2661 "Type 0x%04hx\n", who, reason);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2662 } break;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2663 } /* end of switch */
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2664
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2665 return 0;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2666 }
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2667
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2668 static int gaim_parse_clientauto(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2669 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2670 guint16 chan, reason;
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2671 char *who;
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2672
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2673 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2674 chan = (guint16)va_arg(ap, unsigned int);
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2675 who = va_arg(ap, char *);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2676 reason = (guint16)va_arg(ap, unsigned int);
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2677
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
2678 if (chan == 0x0002) { /* File transfer declined */
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
2679 guchar *cookie = va_arg(ap, guchar *);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2680 return gaim_parse_clientauto_ch2(od, who, reason, cookie);
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
2681 } else if (chan == 0x0004) { /* ICQ message */
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2682 guint32 state = 0;
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2683 char *msg = NULL;
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2684 if (reason == 0x0003) {
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2685 state = va_arg(ap, guint32);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2686 msg = va_arg(ap, char *);
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2687 }
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2688 return gaim_parse_clientauto_ch4(od, who, reason, state, msg);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2689 }
3952
07283934dedd [gaim-migrate @ 4133]
Mark Doliner <mark@kingant.net>
parents: 3912
diff changeset
2690
3212
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2691 va_end(ap);
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2692
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2693 return 1;
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2694 }
56746b0868db [gaim-migrate @ 3229]
Sean Egan <seanegan@gmail.com>
parents: 3210
diff changeset
2695
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2696 static int gaim_parse_genericerr(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2697 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2698 guint16 reason;
2865
88dc3623a2ae [gaim-migrate @ 2878]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2864
diff changeset
2699 char *m;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2700
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2701 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2702 reason = (guint16) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2703 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2704
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2705 gaim_debug_error("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2706 "snac threw error (reason 0x%04hx: %s)\n", reason,
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2707 (reason < msgerrreasonlen) ? msgerrreason[reason] : "unknown");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2708
2865
88dc3623a2ae [gaim-migrate @ 2878]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2864
diff changeset
2709 m = g_strdup_printf(_("SNAC threw error: %s\n"),
5411
2c4188300aba [gaim-migrate @ 5787]
Mark Doliner <mark@kingant.net>
parents: 5402
diff changeset
2710 reason < msgerrreasonlen ? _(msgerrreason[reason]) : _("Unknown error"));
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2711 gaim_notify_error(od->gc, NULL, m, NULL);
2865
88dc3623a2ae [gaim-migrate @ 2878]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2864
diff changeset
2712 g_free(m);
88dc3623a2ae [gaim-migrate @ 2878]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2864
diff changeset
2713
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2714 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2715 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2716
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2717 static int gaim_parse_msgerr(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2718 GaimConnection *gc = od->gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2719 #ifdef TODOFT
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
2720 OscarData *od = gc->proto_data;
6240
ac191233b816 [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2721 GaimXfer *xfer;
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2722 #endif
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2723 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2724 guint16 reason;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2725 char *data, *buf;
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2726
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2727 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2728 reason = (guint16)va_arg(ap, unsigned int);
3752
b32474e522fa [gaim-migrate @ 3890]
Luke Schierer <lschiere@pidgin.im>
parents: 3730
diff changeset
2729 data = va_arg(ap, char *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2730 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2731
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2732 gaim_debug_error("oscar",
10130
096197a628bf [gaim-migrate @ 11193]
Mark Doliner <mark@kingant.net>
parents: 10116
diff changeset
2733 "Message error with data %s and reason %hu\n",
096197a628bf [gaim-migrate @ 11193]
Mark Doliner <mark@kingant.net>
parents: 10116
diff changeset
2734 (data != NULL ? data : ""), reason);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2735
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2736 #ifdef TODOFT
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2737 /* If this was a file transfer request, data is a cookie */
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2738 if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, data))) {
4675
3145c5c45877 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
2739 gaim_xfer_cancel_remote(xfer);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2740 return 1;
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2741 }
4508
4c40fccbd7c9 [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2742 #endif
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2743
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2744 /* Data is assumed to be the destination sn */
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
2745 buf = g_strdup_printf(_("Unable to send message: %s"), (reason < msgerrreasonlen) ? msgerrreason[reason] : _("Unknown reason."));
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
2746 if (!gaim_conv_present_error(data, gaim_connection_get_account(gc), buf)) {
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
2747 g_free(buf);
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
2748 buf = g_strdup_printf(_("Unable to send message to %s:"), data ? data : "(unknown)");
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2749 gaim_notify_error(od->gc, NULL, buf,
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
2750 (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason."));
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
2751 }
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
2752 g_free(buf);
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
2753
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2754 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2755 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2756
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2757 static int gaim_parse_mtn(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2758 GaimConnection *gc = od->gc;
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2759 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2760 guint16 type1, type2;
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2761 char *sn;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2762
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2763 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2764 type1 = (guint16) va_arg(ap, unsigned int);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2765 sn = va_arg(ap, char *);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2766 type2 = (guint16) va_arg(ap, unsigned int);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2767 va_end(ap);
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2768
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2769 switch (type2) {
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2770 case 0x0000: { /* Text has been cleared */
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2771 serv_got_typing_stopped(gc, sn);
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2772 } break;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2773
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2774 case 0x0001: { /* Paused typing */
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
2775 serv_got_typing(gc, sn, 0, GAIM_TYPED);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2776 } break;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2777
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2778 case 0x0002: { /* Typing */
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
2779 serv_got_typing(gc, sn, 0, GAIM_TYPING);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2780 } break;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2781
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2782 default: {
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
2783 gaim_debug_error("oscar", "Received unknown typing notification message from %s. Type1 is 0x%04x and type2 is 0x%04hx.\n", sn, type1, type2);
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2784 } break;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2785 }
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2786
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2787 return 1;
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2788 }
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
2789
7141
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
2790 /*
13381
d1b29fb3b6d0 [gaim-migrate @ 15754]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 13356
diff changeset
2791 * We get this error when there was an error in the locate family. This
7259
22b5b81ca7e0 [gaim-migrate @ 7836]
Mark Doliner <mark@kingant.net>
parents: 7253
diff changeset
2792 * happens when you request info of someone who is offline.
7141
af8ac078d4c2 [gaim-migrate @ 7708]
Mark Doliner <mark@kingant.net>
parents: 7129
diff changeset
2793 */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2794 static int gaim_parse_locerr(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
2795 gchar *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2796 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2797 guint16 reason;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2798 char *destn;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2799
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2800 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2801 reason = (guint16) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2802 destn = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2803 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2804
7781
2176fef95d9b [gaim-migrate @ 8426]
Mark Doliner <mark@kingant.net>
parents: 7693
diff changeset
2805 if (destn == NULL)
7793
61b5d682ddb4 [gaim-migrate @ 8439]
Mark Doliner <mark@kingant.net>
parents: 7781
diff changeset
2806 return 1;
12653
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
2807
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
2808 buf = g_strdup_printf(_("User information not available: %s"), (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason."));
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2809 if (!gaim_conv_present_error(destn, gaim_connection_get_account((GaimConnection*)od->gc), buf)) {
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
2810 g_free(buf);
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
2811 buf = g_strdup_printf(_("User information for %s unavailable:"), destn);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2812 gaim_notify_error(od->gc, NULL, buf, (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason."));
9826
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
2813 }
6f2a90c36ee2 [gaim-migrate @ 10697]
Mark Doliner <mark@kingant.net>
parents: 9810
diff changeset
2814 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2815
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2816 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2817 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2818
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2819 static int gaim_parse_userinfo(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2820 GaimConnection *gc = od->gc;
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2821 GaimAccount *account = gaim_connection_get_account(gc);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2822 GString *str;
11532
57439a383f4f [gaim-migrate @ 13781]
Luke Schierer <lschiere@pidgin.im>
parents: 11531
diff changeset
2823 gchar *tmp = NULL, *info_utf8 = NULL, *away_utf8 = NULL;
4791
e737e3e08b4a [gaim-migrate @ 5111]
Mark Doliner <mark@kingant.net>
parents: 4790
diff changeset
2824 va_list ap;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2825 aim_userinfo_t *userinfo;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2826
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2827 va_start(ap, fr);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2828 userinfo = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2829 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2830
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2831 str = g_string_new("");
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2832 g_string_append_printf(str, "<b>%s:</b> %s", _("Screen Name"), userinfo->sn);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2833 g_string_append_printf(str, "\n<br><b>%s</b>: %d%%", _("Warning Level"), (int)((userinfo->warnlevel/10.0) + 0.5));
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2834
10116
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
2835 if (userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) {
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
2836 time_t t = userinfo->onlinesince - od->timeoffset;
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
2837 oscar_string_append(str, "\n<br>", _("Online Since"), gaim_date_format_full(localtime(&t)));
10116
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
2838 }
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
2839
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
2840 if (userinfo->present & AIM_USERINFO_PRESENT_MEMBERSINCE) {
10567
54f7939df8e3 [gaim-migrate @ 11951]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10565
diff changeset
2841 time_t t = userinfo->membersince - od->timeoffset;
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
2842 oscar_string_append(str, "\n<br>", _("Member Since"), gaim_date_format_full(localtime(&t)));
10116
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
2843 }
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2844
12430
cc4c4477ea82 [gaim-migrate @ 14737]
Mark Doliner <mark@kingant.net>
parents: 12426
diff changeset
2845 if (userinfo->capabilities != 0) {
cc4c4477ea82 [gaim-migrate @ 14737]
Mark Doliner <mark@kingant.net>
parents: 12426
diff changeset
2846 tmp = oscar_caps_to_string(userinfo->capabilities);
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
2847 oscar_string_append(str, "\n<br>", _("Capabilities"), tmp);
12430
cc4c4477ea82 [gaim-migrate @ 14737]
Mark Doliner <mark@kingant.net>
parents: 12426
diff changeset
2848 g_free(tmp);
cc4c4477ea82 [gaim-migrate @ 14737]
Mark Doliner <mark@kingant.net>
parents: 12426
diff changeset
2849 }
cc4c4477ea82 [gaim-migrate @ 14737]
Mark Doliner <mark@kingant.net>
parents: 12426
diff changeset
2850
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2851 if (userinfo->present & AIM_USERINFO_PRESENT_IDLE) {
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2852 tmp = gaim_str_seconds_to_string(userinfo->idletime*60);
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
2853 oscar_string_append(str, "\n<br>", _("Idle"), tmp);
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2854 g_free(tmp);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2855 }
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2856
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
2857 oscar_string_append_info(gc, str, "\n<br>", NULL, userinfo);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2858
13007
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
2859 /* Available message */
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
2860 if ((userinfo->status != NULL) && !(userinfo->flags & AIM_FLAG_AWAY))
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
2861 {
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
2862 if (userinfo->status[0] != '\0')
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
2863 tmp = oscar_encoding_to_utf8(userinfo->status_encoding,
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
2864 userinfo->status, userinfo->status_len);
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
2865 oscar_string_convert_and_append(account, str, "\n<br>", _("Available Message"), tmp);
13007
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
2866 g_free(tmp);
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
2867 }
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
2868
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
2869 /* Away message */
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2870 if ((userinfo->flags & AIM_FLAG_AWAY) && (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) {
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2871 tmp = oscar_encoding_extract(userinfo->away_encoding);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2872 away_utf8 = oscar_encoding_to_utf8(tmp, userinfo->away, userinfo->away_len);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2873 g_free(tmp);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2874 if (away_utf8 != NULL) {
12661
e265e2eac9e1 [gaim-migrate @ 15004]
Mark Doliner <mark@kingant.net>
parents: 12658
diff changeset
2875 g_string_append_printf(str, "\n<hr>%s", away_utf8);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2876 g_free(away_utf8);
2791
8f6365332a05 [gaim-migrate @ 2804]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2789
diff changeset
2877 }
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2878 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2879
13007
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
2880 /* Info */
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2881 if ((userinfo->info_len > 0) && (userinfo->info != NULL) && (userinfo->info_encoding != NULL)) {
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2882 tmp = oscar_encoding_extract(userinfo->info_encoding);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2883 info_utf8 = oscar_encoding_to_utf8(tmp, userinfo->info, userinfo->info_len);
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2884 g_free(tmp);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2885 if (info_utf8 != NULL) {
12661
e265e2eac9e1 [gaim-migrate @ 15004]
Mark Doliner <mark@kingant.net>
parents: 12658
diff changeset
2886 g_string_append_printf(str, "\n<hr>%s", info_utf8);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2887 g_free(info_utf8);
2791
8f6365332a05 [gaim-migrate @ 2804]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2789
diff changeset
2888 }
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2889 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
2890
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
2891 tmp = gaim_str_sub_away_formatters(str->str, gaim_account_get_username(account));
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2892 g_string_free(str, TRUE);
11920
52f27ffe68a5 [gaim-migrate @ 14211]
Mark Doliner <mark@kingant.net>
parents: 11910
diff changeset
2893 gaim_str_strip_char(tmp, '\r');
11533
c9b815aeddc1 [gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents: 11532
diff changeset
2894 gaim_notify_userinfo(gc, userinfo->sn, tmp, NULL, NULL);
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
2895 g_free(tmp);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
2896
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2897 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2898 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2899
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2900 static int gaim_got_infoblock(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2901 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2902 GaimConnection *gc = od->gc;
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2903 GaimBuddy *b;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2904 GaimPresence *presence;
12349
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
2905 GaimStatus *status;
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2906 gchar *message = NULL;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2907
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2908 va_list ap;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2909 aim_userinfo_t *userinfo;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2910
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2911 va_start(ap, fr);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2912 userinfo = va_arg(ap, aim_userinfo_t *);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2913 va_end(ap);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2914
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2915 b = gaim_find_buddy(gaim_connection_get_account(gc), userinfo->sn);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2916 if (b == NULL)
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2917 return 1;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2918
13875
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
2919 if (strcmp(gaim_buddy_get_name(b), userinfo->sn))
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
2920 serv_got_alias(gc, gaim_buddy_get_name(b), userinfo->sn);
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
2921 else
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
2922 serv_got_alias(gc, gaim_buddy_get_name(b), NULL);
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
2923
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2924 presence = gaim_buddy_get_presence(b);
12349
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
2925 status = gaim_presence_get_active_status(presence);
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
2926
12426
98be11e744a8 [gaim-migrate @ 14733]
Ethan Blanton <elb@pidgin.im>
parents: 12412
diff changeset
2927 if (!gaim_status_is_available(status) && gaim_status_is_online(status))
12271
3c6675e1400e [gaim-migrate @ 14573]
Mark Doliner <mark@kingant.net>
parents: 12260
diff changeset
2928 {
13654
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
2929 if ((userinfo->flags & AIM_FLAG_AWAY) &&
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2930 (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) {
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2931 gchar *charset = oscar_encoding_extract(userinfo->away_encoding);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2932 message = oscar_encoding_to_utf8(charset, userinfo->away, userinfo->away_len);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2933 g_free(charset);
12393
a2f7bb907926 [gaim-migrate @ 14700]
Ethan Blanton <elb@pidgin.im>
parents: 12365
diff changeset
2934 gaim_status_set_attr_string(status, "message", message);
a2f7bb907926 [gaim-migrate @ 14700]
Ethan Blanton <elb@pidgin.im>
parents: 12365
diff changeset
2935 g_free(message);
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2936 }
12349
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
2937
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
2938 gaim_blist_update_buddy_status(b, status);
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
2939 }
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2940
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2941 return 1;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2942 }
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
2943
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2944 static int gaim_parse_motd(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
2945 {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2946 char *msg;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2947 guint16 id;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2948 va_list ap;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2949
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2950 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2951 id = (guint16) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2952 msg = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2953 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2954
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2955 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2956 "MOTD: %s (%hu)\n", msg ? msg : "Unknown", id);
2092
59b0377d18aa [gaim-migrate @ 2102]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
2957 if (id < 4)
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2958 gaim_notify_warning(od->gc, NULL,
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2959 _("Your AIM connection may be lost."), NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2960
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2961 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2962 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2963
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2964 static int gaim_chatnav_info(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2965 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2966 guint16 type;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2967
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2968 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2969 type = (guint16) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2970
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2971 switch(type) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2972 case 0x0002: {
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2973 guint8 maxrooms;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2974 struct aim_chat_exchangeinfo *exchanges;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2975 int exchangecount, i;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2976
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
2977 maxrooms = (guint8) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2978 exchangecount = va_arg(ap, int);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2979 exchanges = va_arg(ap, struct aim_chat_exchangeinfo *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2980
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2981 gaim_debug_misc("oscar", "chat info: Chat Rights:\n");
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2982 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2983 "chat info: \tMax Concurrent Rooms: %hhd\n", maxrooms);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2984 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2985 "chat info: \tExchange List: (%d total)\n", exchangecount);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
2986 for (i = 0; i < exchangecount; i++)
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2987 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2988 "chat info: \t\t%hu %s\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2989 exchanges[i].number, exchanges[i].name ? exchanges[i].name : "");
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2990 while (od->create_rooms) {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2991 struct create_room *cr = od->create_rooms->data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
2992 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2993 "creating room %s\n", cr->name);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
2994 aim_chatnav_createroom(od, conn, cr->name, cr->exchange);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
2995 g_free(cr->name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
2996 od->create_rooms = g_slist_remove(od->create_rooms, cr);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
2997 g_free(cr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2998 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2999 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3000 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3001 case 0x0008: {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3002 char *fqcn, *name, *ck;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3003 guint16 instance, flags, maxmsglen, maxoccupancy, unknown, exchange;
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3004 guint8 createperms;
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3005 guint32 createtime;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3006
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3007 fqcn = va_arg(ap, char *);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3008 instance = (guint16)va_arg(ap, unsigned int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3009 exchange = (guint16)va_arg(ap, unsigned int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3010 flags = (guint16)va_arg(ap, unsigned int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3011 createtime = va_arg(ap, guint32);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3012 maxmsglen = (guint16)va_arg(ap, unsigned int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3013 maxoccupancy = (guint16)va_arg(ap, unsigned int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3014 createperms = (guint8)va_arg(ap, unsigned int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3015 unknown = (guint16)va_arg(ap, unsigned int);
4200
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3016 name = va_arg(ap, char *);
c8fb43808a4b [gaim-migrate @ 4431]
Mark Doliner <mark@kingant.net>
parents: 4199
diff changeset
3017 ck = va_arg(ap, char *);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3018
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3019 gaim_debug_misc("oscar",
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3020 "created room: %s %hu %hu %hu %u %hu %hu %hhu %hu %s %s\n",
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3021 fqcn, exchange, instance, flags, createtime,
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3022 maxmsglen, maxoccupancy, createperms, unknown,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3023 name, ck);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3024 aim_chat_join(od, exchange, ck, instance);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3025 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3026 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3027 default:
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3028 gaim_debug_warning("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3029 "chatnav info: unknown type (%04hx)\n", type);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3030 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3031 }
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3032
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3033 va_end(ap);
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3034
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3035 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3036 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3037
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3038 static int gaim_conv_chat_join(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3039 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3040 int count, i;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3041 aim_userinfo_t *info;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3042 GaimConnection *gc = od->gc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3043
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3044 struct chat_connection *c = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3045
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3046 va_start(ap, fr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3047 count = va_arg(ap, int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3048 info = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3049 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3050
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3051 c = find_oscar_chat_by_conn(gc, conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3052 if (!c)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3053 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3054
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3055 for (i = 0; i < count; i++)
9846
c28d5b45624e [gaim-migrate @ 10724]
Mark Doliner <mark@kingant.net>
parents: 9831
diff changeset
3056 gaim_conv_chat_add_user(GAIM_CONV_CHAT(c->conv), info[i].sn, NULL, GAIM_CBFLAGS_NONE, TRUE);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3057
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3058 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3059 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3060
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3061 static int gaim_conv_chat_leave(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3062 va_list ap;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3063 int count, i;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3064 aim_userinfo_t *info;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3065 GaimConnection *gc = od->gc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3066
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3067 struct chat_connection *c = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3068
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3069 va_start(ap, fr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3070 count = va_arg(ap, int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3071 info = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3072 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3073
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3074 c = find_oscar_chat_by_conn(gc, conn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3075 if (!c)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3076 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3077
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3078 for (i = 0; i < count; i++)
8733
18cfabf507d5 [gaim-migrate @ 9488]
Mark Doliner <mark@kingant.net>
parents: 8713
diff changeset
3079 gaim_conv_chat_remove_user(GAIM_CONV_CHAT(c->conv), info[i].sn, NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3080
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3081 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3082 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3083
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3084 static int gaim_conv_chat_info_update(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3085 va_list ap;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3086 aim_userinfo_t *userinfo;
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3087 struct aim_chat_roominfo *roominfo;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3088 char *roomname;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3089 int usercount;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3090 char *roomdesc;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3091 guint16 unknown_c9, unknown_d2, unknown_d5, maxmsglen, maxvisiblemsglen;
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3092 guint32 creationtime;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3093 GaimConnection *gc = od->gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3094 struct chat_connection *ccon = find_oscar_chat_by_conn(gc, conn);
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3095
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3096 va_start(ap, fr);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3097 roominfo = va_arg(ap, struct aim_chat_roominfo *);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3098 roomname = va_arg(ap, char *);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3099 usercount= va_arg(ap, int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3100 userinfo = va_arg(ap, aim_userinfo_t *);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3101 roomdesc = va_arg(ap, char *);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3102 unknown_c9 = (guint16)va_arg(ap, unsigned int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3103 creationtime = va_arg(ap, guint32);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3104 maxmsglen = (guint16)va_arg(ap, unsigned int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3105 unknown_d2 = (guint16)va_arg(ap, unsigned int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3106 unknown_d5 = (guint16)va_arg(ap, unsigned int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3107 maxvisiblemsglen = (guint16)va_arg(ap, unsigned int);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3108 va_end(ap);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3109
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3110 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3111 "inside chat_info_update (maxmsglen = %hu, maxvislen = %hu)\n",
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3112 maxmsglen, maxvisiblemsglen);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3113
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3114 ccon->maxlen = maxmsglen;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3115 ccon->maxvis = maxvisiblemsglen;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3116
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3117 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3118 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3119
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3120 static int gaim_conv_chat_incoming_msg(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3121 GaimConnection *gc = od->gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3122 struct chat_connection *ccon = find_oscar_chat_by_conn(gc, conn);
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
3123 gchar *utf8;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3124 va_list ap;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3125 aim_userinfo_t *info;
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
3126 int len;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3127 char *msg;
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
3128 char *charset;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3129
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3130 va_start(ap, fr);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3131 info = va_arg(ap, aim_userinfo_t *);
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
3132 len = va_arg(ap, int);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3133 msg = va_arg(ap, char *);
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
3134 charset = va_arg(ap, char *);
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3135 va_end(ap);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3136
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
3137 utf8 = oscar_encoding_to_utf8(charset, msg, len);
8667
493e0df74180 [gaim-migrate @ 9419]
Mark Doliner <mark@kingant.net>
parents: 8666
diff changeset
3138 if (utf8 == NULL)
493e0df74180 [gaim-migrate @ 9419]
Mark Doliner <mark@kingant.net>
parents: 8666
diff changeset
3139 /* The conversion failed! */
8668
e71eef9dc37f [gaim-migrate @ 9420]
Mark Doliner <mark@kingant.net>
parents: 8667
diff changeset
3140 utf8 = g_strdup(_("[Unable to display a message from this user because it contained invalid characters.]"));
8225
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
3141 serv_got_chat_in(gc, ccon->id, info->sn, 0, utf8, time((time_t)NULL));
9790cda80d52 [gaim-migrate @ 8948]
Mark Doliner <mark@kingant.net>
parents: 8219
diff changeset
3142 g_free(utf8);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3143
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3144 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3145 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3146
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3147 static int gaim_email_parseupdate(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3148 va_list ap;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3149 GaimConnection *gc = od->gc;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3150 struct aim_emailinfo *emailinfo;
3725
dd48b1ac5bd8 [gaim-migrate @ 3861]
Mark Doliner <mark@kingant.net>
parents: 3722
diff changeset
3151 int havenewmail;
7297
ceda503e55a6 [gaim-migrate @ 7881]
Sean Egan <seanegan@gmail.com>
parents: 7285
diff changeset
3152 char *alertitle, *alerturl;
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3153
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3154 va_start(ap, fr);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3155 emailinfo = va_arg(ap, struct aim_emailinfo *);
3725
dd48b1ac5bd8 [gaim-migrate @ 3861]
Mark Doliner <mark@kingant.net>
parents: 3722
diff changeset
3156 havenewmail = va_arg(ap, int);
7301
0ed0ac132b1b [gaim-migrate @ 7885]
Mark Doliner <mark@kingant.net>
parents: 7297
diff changeset
3157 alertitle = va_arg(ap, char *);
0ed0ac132b1b [gaim-migrate @ 7885]
Mark Doliner <mark@kingant.net>
parents: 7297
diff changeset
3158 alerturl = va_arg(ap, char *);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3159 va_end(ap);
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3160
9661
52319a1d9a55 [gaim-migrate @ 10509]
Mark Doliner <mark@kingant.net>
parents: 9659
diff changeset
3161 if ((emailinfo != NULL) && gaim_account_get_check_mail(gc->account)) {
52319a1d9a55 [gaim-migrate @ 10509]
Mark Doliner <mark@kingant.net>
parents: 9659
diff changeset
3162 gchar *to = g_strdup_printf("%s%s%s", gaim_account_get_username(gaim_connection_get_account(gc)),
52319a1d9a55 [gaim-migrate @ 10509]
Mark Doliner <mark@kingant.net>
parents: 9659
diff changeset
3163 emailinfo->domain ? "@" : "",
52319a1d9a55 [gaim-migrate @ 10509]
Mark Doliner <mark@kingant.net>
parents: 9659
diff changeset
3164 emailinfo->domain ? emailinfo->domain : "");
5542
d6c748a19ef8 [gaim-migrate @ 5942]
Mark Doliner <mark@kingant.net>
parents: 5540
diff changeset
3165 if (emailinfo->unread && havenewmail)
d6c748a19ef8 [gaim-migrate @ 5942]
Mark Doliner <mark@kingant.net>
parents: 5540
diff changeset
3166 gaim_notify_emails(gc, emailinfo->nummsgs, FALSE, NULL, NULL, (const char **)&to, (const char **)&emailinfo->url, NULL, NULL);
5537
3becf79500d2 [gaim-migrate @ 5937]
Mark Doliner <mark@kingant.net>
parents: 5517
diff changeset
3167 g_free(to);
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3168 }
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
3169
7301
0ed0ac132b1b [gaim-migrate @ 7885]
Mark Doliner <mark@kingant.net>
parents: 7297
diff changeset
3170 if (alertitle)
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3171 gaim_debug_misc("oscar", "Got an alert '%s' %s\n", alertitle, alerturl ? alerturl : "");
3694
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3172
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3173 return 1;
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3174 }
e941bfbacf7c [gaim-migrate @ 3824]
Mark Doliner <mark@kingant.net>
parents: 3666
diff changeset
3175
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3176 static int gaim_icon_error(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3177 GaimConnection *gc = od->gc;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3178 char *sn;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3179
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3180 sn = od->requesticon->data;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3181 gaim_debug_misc("oscar", "removing %s from hash table\n", sn);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3182 od->requesticon = g_slist_remove(od->requesticon, sn);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3183 g_free(sn);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3184
13862
84f2675cf87f [gaim-migrate @ 16324]
Mark Doliner <mark@kingant.net>
parents: 13842
diff changeset
3185 if (od->icontimer == 0)
84f2675cf87f [gaim-migrate @ 16324]
Mark Doliner <mark@kingant.net>
parents: 13842
diff changeset
3186 od->icontimer = gaim_timeout_add(500, gaim_icon_timerfunc, gc);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3187
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3188 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3189 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3190
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3191 static int gaim_icon_parseicon(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3192 GaimConnection *gc = od->gc;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3193 GSList *cur;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3194 va_list ap;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3195 char *sn;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3196 guint8 iconcsumtype, *iconcsum, *icon;
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3197 guint16 iconcsumlen, iconlen;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3198
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3199 va_start(ap, fr);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3200 sn = va_arg(ap, char *);
11024
1d58cc6c4552 [gaim-migrate @ 12897]
Mark Doliner <mark@kingant.net>
parents: 11005
diff changeset
3201 iconcsumtype = va_arg(ap, int);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3202 iconcsum = va_arg(ap, guint8 *);
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3203 iconcsumlen = va_arg(ap, int);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3204 icon = va_arg(ap, guint8 *);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3205 iconlen = va_arg(ap, int);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3206 va_end(ap);
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3207
11024
1d58cc6c4552 [gaim-migrate @ 12897]
Mark Doliner <mark@kingant.net>
parents: 11005
diff changeset
3208 /*
1d58cc6c4552 [gaim-migrate @ 12897]
Mark Doliner <mark@kingant.net>
parents: 11005
diff changeset
3209 * Some AIM clients will send a blank GIF image with iconlen 90 when
1d58cc6c4552 [gaim-migrate @ 12897]
Mark Doliner <mark@kingant.net>
parents: 11005
diff changeset
3210 * no icon is set. Ignore these.
1d58cc6c4552 [gaim-migrate @ 12897]
Mark Doliner <mark@kingant.net>
parents: 11005
diff changeset
3211 */
1d58cc6c4552 [gaim-migrate @ 12897]
Mark Doliner <mark@kingant.net>
parents: 11005
diff changeset
3212 if ((iconlen > 0) && (iconlen != 90)) {
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3213 char *b16;
13654
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
3214 GaimBuddy *b;
6846
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
3215 gaim_buddy_icons_set_for_user(gaim_connection_get_account(gc),
8ab95f4c9800 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
3216 sn, icon, iconlen);
7106
db6bd3e794d8 [gaim-migrate @ 7671]
Christian Hammond <chipx86@chipx86.com>
parents: 7098
diff changeset
3217 b16 = gaim_base16_encode(iconcsum, iconcsumlen);
13654
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
3218 b = gaim_find_buddy(gc->account, sn);
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
3219 if ((b16 != NULL) && (b != NULL)) {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
3220 gaim_blist_node_set_string((GaimBlistNode*)b, "icon_checksum", b16);
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
3221 g_free(b16);
5129
c19cc54f4df6 [gaim-migrate @ 5492]
Mark Doliner <mark@kingant.net>
parents: 5125
diff changeset
3222 }
4853
fbfdacf7c611 [gaim-migrate @ 5180]
Mark Doliner <mark@kingant.net>
parents: 4848
diff changeset
3223 }
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3224
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3225 cur = od->requesticon;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3226 while (cur) {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3227 char *cursn = cur->data;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3228 if (!aim_sncmp(cursn, sn)) {
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3229 od->requesticon = g_slist_remove(od->requesticon, cursn);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3230 g_free(cursn);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3231 cur = od->requesticon;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3232 } else
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3233 cur = cur->next;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3234 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3235
13862
84f2675cf87f [gaim-migrate @ 16324]
Mark Doliner <mark@kingant.net>
parents: 13842
diff changeset
3236 if (od->icontimer == 0)
84f2675cf87f [gaim-migrate @ 16324]
Mark Doliner <mark@kingant.net>
parents: 13842
diff changeset
3237 od->icontimer = gaim_timeout_add(250, gaim_icon_timerfunc, gc);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3238
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3239 return 1;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3240 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3241
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3242 static gboolean gaim_icon_timerfunc(gpointer data) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3243 GaimConnection *gc = data;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
3244 OscarData *od = gc->proto_data;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3245 aim_userinfo_t *userinfo;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3246 FlapConnection *conn;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3247
13862
84f2675cf87f [gaim-migrate @ 16324]
Mark Doliner <mark@kingant.net>
parents: 13842
diff changeset
3248 od->icontimer = 0;
84f2675cf87f [gaim-migrate @ 16324]
Mark Doliner <mark@kingant.net>
parents: 13842
diff changeset
3249
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3250 conn = flap_connection_getbytype(od, SNAC_FAMILY_BART);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
3251 if (!conn) {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
3252 if (!od->iconconnecting) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3253 aim_reqservice(od, SNAC_FAMILY_BART);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
3254 od->iconconnecting = TRUE;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
3255 }
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3256 return FALSE;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3257 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3258
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3259 if (od->set_icon) {
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3260 struct stat st;
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
3261 char *iconfile = gaim_buddy_icons_get_full_path(gaim_account_get_buddy_icon(gaim_connection_get_account(gc)));
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3262 if (iconfile == NULL) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3263 aim_ssi_delicon(od);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
3264 } else if (!g_stat(iconfile, &st)) {
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
3265 guchar *buf = g_malloc(st.st_size);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
3266 FILE *file = g_fopen(iconfile, "rb");
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3267 if (file) {
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
3268 /* XXX - Use g_file_get_contents()? */
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3269 fread(buf, 1, st.st_size, file);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3270 fclose(file);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3271 gaim_debug_info("oscar",
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3272 "Uploading icon to icon server\n");
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3273 aim_bart_upload(od, buf, st.st_size);
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3274 } else
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3275 gaim_debug_error("oscar",
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3276 "Can't open buddy icon file!\n");
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3277 g_free(buf);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3278 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3279 gaim_debug_error("oscar",
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
3280 "Can't stat buddy icon file!\n");
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3281 }
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
3282 g_free(iconfile);
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3283 od->set_icon = FALSE;
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3284 }
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3285
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3286 if (!od->requesticon) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3287 gaim_debug_misc("oscar",
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3288 "no more icons to request\n");
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3289 return FALSE;
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3290 }
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
3291
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3292 userinfo = aim_locate_finduserinfo(od, (char *)od->requesticon->data);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
3293 if ((userinfo != NULL) && (userinfo->iconcsumlen > 0)) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3294 aim_bart_request(od, od->requesticon->data, userinfo->iconcsumtype, userinfo->iconcsum, userinfo->iconcsumlen);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3295 return FALSE;
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3296 } else {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3297 gchar *sn = od->requesticon->data;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3298 od->requesticon = g_slist_remove(od->requesticon, sn);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3299 g_free(sn);
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3300 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3301
13862
84f2675cf87f [gaim-migrate @ 16324]
Mark Doliner <mark@kingant.net>
parents: 13842
diff changeset
3302 od->icontimer = gaim_timeout_add(100, gaim_icon_timerfunc, gc);
84f2675cf87f [gaim-migrate @ 16324]
Mark Doliner <mark@kingant.net>
parents: 13842
diff changeset
3303
84f2675cf87f [gaim-migrate @ 16324]
Mark Doliner <mark@kingant.net>
parents: 13842
diff changeset
3304 return FALSE;
4804
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3305 }
9810ce8e7a96 [gaim-migrate @ 5124]
Mark Doliner <mark@kingant.net>
parents: 4800
diff changeset
3306
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3307 /*
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3308 * Recieved in response to an IM sent with the AIM_IMFLAGS_ACK option.
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3309 */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3310 static int gaim_parse_msgack(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3311 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3312 guint16 type;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3313 char *sn;
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3314
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3315 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3316 type = (guint16) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3317 sn = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3318 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3319
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3320 gaim_debug_info("oscar", "Sent message to %s.\n", sn);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3321
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3322 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3323 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3324
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3325 static int gaim_parse_ratechange(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3326 static const char *codes[5] = {
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3327 "invalid",
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3328 "change",
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3329 "warning",
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3330 "limit",
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3331 "limit cleared",
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3332 };
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3333 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3334 guint16 code, rateclass;
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3335 guint32 windowsize, clear, alert, limit, disconnect, currentavg, maxavg;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3336
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
3337 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3338 code = (guint16)va_arg(ap, unsigned int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3339 rateclass= (guint16)va_arg(ap, unsigned int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3340 windowsize = va_arg(ap, guint32);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3341 clear = va_arg(ap, guint32);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3342 alert = va_arg(ap, guint32);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3343 limit = va_arg(ap, guint32);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3344 disconnect = va_arg(ap, guint32);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3345 currentavg = va_arg(ap, guint32);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3346 maxavg = va_arg(ap, guint32);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3347 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3348
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3349 gaim_debug_misc("oscar",
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
3350 "rate %s (param ID 0x%04hx): curavg = %u, maxavg = %u, alert at %u, "
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
3351 "clear warning at %u, limit at %u, disconnect at %u (window size = %u)\n",
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3352 (code < 5) ? codes[code] : codes[0],
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3353 rateclass,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3354 currentavg, maxavg,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3355 alert, clear,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3356 limit, disconnect,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3357 windowsize);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3358
13256
7ead7b8aea63 [gaim-migrate @ 15622]
Mark Doliner <mark@kingant.net>
parents: 13254
diff changeset
3359 if (code == AIM_RATE_CODE_LIMIT)
7ead7b8aea63 [gaim-migrate @ 15622]
Mark Doliner <mark@kingant.net>
parents: 13254
diff changeset
3360 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3361 gaim_notify_error(od->gc, NULL, _("Rate limiting error."),
6040
80e3641ee9eb [gaim-migrate @ 6490]
Mark Doliner <mark@kingant.net>
parents: 6039
diff changeset
3362 _("The last action you attempted could not be "
80e3641ee9eb [gaim-migrate @ 6490]
Mark Doliner <mark@kingant.net>
parents: 6039
diff changeset
3363 "performed because you are over the rate limit. "
80e3641ee9eb [gaim-migrate @ 6490]
Mark Doliner <mark@kingant.net>
parents: 6039
diff changeset
3364 "Please wait 10 seconds and try again."));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3365 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3366
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3367 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3368 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3369
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3370 static int gaim_parse_evilnotify(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
13662
b198d0c26b83 [gaim-migrate @ 16064]
Mark Doliner <mark@kingant.net>
parents: 13654
diff changeset
3371 #ifdef CRAZY_WARNING
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3372 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3373 guint16 newevil;
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3374 aim_userinfo_t *userinfo;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3375
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3376 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3377 newevil = (guint16) va_arg(ap, unsigned int);
2421
95b4ec08abec [gaim-migrate @ 2434]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2411
diff changeset
3378 userinfo = va_arg(ap, aim_userinfo_t *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3379 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3380
11285
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
3381 gaim_prpl_got_account_warning_level(account, (userinfo && userinfo->sn) ? userinfo->sn : NULL, (newevil/10.0) + 0.5);
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
3382 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3383
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3384 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3385 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3386
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3387 static int gaim_selfinfo(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3388 int warning_level;
2507
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3389 va_list ap;
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3390 aim_userinfo_t *info;
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3391
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3392 va_start(ap, fr);
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3393 info = va_arg(ap, aim_userinfo_t *);
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3394 va_end(ap);
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3395
11285
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
3396 /*
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
3397 * What's with the + 0.5?
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
3398 * The 0.5 is basically poor-man's rounding. Normally
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
3399 * casting "13.7" to an int will truncate to "13," but
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
3400 * with 13.7 + 0.5 = 14.2, which becomes "14" when
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
3401 * truncated.
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
3402 */
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3403 warning_level = info->warnlevel/10.0 + 0.5;
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
3404
11285
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
3405 #ifdef CRAZY_WARNING
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
3406 gaim_presence_set_warning_level(presence, warning_level);
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
3407 #endif
2507
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3408
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3409 return 1;
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3410 }
1069b0940237 [gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2501
diff changeset
3411
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3412 static int gaim_connerr(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3413 GaimConnection *gc = od->gc;
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3414 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3415 guint16 code;
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3416 char *msg;
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3417
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3418 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3419 code = (guint16)va_arg(ap, int);
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3420 msg = va_arg(ap, char *);
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3421 va_end(ap);
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3422
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
3423 gaim_debug_info("oscar", "Disconnected. Code is 0x%04x and msg is %s\n",
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3424 code, (msg != NULL ? msg : ""));
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3425
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3426 g_return_val_if_fail(fr != NULL, 1);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3427 g_return_val_if_fail(conn != NULL, 1);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3428
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3429 if (conn->type == SNAC_FAMILY_LOCATE) {
4651
877407fc8cc3 [gaim-migrate @ 4962]
Sean Egan <seanegan@gmail.com>
parents: 4650
diff changeset
3430 if (code == 0x0001) {
6113
30d4c432101c [gaim-migrate @ 6575]
Mark Doliner <mark@kingant.net>
parents: 6066
diff changeset
3431 gc->wants_to_die = TRUE;
10715
c6bf026fcab9 [gaim-migrate @ 12309]
Mark Doliner <mark@kingant.net>
parents: 10683
diff changeset
3432 gaim_connection_error(gc, _("You have signed on from another location."));
4651
877407fc8cc3 [gaim-migrate @ 4962]
Sean Egan <seanegan@gmail.com>
parents: 4650
diff changeset
3433 } else {
5579
e0146fcc4718 [gaim-migrate @ 5983]
Sean Egan <seanegan@gmail.com>
parents: 5577
diff changeset
3434 gaim_connection_error(gc, _("You have been signed off for an unknown reason."));
4651
877407fc8cc3 [gaim-migrate @ 4962]
Sean Egan <seanegan@gmail.com>
parents: 4650
diff changeset
3435 }
4666
f8895ad921ee [gaim-migrate @ 4977]
Mark Doliner <mark@kingant.net>
parents: 4665
diff changeset
3436 od->killme = TRUE;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3437 } else if (conn->type == SNAC_FAMILY_CHAT) {
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3438 struct chat_connection *cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3439 GaimConversation *conv;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3440
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3441 cc = find_oscar_chat_by_conn(gc, conn);
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3442 conv = gaim_find_chat(gc, cc->id);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3443
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3444 if (conv != NULL)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3445 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3446 gchar *buf;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3447 buf = g_strdup_printf(_("You have been disconnected from chat "
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3448 "room %s."), cc->name);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3449 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_ERROR, time(NULL));
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3450 g_free(buf);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3451 }
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
3452 oscar_chat_kill(gc, cc);
4649
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3453 }
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3454
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3455 return 1;
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3456 }
f04e2a5b637a [gaim-migrate @ 4960]
Mark Doliner <mark@kingant.net>
parents: 4646
diff changeset
3457
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3458 static int gaim_icbm_param_info(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3459 struct aim_icbmparameters *params;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3460 va_list ap;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3461
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3462 va_start(ap, fr);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3463 params = va_arg(ap, struct aim_icbmparameters *);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3464 va_end(ap);
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3465
4194
9325df841a40 [gaim-migrate @ 4425]
Mark Doliner <mark@kingant.net>
parents: 4173
diff changeset
3466 /* XXX - evidently this crashes on solaris. i have no clue why
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3467 gaim_debug_misc("oscar", "ICBM Parameters: maxchannel = %hu, default flags = 0x%08lx, max msg len = %hu, "
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
3468 "max sender evil = %f, max receiver evil = %f, min msg interval = %u\n",
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3469 params->maxchan, params->flags, params->maxmsglen,
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3470 ((float)params->maxsenderwarn)/10.0, ((float)params->maxrecverwarn)/10.0,
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3471 params->minmsginterval);
2427
5bc3b39fc0a5 [gaim-migrate @ 2440]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2421
diff changeset
3472 */
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3473
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3474 /* Maybe senderwarn and recverwarn should be user preferences... */
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3475 params->flags = 0x0000000b;
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3476 params->maxmsglen = 8000;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3477 params->minmsginterval = 0;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3478
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3479 aim_im_setparams(od, params);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3480
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3481 return 1;
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3482 }
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3483
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3484 static int gaim_parse_locaterights(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3485 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3486 GaimConnection *gc = od->gc;
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
3487 GaimAccount *account = gaim_connection_get_account(gc);
5306
ce07077982c4 [gaim-migrate @ 5678]
Mark Doliner <mark@kingant.net>
parents: 5302
diff changeset
3488 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3489 guint16 maxsiglen;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3490
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3491 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3492 maxsiglen = (guint16) va_arg(ap, int);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3493 va_end(ap);
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3494
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3495 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3496 "locate rights: max sig len = %d\n", maxsiglen);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3497
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3498 od->rights.maxsiglen = od->rights.maxawaymsglen = (guint)maxsiglen;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3499
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3500 if (od->icq)
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3501 aim_locate_setcaps(od, caps_icq);
5301
d846a933299c [gaim-migrate @ 5673]
Mark Doliner <mark@kingant.net>
parents: 5300
diff changeset
3502 else
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3503 aim_locate_setcaps(od, caps_aim);
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
3504 oscar_set_info_and_status(account, TRUE, account->user_info, TRUE,
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
3505 gaim_account_get_active_status(account));
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3506
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3507 return 1;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3508 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3509
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3510 static int gaim_parse_buddyrights(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
3511 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3512 guint16 maxbuddies, maxwatchers;
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3513
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3514 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3515 maxbuddies = (guint16) va_arg(ap, unsigned int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3516 maxwatchers = (guint16) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3517 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3518
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3519 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3520 "buddy list rights: Max buddies = %hu / Max watchers = %hu\n", maxbuddies, maxwatchers);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3521
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3522 od->rights.maxbuddies = (guint)maxbuddies;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3523 od->rights.maxwatchers = (guint)maxwatchers;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3524
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3525 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3526 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3527
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3528 static int gaim_bosrights(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
11808
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
3529 GaimConnection *gc;
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
3530 GaimAccount *account;
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
3531 GaimStatus *status;
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
3532 const char *message;
12344
719c5b4668b9 [gaim-migrate @ 14648]
Mark Doliner <mark@kingant.net>
parents: 12317
diff changeset
3533 char *tmp;
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
3534 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3535 guint16 maxpermits, maxdenies;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3536
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3537 gc = od->gc;
11808
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
3538 od = (OscarData *)gc->proto_data;
11809
53da46e79de1 [gaim-migrate @ 14100]
Mark Doliner <mark@kingant.net>
parents: 11808
diff changeset
3539 account = gaim_connection_get_account(gc);
11808
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
3540
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3541 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3542 maxpermits = (guint16) va_arg(ap, unsigned int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3543 maxdenies = (guint16) va_arg(ap, unsigned int);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3544 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3545
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3546 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3547 "BOS rights: Max permit = %hu / Max deny = %hu\n", maxpermits, maxdenies);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3548
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3549 od->rights.maxpermits = (guint)maxpermits;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3550 od->rights.maxdenies = (guint)maxdenies;
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3551
5576
8c398efc88f2 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
3552 gaim_connection_set_state(gc, GAIM_CONNECTED);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3553
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3554 gaim_debug_info("oscar", "buddy list loaded\n");
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3555
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3556 aim_clientready(od, conn);
11808
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
3557
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
3558 /* Set our available message based on the current status */
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
3559 status = gaim_account_get_active_status(account);
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
3560 if (gaim_status_is_available(status))
4b7645e1c02d [gaim-migrate @ 14099]
Mark Doliner <mark@kingant.net>
parents: 11766
diff changeset
3561 message = gaim_status_get_attr_string(status, "message");
11810
42b5b3015d9e [gaim-migrate @ 14101]
Mark Doliner <mark@kingant.net>
parents: 11809
diff changeset
3562 else
42b5b3015d9e [gaim-migrate @ 14101]
Mark Doliner <mark@kingant.net>
parents: 11809
diff changeset
3563 message = NULL;
12344
719c5b4668b9 [gaim-migrate @ 14648]
Mark Doliner <mark@kingant.net>
parents: 12317
diff changeset
3564 tmp = gaim_markup_strip_html(message);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3565 aim_srv_setstatusmsg(od, tmp);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3566 g_free(tmp);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3567
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3568 aim_srv_setidle(od, 0);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
3569
4664
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
3570 if (od->icq) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3571 aim_icq_reqofflinemsgs(od);
12652
e739ace2688b [gaim-migrate @ 14995]
Mark Doliner <mark@kingant.net>
parents: 12645
diff changeset
3572 oscar_set_extendedstatus(gc);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3573 aim_icq_setsecurity(od,
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
3574 gaim_account_get_bool(account, "authorization", OSCAR_DEFAULT_AUTHORIZATION),
12652
e739ace2688b [gaim-migrate @ 14995]
Mark Doliner <mark@kingant.net>
parents: 12645
diff changeset
3575 gaim_account_get_bool(account, "web_aware", OSCAR_DEFAULT_WEB_AWARE));
4664
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
3576 }
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3577
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3578 aim_reqservice(od, SNAC_FAMILY_CHATNAV);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3579 if (od->authinfo->email != NULL)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3580 aim_reqservice(od, SNAC_FAMILY_ALERT);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3581
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3582 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3583 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3584
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3585 static int gaim_offlinemsg(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3586 va_list ap;
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3587 struct aim_icq_offlinemsg *msg;
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3588 struct aim_incomingim_ch4_args args;
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3589 time_t t;
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3590
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3591 va_start(ap, fr);
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3592 msg = va_arg(ap, struct aim_icq_offlinemsg *);
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3593 va_end(ap);
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3594
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3595 gaim_debug_info("oscar",
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
3596 "Received offline message. Converting to channel 4 ICBM...\n");
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3597 args.uin = msg->sender;
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3598 args.type = msg->type;
4173
b66f960bfe60 [gaim-migrate @ 4403]
Mark Doliner <mark@kingant.net>
parents: 4166
diff changeset
3599 args.flags = msg->flags;
4076
91c4bd698d39 [gaim-migrate @ 4291]
Mark Doliner <mark@kingant.net>
parents: 4075
diff changeset
3600 args.msglen = msg->msglen;
4075
2221f6801577 [gaim-migrate @ 4290]
Mark Doliner <mark@kingant.net>
parents: 4056
diff changeset
3601 args.msg = msg->msg;
7108
6faeeecab0dc [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
3602 t = gaim_time_build(msg->year, msg->month, msg->day, msg->hour, msg->minute, 0);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3603 incomingim_chan4(od, conn, NULL, &args, t);
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3604
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3605 return 1;
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3606 }
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3607
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3608 static int gaim_offlinemsgdone(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3609 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3610 aim_icq_ackofflinemsgs(od);
2706
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3611 return 1;
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3612 }
e841b14b5b89 [gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2704
diff changeset
3613
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3614 static int gaim_icqinfo(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
3615 {
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3616 GaimConnection *gc;
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3617 GaimAccount *account;
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3618 GaimBuddy *buddy;
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3619 struct buddyinfo *bi;
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
3620 gchar who[16];
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3621 GString *str;
11533
c9b815aeddc1 [gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents: 11532
diff changeset
3622 gchar *utf8;
9634
10f1d729c415 [gaim-migrate @ 10478]
Mark Doliner <mark@kingant.net>
parents: 9631
diff changeset
3623 const gchar *alias;
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
3624 va_list ap;
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
3625 struct aim_icq_info *info;
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
3626
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3627 gc = od->gc;
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3628 account = gaim_connection_get_account(gc);
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3629
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
3630 va_start(ap, fr);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
3631 info = va_arg(ap, struct aim_icq_info *);
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
3632 va_end(ap);
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
3633
4664
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
3634 if (!info->uin)
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
3635 return 0;
eab1309693b8 [gaim-migrate @ 4975]
Mark Doliner <mark@kingant.net>
parents: 4662
diff changeset
3636
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3637 str = g_string_sized_new(100);
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
3638 g_snprintf(who, sizeof(who), "%u", info->uin);
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3639 buddy = gaim_find_buddy(gaim_connection_get_account(gc), who);
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3640 if (buddy != NULL)
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3641 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(buddy->account, buddy->name));
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3642 else
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3643 bi = NULL;
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3644
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3645 g_string_append_printf(str, "<b>%s:</b> %s", _("UIN"), who);
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3646 oscar_string_convert_and_append(account, str, "\n<br>", _("Nick"), info->nick);
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3647 if ((bi != NULL) && (bi->ipaddr != 0)) {
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3648 char *tstr = g_strdup_printf("%hhu.%hhu.%hhu.%hhu",
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3649 (bi->ipaddr & 0xff000000) >> 24,
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3650 (bi->ipaddr & 0x00ff0000) >> 16,
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3651 (bi->ipaddr & 0x0000ff00) >> 8,
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3652 (bi->ipaddr & 0x000000ff));
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3653 oscar_string_append(str, "\n<br>", _("IP Address"), tstr);
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3654 g_free(tstr);
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3655 }
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3656 oscar_string_convert_and_append(account, str, "\n<br>", _("First Name"), info->first);
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3657 oscar_string_convert_and_append(account, str, "\n<br>", _("Last Name"), info->last);
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
3658 if (info->email && info->email[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->email))) {
13545
cfc2f7fcb3dd [gaim-migrate @ 15922]
Richard Laager <rlaager@wiktel.com>
parents: 13477
diff changeset
3659 g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"mailto:%s\">%s</a>", _("E-Mail Address"), utf8, utf8);
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3660 g_free(utf8);
4625
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
3661 }
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
3662 if (info->numaddresses && info->email2) {
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
3663 int i;
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
3664 for (i = 0; i < info->numaddresses; i++) {
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
3665 if (info->email2[i] && info->email2[i][0] && (utf8 = oscar_utf8_try_convert(gc->account, info->email2[i]))) {
13545
cfc2f7fcb3dd [gaim-migrate @ 15922]
Richard Laager <rlaager@wiktel.com>
parents: 13477
diff changeset
3666 g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"mailto:%s\">%s</a>", _("E-Mail Address"), utf8, utf8);
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3667 g_free(utf8);
4643
2b37c498b4bd [gaim-migrate @ 4953]
Nathan Walp <nwalp@pidgin.im>
parents: 4642
diff changeset
3668 }
4625
819ba05f5b1b [gaim-migrate @ 4916]
Mark Doliner <mark@kingant.net>
parents: 4624
diff changeset
3669 }
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
3670 }
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3671 oscar_string_convert_and_append(account, str, "\n<br>", _("Mobile Phone"), info->mobile);
10022
00a7ccf8ccd7 [gaim-migrate @ 10954]
Mark Doliner <mark@kingant.net>
parents: 10009
diff changeset
3672 if (info->gender != 0)
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3673 oscar_string_append(str, "\n<br>", _("Gender"), info->gender == 1 ? _("Female") : _("Male"));
12491
50ea9356bf52 [gaim-migrate @ 14803]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12486
diff changeset
3674 if ((info->birthyear > 1900) && (info->birthmonth > 0) && (info->birthday > 0)) {
13715
f65e8d30ae53 [gaim-migrate @ 16123]
Richard Laager <rlaager@wiktel.com>
parents: 13705
diff changeset
3675 /* Initialize the struct properly or strftime() will crash
13728
ed73ef86f40c [gaim-migrate @ 16139]
Richard Laager <rlaager@wiktel.com>
parents: 13717
diff changeset
3676 * under some conditions (e.g. Debian sarge w/ LANG=en_HK). */
13715
f65e8d30ae53 [gaim-migrate @ 16123]
Richard Laager <rlaager@wiktel.com>
parents: 13705
diff changeset
3677 time_t t = time(NULL);
f65e8d30ae53 [gaim-migrate @ 16123]
Richard Laager <rlaager@wiktel.com>
parents: 13705
diff changeset
3678 struct tm *tm = localtime(&t);
f65e8d30ae53 [gaim-migrate @ 16123]
Richard Laager <rlaager@wiktel.com>
parents: 13705
diff changeset
3679
f65e8d30ae53 [gaim-migrate @ 16123]
Richard Laager <rlaager@wiktel.com>
parents: 13705
diff changeset
3680 tm->tm_mday = (int)info->birthday;
f65e8d30ae53 [gaim-migrate @ 16123]
Richard Laager <rlaager@wiktel.com>
parents: 13705
diff changeset
3681 tm->tm_mon = (int)info->birthmonth - 1;
f65e8d30ae53 [gaim-migrate @ 16123]
Richard Laager <rlaager@wiktel.com>
parents: 13705
diff changeset
3682 tm->tm_year = (int)info->birthyear - 1900;
f65e8d30ae53 [gaim-migrate @ 16123]
Richard Laager <rlaager@wiktel.com>
parents: 13705
diff changeset
3683
f65e8d30ae53 [gaim-migrate @ 16123]
Richard Laager <rlaager@wiktel.com>
parents: 13705
diff changeset
3684 /* To be 100% sure that the fields are re-normalized.
f65e8d30ae53 [gaim-migrate @ 16123]
Richard Laager <rlaager@wiktel.com>
parents: 13705
diff changeset
3685 * If you're sure strftime() ALWAYS does this EVERYWHERE,
f65e8d30ae53 [gaim-migrate @ 16123]
Richard Laager <rlaager@wiktel.com>
parents: 13705
diff changeset
3686 * feel free to remove it. --rlaager */
f65e8d30ae53 [gaim-migrate @ 16123]
Richard Laager <rlaager@wiktel.com>
parents: 13705
diff changeset
3687 mktime(tm);
f65e8d30ae53 [gaim-migrate @ 16123]
Richard Laager <rlaager@wiktel.com>
parents: 13705
diff changeset
3688
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3689 oscar_string_append(str, "\n<br>", _("Birthday"),
13715
f65e8d30ae53 [gaim-migrate @ 16123]
Richard Laager <rlaager@wiktel.com>
parents: 13705
diff changeset
3690 gaim_date_format_short(tm));
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
3691 }
12491
50ea9356bf52 [gaim-migrate @ 14803]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12486
diff changeset
3692 if ((info->age > 0) && (info->age < 255)) {
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
3693 char age[5];
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
3694 snprintf(age, sizeof(age), "%hhd", info->age);
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3695 oscar_string_append(str, "\n<br>", _("Age"), age);
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
3696 }
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
3697 if (info->personalwebpage && info->personalwebpage[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->personalwebpage))) {
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3698 g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"%s\">%s</a>", _("Personal Web Page"), utf8, utf8);
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3699 g_free(utf8);
4819
815afc71c8e4 [gaim-migrate @ 5144]
Mark Doliner <mark@kingant.net>
parents: 4811
diff changeset
3700 }
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
3701 if (info->info && info->info[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->info))) {
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3702 g_string_append_printf(str, "<hr><b>%s:</b><br>%s", _("Additional Information"), utf8);
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3703 g_free(utf8);
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3704 }
10683
e11f3e1599d4 [gaim-migrate @ 12230]
Mark Doliner <mark@kingant.net>
parents: 10674
diff changeset
3705 g_string_append_printf(str, "<hr>");
4641
94635db7c6af [gaim-migrate @ 4951]
Mark Doliner <mark@kingant.net>
parents: 4634
diff changeset
3706 if ((info->homeaddr && (info->homeaddr[0])) || (info->homecity && info->homecity[0]) || (info->homestate && info->homestate[0]) || (info->homezip && info->homezip[0])) {
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3707 g_string_append_printf(str, "<b>%s:</b>", _("Home Address"));
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3708 oscar_string_convert_and_append(account, str, "\n<br>", _("Address"), info->homeaddr);
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3709 oscar_string_convert_and_append(account, str, "\n<br>", _("City"), info->homecity);
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3710 oscar_string_convert_and_append(account, str, "\n<br>", _("State"), info->homestate);
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3711 oscar_string_convert_and_append(account, str, "\n<br>", _("Zip Code"), info->homezip);
10683
e11f3e1599d4 [gaim-migrate @ 12230]
Mark Doliner <mark@kingant.net>
parents: 10674
diff changeset
3712 g_string_append_printf(str, "\n<hr>");
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
3713 }
4641
94635db7c6af [gaim-migrate @ 4951]
Mark Doliner <mark@kingant.net>
parents: 4634
diff changeset
3714 if ((info->workaddr && info->workaddr[0]) || (info->workcity && info->workcity[0]) || (info->workstate && info->workstate[0]) || (info->workzip && info->workzip[0])) {
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3715 g_string_append_printf(str, "<b>%s:</b>", _("Work Address"));
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3716 oscar_string_convert_and_append(account, str, "\n<br>", _("Address"), info->workaddr);
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3717 oscar_string_convert_and_append(account, str, "\n<br>", _("City"), info->workcity);
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3718 oscar_string_convert_and_append(account, str, "\n<br>", _("State"), info->workstate);
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3719 oscar_string_convert_and_append(account, str, "\n<br>", _("Zip Code"), info->workzip);
10683
e11f3e1599d4 [gaim-migrate @ 12230]
Mark Doliner <mark@kingant.net>
parents: 10674
diff changeset
3720 g_string_append_printf(str, "\n<hr>");
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
3721 }
4641
94635db7c6af [gaim-migrate @ 4951]
Mark Doliner <mark@kingant.net>
parents: 4634
diff changeset
3722 if ((info->workcompany && info->workcompany[0]) || (info->workdivision && info->workdivision[0]) || (info->workposition && info->workposition[0]) || (info->workwebpage && info->workwebpage[0])) {
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3723 g_string_append_printf(str, "<b>%s:</b>", _("Work Information"));
13873
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3724 oscar_string_convert_and_append(account, str, "\n<br>", _("Company"), info->workcompany);
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3725 oscar_string_convert_and_append(account, str, "\n<br>", _("Division"), info->workdivision);
77a50840d9e2 [gaim-migrate @ 16344]
Mark Doliner <mark@kingant.net>
parents: 13862
diff changeset
3726 oscar_string_convert_and_append(account, str, "\n<br>", _("Position"), info->workposition);
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
3727 if (info->workwebpage && info->workwebpage[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->workwebpage))) {
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3728 g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"%s\">%s</a>", _("Web Page"), utf8, utf8);
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3729 g_free(utf8);
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
3730 }
10683
e11f3e1599d4 [gaim-migrate @ 12230]
Mark Doliner <mark@kingant.net>
parents: 10674
diff changeset
3731 g_string_append_printf(str, "\n<hr>");
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3732 }
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3733
9634
10f1d729c415 [gaim-migrate @ 10478]
Mark Doliner <mark@kingant.net>
parents: 9631
diff changeset
3734 if (buddy != NULL)
10f1d729c415 [gaim-migrate @ 10478]
Mark Doliner <mark@kingant.net>
parents: 9631
diff changeset
3735 alias = gaim_buddy_get_alias(buddy);
10f1d729c415 [gaim-migrate @ 10478]
Mark Doliner <mark@kingant.net>
parents: 9631
diff changeset
3736 else
10f1d729c415 [gaim-migrate @ 10478]
Mark Doliner <mark@kingant.net>
parents: 9631
diff changeset
3737 alias = who;
11533
c9b815aeddc1 [gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents: 11532
diff changeset
3738 gaim_notify_userinfo(gc, who, str->str, NULL, NULL);
8670
e72824b84285 [gaim-migrate @ 9422]
Mark Doliner <mark@kingant.net>
parents: 8668
diff changeset
3739 g_string_free(str, TRUE);
4151
1a5dcfa1823e [gaim-migrate @ 4377]
Mark Doliner <mark@kingant.net>
parents: 4121
diff changeset
3740
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
3741 return 1;
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
3742 }
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
3743
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3744 static int gaim_icqalias(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
3745 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3746 GaimConnection *gc = od->gc;
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
3747 GaimAccount *account = gaim_connection_get_account(gc);
4820
bfabc4a26fce [gaim-migrate @ 5145]
Mark Doliner <mark@kingant.net>
parents: 4819
diff changeset
3748 gchar who[16], *utf8;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3749 GaimBuddy *b;
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
3750 va_list ap;
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
3751 struct aim_icq_info *info;
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
3752
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
3753 va_start(ap, fr);
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
3754 info = va_arg(ap, struct aim_icq_info *);
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
3755 va_end(ap);
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
3756
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
3757 if (info->uin && info->nick && info->nick[0] && (utf8 = oscar_utf8_try_convert(account, info->nick))) {
5556
8ab1875e6d09 [gaim-migrate @ 5957]
Mark Doliner <mark@kingant.net>
parents: 5542
diff changeset
3758 g_snprintf(who, sizeof(who), "%u", info->uin);
4820
bfabc4a26fce [gaim-migrate @ 5145]
Mark Doliner <mark@kingant.net>
parents: 4819
diff changeset
3759 serv_got_alias(gc, who, utf8);
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
3760 if ((b = gaim_find_buddy(gc->account, who))) {
7693
1d0314b99747 [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
3761 gaim_blist_node_set_string((GaimBlistNode*)b, "servernick", utf8);
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
3762 }
4820
bfabc4a26fce [gaim-migrate @ 5145]
Mark Doliner <mark@kingant.net>
parents: 4819
diff changeset
3763 g_free(utf8);
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
3764 }
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
3765
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
3766 return 1;
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
3767 }
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
3768
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3769 static int gaim_popup(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3770 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3771 GaimConnection *gc = od->gc;
7032
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
3772 gchar *text;
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
3773 va_list ap;
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3774 char *msg, *url;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3775 guint16 wid, hei, delay;
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3776
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3777 va_start(ap, fr);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3778 msg = va_arg(ap, char *);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3779 url = va_arg(ap, char *);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3780 wid = (guint16) va_arg(ap, int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3781 hei = (guint16) va_arg(ap, int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3782 delay = (guint16) va_arg(ap, int);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3783 va_end(ap);
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3784
7032
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
3785 text = g_strdup_printf("%s<br><a href=\"%s\">%s</a>", msg, url, url);
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
3786 gaim_notify_formatted(gc, NULL, _("Pop-Up Message"), NULL, text, NULL, NULL);
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
3787 g_free(text);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3788
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3789 return 1;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3790 }
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
3791
13640
d12bbe6da705 [gaim-migrate @ 16038]
Bartoz Oler <bartosz@pidgin.im>
parents: 13631
diff changeset
3792 static void oscar_searchresults_add_buddy_cb(GaimConnection *gc, GList *row, void *user_data)
11359
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
3793 {
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
3794 gaim_blist_request_add_buddy(gaim_connection_get_account(gc),
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
3795 g_list_nth_data(row, 0), NULL, NULL);
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
3796 }
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
3797
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3798 static int gaim_parse_searchreply(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
7032
0ffd540660df [gaim-migrate @ 7595]
Mark Doliner <mark@kingant.net>
parents: 7026
diff changeset
3799 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3800 GaimConnection *gc = od->gc;
11359
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
3801 GaimNotifySearchResults *results;
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
3802 GaimNotifySearchColumn *column;
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
3803 gchar *secondary;
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
3804 int i, num;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3805 va_list ap;
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
3806 char *email, *SNs;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3807
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3808 va_start(ap, fr);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
3809 email = va_arg(ap, char *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3810 num = va_arg(ap, int);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3811 SNs = va_arg(ap, char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3812 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3813
12257
ca27de274225 [gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents: 12254
diff changeset
3814 results = gaim_notify_searchresults_new();
ca27de274225 [gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents: 12254
diff changeset
3815
ca27de274225 [gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents: 12254
diff changeset
3816 if (results == NULL) {
ca27de274225 [gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents: 12254
diff changeset
3817 gaim_debug_error("oscar", "gaim_parse_searchreply: "
ca27de274225 [gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents: 12254
diff changeset
3818 "Unable to display the search results.\n");
ca27de274225 [gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents: 12254
diff changeset
3819 gaim_notify_error(gc, NULL,
ca27de274225 [gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents: 12254
diff changeset
3820 _("Unable to display the search results."),
ca27de274225 [gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents: 12254
diff changeset
3821 NULL);
12260
0a9574ed62cd [gaim-migrate @ 14562]
Mark Doliner <mark@kingant.net>
parents: 12257
diff changeset
3822 return 1;
12257
ca27de274225 [gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents: 12254
diff changeset
3823 }
ca27de274225 [gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents: 12254
diff changeset
3824
12254
95fd673021f6 [gaim-migrate @ 14556]
Richard Laager <rlaager@wiktel.com>
parents: 12243
diff changeset
3825 secondary = g_strdup_printf(
95fd673021f6 [gaim-migrate @ 14556]
Richard Laager <rlaager@wiktel.com>
parents: 12243
diff changeset
3826 ngettext("The following screen name is associated with %s",
95fd673021f6 [gaim-migrate @ 14556]
Richard Laager <rlaager@wiktel.com>
parents: 12243
diff changeset
3827 "The following screen names are associated with %s",
95fd673021f6 [gaim-migrate @ 14556]
Richard Laager <rlaager@wiktel.com>
parents: 12243
diff changeset
3828 num),
95fd673021f6 [gaim-migrate @ 14556]
Richard Laager <rlaager@wiktel.com>
parents: 12243
diff changeset
3829 email);
10439
911530134bf8 [gaim-migrate @ 11697]
Mark Doliner <mark@kingant.net>
parents: 10405
diff changeset
3830
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3831 column = gaim_notify_searchresults_column_new(_("Screen name"));
11359
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
3832 gaim_notify_searchresults_column_add(results, column);
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
3833
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
3834 for (i = 0; i < num; i++) {
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
3835 GList *row = NULL;
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
3836 row = g_list_append(row, g_strdup(&SNs[i * (MAXSNLEN + 1)]));
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
3837 gaim_notify_searchresults_row_add(results, row);
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
3838 }
12624
851b0bd7eb52 [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12617
diff changeset
3839 gaim_notify_searchresults_button_add(results, GAIM_NOTIFY_BUTTON_ADD,
11359
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
3840 oscar_searchresults_add_buddy_cb);
9480e0d0f563 [gaim-migrate @ 13581]
Bartoz Oler <bartosz@pidgin.im>
parents: 11347
diff changeset
3841 gaim_notify_searchresults(gc, NULL, NULL, secondary, results, NULL, NULL);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
3842
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
3843 g_free(secondary);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3844
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3845 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3846 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3847
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3848 static int gaim_parse_searcherror(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3849 va_list ap;
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
3850 char *email;
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
3851 char *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3852
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3853 va_start(ap, fr);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
3854 email = va_arg(ap, char *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3855 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3856
13545
cfc2f7fcb3dd [gaim-migrate @ 15922]
Richard Laager <rlaager@wiktel.com>
parents: 13477
diff changeset
3857 buf = g_strdup_printf(_("No results found for e-mail address %s"), email);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3858 gaim_notify_error(od->gc, NULL, buf, NULL);
5420
c54cb8f8655f [gaim-migrate @ 5799]
Mark Doliner <mark@kingant.net>
parents: 5411
diff changeset
3859 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3860
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3861 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3862 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3863
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3864 static int gaim_account_confirm(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3865 GaimConnection *gc = od->gc;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3866 guint16 status;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3867 va_list ap;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3868 char msg[256];
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3869
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3870 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3871 status = (guint16) va_arg(ap, unsigned int); /* status code of confirmation request */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3872 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3873
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3874 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3875 "account confirmation returned status 0x%04x (%s)\n", status,
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3876 status ? "unknown" : "e-mail sent");
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3877 if (!status) {
13545
cfc2f7fcb3dd [gaim-migrate @ 15922]
Richard Laager <rlaager@wiktel.com>
parents: 13477
diff changeset
3878 g_snprintf(msg, sizeof(msg), _("You should receive an e-mail asking to confirm %s."),
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3879 gaim_account_get_username(gaim_connection_get_account(gc)));
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3880 gaim_notify_info(gc, NULL, _("Account Confirmation Requested"), msg);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3881 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3882
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3883 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3884 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3885
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3886 static int gaim_info_change(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3887 GaimConnection *gc = od->gc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3888 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3889 guint16 perms, err;
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3890 char *url, *sn, *email;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3891 int change;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3892
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3893 va_start(ap, fr);
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
3894 change = va_arg(ap, int);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3895 perms = (guint16) va_arg(ap, unsigned int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
3896 err = (guint16) va_arg(ap, unsigned int);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3897 url = va_arg(ap, char *);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3898 sn = va_arg(ap, char *);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3899 email = va_arg(ap, char *);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3900 va_end(ap);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3901
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
3902 gaim_debug_misc("oscar",
9626
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
3903 "account info: because of %s, perms=0x%04x, err=0x%04x, url=%s, sn=%s, email=%s\n",
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
3904 change ? "change" : "request", perms, err,
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
3905 (url != NULL) ? url : "(null)",
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
3906 (sn != NULL) ? sn : "(null)",
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
3907 (email != NULL) ? email : "(null)");
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
3908
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
3909 if ((err > 0) && (url != NULL)) {
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3910 char *dialog_msg;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3911 char *dialog_top = g_strdup_printf(_("Error Changing Account Info"));
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3912 switch (err) {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3913 case 0x0001: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3914 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format screen name because the requested screen name differs from the original."), err);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3915 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3916 case 0x0006: {
11399
48244c196228 [gaim-migrate @ 13634]
Mark Doliner <mark@kingant.net>
parents: 11369
diff changeset
3917 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format screen name because it is invalid."), err);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3918 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3919 case 0x000b: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3920 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format screen name because the requested screen name is too long."), err);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3921 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3922 case 0x001d: {
13545
cfc2f7fcb3dd [gaim-migrate @ 15922]
Richard Laager <rlaager@wiktel.com>
parents: 13477
diff changeset
3923 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change e-mail address because there is already a request pending for this screen name."), err);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3924 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3925 case 0x0021: {
13545
cfc2f7fcb3dd [gaim-migrate @ 15922]
Richard Laager <rlaager@wiktel.com>
parents: 13477
diff changeset
3926 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change e-mail address because the given address has too many screen names associated with it."), err);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3927 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3928 case 0x0023: {
13545
cfc2f7fcb3dd [gaim-migrate @ 15922]
Richard Laager <rlaager@wiktel.com>
parents: 13477
diff changeset
3929 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change e-mail address because the given address is invalid."), err);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3930 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3931 default: {
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3932 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unknown error."), err);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3933 } break;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3934 }
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3935 gaim_notify_error(gc, NULL, dialog_top, dialog_msg);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3936 g_free(dialog_top);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3937 g_free(dialog_msg);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3938 return 1;
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3939 }
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3940
9626
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
3941 if (sn != NULL) {
4585
2427d847e39c [gaim-migrate @ 4869]
Luke Schierer <lschiere@pidgin.im>
parents: 4508
diff changeset
3942 char *dialog_msg = g_strdup_printf(_("Your screen name is currently formatted as follows:\n%s"), sn);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3943 gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3944 g_free(dialog_msg);
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3945 }
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3946
9626
afd069368860 [gaim-migrate @ 10470]
Mark Doliner <mark@kingant.net>
parents: 9625
diff changeset
3947 if (email != NULL) {
13545
cfc2f7fcb3dd [gaim-migrate @ 15922]
Richard Laager <rlaager@wiktel.com>
parents: 13477
diff changeset
3948 char *dialog_msg = g_strdup_printf(_("The e-mail address for %s is %s"),
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
3949 gaim_account_get_username(gaim_connection_get_account(gc)), email);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3950 gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg);
3912
e73c48cf1645 [gaim-migrate @ 4071]
Mark Doliner <mark@kingant.net>
parents: 3867
diff changeset
3951 g_free(dialog_msg);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3952 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3953
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3954 return 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3955 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3956
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3957 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3958 oscar_keepalive(GaimConnection *gc)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3959 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3960 OscarData *od;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3961 FlapConnection *conn;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3962
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3963 od = (OscarData *)gc->proto_data;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3964 conn = flap_connection_getbytype(od, SNAC_FAMILY_LOCATE);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3965 if (conn != NULL)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3966 flap_connection_send_keepalive(od, conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3967 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3968
13842
a9ff4499d9ce [gaim-migrate @ 16295]
Mark Doliner <mark@kingant.net>
parents: 13827
diff changeset
3969 static unsigned int
a9ff4499d9ce [gaim-migrate @ 16295]
Mark Doliner <mark@kingant.net>
parents: 13827
diff changeset
3970 oscar_send_typing(GaimConnection *gc, const char *name, GaimTypingState state)
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3971 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3972 OscarData *od;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3973 PeerConnection *conn;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3974
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3975 od = (OscarData *)gc->proto_data;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3976 conn = peer_connection_find_by_type(od, name, OSCAR_CAPABILITY_DIRECTIM);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3977
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3978 if ((conn != NULL) && (conn->ready))
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3979 {
13842
a9ff4499d9ce [gaim-migrate @ 16295]
Mark Doliner <mark@kingant.net>
parents: 13827
diff changeset
3980 peer_odc_send_typing(conn, state);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3981 }
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3982 else {
5300
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
3983 /* Don't send if this turkey is in our deny list */
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
3984 GSList *list;
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
3985 for (list=gc->account->deny; (list && aim_sncmp(name, list->data)); list=list->next);
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
3986 if (!list) {
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
3987 struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(gc->account, name));
5300
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
3988 if (bi && bi->typingnot) {
13842
a9ff4499d9ce [gaim-migrate @ 16295]
Mark Doliner <mark@kingant.net>
parents: 13827
diff changeset
3989 if (state == GAIM_TYPING)
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3990 aim_im_sendmtn(od, 0x0001, name, 0x0002);
13842
a9ff4499d9ce [gaim-migrate @ 16295]
Mark Doliner <mark@kingant.net>
parents: 13827
diff changeset
3991 else if (state == GAIM_TYPED)
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3992 aim_im_sendmtn(od, 0x0001, name, 0x0001);
5300
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
3993 else
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
3994 aim_im_sendmtn(od, 0x0001, name, 0x0000);
5300
5344eb60f421 [gaim-migrate @ 5672]
Mark Doliner <mark@kingant.net>
parents: 5238
diff changeset
3995 }
3595
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3996 }
1e60a05c7482 [gaim-migrate @ 3697]
Mark Doliner <mark@kingant.net>
parents: 3579
diff changeset
3997 }
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3998 return 0;
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3999 }
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
4000
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4001 /* TODO: Move this into odc.c! */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4002 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4003 gaim_odc_send_im(PeerConnection *conn, const char *message, GaimMessageFlags imflags)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4004 {
13601
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4005 GString *msg;
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4006 GString *data;
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4007 gchar *tmp;
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4008 int tmplen;
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4009 guint16 charset, charsubset;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4010 GData *attribs;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4011 const char *start, *end, *last;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4012 int oscar_id = 0;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4013
13601
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4014 msg = g_string_new("<HTML><BODY>");
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4015 data = g_string_new("<BINARY>");
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4016 last = message;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4017
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4018 /* for each valid IMG tag... */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4019 while (last && *last && gaim_markup_find_tag("img", last, &start, &end, &attribs))
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4020 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4021 GaimStoredImage *image = NULL;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4022 const char *id;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4023
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4024 if (start - last) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4025 g_string_append_len(msg, last, start - last);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4026 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4027
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4028 id = g_datalist_get_data(&attribs, "id");
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4029
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4030 /* ... if it refers to a valid gaim image ... */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4031 if (id && (image = gaim_imgstore_get(atoi(id)))) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4032 /* ... append the message from start to the tag ... */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4033 unsigned long size = gaim_imgstore_get_size(image);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4034 const char *filename = gaim_imgstore_get_filename(image);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4035 gpointer imgdata = gaim_imgstore_get_data(image);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4036
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4037 oscar_id++;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4038
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4039 /* ... insert a new img tag with the oscar id ... */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4040 if (filename)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4041 g_string_append_printf(msg,
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4042 "<IMG SRC=\"%s\" ID=\"%d\" DATASIZE=\"%lu\">",
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4043 filename, oscar_id, size);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4044 else
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4045 g_string_append_printf(msg,
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4046 "<IMG ID=\"%d\" DATASIZE=\"%lu\">",
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4047 oscar_id, size);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4048
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4049 /* ... and append the data to the binary section ... */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4050 g_string_append_printf(data, "<DATA ID=\"%d\" SIZE=\"%lu\">",
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4051 oscar_id, size);
13601
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4052 g_string_append_len(data, imgdata, size);
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4053 g_string_append(data, "</DATA>");
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4054 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4055 /* If the tag is invalid, skip it, thus no else here */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4056
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4057 g_datalist_clear(&attribs);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4058
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4059 /* continue from the end of the tag */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4060 last = end + 1;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4061 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4062
13601
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4063 /* append any remaining message data */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4064 if (last && *last)
13601
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4065 g_string_append(msg, last);
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4066
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4067 g_string_append(msg, "</BODY></HTML>");
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4068
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4069 /* Convert the message to a good encoding */
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4070 gaim_plugin_oscar_convert_to_best_encoding(conn->od->gc,
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4071 conn->sn, msg->str, &tmp, &tmplen, &charset, &charsubset);
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4072 g_string_free(msg, TRUE);
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4073 msg = g_string_new_len(tmp, tmplen);
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4074
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4075 /* Append any binary data that we may have */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4076 if (oscar_id) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4077 msg = g_string_append_len(msg, data->str, data->len);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4078 msg = g_string_append(msg, "</BINARY>");
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4079 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4080 g_string_free(data, TRUE);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4081
13601
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4082 peer_odc_send_im(conn, msg->str, msg->len, charset,
009a1e608419 [gaim-migrate @ 15987]
Mark Doliner <mark@kingant.net>
parents: 13600
diff changeset
4083 imflags & GAIM_MESSAGE_AUTO_RESP);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4084 g_string_free(msg, TRUE);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4085 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4086
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4087 static int
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4088 oscar_send_im(GaimConnection *gc, const char *name, const char *message, GaimMessageFlags imflags)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4089 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4090 OscarData *od;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4091 GaimAccount *account;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4092 PeerConnection *conn;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4093 int ret;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4094 char *iconfile;
12677
f5c72fd691ee [gaim-migrate @ 15020]
Mark Doliner <mark@kingant.net>
parents: 12675
diff changeset
4095 char *tmp1, *tmp2;
f5c72fd691ee [gaim-migrate @ 15020]
Mark Doliner <mark@kingant.net>
parents: 12675
diff changeset
4096
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4097 od = (OscarData *)gc->proto_data;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4098 account = gaim_connection_get_account(gc);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4099 ret = 0;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4100 iconfile = gaim_buddy_icons_get_full_path(gaim_account_get_buddy_icon(account));
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4101
12677
f5c72fd691ee [gaim-migrate @ 15020]
Mark Doliner <mark@kingant.net>
parents: 12675
diff changeset
4102 if (imflags & GAIM_MESSAGE_AUTO_RESP)
f5c72fd691ee [gaim-migrate @ 15020]
Mark Doliner <mark@kingant.net>
parents: 12675
diff changeset
4103 tmp1 = gaim_str_sub_away_formatters(message, name);
f5c72fd691ee [gaim-migrate @ 15020]
Mark Doliner <mark@kingant.net>
parents: 12675
diff changeset
4104 else
f5c72fd691ee [gaim-migrate @ 15020]
Mark Doliner <mark@kingant.net>
parents: 12675
diff changeset
4105 tmp1 = g_strdup(message);
3458
66b1ad9782a9 [gaim-migrate @ 3506]
Sean Egan <seanegan@gmail.com>
parents: 3456
diff changeset
4106
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4107 conn = peer_connection_find_by_type(od, name, OSCAR_CAPABILITY_DIRECTIM);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4108 if ((conn != NULL) && (conn->ready))
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4109 {
4838
60d8c5ad77f9 [gaim-migrate @ 5163]
Mark Doliner <mark@kingant.net>
parents: 4834
diff changeset
4110 /* If we're directly connected, send a direct IM */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4111 gaim_odc_send_im(conn, tmp1, imflags);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4112 } else {
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4113 struct buddyinfo *bi;
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4114 struct aim_sendimext_args args;
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4115 struct stat st;
6478
338147ea6896 [gaim-migrate @ 6991]
Christian Hammond <chipx86@chipx86.com>
parents: 6465
diff changeset
4116 gsize len;
10246
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
4117 GaimConversation *conv;
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
4118
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
4119 conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, name, account);
8962
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
4120
12677
f5c72fd691ee [gaim-migrate @ 15020]
Mark Doliner <mark@kingant.net>
parents: 12675
diff changeset
4121 if (strstr(tmp1, "<IMG "))
8962
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
4122 gaim_conversation_write(conv, "",
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
4123 _("Your IM Image was not sent. "
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
4124 "You must be Direct Connected to send IM Images."),
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
4125 GAIM_MESSAGE_ERROR, time(NULL));
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4126
10246
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
4127 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, name));
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4128 if (!bi) {
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4129 bi = g_new0(struct buddyinfo, 1);
10246
a66cf83552dc [gaim-migrate @ 11386]
Mark Doliner <mark@kingant.net>
parents: 10240
diff changeset
4130 g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(account, name)), bi);
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4131 }
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4132
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4133 args.flags = AIM_IMFLAGS_ACK | AIM_IMFLAGS_CUSTOMFEATURES;
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
4134 if (od->icq) {
11185
1ce573a2e125 [gaim-migrate @ 13297]
Mark Doliner <mark@kingant.net>
parents: 11172
diff changeset
4135 /* We have to present different "features" (whose meaning
11172
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
4136 is unclear and are merely a result of protocol inspection)
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
4137 to offline ICQ buddies. Otherwise, the official
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
4138 ICQ client doesn't treat those messages as being "ANSI-
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
4139 encoded" (and instead, assumes them to be UTF-8).
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
4140 For more details, see SF issue 1179452.
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
4141 */
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
4142 GaimBuddy *buddy = gaim_find_buddy(gc->account, name);
11910
700ec4523c04 [gaim-migrate @ 14201]
Nathan Walp <nwalp@pidgin.im>
parents: 11873
diff changeset
4143 if (buddy && GAIM_BUDDY_IS_ONLINE(buddy)) {
11172
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
4144 args.features = features_icq;
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
4145 args.featureslen = sizeof(features_icq);
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
4146 } else {
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
4147 args.features = features_icq_offline;
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
4148 args.featureslen = sizeof(features_icq_offline);
1f0844561c7e [gaim-migrate @ 13274]
Ethan Blanton <elb@pidgin.im>
parents: 11162
diff changeset
4149 }
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4150 args.flags |= AIM_IMFLAGS_OFFLINE;
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
4151 } else {
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
4152 args.features = features_aim;
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
4153 args.featureslen = sizeof(features_aim);
4972
ba713dabf3ef [gaim-migrate @ 5306]
Mark Doliner <mark@kingant.net>
parents: 4969
diff changeset
4154
12216
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
4155 if (imflags & GAIM_MESSAGE_AUTO_RESP)
4972
ba713dabf3ef [gaim-migrate @ 5306]
Mark Doliner <mark@kingant.net>
parents: 4969
diff changeset
4156 args.flags |= AIM_IMFLAGS_AWAY;
4665
818ee615b025 [gaim-migrate @ 4976]
Mark Doliner <mark@kingant.net>
parents: 4664
diff changeset
4157 }
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4158
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4159 if (bi->ico_need) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4160 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4161 "Sending buddy icon request with message\n");
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4162 args.flags |= AIM_IMFLAGS_BUDDYREQ;
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4163 bi->ico_need = FALSE;
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4164 }
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4165
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
4166 if (iconfile && !g_stat(iconfile, &st)) {
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
4167 FILE *file = g_fopen(iconfile, "rb");
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4168 if (file) {
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
4169 guchar *buf = g_malloc(st.st_size);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4170 /* TODO: Use g_file_get_contents()? */
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4171 fread(buf, 1, st.st_size, file);
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
4172 fclose(file);
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4173
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4174 args.iconlen = st.st_size;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4175 args.iconsum = aimutil_iconsum(buf, st.st_size);
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4176 args.iconstamp = st.st_mtime;
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4177
7406
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
4178 if ((args.iconlen != bi->ico_me_len) || (args.iconsum != bi->ico_me_csum) || (args.iconstamp != bi->ico_me_time)) {
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4179 bi->ico_informed = FALSE;
7406
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
4180 bi->ico_sent = FALSE;
c91199e88c9e [gaim-migrate @ 8006]
Sean Egan <seanegan@gmail.com>
parents: 7389
diff changeset
4181 }
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4182
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4183 if (!bi->ico_informed) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4184 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4185 "Claiming to have a buddy icon\n");
4738
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4186 args.flags |= AIM_IMFLAGS_HASICON;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4187 bi->ico_me_len = args.iconlen;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4188 bi->ico_me_csum = args.iconsum;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4189 bi->ico_me_time = args.iconstamp;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4190 bi->ico_informed = TRUE;
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4191 }
34fdf9e313d5 [gaim-migrate @ 5053]
Mark Doliner <mark@kingant.net>
parents: 4734
diff changeset
4192
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4193 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4194 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4195 }
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
4196 g_free(iconfile);
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4197
3008
03d98a2e8e49 [gaim-migrate @ 3021]
Sean Egan <seanegan@gmail.com>
parents: 3001
diff changeset
4198 args.destsn = name;
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4199
8985
8abc99ed5d93 [gaim-migrate @ 9760]
Mark Doliner <mark@kingant.net>
parents: 8984
diff changeset
4200 /*
13165
c0a6b8f29035 [gaim-migrate @ 15528]
Evan Schoenberg <evan.s@dreskin.net>
parents: 13158
diff changeset
4201 * If we're IMing an SMS user or an ICQ user from an ICQ account, then strip HTML.
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
4202 */
13168
bdb8d7beb5a7 [gaim-migrate @ 15531]
Evan Schoenberg <evan.s@dreskin.net>
parents: 13165
diff changeset
4203 if (aim_sn_is_sms(name)) {
13165
c0a6b8f29035 [gaim-migrate @ 15528]
Evan Schoenberg <evan.s@dreskin.net>
parents: 13158
diff changeset
4204 /* Messaging an SMS (mobile) user */
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
4205 tmp2 = gaim_unescape_html(tmp1);
13165
c0a6b8f29035 [gaim-migrate @ 15528]
Evan Schoenberg <evan.s@dreskin.net>
parents: 13158
diff changeset
4206 } else if (aim_sn_is_icq(gaim_account_get_username(account))) {
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
4207 if (aim_sn_is_icq(name))
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
4208 /* From ICQ to ICQ */
12677
f5c72fd691ee [gaim-migrate @ 15020]
Mark Doliner <mark@kingant.net>
parents: 12675
diff changeset
4209 tmp2 = gaim_unescape_html(tmp1);
10781
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
4210 else
f6d630211935 [gaim-migrate @ 12406]
Mark Doliner <mark@kingant.net>
parents: 10753
diff changeset
4211 /* From ICQ to AIM */
12677
f5c72fd691ee [gaim-migrate @ 15020]
Mark Doliner <mark@kingant.net>
parents: 12675
diff changeset
4212 tmp2 = g_strdup(tmp1);
8995
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
4213 } else {
10785
4a2f361f49b9 [gaim-migrate @ 12423]
Mark Doliner <mark@kingant.net>
parents: 10783
diff changeset
4214 /* From AIM to AIM and AIM to ICQ */
12677
f5c72fd691ee [gaim-migrate @ 15020]
Mark Doliner <mark@kingant.net>
parents: 12675
diff changeset
4215 tmp2 = g_strdup(tmp1);
8995
9caf796e74aa [gaim-migrate @ 9770]
Luke Schierer <lschiere@pidgin.im>
parents: 8993
diff changeset
4216 }
12677
f5c72fd691ee [gaim-migrate @ 15020]
Mark Doliner <mark@kingant.net>
parents: 12675
diff changeset
4217 g_free(tmp1);
f5c72fd691ee [gaim-migrate @ 15020]
Mark Doliner <mark@kingant.net>
parents: 12675
diff changeset
4218 tmp1 = tmp2;
f5c72fd691ee [gaim-migrate @ 15020]
Mark Doliner <mark@kingant.net>
parents: 12675
diff changeset
4219 len = strlen(tmp1);
f5c72fd691ee [gaim-migrate @ 15020]
Mark Doliner <mark@kingant.net>
parents: 12675
diff changeset
4220
f5c72fd691ee [gaim-migrate @ 15020]
Mark Doliner <mark@kingant.net>
parents: 12675
diff changeset
4221 gaim_plugin_oscar_convert_to_best_encoding(gc, name, tmp1, (char **)&args.msg, &args.msglen, &args.charset, &args.charsubset);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
4222 gaim_debug_info("oscar", "Sending IM, charset=0x%04hx, charsubset=0x%04hx, length=%d\n",
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
4223 args.charset, args.charsubset, args.msglen);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4224 ret = aim_im_sendch1_ext(od, &args);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
4225 g_free((char *)args.msg);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4226 }
4838
60d8c5ad77f9 [gaim-migrate @ 5163]
Mark Doliner <mark@kingant.net>
parents: 4834
diff changeset
4227
12677
f5c72fd691ee [gaim-migrate @ 15020]
Mark Doliner <mark@kingant.net>
parents: 12675
diff changeset
4228 g_free(tmp1);
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
4229
2303
f5bf315e6104 [gaim-migrate @ 2313]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2297
diff changeset
4230 if (ret >= 0)
f5bf315e6104 [gaim-migrate @ 2313]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2297
diff changeset
4231 return 1;
6310
f14718d7082e [gaim-migrate @ 6809]
Mark Doliner <mark@kingant.net>
parents: 6308
diff changeset
4232
2303
f5bf315e6104 [gaim-migrate @ 2313]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2297
diff changeset
4233 return ret;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4234 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4235
13875
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
4236 /*
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
4237 * As of 26 June 2006, ICQ users can request AIM info from
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
4238 * everyone, and can request ICQ info from ICQ users, and
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
4239 * AIM users can only request AIM info.
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
4240 */
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4241 static void oscar_get_info(GaimConnection *gc, const char *name) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4242 OscarData *od = (OscarData *)gc->proto_data;
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4243
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
4244 if (od->icq && aim_sn_is_icq(name))
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4245 aim_icq_getallinfo(od, name);
2742
6f527cbd899d [gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2734
diff changeset
4246 else
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4247 aim_locate_getinfoshort(od, name, 0x00000003);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4248 }
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4249
8950
80b4c956d7ae [gaim-migrate @ 9722]
Mark Doliner <mark@kingant.net>
parents: 8907
diff changeset
4250 #if 0
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
4251 static void oscar_set_dir(GaimConnection *gc, const char *first, const char *middle, const char *last,
3466
7a3f16a375a5 [gaim-migrate @ 3516]
Sean Egan <seanegan@gmail.com>
parents: 3458
diff changeset
4252 const char *maiden, const char *city, const char *state, const char *country, int web) {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
4253 /* XXX - some of these things are wrong, but i'm lazy */
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4254 OscarData *od = (OscarData *)gc->proto_data;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4255 aim_locate_setdirinfo(od, first, middle, last,
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4256 maiden, NULL, NULL, city, state, NULL, 0, web);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4257 }
8950
80b4c956d7ae [gaim-migrate @ 9722]
Mark Doliner <mark@kingant.net>
parents: 8907
diff changeset
4258 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4259
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4260 static void oscar_set_idle(GaimConnection *gc, int time) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4261 OscarData *od = (OscarData *)gc->proto_data;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4262 aim_srv_setidle(od, time);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4263 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4264
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4265 static
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4266 gchar *gaim_prpl_oscar_convert_to_infotext(const gchar *str, gsize *ret_len, char **encoding)
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4267 {
9807
0c170246a9ec [gaim-migrate @ 10675]
Mark Doliner <mark@kingant.net>
parents: 9806
diff changeset
4268 int charset = 0;
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4269 char *encoded = NULL;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4270
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4271 charset = oscar_charset_check(str);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4272 if (charset == AIM_CHARSET_UNICODE) {
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4273 encoded = g_convert(str, strlen(str), "UCS-2BE", "UTF-8", NULL, ret_len, NULL);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4274 *encoding = "unicode-2-0";
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4275 } else if (charset == AIM_CHARSET_CUSTOM) {
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4276 encoded = g_convert(str, strlen(str), "ISO-8859-1", "UTF-8", NULL, ret_len, NULL);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4277 *encoding = "iso-8859-1";
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4278 } else {
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4279 encoded = g_strdup(str);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4280 *ret_len = strlen(str);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4281 *encoding = "us-ascii";
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4282 }
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4283
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4284 return encoded;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4285 }
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4286
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4287 static void
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4288 oscar_set_info(GaimConnection *gc, const char *rawinfo)
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4289 {
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4290 GaimAccount *account;
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4291 GaimStatus *status;
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4292
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4293 account = gaim_connection_get_account(gc);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4294 status = gaim_account_get_active_status(account);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4295 oscar_set_info_and_status(account, TRUE, rawinfo, FALSE, status);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4296 }
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4297
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4298 static void
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4299 oscar_set_extendedstatus(GaimConnection *gc)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4300 {
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4301 OscarData *od;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4302 GaimAccount *account;
12653
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4303 GaimStatus *status;
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4304 const gchar *status_id;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
4305 guint32 data = 0x00000000;
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4306
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4307 od = gc->proto_data;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4308 account = gaim_connection_get_account(gc);
12653
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4309 status = gaim_account_get_active_status(account);
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4310 status_id = gaim_status_get_id(status);
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4311
12652
e739ace2688b [gaim-migrate @ 14995]
Mark Doliner <mark@kingant.net>
parents: 12645
diff changeset
4312 data |= AIM_ICQ_STATE_HIDEIP;
e739ace2688b [gaim-migrate @ 14995]
Mark Doliner <mark@kingant.net>
parents: 12645
diff changeset
4313 if (gaim_account_get_bool(account, "web_aware", OSCAR_DEFAULT_WEB_AWARE))
e739ace2688b [gaim-migrate @ 14995]
Mark Doliner <mark@kingant.net>
parents: 12645
diff changeset
4314 data |= AIM_ICQ_STATE_WEBAWARE;
e739ace2688b [gaim-migrate @ 14995]
Mark Doliner <mark@kingant.net>
parents: 12645
diff changeset
4315
12653
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4316 if (!strcmp(status_id, OSCAR_STATUS_ID_AVAILABLE) || !strcmp(status_id, OSCAR_STATUS_ID_AVAILABLE))
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4317 data |= AIM_ICQ_STATE_NORMAL;
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4318 else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY))
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4319 data |= AIM_ICQ_STATE_AWAY;
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4320 else if (!strcmp(status_id, OSCAR_STATUS_ID_DND))
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4321 data |= AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_DND | AIM_ICQ_STATE_BUSY;
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4322 else if (!strcmp(status_id, OSCAR_STATUS_ID_NA))
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4323 data |= AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY;
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4324 else if (!strcmp(status_id, OSCAR_STATUS_ID_OCCUPIED))
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4325 data |= AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_BUSY;
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4326 else if (!strcmp(status_id, OSCAR_STATUS_ID_FREE4CHAT))
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4327 data |= AIM_ICQ_STATE_CHAT;
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4328 else if (!strcmp(status_id, OSCAR_STATUS_ID_INVISIBLE))
12652
e739ace2688b [gaim-migrate @ 14995]
Mark Doliner <mark@kingant.net>
parents: 12645
diff changeset
4329 data |= AIM_ICQ_STATE_INVISIBLE;
12653
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4330 else if (!strcmp(status_id, OSCAR_STATUS_ID_CUSTOM))
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4331 data |= AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY;
12652
e739ace2688b [gaim-migrate @ 14995]
Mark Doliner <mark@kingant.net>
parents: 12645
diff changeset
4332
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4333 aim_setextstatus(od, data);
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4334 }
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4335
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4336 static void
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4337 oscar_set_info_and_status(GaimAccount *account, gboolean setinfo, const char *rawinfo,
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4338 gboolean setstatus, GaimStatus *status)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4339 {
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4340 GaimConnection *gc = gaim_account_get_connection(account);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4341 OscarData *od = gc->proto_data;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4342 GaimPresence *presence;
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4343 GaimStatusType *status_type;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4344 GaimStatusPrimitive primitive;
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4345 gboolean invisible;
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4346
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4347 char *htmlinfo;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4348 char *info_encoding = NULL;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4349 char *info = NULL;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4350 gsize infolen = 0;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4351
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4352 const char *htmlaway;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4353 char *away_encoding = NULL;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4354 char *away = NULL;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4355 gsize awaylen = 0;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4356
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4357 status_type = gaim_status_get_type(status);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4358 primitive = gaim_status_type_get_primitive(status_type);
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4359 presence = gaim_account_get_presence(account);
12595
3169cd6727ad [gaim-migrate @ 14925]
Richard Laager <rlaager@wiktel.com>
parents: 12588
diff changeset
4360 invisible = gaim_presence_is_status_primitive_active(presence, GAIM_STATUS_INVISIBLE);
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4361
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4362 if (!setinfo)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4363 {
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4364 /* Do nothing! */
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4365 }
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4366 else if (od->rights.maxsiglen == 0)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4367 {
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4368 gaim_notify_warning(gc, NULL, _("Unable to set AIM profile."),
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4369 _("You have probably requested to set your "
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
4370 "profile before the login procedure completed. "
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4371 "Your profile remains unset; try setting it "
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4372 "again when you are fully connected."));
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4373 }
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4374 else if (rawinfo != NULL)
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4375 {
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4376 htmlinfo = gaim_strdup_withhtml(rawinfo);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4377 info = gaim_prpl_oscar_convert_to_infotext(htmlinfo, &infolen, &info_encoding);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4378 g_free(htmlinfo);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4379
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4380 if (infolen > od->rights.maxsiglen)
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4381 {
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4382 gchar *errstr;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4383 errstr = g_strdup_printf(ngettext("The maximum profile length of %d byte "
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4384 "has been exceeded. Gaim has truncated it for you.",
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4385 "The maximum profile length of %d bytes "
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4386 "has been exceeded. Gaim has truncated it for you.",
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4387 od->rights.maxsiglen), od->rights.maxsiglen);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4388 gaim_notify_warning(gc, NULL, _("Profile too long."), errstr);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4389 g_free(errstr);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4390 }
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4391 }
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4392
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4393 if (!setstatus)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4394 {
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4395 /* Do nothing! */
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4396 }
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4397 else if (primitive == GAIM_STATUS_AVAILABLE)
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4398 {
12349
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
4399 const char *status_html;
13800
5651cf120744 [gaim-migrate @ 16213]
Richard Laager <rlaager@wiktel.com>
parents: 13749
diff changeset
4400 char *status_text = NULL;
12349
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
4401
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
4402 status_html = gaim_status_get_attr_string(status, "message");
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
4403 if (status_html != NULL)
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4404 {
12349
2a1961c1a345 [gaim-migrate @ 14653]
Mark Doliner <mark@kingant.net>
parents: 12347
diff changeset
4405 status_text = gaim_markup_strip_html(status_html);
12617
49499dec9346 [gaim-migrate @ 14953]
Mark Doliner <mark@kingant.net>
parents: 12608
diff changeset
4406 /* If the status_text is longer than 60 character then truncate it */
49499dec9346 [gaim-migrate @ 14953]
Mark Doliner <mark@kingant.net>
parents: 12608
diff changeset
4407 if (strlen(status_text) > 60)
49499dec9346 [gaim-migrate @ 14953]
Mark Doliner <mark@kingant.net>
parents: 12608
diff changeset
4408 {
49499dec9346 [gaim-migrate @ 14953]
Mark Doliner <mark@kingant.net>
parents: 12608
diff changeset
4409 char *tmp = g_utf8_find_prev_char(status_text, &status_text[58]);
49499dec9346 [gaim-migrate @ 14953]
Mark Doliner <mark@kingant.net>
parents: 12608
diff changeset
4410 strcpy(tmp, "...");
49499dec9346 [gaim-migrate @ 14953]
Mark Doliner <mark@kingant.net>
parents: 12608
diff changeset
4411 }
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4412 }
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4413
13800
5651cf120744 [gaim-migrate @ 16213]
Richard Laager <rlaager@wiktel.com>
parents: 13749
diff changeset
4414 aim_srv_setstatusmsg(od, status_text);
5651cf120744 [gaim-migrate @ 16213]
Richard Laager <rlaager@wiktel.com>
parents: 13749
diff changeset
4415 g_free(status_text);
5651cf120744 [gaim-migrate @ 16213]
Richard Laager <rlaager@wiktel.com>
parents: 13749
diff changeset
4416
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4417 /* This is needed for us to un-set any previous away message. */
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4418 away = g_strdup("");
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4419 }
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4420 else if (primitive == GAIM_STATUS_AWAY)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4421 {
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4422 htmlaway = gaim_status_get_attr_string(status, "message");
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4423 if ((htmlaway == NULL) || (*htmlaway == '\0'))
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4424 htmlaway = _("Away");
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4425 away = gaim_prpl_oscar_convert_to_infotext(htmlaway, &awaylen, &away_encoding);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4426
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4427 if (awaylen > od->rights.maxawaymsglen)
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4428 {
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4429 gchar *errstr;
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4430
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4431 errstr = g_strdup_printf(ngettext("The maximum away message length of %d byte "
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4432 "has been exceeded. Gaim has truncated it for you.",
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4433 "The maximum away message length of %d bytes "
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4434 "has been exceeded. Gaim has truncated it for you.",
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4435 od->rights.maxawaymsglen), od->rights.maxawaymsglen);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4436 gaim_notify_warning(gc, NULL, _("Away message too long."), errstr);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4437 g_free(errstr);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4438 }
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4439 }
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4440
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4441 if (setstatus)
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4442 oscar_set_extendedstatus(gc);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4443
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4444 aim_locate_setprofile(od, info_encoding, info, MIN(infolen, od->rights.maxsiglen),
11347
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4445 away_encoding, away, MIN(awaylen, od->rights.maxawaymsglen));
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4446 g_free(info);
6c1ad49fcb4b [gaim-migrate @ 13564]
Mark Doliner <mark@kingant.net>
parents: 11338
diff changeset
4447 g_free(away);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4448 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4449
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
4450 static void
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
4451 oscar_set_status_icq(GaimAccount *account, GaimStatus *status)
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4452 {
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
4453 GaimConnection *gc = gaim_account_get_connection(account);
10646
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
4454 OscarData *od = NULL;
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
4455
10646
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
4456 if (gc)
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
4457 od = (OscarData *)gc->proto_data;
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
4458 if (!od)
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
4459 return;
6a618db0a404 [gaim-migrate @ 12162]
Sean Egan <seanegan@gmail.com>
parents: 10636
diff changeset
4460
12595
3169cd6727ad [gaim-migrate @ 14925]
Richard Laager <rlaager@wiktel.com>
parents: 12588
diff changeset
4461 if (gaim_status_type_get_primitive(gaim_status_get_type(status)) == GAIM_STATUS_INVISIBLE)
11766
fa78d6b8ec7d [gaim-migrate @ 14057]
Mark Doliner <mark@kingant.net>
parents: 11718
diff changeset
4462 account->perm_deny = GAIM_PRIVACY_ALLOW_USERS;
8265
b7ff849f48dd [gaim-migrate @ 8988]
Mark Doliner <mark@kingant.net>
parents: 8257
diff changeset
4463 else
11766
fa78d6b8ec7d [gaim-migrate @ 14057]
Mark Doliner <mark@kingant.net>
parents: 11718
diff changeset
4464 account->perm_deny = GAIM_PRIVACY_DENY_USERS;
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
4465
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4466 if ((od->ssi.received_data) && (aim_ssi_getpermdeny(od->ssi.local) != account->perm_deny))
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4467 aim_ssi_setpermdeny(od, account->perm_deny, 0xffffffff);
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4468
12653
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4469 oscar_set_extendedstatus(gc);
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4470 }
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4471
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
4472 static void
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
4473 oscar_set_status(GaimAccount *account, GaimStatus *status)
2993
7239a392486c [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4474 {
10747
0e6b33463a3a [gaim-migrate @ 12349]
Mark Doliner <mark@kingant.net>
parents: 10740
diff changeset
4475 gaim_debug_info("oscar", "Set status to %s\n", gaim_status_get_name(status));
0e6b33463a3a [gaim-migrate @ 12349]
Mark Doliner <mark@kingant.net>
parents: 10740
diff changeset
4476
10498
aba3000cc50a [gaim-migrate @ 11790]
Mark Doliner <mark@kingant.net>
parents: 10487
diff changeset
4477 if (!gaim_status_is_active(status))
10485
58ab47ed31bf [gaim-migrate @ 11775]
Nathan Walp <nwalp@pidgin.im>
parents: 10475
diff changeset
4478 return;
58ab47ed31bf [gaim-migrate @ 11775]
Nathan Walp <nwalp@pidgin.im>
parents: 10475
diff changeset
4479
11718
11e95968c9ff [gaim-migrate @ 14009]
Mark Doliner <mark@kingant.net>
parents: 11670
diff changeset
4480 if (!gaim_account_is_connected(account))
11e95968c9ff [gaim-migrate @ 14009]
Mark Doliner <mark@kingant.net>
parents: 11670
diff changeset
4481 return;
11e95968c9ff [gaim-migrate @ 14009]
Mark Doliner <mark@kingant.net>
parents: 11670
diff changeset
4482
12653
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4483 /* Set the AIM-style away message for both AIM and ICQ accounts */
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4484 oscar_set_info_and_status(account, FALSE, NULL, TRUE, status);
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4485
afaee008da9f [gaim-migrate @ 14996]
Mark Doliner <mark@kingant.net>
parents: 12652
diff changeset
4486 /* Set the ICQ status for ICQ accounts only */
11718
11e95968c9ff [gaim-migrate @ 14009]
Mark Doliner <mark@kingant.net>
parents: 11670
diff changeset
4487 if (aim_sn_is_icq(gaim_account_get_username(account)))
11e95968c9ff [gaim-migrate @ 14009]
Mark Doliner <mark@kingant.net>
parents: 11670
diff changeset
4488 oscar_set_status_icq(account, status);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4489 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4490
11285
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
4491 #ifdef CRAZY_WARN
9991
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
4492 static void
cc4b2125d05d [gaim-migrate @ 10904]
Mark Doliner <mark@kingant.net>
parents: 9988
diff changeset
4493 oscar_warn(GaimConnection *gc, const char *name, gboolean anonymous) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4494 OscarData *od = (OscarData *)gc->proto_data;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4495 aim_im_warn(od, od->conn, name, anonymous ? AIM_WARN_ANON : 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4496 }
11285
bcd7bd6a42dd [gaim-migrate @ 13482]
Mark Doliner <mark@kingant.net>
parents: 11257
diff changeset
4497 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4498
10747
0e6b33463a3a [gaim-migrate @ 12349]
Mark Doliner <mark@kingant.net>
parents: 10740
diff changeset
4499 static void
0e6b33463a3a [gaim-migrate @ 12349]
Mark Doliner <mark@kingant.net>
parents: 10740
diff changeset
4500 oscar_add_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4501 OscarData *od = (OscarData *)gc->proto_data;
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4502
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4503 if (!aim_snvalid(buddy->name)) {
8092
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
4504 gchar *buf;
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
4505 buf = g_strdup_printf(_("Could not add the buddy %s because the screen name is invalid. Screen names must either start with a letter and contain only letters, numbers and spaces, or contain only numbers."), buddy->name);
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
4506 if (!gaim_conv_present_error(buddy->name, gaim_connection_get_account(gc), buf))
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
4507 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
8092
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
4508 g_free(buf);
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4509
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4510 /* Remove from local list */
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4511 gaim_blist_remove_buddy(buddy);
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4512
8092
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
4513 return;
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
4514 }
697221d5d0ff [gaim-migrate @ 8791]
Mark Doliner <mark@kingant.net>
parents: 8077
diff changeset
4515
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4516 if ((od->ssi.received_data) && !(aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))) {
13654
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
4517 gaim_debug_info("oscar",
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
4518 "ssi: adding buddy %s to group %s\n", buddy->name, group->name);
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
4519 aim_ssi_addbuddy(od, buddy->name, group->name, gaim_buddy_get_alias_only(buddy), NULL, NULL, 0);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4520 }
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4521
10157
0de7eee583e6 [gaim-migrate @ 11237]
Mark Doliner <mark@kingant.net>
parents: 10152
diff changeset
4522 /* XXX - Should this be done from AIM accounts, as well? */
4759
1762496d502a [gaim-migrate @ 5076]
Mark Doliner <mark@kingant.net>
parents: 4754
diff changeset
4523 if (od->icq)
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4524 aim_icq_getalias(od, buddy->name);
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4525 }
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4526
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4527 static void oscar_remove_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4528 OscarData *od = (OscarData *)gc->proto_data;
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4529
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4530 if (od->ssi.received_data) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4531 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4532 "ssi: deleting buddy %s from group %s\n", buddy->name, group->name);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4533 aim_ssi_delbuddy(od, buddy->name, group->name);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4534 }
10866
f38bda97f981 [gaim-migrate @ 12552]
Mark Doliner <mark@kingant.net>
parents: 10860
diff changeset
4535 }
f38bda97f981 [gaim-migrate @ 12552]
Mark Doliner <mark@kingant.net>
parents: 10860
diff changeset
4536
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4537 static void oscar_move_buddy(GaimConnection *gc, const char *name, const char *old_group, const char *new_group) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4538 OscarData *od = (OscarData *)gc->proto_data;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4539 if (od->ssi.received_data && strcmp(old_group, new_group)) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4540 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4541 "ssi: moving buddy %s from group %s to group %s\n", name, old_group, new_group);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4542 aim_ssi_movebuddy(od, old_group, new_group, name);
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4543 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4544 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4545
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4546 static void oscar_alias_buddy(GaimConnection *gc, const char *name, const char *alias) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
4547 OscarData *od = (OscarData *)gc->proto_data;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4548 if (od->ssi.received_data) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4549 char *gname = aim_ssi_itemlist_findparentname(od->ssi.local, name);
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4550 if (gname) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4551 gaim_debug_info("oscar",
9586
70fe6ef5d3a3 [gaim-migrate @ 10429]
Luke Schierer <lschiere@pidgin.im>
parents: 9554
diff changeset
4552 "ssi: changing the alias for buddy %s to %s\n", name, alias ? alias : "(none)");
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4553 aim_ssi_aliasbuddy(od, gname, name, alias);
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4554 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4555 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4556 }
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4557
11005
bb7fd9359f9e [gaim-migrate @ 12864]
Mark Doliner <mark@kingant.net>
parents: 11002
diff changeset
4558 /*
bb7fd9359f9e [gaim-migrate @ 12864]
Mark Doliner <mark@kingant.net>
parents: 11002
diff changeset
4559 * FYI, the OSCAR SSI code removes empty groups automatically.
bb7fd9359f9e [gaim-migrate @ 12864]
Mark Doliner <mark@kingant.net>
parents: 11002
diff changeset
4560 */
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4561 static void oscar_rename_group(GaimConnection *gc, const char *old_name, GaimGroup *group, GList *moved_buddies) {
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4562 OscarData *od = (OscarData *)gc->proto_data;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4563
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4564 if (od->ssi.received_data) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4565 if (aim_ssi_itemlist_finditem(od->ssi.local, group->name, NULL, AIM_SSI_TYPE_GROUP)) {
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4566 GList *cur, *groups = NULL;
11643
eb14bbcf7249 [gaim-migrate @ 13920]
Mark Doliner <mark@kingant.net>
parents: 11623
diff changeset
4567 GaimAccount *account = gaim_connection_get_account(gc);
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4568
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4569 /* Make a list of what the groups each buddy is in */
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4570 for (cur = moved_buddies; cur != NULL; cur = cur->next) {
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4571 GaimBlistNode *node = cur->data;
11002
bf03a5271395 [gaim-migrate @ 12857]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10949
diff changeset
4572 /* node is GaimBuddy, parent is a GaimContact.
bf03a5271395 [gaim-migrate @ 12857]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10949
diff changeset
4573 * We must go two levels up to get the Group */
bf03a5271395 [gaim-migrate @ 12857]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10949
diff changeset
4574 groups = g_list_append(groups,
bf03a5271395 [gaim-migrate @ 12857]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10949
diff changeset
4575 node->parent->parent);
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4576 }
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4577
11643
eb14bbcf7249 [gaim-migrate @ 13920]
Mark Doliner <mark@kingant.net>
parents: 11623
diff changeset
4578 gaim_account_remove_buddies(account, moved_buddies, groups);
eb14bbcf7249 [gaim-migrate @ 13920]
Mark Doliner <mark@kingant.net>
parents: 11623
diff changeset
4579 gaim_account_add_buddies(account, moved_buddies);
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4580 g_list_free(groups);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4581 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4582 "ssi: moved all buddies from group %s to %s\n", old_name, group->name);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4583 } else {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4584 aim_ssi_rename_group(od, old_name, group->name);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4585 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4586 "ssi: renamed group %s to %s\n", old_name, group->name);
2995
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
4587 }
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
4588 }
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
4589 }
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
4590
5968
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
4591 static gboolean gaim_ssi_rerequestdata(gpointer data) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4592 OscarData *od = data;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4593
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4594 aim_ssi_reqdata(od);
12663
09a241749828 [gaim-migrate @ 15006]
Mark Doliner <mark@kingant.net>
parents: 12662
diff changeset
4595
13060
cb66695da326 [gaim-migrate @ 15422]
Mark Doliner <mark@kingant.net>
parents: 13008
diff changeset
4596 return TRUE;
5968
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
4597 }
aef0c3489837 [gaim-migrate @ 6415]
Mark Doliner <mark@kingant.net>
parents: 5954
diff changeset
4598
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4599 static int gaim_ssi_parseerr(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4600 GaimConnection *gc = od->gc;
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4601 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
4602 guint16 reason;
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4603
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4604 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
4605 reason = (guint16)va_arg(ap, unsigned int);
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4606 va_end(ap);
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4607
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4608 gaim_debug_error("oscar", "ssi: SNAC error %hu\n", reason);
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4609
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4610 if (reason == 0x0005) {
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
4611 gaim_notify_error(gc, NULL, _("Unable To Retrieve Buddy List"),
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
4612 _("Gaim was temporarily unable to retrieve your buddy list from the AIM servers. Your buddy list is not lost, and will probably become available in a few hours."));
12663
09a241749828 [gaim-migrate @ 15006]
Mark Doliner <mark@kingant.net>
parents: 12662
diff changeset
4613 if (od->getblisttimer > 0)
09a241749828 [gaim-migrate @ 15006]
Mark Doliner <mark@kingant.net>
parents: 12662
diff changeset
4614 gaim_timeout_remove(od->getblisttimer);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4615 od->getblisttimer = gaim_timeout_add(30000, gaim_ssi_rerequestdata, od);
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4616 }
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4617
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4618 oscar_set_extendedstatus(gc);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4619
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4620 /* Activate SSI */
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4621 /* Sending the enable causes other people to be able to see you, and you to see them */
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4622 /* Make sure your privacy setting/invisibility is set how you want it before this! */
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4623 gaim_debug_info("oscar", "ssi: activating server-stored buddy list\n");
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4624 aim_ssi_enable(od);
4642
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4625
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4626 return 1;
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4627 }
c0abcd675ca6 [gaim-migrate @ 4952]
Mark Doliner <mark@kingant.net>
parents: 4641
diff changeset
4628
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4629 static int gaim_ssi_parserights(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
9982
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
4630 int i;
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
4631 va_list ap;
8db453e87678 [gaim-migrate @ 10893]
Mark Doliner <mark@kingant.net>
parents: 9976
diff changeset
4632 int numtypes;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
4633 guint16 *maxitems;
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4634
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4635 va_start(ap, fr);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4636 numtypes = va_arg(ap, int);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
4637 maxitems = va_arg(ap, guint16 *);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4638 va_end(ap);
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4639
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4640 gaim_debug_misc("oscar", "ssi rights:");
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
4641
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4642 for (i=0; i<numtypes; i++)
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4643 gaim_debug_misc(NULL, " max type 0x%04x=%hd,",
5211
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
4644 i, maxitems[i]);
0241d6b6702d [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
4645
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4646 gaim_debug_misc(NULL, "\n");
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4647
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4648 if (numtypes >= 0)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4649 od->rights.maxbuddies = maxitems[0];
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4650 if (numtypes >= 1)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4651 od->rights.maxgroups = maxitems[1];
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4652 if (numtypes >= 2)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4653 od->rights.maxpermits = maxitems[2];
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4654 if (numtypes >= 3)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4655 od->rights.maxdenies = maxitems[3];
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4656
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4657 return 1;
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4658 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4659
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4660 static int gaim_ssi_parselist(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4661 {
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4662 GaimConnection *gc;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4663 GaimAccount *account;
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4664 GaimGroup *g;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4665 GaimBuddy *b;
2995
e27517a5c28e [gaim-migrate @ 3008]
Sean Egan <seanegan@gmail.com>
parents: 2994
diff changeset
4666 struct aim_ssi_item *curitem;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
4667 guint32 tmp;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4668 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
4669 guint16 fmtver, numitems;
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
4670 guint32 timestamp;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4671
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4672 gc = od->gc;
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4673 od = gc->proto_data;
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4674 account = gaim_connection_get_account(gc);
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4675
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4676 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
4677 fmtver = (guint16)va_arg(ap, int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
4678 numitems = (guint16)va_arg(ap, int);
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
4679 timestamp = va_arg(ap, guint32);
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
4680 va_end(ap);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4681
12663
09a241749828 [gaim-migrate @ 15006]
Mark Doliner <mark@kingant.net>
parents: 12662
diff changeset
4682 /* Don't attempt to re-request our buddy list later */
09a241749828 [gaim-migrate @ 15006]
Mark Doliner <mark@kingant.net>
parents: 12662
diff changeset
4683 if (od->getblisttimer != 0)
09a241749828 [gaim-migrate @ 15006]
Mark Doliner <mark@kingant.net>
parents: 12662
diff changeset
4684 gaim_timeout_remove(od->getblisttimer);
09a241749828 [gaim-migrate @ 15006]
Mark Doliner <mark@kingant.net>
parents: 12662
diff changeset
4685 od->getblisttimer = 0;
09a241749828 [gaim-migrate @ 15006]
Mark Doliner <mark@kingant.net>
parents: 12662
diff changeset
4686
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4687 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4688 "ssi: syncing local list and server list\n");
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4689
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
4690 if ((timestamp == 0) || (numitems == 0)) {
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
4691 gaim_debug_info("oscar", "Got AIM SSI with a 0 timestamp or 0 numitems--not syncing. This probably means your buddy list is empty.", NULL);
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
4692 return 1;
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
4693 }
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
4694
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4695 /* Clean the buddy list */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4696 aim_ssi_cleanlist(od);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4697
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4698 { /* If not in server list then prune from local list */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4699 GaimBlistNode *gnode, *cnode, *bnode;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4700 GaimBuddyList *blist;
9539
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
4701 GSList *cur, *next;
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4702
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4703 /* Buddies */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4704 cur = NULL;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4705 if ((blist = gaim_get_blist()) != NULL) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4706 for (gnode = blist->root; gnode; gnode = gnode->next) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4707 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4708 continue;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4709 g = (GaimGroup *)gnode;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4710 for (cnode = gnode->child; cnode; cnode = cnode->next) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4711 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4712 continue;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4713 for (bnode = cnode->child; bnode; bnode = bnode->next) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4714 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4715 continue;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4716 b = (GaimBuddy *)bnode;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4717 if (b->account == gc->account) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4718 if (aim_ssi_itemlist_exists(od->ssi.local, b->name)) {
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4719 /* If the buddy is an ICQ user then load his nickname */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4720 const char *servernick = gaim_blist_node_get_string((GaimBlistNode*)b, "servernick");
8214
3418a6d51464 [gaim-migrate @ 8937]
Nathan Walp <nwalp@pidgin.im>
parents: 8175
diff changeset
4721 char *alias;
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4722 if (servernick)
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4723 serv_got_alias(gc, b->name, servernick);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4724
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4725 /* Store local alias on server */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4726 alias = aim_ssi_getalias(od->ssi.local, g->name, b->name);
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4727 if (!alias && b->alias && strlen(b->alias))
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4728 aim_ssi_aliasbuddy(od, g->name, b->name, b->alias);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4729 g_free(alias);
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4730 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4731 gaim_debug_info("oscar",
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4732 "ssi: removing buddy %s from local list\n", b->name);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4733 /* We can't actually remove now because it will screw up our looping */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4734 cur = g_slist_prepend(cur, b);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4735 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4736 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4737 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4738 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4739 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4740 }
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
4741
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4742 while (cur != NULL) {
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4743 b = cur->data;
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4744 cur = g_slist_remove(cur, b);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4745 gaim_blist_remove_buddy(b);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4746 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4747
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4748 /* Permit list */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4749 if (gc->account->permit) {
9539
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
4750 next = gc->account->permit;
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
4751 while (next != NULL) {
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
4752 cur = next;
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
4753 next = next->next;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4754 if (!aim_ssi_itemlist_finditem(od->ssi.local, NULL, cur->data, AIM_SSI_TYPE_PERMIT)) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4755 gaim_debug_info("oscar",
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4756 "ssi: removing permit %s from local list\n", (const char *)cur->data);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4757 gaim_privacy_permit_remove(account, cur->data, TRUE);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4758 }
9539
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
4759 }
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4760 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4761
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4762 /* Deny list */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4763 if (gc->account->deny) {
9539
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
4764 next = gc->account->deny;
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
4765 while (next != NULL) {
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
4766 cur = next;
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
4767 next = next->next;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4768 if (!aim_ssi_itemlist_finditem(od->ssi.local, NULL, cur->data, AIM_SSI_TYPE_DENY)) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4769 gaim_debug_info("oscar",
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4770 "ssi: removing deny %s from local list\n", (const char *)cur->data);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4771 gaim_privacy_deny_remove(account, cur->data, TRUE);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4772 }
9539
e8611c712d0a [gaim-migrate @ 10367]
Mark Doliner <mark@kingant.net>
parents: 9532
diff changeset
4773 }
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4774 }
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4775 /* Presence settings (idle time visibility) */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4776 if ((tmp = aim_ssi_getpresence(od->ssi.local)) != 0xFFFFFFFF)
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4777 if (!(tmp & 0x400))
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4778 aim_ssi_setpresence(od, tmp | 0x400);
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4779 } /* end pruning buddies from local list */
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4780
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4781 /* Add from server list to local list */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4782 for (curitem=od->ssi.local; curitem; curitem=curitem->next) {
7328
3bcd867c22f3 [gaim-migrate @ 7914]
Mark Doliner <mark@kingant.net>
parents: 7313
diff changeset
4783 if ((curitem->name == NULL) || (g_utf8_validate(curitem->name, -1, NULL)))
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4784 switch (curitem->type) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4785 case 0x0000: { /* Buddy */
4251
f68c4203d001 [gaim-migrate @ 4501]
Mark Doliner <mark@kingant.net>
parents: 4249
diff changeset
4786 if (curitem->name) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4787 char *gname = aim_ssi_itemlist_findparentname(od->ssi.local, curitem->name);
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
4788 char *gname_utf8 = gname ? oscar_utf8_try_convert(gc->account, gname) : NULL;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4789 char *alias = aim_ssi_getalias(od->ssi.local, gname, curitem->name);
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
4790 char *alias_utf8 = alias ? oscar_utf8_try_convert(gc->account, alias) : NULL;
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4791 b = gaim_find_buddy(gc->account, curitem->name);
4458
a46c57f2d58b [gaim-migrate @ 4733]
Luke Schierer <lschiere@pidgin.im>
parents: 4452
diff changeset
4792 /* Should gname be freed here? -- elb */
4754
ced41239ffd3 [gaim-migrate @ 5071]
Mark Doliner <mark@kingant.net>
parents: 4744
diff changeset
4793 /* Not with the current code, but that might be cleaner -- med */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4794 g_free(alias);
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4795 if (b) {
4292
78a3d2caf84c [gaim-migrate @ 4545]
Mark Doliner <mark@kingant.net>
parents: 4282
diff changeset
4796 /* Get server stored alias */
4705
e34fe984f999 [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
4797 if (alias_utf8) {
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4798 g_free(b->alias);
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4799 b->alias = g_strdup(alias_utf8);
4705
e34fe984f999 [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
4800 }
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4801 } else {
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4802 b = gaim_buddy_new(gc->account, curitem->name, alias_utf8);
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
4803
4754
ced41239ffd3 [gaim-migrate @ 5071]
Mark Doliner <mark@kingant.net>
parents: 4744
diff changeset
4804 if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) {
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
4805 g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans"));
4754
ced41239ffd3 [gaim-migrate @ 5071]
Mark Doliner <mark@kingant.net>
parents: 4744
diff changeset
4806 gaim_blist_add_group(g, NULL);
ced41239ffd3 [gaim-migrate @ 5071]
Mark Doliner <mark@kingant.net>
parents: 4744
diff changeset
4807 }
5146
ac9ca88d4b25 [gaim-migrate @ 5510]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
4808
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4809 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4810 "ssi: adding buddy %s to group %s to local list\n", curitem->name, gname_utf8 ? gname_utf8 : _("Orphans"));
8150
20262ccefdd8 [gaim-migrate @ 8862]
Mark Doliner <mark@kingant.net>
parents: 8143
diff changeset
4811 gaim_blist_add_buddy(b, NULL, g, NULL);
4251
f68c4203d001 [gaim-migrate @ 4501]
Mark Doliner <mark@kingant.net>
parents: 4249
diff changeset
4812 }
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4813 if (!aim_sncmp(curitem->name, account->username)) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4814 char *comment = aim_ssi_getcomment(od->ssi.local, gname, curitem->name);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4815 gaim_check_comment(od, comment);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4816 g_free(comment);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
4817 }
7162
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
4818 g_free(gname_utf8);
d14e026611c0 [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
4819 g_free(alias_utf8);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4820 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4821 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4822
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4823 case 0x0001: { /* Group */
4282
aa20cc16dc08 [gaim-migrate @ 4533]
Mark Doliner <mark@kingant.net>
parents: 4276
diff changeset
4824 /* Shouldn't add empty groups */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4825 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4826
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4827 case 0x0002: { /* Permit buddy */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4828 if (curitem->name) {
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4829 /* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4830 GSList *list;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4831 for (list=account->permit; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4832 if (!list) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4833 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4834 "ssi: adding permit buddy %s to local list\n", curitem->name);
6400
588e88bcdac5 [gaim-migrate @ 6905]
Christian Hammond <chipx86@chipx86.com>
parents: 6378
diff changeset
4835 gaim_privacy_permit_add(account, curitem->name, TRUE);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4836 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4837 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4838 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4839
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4840 case 0x0003: { /* Deny buddy */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4841 if (curitem->name) {
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4842 GSList *list;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4843 for (list=account->deny; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4844 if (!list) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4845 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4846 "ssi: adding deny buddy %s to local list\n", curitem->name);
6400
588e88bcdac5 [gaim-migrate @ 6905]
Christian Hammond <chipx86@chipx86.com>
parents: 6378
diff changeset
4847 gaim_privacy_deny_add(account, curitem->name, TRUE);
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4848 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4849 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4850 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4851
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4852 case 0x0004: { /* Permit/deny setting */
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4853 if (curitem->data) {
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
4854 guint8 permdeny;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4855 if ((permdeny = aim_ssi_getpermdeny(od->ssi.local)) && (permdeny != account->perm_deny)) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4856 gaim_debug_info("oscar",
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4857 "ssi: changing permdeny from %d to %hhu\n", account->perm_deny, permdeny);
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
4858 account->perm_deny = permdeny;
11766
fa78d6b8ec7d [gaim-migrate @ 14057]
Mark Doliner <mark@kingant.net>
parents: 11718
diff changeset
4859 if (od->icq && account->perm_deny == GAIM_PRIVACY_ALLOW_USERS) {
fa78d6b8ec7d [gaim-migrate @ 14057]
Mark Doliner <mark@kingant.net>
parents: 11718
diff changeset
4860 gaim_presence_set_status_active(account->presence, OSCAR_STATUS_ID_INVISIBLE, TRUE);
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4861 }
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4862 }
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4863 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4864 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4865
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4866 case 0x0005: { /* Presence setting */
3109
51f49dcbd14b [gaim-migrate @ 3123]
Sean Egan <seanegan@gmail.com>
parents: 3106
diff changeset
4867 /* We don't want to change Gaim's setting because it applies to all accounts */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4868 } break;
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4869 } /* End of switch on curitem->type */
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4870 } /* End of for loop */
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4871
11965
bcdc6eba1700 [gaim-migrate @ 14256]
Mark Doliner <mark@kingant.net>
parents: 11920
diff changeset
4872 oscar_set_extendedstatus(gc);
4901
ad589b887af9 [gaim-migrate @ 5235]
Mark Doliner <mark@kingant.net>
parents: 4898
diff changeset
4873
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4874 /* Activate SSI */
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4875 /* Sending the enable causes other people to be able to see you, and you to see them */
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4876 /* Make sure your privacy setting/invisibility is set how you want it before this! */
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4877 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4878 "ssi: activating server-stored buddy list\n");
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4879 aim_ssi_enable(od);
4342
051265d35a36 [gaim-migrate @ 4607]
Mark Doliner <mark@kingant.net>
parents: 4337
diff changeset
4880
2991
9d11dbb33b6f [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4881 return 1;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4882 }
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4883
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4884 static int gaim_ssi_parseack(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4885 GaimConnection *gc = od->gc;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4886 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4887 struct aim_ssi_tmp *retval;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4888
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4889 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4890 retval = va_arg(ap, struct aim_ssi_tmp *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4891 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4892
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4893 while (retval) {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4894 gaim_debug_misc("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4895 "ssi: status is 0x%04hx for a 0x%04hx action with name %s\n", retval->ack, retval->action, retval->item ? (retval->item->name ? retval->item->name : "no name") : "no item");
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4896
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4897 if (retval->ack != 0xffff)
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4898 switch (retval->ack) {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4899 case 0x0000: { /* added successfully */
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4900 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4901
4829
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
4902 case 0x000c: { /* you are over the limit, the cheat is to the limit, come on fhqwhgads */
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
4903 gchar *buf;
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
4904 buf = g_strdup_printf(_("Could not add the buddy %s because you have too many buddies in your buddy list. Please remove one and try again."), (retval->name ? retval->name : _("(no name)")));
9758
4f2b50a06224 [gaim-migrate @ 10625]
Mark Doliner <mark@kingant.net>
parents: 9754
diff changeset
4905 if ((retval->name != NULL) && !gaim_conv_present_error(retval->name, gaim_connection_get_account(gc), buf))
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
4906 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
4829
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
4907 g_free(buf);
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
4908 }
e7e45cee4265 [gaim-migrate @ 5154]
Mark Doliner <mark@kingant.net>
parents: 4828
diff changeset
4909
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
4910 case 0x000e: { /* buddy requires authorization */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4911 if ((retval->action == SNAC_SUBTYPE_FEEDBAG_ADD) && (retval->name))
4269
ff0642fab1d5 [gaim-migrate @ 4520]
Mark Doliner <mark@kingant.net>
parents: 4251
diff changeset
4912 gaim_auth_sendrequest(gc, retval->name);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4913 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4914
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4915 default: { /* La la la */
5197
f2cd55078be3 [gaim-migrate @ 5563]
Mark Doliner <mark@kingant.net>
parents: 5167
diff changeset
4916 gchar *buf;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4917 gaim_debug_error("oscar", "ssi: Action 0x%04hx was unsuccessful with error 0x%04hx\n", retval->action, retval->ack);
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
4918 buf = g_strdup_printf(_("Could not add the buddy %s for an unknown reason. The most common reason for this is that you have the maximum number of allowed buddies in your buddy list."), (retval->name ? retval->name : _("(no name)")));
9758
4f2b50a06224 [gaim-migrate @ 10625]
Mark Doliner <mark@kingant.net>
parents: 9754
diff changeset
4919 if ((retval->name != NULL) && !gaim_conv_present_error(retval->name, gaim_connection_get_account(gc), buf))
9627
8a540b8a5f70 [gaim-migrate @ 10471]
Sean Egan <seanegan@gmail.com>
parents: 9626
diff changeset
4920 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
5197
f2cd55078be3 [gaim-migrate @ 5563]
Mark Doliner <mark@kingant.net>
parents: 5167
diff changeset
4921 g_free(buf);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4922 } break;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4923 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4924
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4925 retval = retval->next;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4926 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4927
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4928 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4929 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4930
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4931 static int gaim_ssi_parseadd(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4932 GaimConnection *gc = od->gc;
8227
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4933 char *gname, *gname_utf8, *alias, *alias_utf8;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4934 GaimBuddy *b;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4935 GaimGroup *g;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4936 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
4937 guint16 type;
8227
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4938 const char *name;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4939
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4940 va_start(ap, fr);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
4941 type = (guint16)va_arg(ap, int);
8227
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4942 name = va_arg(ap, char *);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4943 va_end(ap);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4944
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4945 if ((type != 0x0000) || (name == NULL))
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4946 return 1;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4947
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4948 gname = aim_ssi_itemlist_findparentname(od->ssi.local, name);
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
4949 gname_utf8 = gname ? oscar_utf8_try_convert(gc->account, gname) : NULL;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4950 alias = aim_ssi_getalias(od->ssi.local, gname, name);
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
4951 alias_utf8 = alias ? oscar_utf8_try_convert(gc->account, alias) : NULL;
8227
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4952 b = gaim_find_buddy(gc->account, name);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4953 g_free(alias);
8227
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4954
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4955 if (b) {
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4956 /* Get server stored alias */
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4957 if (alias_utf8) {
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4958 g_free(b->alias);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4959 b->alias = g_strdup(alias_utf8);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4960 }
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4961 } else {
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4962 b = gaim_buddy_new(gc->account, name, alias_utf8);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4963
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4964 if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) {
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4965 g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans"));
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4966 gaim_blist_add_group(g, NULL);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4967 }
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4968
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4969 gaim_debug_info("oscar",
9285
7a8aa87164ae [gaim-migrate @ 10088]
Mark Doliner <mark@kingant.net>
parents: 9244
diff changeset
4970 "ssi: adding buddy %s to group %s to local list\n", name, gname_utf8 ? gname_utf8 : _("Orphans"));
8227
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4971 gaim_blist_add_buddy(b, NULL, g, NULL);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4972 }
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4973 g_free(gname_utf8);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4974 g_free(alias_utf8);
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4975
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4976 return 1;
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4977 }
b01822d23da3 [gaim-migrate @ 8950]
Mark Doliner <mark@kingant.net>
parents: 8225
diff changeset
4978
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4979 static int gaim_ssi_authgiven(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
4980 GaimConnection *gc = od->gc;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4981 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4982 char *sn, *msg;
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
4983 gchar *dialog_msg, *nombre;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4984 struct name_data *data;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4985 GaimBuddy *buddy;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4986
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4987 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4988 sn = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4989 msg = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4990 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4991
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
4992 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4993 "ssi: %s has given you permission to add him to your buddy list\n", sn);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
4994
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
4995 buddy = gaim_find_buddy(gc->account, sn);
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
4996 if (buddy && (gaim_buddy_get_alias_only(buddy)))
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
4997 nombre = g_strdup_printf("%s (%s)", sn, gaim_buddy_get_alias_only(buddy));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
4998 else
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
4999 nombre = g_strdup(sn);
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5000
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
5001 dialog_msg = g_strdup_printf(_("The user %s has given you permission to add you to their buddy list. Do you want to add them?"), nombre);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5002 data = g_new(struct name_data, 1);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5003 data->gc = gc;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5004 data->name = g_strdup(sn);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5005 data->nick = NULL;
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5006
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5007 gaim_request_yes_no(gc, NULL, _("Authorization Given"), dialog_msg,
10116
9f358a718f38 [gaim-migrate @ 11153]
Stu Tomlinson <stu@nosnilmot.com>
parents: 10111
diff changeset
5008 GAIM_DEFAULT_ACTION_NONE, data,
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
5009 G_CALLBACK(gaim_icq_buddyadd),
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
5010 G_CALLBACK(oscar_free_name_data));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5011
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5012 g_free(dialog_msg);
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5013 g_free(nombre);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5014
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5015 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5016 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5017
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5018 static int gaim_ssi_authrequest(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5019 GaimConnection *gc = od->gc;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5020 va_list ap;
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
5021 char *sn;
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
5022 char *msg;
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
5023 GaimAccount *account = gaim_connection_get_account(gc);
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
5024 gchar *nombre;
11567
603a0e626332 [gaim-migrate @ 13834]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11537
diff changeset
5025 gchar *reason = NULL;
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
5026 gchar *dialog_msg;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5027 struct name_data *data;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5028 GaimBuddy *buddy;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5029
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5030 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5031 sn = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5032 msg = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5033 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5034
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5035 gaim_debug_info("oscar",
5219
e807abdcee83 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5036 "ssi: received authorization request from %s\n", sn);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5037
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
5038 buddy = gaim_find_buddy(account, sn);
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
5039 if (buddy && (gaim_buddy_get_alias_only(buddy)))
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
5040 nombre = g_strdup_printf("%s (%s)", sn, gaim_buddy_get_alias_only(buddy));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5041 else
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5042 nombre = g_strdup(sn);
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5043
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
5044 if (msg != NULL)
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
5045 reason = gaim_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg, strlen(msg));
11567
603a0e626332 [gaim-migrate @ 13834]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11537
diff changeset
5046
603a0e626332 [gaim-migrate @ 13834]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 11537
diff changeset
5047 if (reason == NULL)
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
5048 reason = g_strdup(_("No reason given."));
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
5049
10949
1adca5a37fb8 [gaim-migrate @ 12749]
Mark Doliner <mark@kingant.net>
parents: 10866
diff changeset
5050 dialog_msg = g_strdup_printf(
13381
d1b29fb3b6d0 [gaim-migrate @ 15754]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 13356
diff changeset
5051 _("The user %s wants to add %s to their buddy list for the following reason:\n%s"),
11102
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
5052 nombre, gaim_account_get_username(account), reason);
eac408c8900f [gaim-migrate @ 13142]
Richard Laager <rlaager@wiktel.com>
parents: 11084
diff changeset
5053 g_free(reason);
10949
1adca5a37fb8 [gaim-migrate @ 12749]
Mark Doliner <mark@kingant.net>
parents: 10866
diff changeset
5054
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5055 data = g_new(struct name_data, 1);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5056 data->gc = gc;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5057 data->name = g_strdup(sn);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5058 data->nick = NULL;
5498
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5059
cce2d7868c78 [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5060 gaim_request_action(gc, NULL, _("Authorization Request"), dialog_msg,
9972
2c7c6bdb938b [gaim-migrate @ 10883]
Mark Doliner <mark@kingant.net>
parents: 9971
diff changeset
5061 GAIM_DEFAULT_ACTION_NONE, data, 2,
12603
e4e47871c373 [gaim-migrate @ 14938]
Richard Laager <rlaager@wiktel.com>
parents: 12600
diff changeset
5062 _("_Authorize"), G_CALLBACK(gaim_auth_grant),
e4e47871c373 [gaim-migrate @ 14938]
Richard Laager <rlaager@wiktel.com>
parents: 12600
diff changeset
5063 _("_Deny"), G_CALLBACK(gaim_auth_dontgrant_msgprompt));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5064
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5065 g_free(dialog_msg);
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5066 g_free(nombre);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5067
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5068 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5069 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5070
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5071 static int gaim_ssi_authreply(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5072 GaimConnection *gc = od->gc;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5073 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5074 char *sn, *msg;
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5075 gchar *dialog_msg, *nombre;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
5076 guint8 reply;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5077 GaimBuddy *buddy;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5078
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5079 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5080 sn = va_arg(ap, char *);
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
5081 reply = (guint8)va_arg(ap, int);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5082 msg = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5083 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5084
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5085 gaim_debug_info("oscar",
10816
c94f40ffcafb [gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents: 10812
diff changeset
5086 "ssi: received authorization reply from %s. Reply is 0x%04hhx\n", sn, reply);
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5087
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5088 buddy = gaim_find_buddy(gc->account, sn);
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
5089 if (buddy && (gaim_buddy_get_alias_only(buddy)))
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
5090 nombre = g_strdup_printf("%s (%s)", sn, gaim_buddy_get_alias_only(buddy));
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5091 else
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5092 nombre = g_strdup(sn);
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5093
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5094 if (reply) {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5095 /* Granted */
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
5096 dialog_msg = g_strdup_printf(_("The user %s has granted your request to add them to your buddy list."), nombre);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5097 gaim_notify_info(gc, NULL, _("Authorization Granted"), dialog_msg);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5098 } else {
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5099 /* Denied */
7023
bbf4710e342f [gaim-migrate @ 7586]
Mark Doliner <mark@kingant.net>
parents: 7015
diff changeset
5100 dialog_msg = g_strdup_printf(_("The user %s has denied your request to add them to your buddy list for the following reason:\n%s"), nombre, msg ? msg : _("No reason given."));
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5101 gaim_notify_info(gc, NULL, _("Authorization Denied"), dialog_msg);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5102 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5103 g_free(dialog_msg);
4236
9641bd9c79f5 [gaim-migrate @ 4482]
Mark Doliner <mark@kingant.net>
parents: 4233
diff changeset
5104 g_free(nombre);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5105
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5106 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5107 }
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5108
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5109 static int gaim_ssi_gotadded(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5110 GaimConnection *gc = od->gc;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5111 va_list ap;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5112 char *sn;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5113 GaimBuddy *buddy;
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5114
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5115 va_start(ap, fr);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5116 sn = va_arg(ap, char *);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5117 va_end(ap);
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5118
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5119 buddy = gaim_find_buddy(gc->account, sn);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5120 gaim_debug_info("oscar", "ssi: %s added you to their buddy list\n", sn);
13749
e4a4983752a9 [gaim-migrate @ 16160]
Mark Doliner <mark@kingant.net>
parents: 13732
diff changeset
5121 gaim_account_notify_added(gc->account, sn, NULL, (buddy ? gaim_buddy_get_alias_only(buddy) : NULL), NULL);
4230
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5122
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5123 return 1;
9f729d6d88a6 [gaim-migrate @ 4475]
Mark Doliner <mark@kingant.net>
parents: 4212
diff changeset
5124 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5125
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5126 static GList *oscar_chat_info(GaimConnection *gc) {
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5127 GList *m = NULL;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5128 struct proto_chat_entry *pce;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5129
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5130 pce = g_new0(struct proto_chat_entry, 1);
9770
41f302d41839 [gaim-migrate @ 10638]
Luke Schierer <lschiere@pidgin.im>
parents: 9758
diff changeset
5131 pce->label = _("_Room:");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5132 pce->identifier = "room";
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10472
diff changeset
5133 pce->required = TRUE;
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5134 m = g_list_append(m, pce);
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5135
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5136 pce = g_new0(struct proto_chat_entry, 1);
7841
0555e59dfba9 [gaim-migrate @ 8494]
Mark Doliner <mark@kingant.net>
parents: 7805
diff changeset
5137 pce->label = _("_Exchange:");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5138 pce->identifier = "exchange";
10475
94fd0bf8c4b1 [gaim-migrate @ 11762]
Mark Doliner <mark@kingant.net>
parents: 10472
diff changeset
5139 pce->required = TRUE;
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5140 pce->is_int = TRUE;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5141 pce->min = 4;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5142 pce->max = 20;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5143 m = g_list_append(m, pce);
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5144
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5145 return m;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5146 }
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5147
12412
a88ca6da0b38 [gaim-migrate @ 14719]
Richard Laager <rlaager@wiktel.com>
parents: 12393
diff changeset
5148 static GHashTable *oscar_chat_info_defaults(GaimConnection *gc, const char *chat_name)
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
5149 {
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
5150 GHashTable *defaults;
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
5151
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
5152 defaults = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
5153
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
5154 if (chat_name != NULL)
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
5155 g_hash_table_insert(defaults, "room", g_strdup(chat_name));
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
5156
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
5157 return defaults;
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
5158 }
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
5159
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5160 static char *
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5161 oscar_get_chat_name(GHashTable *data)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5162 {
9917
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9914
diff changeset
5163 return g_strdup(g_hash_table_lookup(data, "room"));
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9914
diff changeset
5164 }
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9914
diff changeset
5165
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5166 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5167 oscar_join_chat(GaimConnection *gc, GHashTable *data)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5168 {
8308
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
5169 OscarData *od = (OscarData *)gc->proto_data;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5170 FlapConnection *conn;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5171 char *name, *exchange;
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5172
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5173 name = g_hash_table_lookup(data, "room");
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5174 exchange = g_hash_table_lookup(data, "exchange");
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2197
diff changeset
5175
8308
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
5176 if ((name == NULL) || (*name == '\0')) {
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
5177 gaim_notify_error(gc, NULL, _("Invalid chat name specified."), NULL);
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
5178 return;
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
5179 }
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
5180
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5181 gaim_debug_info("oscar", "Attempting to join chat room %s.\n", name);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5182
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5183 if ((conn = flap_connection_getbytype(od, SNAC_FAMILY_CHATNAV)))
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5184 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5185 gaim_debug_info("oscar", "chatnav exists, creating room\n");
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5186 aim_chatnav_createroom(od, conn, name, atoi(exchange));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5187 } else {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5188 /* this gets tricky */
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
5189 struct create_room *cr = g_new0(struct create_room, 1);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5190 gaim_debug_info("oscar", "chatnav does not exist, opening chatnav\n");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5191 cr->exchange = atoi(exchange);
2822
744df95bf123 [gaim-migrate @ 2835]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2821
diff changeset
5192 cr->name = g_strdup(name);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
5193 od->create_rooms = g_slist_append(od->create_rooms, cr);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5194 aim_reqservice(od, SNAC_FAMILY_CHATNAV);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5195 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5196 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5197
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5198 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5199 oscar_chat_invite(GaimConnection *gc, int id, const char *message, const char *name)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5200 {
8308
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
5201 OscarData *od = (OscarData *)gc->proto_data;
34e8ad866f12 [gaim-migrate @ 9032]
Mark Doliner <mark@kingant.net>
parents: 8287
diff changeset
5202 struct chat_connection *ccon = find_oscar_chat(gc, id);
10404
ce098e226486 [gaim-migrate @ 11649]
Mark Doliner <mark@kingant.net>
parents: 10401
diff changeset
5203
ce098e226486 [gaim-migrate @ 11649]
Mark Doliner <mark@kingant.net>
parents: 10401
diff changeset
5204 if (ccon == NULL)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5205 return;
10404
ce098e226486 [gaim-migrate @ 11649]
Mark Doliner <mark@kingant.net>
parents: 10401
diff changeset
5206
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5207 aim_im_sendch2_chatinvite(od, name, message ? message : "",
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5208 ccon->exchange, ccon->name, 0x0);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5209 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5210
10458
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5211 static void
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5212 oscar_chat_leave(GaimConnection *gc, int id)
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5213 {
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5214 GaimConversation *conv;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5215 struct chat_connection *cc;
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5216
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5217 conv = gaim_find_chat(gc, id);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5218
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5219 g_return_if_fail(conv != NULL);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5220
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5221 gaim_debug_info("oscar", "Leaving chat room %s\n", conv->name);
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5222
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5223 cc = find_oscar_chat(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv)));
ad9258716144 [gaim-migrate @ 11727]
Mark Doliner <mark@kingant.net>
parents: 10444
diff changeset
5224 oscar_chat_kill(gc, cc);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5225 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5226
12216
4d3119205a33 [gaim-migrate @ 14518]
Stu Tomlinson <stu@nosnilmot.com>
parents: 12189
diff changeset
5227 static int oscar_send_chat(GaimConnection *gc, int id, const char *message, GaimMessageFlags flags) {
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
5228 OscarData *od = (OscarData *)gc->proto_data;
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
5229 GaimConversation *conv = NULL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5230 struct chat_connection *c = NULL;
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5231 char *buf, *buf2;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
5232 guint16 charset, charsubset;
9807
0c170246a9ec [gaim-migrate @ 10675]
Mark Doliner <mark@kingant.net>
parents: 9806
diff changeset
5233 char *charsetstr = NULL;
10111
8490f2e292a6 [gaim-migrate @ 11144]
Nathan Walp <nwalp@pidgin.im>
parents: 10098
diff changeset
5234 int len;
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
5235
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
5236 if (!(conv = gaim_find_chat(gc, id)))
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5237 return -EINVAL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5238
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
5239 if (!(c = find_oscar_chat_by_conv(gc, conv)))
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5240 return -EINVAL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5241
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
5242 buf = gaim_strdup_withhtml(message);
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
5243 len = strlen(buf);
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
5244
8962
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5245 if (strstr(buf, "<IMG "))
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5246 gaim_conversation_write(conv, "",
13226
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
5247 _("Your IM Image was not sent. "
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
5248 "You cannot send IM Images in AIM chats."),
51dd24fd8290 [gaim-migrate @ 15591]
Mark Doliner <mark@kingant.net>
parents: 13200
diff changeset
5249 GAIM_MESSAGE_ERROR, time(NULL));
8962
4ff4c34b7500 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5250
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
5251 gaim_plugin_oscar_convert_to_best_encoding(gc, NULL, buf, &buf2, &len, &charset, &charsubset);
13695
8369120556bc [gaim-migrate @ 16098]
Mark Doliner <mark@kingant.net>
parents: 13672
diff changeset
5252 /*
8369120556bc [gaim-migrate @ 16098]
Mark Doliner <mark@kingant.net>
parents: 13672
diff changeset
5253 * Evan S. suggested that maxvis really does mean "number of
8369120556bc [gaim-migrate @ 16098]
Mark Doliner <mark@kingant.net>
parents: 13672
diff changeset
5254 * visible characters" and not "number of bytes"
8369120556bc [gaim-migrate @ 16098]
Mark Doliner <mark@kingant.net>
parents: 13672
diff changeset
5255 */
8359
05c174138e94 [gaim-migrate @ 9083]
Mark Doliner <mark@kingant.net>
parents: 8353
diff changeset
5256 if ((len > c->maxlen) || (len > c->maxvis)) {
05c174138e94 [gaim-migrate @ 9083]
Mark Doliner <mark@kingant.net>
parents: 8353
diff changeset
5257 g_free(buf2);
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5258 return -E2BIG;
8359
05c174138e94 [gaim-migrate @ 9083]
Mark Doliner <mark@kingant.net>
parents: 8353
diff changeset
5259 }
05c174138e94 [gaim-migrate @ 9083]
Mark Doliner <mark@kingant.net>
parents: 8353
diff changeset
5260
9831
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
5261 if (charset == AIM_CHARSET_ASCII)
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
5262 charsetstr = "us-ascii";
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
5263 else if (charset == AIM_CHARSET_UNICODE)
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
5264 charsetstr = "unicode-2-0";
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
5265 else if (charset == AIM_CHARSET_CUSTOM)
0d02a51ea1c3 [gaim-migrate @ 10702]
Mark Doliner <mark@kingant.net>
parents: 9830
diff changeset
5266 charsetstr = "iso-8859-1";
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5267 aim_chat_send_im(od, c->conn, 0, buf2, len, charsetstr, "en");
8219
862dc2839646 [gaim-migrate @ 8942]
Mark Doliner <mark@kingant.net>
parents: 8214
diff changeset
5268 g_free(buf2);
8359
05c174138e94 [gaim-migrate @ 9083]
Mark Doliner <mark@kingant.net>
parents: 8353
diff changeset
5269
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
5270 return 0;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5271 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5272
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5273 static const char *oscar_list_icon(GaimAccount *a, GaimBuddy *b)
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5274 {
13654
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
5275 if ((b == NULL) || (b->name == NULL) || aim_sn_is_sms(b->name))
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
5276 {
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
5277 if (a != NULL && aim_sn_is_icq(gaim_account_get_username(a)))
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5278 return "icq";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5279 else
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5280 return "aim";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5281 }
5646
48c63ee49961 [gaim-migrate @ 6060]
Christian Hammond <chipx86@chipx86.com>
parents: 5638
diff changeset
5282
13654
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
5283 if (aim_sn_is_icq(b->name))
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5284 return "icq";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5285 return "aim";
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5286 }
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5287
9972
2c7c6bdb938b [gaim-migrate @ 10883]
Mark Doliner <mark@kingant.net>
parents: 9971
diff changeset
5288 static void oscar_list_emblems(GaimBuddy *b, const char **se, const char **sw, const char **nw, const char **ne)
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5289 {
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5290 GaimConnection *gc = NULL;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5291 OscarData *od = NULL;
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5292 GaimAccount *account = NULL;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5293 GaimPresence *presence;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5294 GaimStatus *status;
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5295 const char *status_id;
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5296 char *emblems[4] = {NULL,NULL,NULL,NULL};
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5297 int i = 0;
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5298 aim_userinfo_t *userinfo = NULL;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5299
13654
b6f7686c6082 [gaim-migrate @ 16056]
Mark Doliner <mark@kingant.net>
parents: 13640
diff changeset
5300 account = b->account;
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5301 if (account != NULL)
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5302 gc = account->gc;
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5303 if (gc != NULL)
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5304 od = gc->proto_data;
7945
0a0be07f066a [gaim-migrate @ 8619]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
5305 if (od != NULL)
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5306 userinfo = aim_locate_finduserinfo(od, b->name);
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5307
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5308 presence = gaim_buddy_get_presence(b);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5309 status = gaim_presence_get_active_status(presence);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5310 status_id = gaim_status_get_id(status);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5311
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5312 if (gaim_presence_is_online(presence) == FALSE) {
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5313 char *gname;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5314 if ((b->name) && (od) && (od->ssi.received_data) &&
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5315 (gname = aim_ssi_itemlist_findparentname(od->ssi.local, b->name)) &&
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5316 (aim_ssi_waitingforauth(od->ssi.local, gname, b->name))) {
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5317 emblems[i++] = "notauthorized";
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5318 } else {
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5319 emblems[i++] = "offline";
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5320 }
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5321 }
4916
d9b6b5ae34e4 [gaim-migrate @ 5250]
Sean Egan <seanegan@gmail.com>
parents: 4901
diff changeset
5322
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5323 if (b->name && aim_sn_is_icq(b->name)) {
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5324 if (!strcmp(status_id, OSCAR_STATUS_ID_INVISIBLE))
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5325 emblems[i++] = "invisible";
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5326 else if (!strcmp(status_id, OSCAR_STATUS_ID_FREE4CHAT))
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
5327 emblems[i++] = "freeforchat";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5328 else if (!strcmp(status_id, OSCAR_STATUS_ID_DND))
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
5329 emblems[i++] = "dnd";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5330 else if (!strcmp(status_id, OSCAR_STATUS_ID_NA))
12595
3169cd6727ad [gaim-migrate @ 14925]
Richard Laager <rlaager@wiktel.com>
parents: 12588
diff changeset
5331 emblems[i++] = "unavailable";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5332 else if (!strcmp(status_id, OSCAR_STATUS_ID_OCCUPIED))
4960
42bd8ab53234 [gaim-migrate @ 5294]
Mark Doliner <mark@kingant.net>
parents: 4959
diff changeset
5333 emblems[i++] = "occupied";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5334 else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY))
4766
03aa36cb4e38 [gaim-migrate @ 5084]
Mark Doliner <mark@kingant.net>
parents: 4763
diff changeset
5335 emblems[i++] = "away";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5336 } else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY)) {
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5337 emblems[i++] = "away";
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5338 }
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5339
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5340 if (userinfo != NULL ) {
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5341 /* if (userinfo->flags & AIM_FLAG_UNCONFIRMED)
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5342 emblems[i++] = "unconfirmed"; */
11873
346bd669c8f2 [gaim-migrate @ 14164]
Luke Schierer <lschiere@pidgin.im>
parents: 11837
diff changeset
5343 if ((i < 4) && userinfo->flags & AIM_FLAG_ADMINISTRATOR)
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5344 emblems[i++] = "admin";
11873
346bd669c8f2 [gaim-migrate @ 14164]
Luke Schierer <lschiere@pidgin.im>
parents: 11837
diff changeset
5345 if ((i < 4) && userinfo->flags & AIM_FLAG_AOL)
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5346 emblems[i++] = "aol";
11873
346bd669c8f2 [gaim-migrate @ 14164]
Luke Schierer <lschiere@pidgin.im>
parents: 11837
diff changeset
5347 if ((i < 4) && userinfo->flags & AIM_FLAG_WIRELESS)
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5348 emblems[i++] = "wireless";
11873
346bd669c8f2 [gaim-migrate @ 14164]
Luke Schierer <lschiere@pidgin.im>
parents: 11837
diff changeset
5349 if ((i < 4) && userinfo->flags & AIM_FLAG_ACTIVEBUDDY)
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5350 emblems[i++] = "activebuddy";
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5351
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5352 if ((i < 4) && (userinfo->capabilities & OSCAR_CAPABILITY_HIPTOP))
7945
0a0be07f066a [gaim-migrate @ 8619]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
5353 emblems[i++] = "hiptop";
0a0be07f066a [gaim-migrate @ 8619]
Mark Doliner <mark@kingant.net>
parents: 7880
diff changeset
5354
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5355 if ((i < 4) && (userinfo->capabilities & OSCAR_CAPABILITY_SECUREIM))
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5356 emblems[i++] = "secure";
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5357 }
7334
83e8faa7f6d5 [gaim-migrate @ 7922]
Mark Doliner <mark@kingant.net>
parents: 7328
diff changeset
5358
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5359 *se = emblems[0];
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5360 *sw = emblems[1];
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5361 *nw = emblems[2];
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5362 *ne = emblems[3];
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5363 }
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4675
diff changeset
5364
12970
ec9b92104904 [gaim-migrate @ 15323]
Richard Laager <rlaager@wiktel.com>
parents: 12948
diff changeset
5365 static void oscar_tooltip_text(GaimBuddy *b, GString *str, gboolean full) {
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5366 GaimConnection *gc = b->account->gc;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5367 OscarData *od = gc->proto_data;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5368 aim_userinfo_t *userinfo = aim_locate_finduserinfo(od, b->name);
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5369
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5370 if (GAIM_BUDDY_IS_ONLINE(b)) {
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5371 GaimPresence *presence;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5372 GaimStatus *status;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5373 const char *message;
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5374
12948
563fb4f1e9fc [gaim-migrate @ 15301]
Richard Laager <rlaager@wiktel.com>
parents: 12946
diff changeset
5375 if (full)
563fb4f1e9fc [gaim-migrate @ 15301]
Richard Laager <rlaager@wiktel.com>
parents: 12946
diff changeset
5376 oscar_string_append_info(gc, str, "\n", b, userinfo);
7011
4375bf2d9020 [gaim-migrate @ 7574]
Mark Doliner <mark@kingant.net>
parents: 6982
diff changeset
5377
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5378 presence = gaim_buddy_get_presence(b);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5379 status = gaim_presence_get_active_status(presence);
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5380 message = gaim_status_get_attr_string(status, "message");
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5381
12433
74d5a423433c [gaim-migrate @ 14740]
Mark Doliner <mark@kingant.net>
parents: 12430
diff changeset
5382 if (gaim_status_is_available(status))
74d5a423433c [gaim-migrate @ 14740]
Mark Doliner <mark@kingant.net>
parents: 12430
diff changeset
5383 {
74d5a423433c [gaim-migrate @ 14740]
Mark Doliner <mark@kingant.net>
parents: 12430
diff changeset
5384 if (message != NULL)
74d5a423433c [gaim-migrate @ 14740]
Mark Doliner <mark@kingant.net>
parents: 12430
diff changeset
5385 {
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5386 /* Available status messages are plain text */
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5387 gchar *tmp;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5388 tmp = g_markup_escape_text(message, -1);
13451
8355b578a21e [gaim-migrate @ 15826]
Stu Tomlinson <stu@nosnilmot.com>
parents: 13381
diff changeset
5389 g_string_append_printf(str, "\n<b>%s:</b> %s", _("Message"), tmp);
8355b578a21e [gaim-migrate @ 15826]
Stu Tomlinson <stu@nosnilmot.com>
parents: 13381
diff changeset
5390 g_free(tmp);
12433
74d5a423433c [gaim-migrate @ 14740]
Mark Doliner <mark@kingant.net>
parents: 12430
diff changeset
5391 }
74d5a423433c [gaim-migrate @ 14740]
Mark Doliner <mark@kingant.net>
parents: 12430
diff changeset
5392 }
74d5a423433c [gaim-migrate @ 14740]
Mark Doliner <mark@kingant.net>
parents: 12430
diff changeset
5393 else
74d5a423433c [gaim-migrate @ 14740]
Mark Doliner <mark@kingant.net>
parents: 12430
diff changeset
5394 {
74d5a423433c [gaim-migrate @ 14740]
Mark Doliner <mark@kingant.net>
parents: 12430
diff changeset
5395 if (message != NULL)
74d5a423433c [gaim-migrate @ 14740]
Mark Doliner <mark@kingant.net>
parents: 12430
diff changeset
5396 {
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5397 /* Away messages are HTML */
7091
7b31e3e22f59 [gaim-migrate @ 7656]
Mark Doliner <mark@kingant.net>
parents: 7083
diff changeset
5398 gchar *tmp1, *tmp2;
12189
2de8b6772d00 [gaim-migrate @ 14491]
Mark Doliner <mark@kingant.net>
parents: 12143
diff changeset
5399 tmp2 = gaim_markup_strip_html(message);
10732
c4cb90065e1d [gaim-migrate @ 12334]
Luke Schierer <lschiere@pidgin.im>
parents: 10715
diff changeset
5400 tmp1 = g_markup_escape_text(tmp2, -1);
7091
7b31e3e22f59 [gaim-migrate @ 7656]
Mark Doliner <mark@kingant.net>
parents: 7083
diff changeset
5401 g_free(tmp2);
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
5402 tmp2 = gaim_str_sub_away_formatters(tmp1, gaim_account_get_username(gaim_connection_get_account(gc)));
8461
16485e87b7bb [gaim-migrate @ 9191]
Mark Doliner <mark@kingant.net>
parents: 8446
diff changeset
5403 g_free(tmp1);
12946
a63227edcff0 [gaim-migrate @ 15299]
Richard Laager <rlaager@wiktel.com>
parents: 12943
diff changeset
5404 g_string_append_printf(str, "\n<b>%s:</b> %s", _("Message"), tmp2);
8700
ddd2bf87fe8d [gaim-migrate @ 9453]
Mark Doliner <mark@kingant.net>
parents: 8697
diff changeset
5405 g_free(tmp2);
5836
09f7f23dc83a [gaim-migrate @ 6267]
Mark Doliner <mark@kingant.net>
parents: 5828
diff changeset
5406 }
12433
74d5a423433c [gaim-migrate @ 14740]
Mark Doliner <mark@kingant.net>
parents: 12430
diff changeset
5407 else
74d5a423433c [gaim-migrate @ 14740]
Mark Doliner <mark@kingant.net>
parents: 12430
diff changeset
5408 {
12946
a63227edcff0 [gaim-migrate @ 15299]
Richard Laager <rlaager@wiktel.com>
parents: 12943
diff changeset
5409 g_string_append_printf(str, "\n<b>%s:</b> %s", _("Message"), _("<i>(retrieving)</i>"));
12433
74d5a423433c [gaim-migrate @ 14740]
Mark Doliner <mark@kingant.net>
parents: 12430
diff changeset
5410 }
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5411 }
8701
ddcafeb14e35 [gaim-migrate @ 9454]
Mark Doliner <mark@kingant.net>
parents: 8700
diff changeset
5412 }
5131
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5413 }
feda37d46e17 [gaim-migrate @ 5494]
Mark Doliner <mark@kingant.net>
parents: 5129
diff changeset
5414
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5415 static char *oscar_status_text(GaimBuddy *b)
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5416 {
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5417 GaimConnection *gc;
12347
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5418 GaimAccount *account;
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5419 OscarData *od;
12347
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5420 const GaimPresence *presence;
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5421 const GaimStatus *status;
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5422 const char *id;
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5423 const char *message;
5167
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5424 gchar *ret = NULL;
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5425
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5426 gc = gaim_account_get_connection(gaim_buddy_get_account(b));
12347
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5427 account = gaim_connection_get_account(gc);
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5428 od = gc->proto_data;
11248
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
5429 presence = gaim_buddy_get_presence(b);
12347
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5430 status = gaim_presence_get_active_status(presence);
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5431 id = gaim_status_get_id(status);
11248
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
5432
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
5433 if (!gaim_presence_is_online(presence))
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
5434 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5435 char *gname = aim_ssi_itemlist_findparentname(od->ssi.local, b->name);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5436 if (aim_ssi_waitingforauth(od->ssi.local, gname, b->name))
5167
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5437 ret = g_strdup(_("Not Authorized"));
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5438 else
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5439 ret = g_strdup(_("Offline"));
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5440 }
12365
7f1c4630799c [gaim-migrate @ 14669]
Mark Doliner <mark@kingant.net>
parents: 12361
diff changeset
5441 else if (gaim_status_is_available(status) && !strcmp(id, OSCAR_STATUS_ID_AVAILABLE))
12347
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5442 {
12365
7f1c4630799c [gaim-migrate @ 14669]
Mark Doliner <mark@kingant.net>
parents: 12361
diff changeset
5443 /* Available */
12347
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5444 message = gaim_status_get_attr_string(status, "message");
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5445 if (message != NULL)
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5446 {
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5447 ret = g_markup_escape_text(message, -1);
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5448 gaim_util_chrreplace(ret, '\n', ' ');
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5449 }
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5450 }
12365
7f1c4630799c [gaim-migrate @ 14669]
Mark Doliner <mark@kingant.net>
parents: 12361
diff changeset
5451 else if (!gaim_status_is_available(status) && !strcmp(id, OSCAR_STATUS_ID_AWAY))
11248
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
5452 {
12365
7f1c4630799c [gaim-migrate @ 14669]
Mark Doliner <mark@kingant.net>
parents: 12361
diff changeset
5453 /* Away */
12347
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5454 message = gaim_status_get_attr_string(status, "message");
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5455 if (message != NULL)
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5456 {
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5457 gchar *tmp1, *tmp2;
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5458 tmp1 = gaim_markup_strip_html(message);
12361
88de0d2fb68e [gaim-migrate @ 14665]
Mark Doliner <mark@kingant.net>
parents: 12350
diff changeset
5459 gaim_util_chrreplace(tmp1, '\n', ' ');
12347
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5460 tmp2 = g_markup_escape_text(tmp1, -1);
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5461 ret = gaim_str_sub_away_formatters(tmp2, gaim_account_get_username(account));
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5462 g_free(tmp1);
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5463 g_free(tmp2);
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5464 }
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5465 else
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5466 {
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5467 ret = g_strdup(_("Away"));
11510
25699eed3c37 [gaim-migrate @ 13755]
Stu Tomlinson <stu@nosnilmot.com>
parents: 11495
diff changeset
5468 }
11248
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
5469 }
a2eababc78a8 [gaim-migrate @ 13417]
Mark Doliner <mark@kingant.net>
parents: 11238
diff changeset
5470 else
12347
8337e1286313 [gaim-migrate @ 14651]
Mark Doliner <mark@kingant.net>
parents: 12344
diff changeset
5471 ret = g_strdup(gaim_status_get_name(status));
5167
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5472
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5473 return ret;
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5474 }
d9073c83a8a0 [gaim-migrate @ 5531]
Mark Doliner <mark@kingant.net>
parents: 5163
diff changeset
5475
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5476
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5477 static int oscar_icon_req(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5478 GaimConnection *gc = od->gc;
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5479 va_list ap;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
5480 guint16 type;
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
5481 guint8 flags = 0, length = 0;
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
5482 guchar *md5 = NULL;
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5483
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5484 va_start(ap, fr);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5485 type = va_arg(ap, int);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5486
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5487 switch(type) {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5488 case 0x0000:
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5489 case 0x0001: {
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5490 flags = va_arg(ap, int);
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5491 length = va_arg(ap, int);
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
5492 md5 = va_arg(ap, guchar *);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5493
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5494 if (flags == 0x41) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5495 if (!flap_connection_getbytype(od, SNAC_FAMILY_BART) && !od->iconconnecting) {
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5496 od->iconconnecting = TRUE;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5497 od->set_icon = TRUE;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5498 aim_reqservice(od, SNAC_FAMILY_BART);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5499 } else {
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5500 struct stat st;
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
5501 char *iconfile = gaim_buddy_icons_get_full_path(gaim_account_get_buddy_icon(gaim_connection_get_account(gc)));
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5502 if (iconfile == NULL) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5503 aim_ssi_delicon(od);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
5504 } else if (!g_stat(iconfile, &st)) {
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
5505 guchar *buf = g_malloc(st.st_size);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
5506 FILE *file = g_fopen(iconfile, "rb");
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5507 if (file) {
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
5508 /* XXX - Use g_file_get_contents()? */
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5509 fread(buf, 1, st.st_size, file);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5510 fclose(file);
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5511 gaim_debug_info("oscar",
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5512 "Uploading icon to icon server\n");
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5513 aim_bart_upload(od, buf, st.st_size);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5514 } else
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5515 gaim_debug_error("oscar",
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5516 "Can't open buddy icon file!\n");
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5517 g_free(buf);
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
5518 } else {
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5519 gaim_debug_error("oscar",
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5520 "Can't stat buddy icon file!\n");
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5521 }
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
5522 g_free(iconfile);
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5523 }
8363
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
5524 } else if (flags == 0x81) {
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
5525 char *iconfile = gaim_buddy_icons_get_full_path(gaim_account_get_buddy_icon(gaim_connection_get_account(gc)));
8363
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
5526 if (iconfile == NULL)
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5527 aim_ssi_delicon(od);
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
5528 else {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5529 aim_ssi_seticon(od, md5, length);
11303
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
5530 g_free(iconfile);
10066662176a [gaim-migrate @ 13503]
Richard Laager <rlaager@wiktel.com>
parents: 11285
diff changeset
5531 }
8363
19459d9eead2 [gaim-migrate @ 9088]
Mark Doliner <mark@kingant.net>
parents: 8361
diff changeset
5532 }
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5533 } break;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5534
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5535 case 0x0002: { /* We just set an "available" message? */
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5536 } break;
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5537 }
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5538
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5539 va_end(ap);
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
5540
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
5541 return 0;
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
5542 }
5892
da8939ad60b6 [gaim-migrate @ 6324]
Mark Doliner <mark@kingant.net>
parents: 5872
diff changeset
5543
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5544 static void oscar_set_permit_deny(GaimConnection *gc) {
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5545 GaimAccount *account = gaim_connection_get_account(gc);
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5546 OscarData *od = (OscarData *)gc->proto_data;
10866
f38bda97f981 [gaim-migrate @ 12552]
Mark Doliner <mark@kingant.net>
parents: 10860
diff changeset
5547
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5548 if (od->ssi.received_data) {
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
5549 switch (account->perm_deny) {
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
5550 case GAIM_PRIVACY_ALLOW_ALL:
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5551 aim_ssi_setpermdeny(od, 0x01, 0xffffffff);
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
5552 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
5553 case GAIM_PRIVACY_ALLOW_BUDDYLIST:
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5554 aim_ssi_setpermdeny(od, 0x05, 0xffffffff);
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
5555 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
5556 case GAIM_PRIVACY_ALLOW_USERS:
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5557 aim_ssi_setpermdeny(od, 0x03, 0xffffffff);
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
5558 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
5559 case GAIM_PRIVACY_DENY_ALL:
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5560 aim_ssi_setpermdeny(od, 0x02, 0xffffffff);
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
5561 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
5562 case GAIM_PRIVACY_DENY_USERS:
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5563 aim_ssi_setpermdeny(od, 0x04, 0xffffffff);
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
5564 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
5565 default:
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5566 aim_ssi_setpermdeny(od, 0x01, 0xffffffff);
8175
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
5567 break;
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
5568 }
f347c8d25cf5 [gaim-migrate @ 8889]
Mark Doliner <mark@kingant.net>
parents: 8170
diff changeset
5569 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5570 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5571
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5572 static void oscar_add_permit(GaimConnection *gc, const char *who) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5573 OscarData *od = (OscarData *)gc->proto_data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5574 gaim_debug_info("oscar", "ssi: About to add a permit\n");
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5575 if (od->ssi.received_data)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5576 aim_ssi_addpermit(od, who);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5577 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5578
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5579 static void oscar_add_deny(GaimConnection *gc, const char *who) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5580 OscarData *od = (OscarData *)gc->proto_data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5581 gaim_debug_info("oscar", "ssi: About to add a deny\n");
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5582 if (od->ssi.received_data)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5583 aim_ssi_adddeny(od, who);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5584 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5585
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5586 static void oscar_rem_permit(GaimConnection *gc, const char *who) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5587 OscarData *od = (OscarData *)gc->proto_data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5588 gaim_debug_info("oscar", "ssi: About to delete a permit\n");
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5589 if (od->ssi.received_data)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5590 aim_ssi_delpermit(od, who);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5591 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5592
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5593 static void oscar_rem_deny(GaimConnection *gc, const char *who) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5594 OscarData *od = (OscarData *)gc->proto_data;
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
5595 gaim_debug_info("oscar", "ssi: About to delete a deny\n");
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5596 if (od->ssi.received_data)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5597 aim_ssi_deldeny(od, who);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5598 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5599
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
5600 static GList *
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
5601 oscar_status_types(GaimAccount *account)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5602 {
12662
eb4841fa697c [gaim-migrate @ 15005]
Mark Doliner <mark@kingant.net>
parents: 12661
diff changeset
5603 gboolean is_icq;
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
5604 GList *status_types = NULL;
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
5605 GaimStatusType *type;
2501
227cc42ffa6e [gaim-migrate @ 2514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2432
diff changeset
5606
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
5607 g_return_val_if_fail(account != NULL, NULL);
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
5608
13007
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5609 /* Used to flag some statuses as "user settable" or not */
12662
eb4841fa697c [gaim-migrate @ 15005]
Mark Doliner <mark@kingant.net>
parents: 12661
diff changeset
5610 is_icq = aim_sn_is_icq(gaim_account_get_username(account));
eb4841fa697c [gaim-migrate @ 15005]
Mark Doliner <mark@kingant.net>
parents: 12661
diff changeset
5611
13007
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5612 /* Common status types */
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5613 /* Really the available message should only be settable for AIM accounts */
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5614 type = gaim_status_type_new_with_attrs(GAIM_STATUS_AVAILABLE,
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5615 OSCAR_STATUS_ID_AVAILABLE,
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5616 NULL, TRUE, TRUE, FALSE,
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5617 "message", _("Message"),
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5618 gaim_value_new(GAIM_TYPE_STRING), NULL);
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5619 status_types = g_list_append(status_types, type);
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5620
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5621 type = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE,
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5622 OSCAR_STATUS_ID_FREE4CHAT,
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5623 _("Free For Chat"), TRUE, is_icq, FALSE);
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5624 status_types = g_list_append(status_types, type);
9976
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
5625
10195
fa4973f356a1 [gaim-migrate @ 11310]
Mark Doliner <mark@kingant.net>
parents: 10157
diff changeset
5626 type = gaim_status_type_new_with_attrs(GAIM_STATUS_AWAY,
fa4973f356a1 [gaim-migrate @ 11310]
Mark Doliner <mark@kingant.net>
parents: 10157
diff changeset
5627 OSCAR_STATUS_ID_AWAY,
12595
3169cd6727ad [gaim-migrate @ 14925]
Richard Laager <rlaager@wiktel.com>
parents: 12588
diff changeset
5628 NULL, TRUE, TRUE, FALSE,
10195
fa4973f356a1 [gaim-migrate @ 11310]
Mark Doliner <mark@kingant.net>
parents: 10157
diff changeset
5629 "message", _("Message"),
fa4973f356a1 [gaim-migrate @ 11310]
Mark Doliner <mark@kingant.net>
parents: 10157
diff changeset
5630 gaim_value_new(GAIM_TYPE_STRING), NULL);
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5631 status_types = g_list_append(status_types, type);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5632
12595
3169cd6727ad [gaim-migrate @ 14925]
Richard Laager <rlaager@wiktel.com>
parents: 12588
diff changeset
5633 type = gaim_status_type_new_full(GAIM_STATUS_INVISIBLE,
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5634 OSCAR_STATUS_ID_INVISIBLE,
12595
3169cd6727ad [gaim-migrate @ 14925]
Richard Laager <rlaager@wiktel.com>
parents: 12588
diff changeset
5635 NULL, TRUE, TRUE, FALSE);
10042
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5636 status_types = g_list_append(status_types, type);
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5637
ae6157393415 [gaim-migrate @ 11001]
Mark Doliner <mark@kingant.net>
parents: 10039
diff changeset
5638 /* ICQ-specific status types */
13007
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5639 type = gaim_status_type_new_full(GAIM_STATUS_UNAVAILABLE,
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5640 OSCAR_STATUS_ID_OCCUPIED,
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5641 _("Occupied"), TRUE, is_icq, FALSE);
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5642 status_types = g_list_append(status_types, type);
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5643
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5644 type = gaim_status_type_new_full(GAIM_STATUS_EXTENDED_AWAY,
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5645 OSCAR_STATUS_ID_DND,
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5646 _("Do Not Disturb"), TRUE, is_icq, FALSE);
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5647 status_types = g_list_append(status_types, type);
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5648
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5649 type = gaim_status_type_new_full(GAIM_STATUS_EXTENDED_AWAY,
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5650 OSCAR_STATUS_ID_NA,
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5651 _("Not Available"), TRUE, is_icq, FALSE);
46ba853a76b5 [gaim-migrate @ 15360]
Mark Doliner <mark@kingant.net>
parents: 12970
diff changeset
5652 status_types = g_list_append(status_types, type);
12658
a0fd3ebcd6fa [gaim-migrate @ 15001]
Mark Doliner <mark@kingant.net>
parents: 12655
diff changeset
5653
a0fd3ebcd6fa [gaim-migrate @ 15001]
Mark Doliner <mark@kingant.net>
parents: 12655
diff changeset
5654 type = gaim_status_type_new_full(GAIM_STATUS_OFFLINE,
a0fd3ebcd6fa [gaim-migrate @ 15001]
Mark Doliner <mark@kingant.net>
parents: 12655
diff changeset
5655 OSCAR_STATUS_ID_OFFLINE,
a0fd3ebcd6fa [gaim-migrate @ 15001]
Mark Doliner <mark@kingant.net>
parents: 12655
diff changeset
5656 NULL, TRUE, TRUE, FALSE);
9976
f4ff7d2b9b2c [gaim-migrate @ 10887]
Mark Doliner <mark@kingant.net>
parents: 9975
diff changeset
5657 status_types = g_list_append(status_types, type);
9975
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
5658
c66345b33b88 [gaim-migrate @ 10886]
Mark Doliner <mark@kingant.net>
parents: 9973
diff changeset
5659 return status_types;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5660 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5661
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5662 static void oscar_ssi_editcomment(struct name_data *data, const char *text) {
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5663 GaimConnection *gc = data->gc;
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5664 OscarData *od = gc->proto_data;
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5665 GaimBuddy *b;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5666 GaimGroup *g;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5667
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5668 if (!(b = gaim_find_buddy(gaim_connection_get_account(data->gc), data->name))) {
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5669 oscar_free_name_data(data);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5670 return;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5671 }
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5672
12088
980c877bd238 [gaim-migrate @ 14385]
Mark Doliner <mark@kingant.net>
parents: 12049
diff changeset
5673 if (!(g = gaim_buddy_get_group(b))) {
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5674 oscar_free_name_data(data);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5675 return;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5676 }
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5677
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5678 aim_ssi_editcomment(od, g->name, data->name, text);
8341
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5679
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5680 if (!aim_sncmp(data->name, gc->account->username))
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5681 gaim_check_comment(od, text);
fec4c1fb2ac8 [gaim-migrate @ 9065]
Mark Doliner <mark@kingant.net>
parents: 8308
diff changeset
5682
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5683 oscar_free_name_data(data);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5684 }
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5685
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5686 static void oscar_buddycb_edit_comment(GaimBlistNode *node, gpointer ignore) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5687
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5688 GaimBuddy *buddy;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5689 GaimConnection *gc;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5690 OscarData *od;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5691 struct name_data *data;
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5692 GaimGroup *g;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5693 char *comment;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5694 gchar *comment_utf8;
9631
71c31e4505fd [gaim-migrate @ 10475]
Mark Doliner <mark@kingant.net>
parents: 9627
diff changeset
5695 gchar *title;
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5696
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5697 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5698
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5699 buddy = (GaimBuddy *) node;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5700 gc = gaim_account_get_connection(buddy->account);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5701 od = gc->proto_data;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5702
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5703 data = g_new(struct name_data, 1);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5704
12088
980c877bd238 [gaim-migrate @ 14385]
Mark Doliner <mark@kingant.net>
parents: 12049
diff changeset
5705 if (!(g = gaim_buddy_get_group(buddy)))
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5706 return;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5707 comment = aim_ssi_getcomment(od->ssi.local, g->name, buddy->name);
12608
d13810de5bb3 [gaim-migrate @ 14944]
Richard Laager <rlaager@wiktel.com>
parents: 12603
diff changeset
5708 comment_utf8 = comment ? oscar_utf8_try_convert(gc->account, comment) : NULL;
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5709
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5710 data->gc = gc;
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5711 data->name = g_strdup(buddy->name);
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5712 data->nick = NULL;
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5713
9631
71c31e4505fd [gaim-migrate @ 10475]
Mark Doliner <mark@kingant.net>
parents: 9627
diff changeset
5714 title = g_strdup_printf(_("Buddy Comment for %s"), data->name);
71c31e4505fd [gaim-migrate @ 10475]
Mark Doliner <mark@kingant.net>
parents: 9627
diff changeset
5715 gaim_request_input(gc, title, _("Buddy Comment:"), NULL,
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
5716 comment_utf8, TRUE, FALSE, NULL,
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5717 _("OK"), G_CALLBACK(oscar_ssi_editcomment),
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5718 _("Cancel"), G_CALLBACK(oscar_free_name_data),
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5719 data);
9631
71c31e4505fd [gaim-migrate @ 10475]
Mark Doliner <mark@kingant.net>
parents: 9627
diff changeset
5720 g_free(title);
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5721
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5722 g_free(comment);
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5723 g_free(comment_utf8);
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5724 }
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5725
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5726 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5727 oscar_ask_directim_yes_cb(struct oscar_ask_directim_data *data)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5728 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5729 peer_connection_propose(data->od, OSCAR_CAPABILITY_DIRECTIM, data->who);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5730 g_free(data->who);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5731 g_free(data);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5732 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5733
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5734 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5735 oscar_ask_directim_no_cb(struct oscar_ask_directim_data *data)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5736 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5737 g_free(data->who);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5738 g_free(data);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5739 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5740
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5741 /* This is called from right-click menu on a buddy node. */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5742 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5743 oscar_ask_directim(gpointer object, gpointer ignored)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5744 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5745 GaimBlistNode *node;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5746 GaimBuddy *buddy;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5747 GaimConnection *gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5748 gchar *buf;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5749 struct oscar_ask_directim_data *data;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5750
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5751 node = object;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5752
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5753 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5754
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5755 buddy = (GaimBuddy *)node;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5756 gc = gaim_account_get_connection(buddy->account);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5757
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5758 data = g_new0(struct oscar_ask_directim_data, 1);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5759 data->who = g_strdup(buddy->name);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5760 data->od = gc->proto_data;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5761 buf = g_strdup_printf(_("You have selected to open a Direct IM connection with %s."),
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5762 buddy->name);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5763
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5764 gaim_request_action(gc, NULL, buf,
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5765 _("Because this reveals your IP address, it "
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5766 "may be considered a security risk. Do you "
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5767 "wish to continue?"),
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5768 0, data, 2,
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5769 _("_Connect"), G_CALLBACK(oscar_ask_directim_yes_cb),
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5770 _("Cancel"), G_CALLBACK(oscar_ask_directim_no_cb));
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5771 g_free(buf);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5772 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5773
13875
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5774 static void
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5775 oscar_get_aim_info_cb(GaimBlistNode *node, gpointer ignore)
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5776 {
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5777 GaimBuddy *buddy;
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5778 GaimConnection *gc;
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5779
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5780 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5781
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5782 buddy = (GaimBuddy *)node;
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5783 gc = gaim_account_get_connection(buddy->account);
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5784
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5785 aim_locate_getinfoshort(gc->proto_data, gaim_buddy_get_name(buddy), 0x00000003);
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5786 }
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5787
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5788 static GList *oscar_buddy_menu(GaimBuddy *buddy) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5789
13605
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5790 GaimConnection *gc;
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5791 OscarData *od;
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5792 GList *m;
12919
248b8b39c671 [gaim-migrate @ 15272]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12918
diff changeset
5793 GaimMenuAction *act;
13605
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5794 aim_userinfo_t *userinfo;
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5795
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5796 gc = gaim_account_get_connection(buddy->account);
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5797 od = gc->proto_data;
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5798 userinfo = aim_locate_finduserinfo(od, buddy->name);
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5799 m = NULL;
12919
248b8b39c671 [gaim-migrate @ 15272]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12918
diff changeset
5800
13875
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5801 if (od->icq && aim_sn_is_icq(gaim_buddy_get_name(buddy)))
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5802 {
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5803 act = gaim_menu_action_new(_("Get AIM Info"),
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5804 GAIM_CALLBACK(oscar_get_aim_info_cb),
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5805 NULL, NULL);
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5806 m = g_list_append(m, act);
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5807 }
eb20e674ccf2 [gaim-migrate @ 16349]
Mark Doliner <mark@kingant.net>
parents: 13873
diff changeset
5808
12919
248b8b39c671 [gaim-migrate @ 15272]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12918
diff changeset
5809 act = gaim_menu_action_new(_("Edit Buddy Comment"),
248b8b39c671 [gaim-migrate @ 15272]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12918
diff changeset
5810 GAIM_CALLBACK(oscar_buddycb_edit_comment),
248b8b39c671 [gaim-migrate @ 15272]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12918
diff changeset
5811 NULL, NULL);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5812 m = g_list_append(m, act);
7172
895cd1d03efb [gaim-migrate @ 7740]
Mark Doliner <mark@kingant.net>
parents: 7166
diff changeset
5813
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
5814 #if 0
13605
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5815 if (od->icq)
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5816 {
12919
248b8b39c671 [gaim-migrate @ 15272]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12918
diff changeset
5817 act = gaim_menu_action_new(_("Get Status Msg"),
248b8b39c671 [gaim-migrate @ 15272]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12918
diff changeset
5818 GAIM_CALLBACK(oscar_get_icqstatusmsg),
248b8b39c671 [gaim-migrate @ 15272]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12918
diff changeset
5819 NULL, NULL);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5820 m = g_list_append(m, act);
13605
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5821 }
4624
a964972cb361 [gaim-migrate @ 4915]
Mark Doliner <mark@kingant.net>
parents: 4617
diff changeset
5822 #endif
13605
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5823
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5824 if (userinfo &&
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5825 aim_sncmp(gaim_account_get_username(buddy->account), buddy->name) &&
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5826 GAIM_BUDDY_IS_ONLINE(buddy))
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5827 {
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5828 if (userinfo->capabilities & OSCAR_CAPABILITY_DIRECTIM)
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5829 {
13605
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5830 act = gaim_menu_action_new(_("Direct IM"),
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5831 GAIM_CALLBACK(oscar_ask_directim),
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5832 NULL, NULL);
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5833 m = g_list_append(m, act);
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5834 }
9466
d27156c9c876 [gaim-migrate @ 10291]
Luke Schierer <lschiere@pidgin.im>
parents: 9463
diff changeset
5835 #if 0
13605
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5836 /* TODO: This menu item should be added by the core */
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5837 if (userinfo->capabilities & OSCAR_CAPABILITY_GETFILE) {
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5838 act = gaim_menu_action_new(_("Get File"),
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5839 GAIM_CALLBACK(oscar_ask_getfile),
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5840 NULL, NULL);
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5841 m = g_list_append(m, act);
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5842 }
4826
e6654fab588b [gaim-migrate @ 5151]
Mark Doliner <mark@kingant.net>
parents: 4825
diff changeset
5843 #endif
13605
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5844 }
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5845
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5846 if (od->ssi.received_data)
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5847 {
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5848 char *gname;
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5849 gname = aim_ssi_itemlist_findparentname(od->ssi.local, buddy->name);
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5850 if (gname && aim_ssi_waitingforauth(od->ssi.local, gname, buddy->name))
77e61dc1b525 [gaim-migrate @ 15991]
Mark Doliner <mark@kingant.net>
parents: 13604
diff changeset
5851 {
12919
248b8b39c671 [gaim-migrate @ 15272]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12918
diff changeset
5852 act = gaim_menu_action_new(_("Re-request Authorization"),
248b8b39c671 [gaim-migrate @ 15272]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12918
diff changeset
5853 GAIM_CALLBACK(gaim_auth_sendrequest_menu),
248b8b39c671 [gaim-migrate @ 15272]
Etan Reisner <pidgin@unreliablesource.net>
parents: 12918
diff changeset
5854 NULL, NULL);
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5855 m = g_list_append(m, act);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5856 }
4916
d9b6b5ae34e4 [gaim-migrate @ 5250]
Sean Egan <seanegan@gmail.com>
parents: 4901
diff changeset
5857 }
10157
0de7eee583e6 [gaim-migrate @ 11237]
Mark Doliner <mark@kingant.net>
parents: 10152
diff changeset
5858
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5859 return m;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5860 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5861
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5862
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5863 static GList *oscar_blist_node_menu(GaimBlistNode *node) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5864 if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5865 return oscar_buddy_menu((GaimBuddy *) node);
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5866 } else {
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5867 return NULL;
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5868 }
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5869 }
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5870
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5871 static void
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5872 oscar_icq_privacy_opts(GaimConnection *gc, GaimRequestFields *fields)
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5873 {
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5874 OscarData *od = gc->proto_data;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5875 GaimAccount *account = gaim_connection_get_account(gc);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5876 GaimRequestField *f;
12652
e739ace2688b [gaim-migrate @ 14995]
Mark Doliner <mark@kingant.net>
parents: 12645
diff changeset
5877 gboolean auth, web_aware;
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5878
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5879 f = gaim_request_fields_get_field(fields, "authorization");
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5880 auth = gaim_request_field_bool_get_value(f);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5881
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5882 f = gaim_request_fields_get_field(fields, "web_aware");
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5883 web_aware = gaim_request_field_bool_get_value(f);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5884
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5885 gaim_account_set_bool(account, "authorization", auth);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5886 gaim_account_set_bool(account, "web_aware", web_aware);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5887
12652
e739ace2688b [gaim-migrate @ 14995]
Mark Doliner <mark@kingant.net>
parents: 12645
diff changeset
5888 oscar_set_extendedstatus(gc);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5889 aim_icq_setsecurity(od, auth, web_aware);
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5890 }
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5891
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5892 static void
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5893 oscar_show_icq_privacy_opts(GaimPluginAction *action)
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5894 {
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5895 GaimConnection *gc = (GaimConnection *) action->context;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5896 GaimAccount *account = gaim_connection_get_account(gc);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5897 GaimRequestFields *fields;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5898 GaimRequestFieldGroup *g;
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5899 GaimRequestField *f;
12652
e739ace2688b [gaim-migrate @ 14995]
Mark Doliner <mark@kingant.net>
parents: 12645
diff changeset
5900 gboolean auth, web_aware;
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5901
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5902 auth = gaim_account_get_bool(account, "authorization", OSCAR_DEFAULT_AUTHORIZATION);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5903 web_aware = gaim_account_get_bool(account, "web_aware", OSCAR_DEFAULT_WEB_AWARE);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5904
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5905 fields = gaim_request_fields_new();
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5906
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5907 g = gaim_request_field_group_new(NULL);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5908
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5909 f = gaim_request_field_bool_new("authorization", _("Require authorization"), auth);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5910 gaim_request_field_group_add_field(g, f);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5911
12617
49499dec9346 [gaim-migrate @ 14953]
Mark Doliner <mark@kingant.net>
parents: 12608
diff changeset
5912 f = gaim_request_field_bool_new("web_aware", _("Web aware (enabling this will cause you to receive SPAM!)"), web_aware);
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5913 gaim_request_field_group_add_field(g, f);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5914
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5915 gaim_request_fields_add_group(fields, g);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5916
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5917 gaim_request_fields(gc, _("ICQ Privacy Options"), _("ICQ Privacy Options"),
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5918 NULL, fields,
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5919 _("OK"), G_CALLBACK(oscar_icq_privacy_opts),
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5920 _("Cancel"), NULL, gc);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
5921 }
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9016
diff changeset
5922
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5923 static void oscar_format_screenname(GaimConnection *gc, const char *nick) {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5924 OscarData *od = gc->proto_data;
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5925 if (!aim_sncmp(gaim_account_get_username(gaim_connection_get_account(gc)), nick)) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5926 if (!flap_connection_getbytype(od, SNAC_FAMILY_ADMIN)) {
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5927 od->setnick = TRUE;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5928 od->newsn = g_strdup(nick);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5929 aim_reqservice(od, SNAC_FAMILY_ADMIN);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5930 } else {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5931 aim_admin_setnick(od, flap_connection_getbytype(od, SNAC_FAMILY_ADMIN), nick);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5932 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5933 } else {
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5934 gaim_notify_error(gc, NULL, _("The new formatting is invalid."),
8152
82aeed3c90f0 [gaim-migrate @ 8864]
Mark Doliner <mark@kingant.net>
parents: 8151
diff changeset
5935 _("Screen name formatting can change only capitalization and whitespace."));
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5936 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5937 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5938
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
5939 static void oscar_show_format_screenname(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5940 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
5941 GaimConnection *gc = (GaimConnection *) action->context;
8152
82aeed3c90f0 [gaim-migrate @ 8864]
Mark Doliner <mark@kingant.net>
parents: 8151
diff changeset
5942 gaim_request_input(gc, NULL, _("New screen name formatting:"), NULL,
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
5943 gaim_connection_get_display_name(gc), FALSE, FALSE, NULL,
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
5944 _("OK"), G_CALLBACK(oscar_format_screenname),
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
5945 _("Cancel"), NULL,
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
5946 gc);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5947 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5948
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
5949 static void oscar_confirm_account(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5950 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5951 GaimConnection *gc;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5952 OscarData *od;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5953 FlapConnection *conn;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5954
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5955 gc = (GaimConnection *)action->context;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5956 od = gc->proto_data;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5957
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5958 conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5959 if (conn != NULL) {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5960 aim_admin_reqconfirm(od, conn);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5961 } else {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5962 od->conf = TRUE;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5963 aim_reqservice(od, SNAC_FAMILY_ADMIN);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5964 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5965 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5966
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
5967 static void oscar_show_email(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5968 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
5969 GaimConnection *gc = (GaimConnection *) action->context;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5970 OscarData *od = gc->proto_data;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5971 FlapConnection *conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5972
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5973 if (conn) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5974 aim_admin_getinfo(od, conn, 0x11);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5975 } else {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5976 od->reqemail = TRUE;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5977 aim_reqservice(od, SNAC_FAMILY_ADMIN);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5978 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5979 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5980
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
5981 static void oscar_change_email(GaimConnection *gc, const char *email)
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5982 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
5983 OscarData *od = gc->proto_data;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5984 FlapConnection *conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5985
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5986 if (conn) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5987 aim_admin_setemail(od, conn, email);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5988 } else {
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5989 od->setemail = TRUE;
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5990 od->email = g_strdup(email);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
5991 aim_reqservice(od, SNAC_FAMILY_ADMIN);
2768
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5992 }
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5993 }
8a918df1a5ed [gaim-migrate @ 2781]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2762
diff changeset
5994
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
5995 static void oscar_show_change_email(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
5996 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
5997 GaimConnection *gc = (GaimConnection *) action->context;
6035
8c44020a958e [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 6029
diff changeset
5998 gaim_request_input(gc, NULL, _("Change Address To:"), NULL, NULL,
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
5999 FALSE, FALSE, NULL,
5493
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
6000 _("OK"), G_CALLBACK(oscar_change_email),
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
6001 _("Cancel"), NULL,
3e8487580024 [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
6002 gc);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6003 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6004
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6005 static void oscar_show_awaitingauth(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6006 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6007 GaimConnection *gc = (GaimConnection *) action->context;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6008 OscarData *od = gc->proto_data;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6009 gchar *nombre, *text, *tmp;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6010 GaimBlistNode *gnode, *cnode, *bnode;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6011 int num=0;
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6012
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6013 text = g_strdup("");
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6014
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6015 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6016 GaimGroup *group = (GaimGroup *)gnode;
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6017 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6018 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6019 for (cnode = gnode->child; cnode; cnode = cnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6020 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6021 continue;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6022 for (bnode = cnode->child; bnode; bnode = bnode->next) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6023 GaimBuddy *buddy = (GaimBuddy *)bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6024 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6025 continue;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6026 if (buddy->account == gc->account && aim_ssi_waitingforauth(od->ssi.local, group->name, buddy->name)) {
9620
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
6027 if (gaim_buddy_get_alias_only(buddy))
c001be3c330e [gaim-migrate @ 10464]
Mark Doliner <mark@kingant.net>
parents: 9595
diff changeset
6028 nombre = g_strdup_printf(" %s (%s)", buddy->name, gaim_buddy_get_alias_only(buddy));
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6029 else
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6030 nombre = g_strdup_printf(" %s", buddy->name);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6031 tmp = g_strdup_printf("%s%s<br>", text, nombre);
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6032 g_free(text);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6033 text = tmp;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6034 g_free(nombre);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6035 num++;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6036 }
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6037 }
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
6038 }
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6039 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6040
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6041 if (!num) {
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6042 g_free(text);
6873
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6043 text = g_strdup(_("<i>you are not waiting for authorization</i>"));
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6044 }
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6045
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6046 gaim_notify_formatted(gc, NULL, _("You are awaiting authorization from "
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6047 "the following buddies"), _("You can re-request "
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6048 "authorization from these buddies by "
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6049 "right-clicking on them and selecting "
155645d0f0aa [gaim-migrate @ 7419]
Mark Doliner <mark@kingant.net>
parents: 6871
diff changeset
6050 "\"Re-request Authorization.\""), text, NULL, NULL);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6051 g_free(text);
2979
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
6052 }
8e924e4aa256 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
6053
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6054 static void search_by_email_cb(GaimConnection *gc, const char *email)
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6055 {
8950
80b4c956d7ae [gaim-migrate @ 9722]
Mark Doliner <mark@kingant.net>
parents: 8907
diff changeset
6056 OscarData *od = (OscarData *)gc->proto_data;
80b4c956d7ae [gaim-migrate @ 9722]
Mark Doliner <mark@kingant.net>
parents: 8907
diff changeset
6057
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6058 aim_search_address(od, email);
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6059 }
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6060
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6061 static void oscar_show_find_email(GaimPluginAction *action)
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6062 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6063 GaimConnection *gc = (GaimConnection *) action->context;
13545
cfc2f7fcb3dd [gaim-migrate @ 15922]
Richard Laager <rlaager@wiktel.com>
parents: 13477
diff changeset
6064 gaim_request_input(gc, _("Find Buddy by E-Mail"),
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6065 _("Search for a buddy by e-mail address"),
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6066 _("Type the e-mail address of the buddy you are "
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6067 "searching for."),
8697
725413cc9fb9 [gaim-migrate @ 9450]
Mark Doliner <mark@kingant.net>
parents: 8670
diff changeset
6068 NULL, FALSE, FALSE, NULL,
7080
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6069 _("Search"), G_CALLBACK(search_by_email_cb),
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6070 _("Cancel"), NULL, gc);
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6071 }
fc9c74cfb306 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
6072
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6073 static void oscar_show_set_info(GaimPluginAction *action)
7067
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
6074 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6075 GaimConnection *gc = (GaimConnection *) action->context;
7067
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
6076 gaim_account_request_change_user_info(gaim_connection_get_account(gc));
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
6077 }
71e0da45abe6 [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
6078
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6079 static void oscar_show_set_info_icqurl(GaimPluginAction *action)
8576
ddbcef747dc7 [gaim-migrate @ 9325]
Mark Doliner <mark@kingant.net>
parents: 8571
diff changeset
6080 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6081 GaimConnection *gc = (GaimConnection *) action->context;
10240
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10209
diff changeset
6082 gaim_notify_uri(gc, "http://www.icq.com/whitepages/user_details.php");
8576
ddbcef747dc7 [gaim-migrate @ 9325]
Mark Doliner <mark@kingant.net>
parents: 8571
diff changeset
6083 }
ddbcef747dc7 [gaim-migrate @ 9325]
Mark Doliner <mark@kingant.net>
parents: 8571
diff changeset
6084
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6085 static void oscar_change_pass(GaimPluginAction *action)
7063
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
6086 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6087 GaimConnection *gc = (GaimConnection *) action->context;
7063
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
6088 gaim_account_request_change_password(gaim_connection_get_account(gc));
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
6089 }
7fdac700deb1 [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
6090
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6091 static void oscar_show_chpassurl(GaimPluginAction *action)
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6092 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6093 GaimConnection *gc = (GaimConnection *) action->context;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6094 OscarData *od = gc->proto_data;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6095 gchar *substituted = gaim_strreplace(od->authinfo->chpassurl, "%s", gaim_account_get_username(gaim_connection_get_account(gc)));
10240
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10209
diff changeset
6096 gaim_notify_uri(gc, substituted);
5517
e9b9fbf89c42 [gaim-migrate @ 5916]
Mark Doliner <mark@kingant.net>
parents: 5498
diff changeset
6097 g_free(substituted);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6098 }
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6099
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6100 static void oscar_show_imforwardingurl(GaimPluginAction *action)
7026
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6101 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6102 GaimConnection *gc = (GaimConnection *) action->context;
10240
95ca0db2d01d [gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents: 10209
diff changeset
6103 gaim_notify_uri(gc, "http://mymobile.aol.com/dbreg/register?action=imf&clientID=1");
7026
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6104 }
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6105
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6106 static void oscar_set_icon(GaimConnection *gc, const char *iconfile)
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6107 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6108 OscarData *od = gc->proto_data;
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6109 FILE *file;
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6110 struct stat st;
5844
db5aa27cb345 [gaim-migrate @ 6275]
Mark Doliner <mark@kingant.net>
parents: 5842
diff changeset
6111
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6112 if (iconfile == NULL) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6113 aim_ssi_delicon(od);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
6114 } else if (!g_stat(iconfile, &st)) {
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
6115 guchar *buf = g_malloc(st.st_size);
10589
0f7452b1f777 [gaim-migrate @ 11994]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 10574
diff changeset
6116 file = g_fopen(iconfile, "rb");
11404
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
6117 if (file)
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
6118 {
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
6119 GaimCipher *cipher;
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
6120 GaimCipherContext *context;
11159
bd8ac1d4b2f2 [gaim-migrate @ 13246]
Mark Doliner <mark@kingant.net>
parents: 11155
diff changeset
6121 guchar md5[16];
11404
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
6122 int len;
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
6123
9532
b27ab1b8395d [gaim-migrate @ 10359]
Mark Doliner <mark@kingant.net>
parents: 9481
diff changeset
6124 /* XXX - Use g_file_get_contents()? */
11404
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
6125 len = fread(buf, 1, st.st_size, file);
6039
0c4d0c93c8c5 [gaim-migrate @ 6489]
Mark Doliner <mark@kingant.net>
parents: 6037
diff changeset
6126 fclose(file);
11404
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
6127
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
6128 cipher = gaim_ciphers_find_cipher("md5");
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
6129 context = gaim_cipher_context_new(cipher, NULL);
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
6130 gaim_cipher_context_append(context, buf, len);
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
6131 gaim_cipher_context_digest(context, 16, md5, NULL);
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
6132 gaim_cipher_context_destroy(context);
677a3862260f [gaim-migrate @ 13639]
Mark Doliner <mark@kingant.net>
parents: 11401
diff changeset
6133
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6134 aim_ssi_seticon(od, md5, 16);
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6135 } else
8660
7dfd4b16c937 [gaim-migrate @ 9412]
Mark Doliner <mark@kingant.net>
parents: 8623
diff changeset
6136 gaim_debug_error("oscar",
5842
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6137 "Can't open buddy icon file!\n");
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6138 g_free(buf);
dbed8c87f750 [gaim-migrate @ 6273]
Sean Egan <seanegan@gmail.com>
parents: 5837
diff changeset
6139 } else
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6140 gaim_debug_error("oscar", "Can't stat buddy icon file!\n");
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6141 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6142
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6143 /**
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6144 * Called by the Gaim core to determine whether or not we're
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6145 * allowed to send a file to this user.
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6146 */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6147 static gboolean
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6148 oscar_can_receive_file(GaimConnection *gc, const char *who)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6149 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6150 OscarData *od;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6151 GaimAccount *account;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6152
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6153 od = gc->proto_data;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6154 account = gaim_connection_get_account(gc);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6155
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6156 if (od != NULL)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6157 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6158 aim_userinfo_t *userinfo;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6159 userinfo = aim_locate_finduserinfo(od, who);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6160
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6161 /*
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6162 * Don't allowing sending a file to a user that does not support
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6163 * file transfer, and don't allow sending to ourselves.
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6164 */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6165 if ((userinfo != NULL) &&
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6166 (userinfo->capabilities & OSCAR_CAPABILITY_SENDFILE) &&
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6167 aim_sncmp(who, gaim_account_get_username(account)))
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6168 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6169 return TRUE;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6170 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6171 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6172
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6173 return FALSE;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6174 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6175
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6176 static GaimXfer *
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6177 oscar_new_xfer(GaimConnection *gc, const char *who)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6178 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6179 GaimXfer *xfer;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6180 OscarData *od;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6181 GaimAccount *account;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6182 PeerConnection *conn;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6183
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6184 od = gc->proto_data;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6185 account = gaim_connection_get_account(gc);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6186
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6187 xfer = gaim_xfer_new(account, GAIM_XFER_SEND, who);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6188 gaim_xfer_ref(xfer);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6189 gaim_xfer_set_init_fnc(xfer, peer_oft_sendcb_init);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6190 gaim_xfer_set_cancel_send_fnc(xfer, peer_oft_cb_generic_cancel);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6191 gaim_xfer_set_request_denied_fnc(xfer, peer_oft_cb_generic_cancel);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6192 gaim_xfer_set_ack_fnc(xfer, peer_oft_sendcb_ack);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6193
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6194 conn = peer_connection_new(od, OSCAR_CAPABILITY_SENDFILE, who);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6195 conn->flags |= PEER_CONNECTION_FLAG_INITIATED_BY_ME;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6196 conn->flags |= PEER_CONNECTION_FLAG_APPROVED;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6197 aim_icbm_makecookie(conn->cookie);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6198 conn->xfer = xfer;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6199 xfer->data = conn;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6200
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6201 return xfer;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6202 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6203
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6204 /*
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6205 * Called by the Gaim core when the user indicates that a
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6206 * file is to be sent to a special someone.
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6207 */
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6208 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6209 oscar_send_file(GaimConnection *gc, const char *who, const char *file)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6210 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6211 GaimXfer *xfer;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6212
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6213 xfer = oscar_new_xfer(gc, who);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6214
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6215 if (file != NULL)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6216 gaim_xfer_request_accepted(xfer, file);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6217 else
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6218 gaim_xfer_request(xfer);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6219 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6220
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6221 static GList *
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6222 oscar_actions(GaimPlugin *plugin, gpointer context)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6223 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6224 GaimConnection *gc = (GaimConnection *) context;
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6225 OscarData *od = gc->proto_data;
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6226 GList *m = NULL;
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6227 GaimPluginAction *act;
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6228
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6229 act = gaim_plugin_action_new(_("Set User Info..."),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6230 oscar_show_set_info);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6231 m = g_list_append(m, act);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6232
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
6233 if (od->icq)
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
6234 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6235 act = gaim_plugin_action_new(_("Set User Info (URL)..."),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6236 oscar_show_set_info_icqurl);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6237 m = g_list_append(m, act);
8576
ddbcef747dc7 [gaim-migrate @ 9325]
Mark Doliner <mark@kingant.net>
parents: 8571
diff changeset
6238 }
ddbcef747dc7 [gaim-migrate @ 9325]
Mark Doliner <mark@kingant.net>
parents: 8571
diff changeset
6239
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6240 act = gaim_plugin_action_new(_("Change Password..."),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6241 oscar_change_pass);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6242 m = g_list_append(m, act);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6243
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6244 if (od->authinfo->chpassurl != NULL)
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
6245 {
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6246 act = gaim_plugin_action_new(_("Change Password (URL)"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6247 oscar_show_chpassurl);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6248 m = g_list_append(m, act);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6249
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6250 act = gaim_plugin_action_new(_("Configure IM Forwarding (URL)"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6251 oscar_show_imforwardingurl);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6252 m = g_list_append(m, act);
7026
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6253 }
53a586c3a80e [gaim-migrate @ 7589]
Mark Doliner <mark@kingant.net>
parents: 7023
diff changeset
6254
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
6255 m = g_list_append(m, NULL);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
6256
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
6257 if (od->icq)
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
6258 {
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
6259 /* ICQ actions */
12652
e739ace2688b [gaim-migrate @ 14995]
Mark Doliner <mark@kingant.net>
parents: 12645
diff changeset
6260 act = gaim_plugin_action_new(_("Set Privacy Options..."),
10570
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
6261 oscar_show_icq_privacy_opts);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
6262 m = g_list_append(m, act);
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
6263 }
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
6264 else
2b05acfeec65 [gaim-migrate @ 11960]
Mark Doliner <mark@kingant.net>
parents: 10567
diff changeset
6265 {
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6266 /* AIM actions */
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6267 act = gaim_plugin_action_new(_("Format Screen Name..."),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6268 oscar_show_format_screenname);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6269 m = g_list_append(m, act);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6270
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6271 act = gaim_plugin_action_new(_("Confirm Account"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6272 oscar_confirm_account);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6273 m = g_list_append(m, act);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6274
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6275 act = gaim_plugin_action_new(_("Display Currently Registered E-Mail Address"),
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6276 oscar_show_email);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6277 m = g_list_append(m, act);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6278
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6279 act = gaim_plugin_action_new(_("Change Currently Registered E-Mail Address..."),
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6280 oscar_show_change_email);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6281 m = g_list_append(m, act);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6282 }
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6283
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6284 m = g_list_append(m, NULL);
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6285
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6286 act = gaim_plugin_action_new(_("Show Buddies Awaiting Authorization"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6287 oscar_show_awaitingauth);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6288 m = g_list_append(m, act);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6289
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6290 m = g_list_append(m, NULL);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6291
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6292 act = gaim_plugin_action_new(_("Search for Buddy by E-Mail Address..."),
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6293 oscar_show_find_email);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6294 m = g_list_append(m, act);
4333
cc2f780c0505 [gaim-migrate @ 4597]
Mark Doliner <mark@kingant.net>
parents: 4317
diff changeset
6295
8591
f96795b786d2 [gaim-migrate @ 9342]
Mark Doliner <mark@kingant.net>
parents: 8590
diff changeset
6296 #if 0
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6297 act = gaim_plugin_action_new(_("Search for Buddy by Information"),
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6298 show_find_info);
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6299 m = g_list_append(m, act);
8591
f96795b786d2 [gaim-migrate @ 9342]
Mark Doliner <mark@kingant.net>
parents: 8590
diff changeset
6300 #endif
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6301
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6302 return m;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6303 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6304
5575
ca4762df72d1 [gaim-migrate @ 5979]
Sean Egan <seanegan@gmail.com>
parents: 5556
diff changeset
6305 static void oscar_change_passwd(GaimConnection *gc, const char *old, const char *new)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6306 {
7283
b8fcbff88438 [gaim-migrate @ 7863]
Mark Doliner <mark@kingant.net>
parents: 7282
diff changeset
6307 OscarData *od = gc->proto_data;
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6308
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6309 if (od->icq) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6310 aim_icq_changepasswd(od, new);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6311 } else {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6312 FlapConnection *conn;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6313 conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6314 if (conn) {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6315 aim_admin_changepasswd(od, conn, new, old);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6316 } else {
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6317 od->chpass = TRUE;
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6318 od->oldp = g_strdup(old);
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6319 od->newp = g_strdup(new);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6320 aim_reqservice(od, SNAC_FAMILY_ADMIN);
4617
858979ab3867 [gaim-migrate @ 4908]
Mark Doliner <mark@kingant.net>
parents: 4608
diff changeset
6321 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6322 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6323 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6324
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6325 static void
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6326 oscar_convo_closed(GaimConnection *gc, const char *who)
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6327 {
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6328 OscarData *od;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6329 PeerConnection *conn;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6330
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6331 od = gc->proto_data;
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6332 conn = peer_connection_find_by_type(od, who, OSCAR_CAPABILITY_DIRECTIM);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6333
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6334 if (conn != NULL)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6335 {
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6336 if (!conn->ready)
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6337 aim_im_sendch2_cancel(conn);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6338
13608
6c34fbb75bbd [gaim-migrate @ 15994]
Mark Doliner <mark@kingant.net>
parents: 13605
diff changeset
6339 peer_connection_destroy(conn, OSCAR_DISCONNECT_LOCAL_CLOSED);
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6340 }
2246
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6341 }
933346315b9b [gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2235
diff changeset
6342
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
6343 static void
12816
ff267281e882 [gaim-migrate @ 15164]
Mark Doliner <mark@kingant.net>
parents: 12730
diff changeset
6344 recent_buddies_cb(const char *name, GaimPrefType type,
ff267281e882 [gaim-migrate @ 15164]
Mark Doliner <mark@kingant.net>
parents: 12730
diff changeset
6345 gconstpointer value, gpointer data)
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
6346 {
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
6347 GaimConnection *gc = data;
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
6348 OscarData *od = gc->proto_data;
13234
f2431a7e33aa [gaim-migrate @ 15600]
Mark Doliner <mark@kingant.net>
parents: 13231
diff changeset
6349 guint32 presence;
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
6350
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6351 presence = aim_ssi_getpresence(od->ssi.local);
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
6352
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
6353 if (value) {
12486
5b9ae793e2fb [gaim-migrate @ 14798]
Mark Doliner <mark@kingant.net>
parents: 12454
diff changeset
6354 presence &= ~AIM_SSI_PRESENCE_FLAG_NORECENTBUDDIES;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6355 aim_ssi_setpresence(od, presence);
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
6356 } else {
12486
5b9ae793e2fb [gaim-migrate @ 14798]
Mark Doliner <mark@kingant.net>
parents: 12454
diff changeset
6357 presence |= AIM_SSI_PRESENCE_FLAG_NORECENTBUDDIES;
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6358 aim_ssi_setpresence(od, presence);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6359 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6360 }
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6361
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6362 #ifdef USE_PRPL_PREFERENCES
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6363 ppref = gaim_plugin_pref_new_with_name_and_label("/plugins/prpl/oscar/recent_buddies", _("Use recent buddies group"));
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6364 gaim_plugin_pref_frame_add(frame, ppref);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6365
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6366 ppref = gaim_plugin_pref_new_with_name_and_label("/plugins/prpl/oscar/show_idle", _("Show how long you have been idle"));
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6367 gaim_plugin_pref_frame_add(frame, ppref);
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6368 #endif
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
6369
11153
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6370 static const char *
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6371 oscar_normalize(const GaimAccount *account, const char *str)
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6372 {
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6373 static char buf[BUF_LEN];
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6374 char *tmp1, *tmp2;
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6375 int i, j;
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6376
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6377 g_return_val_if_fail(str != NULL, NULL);
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6378
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6379 strncpy(buf, str, BUF_LEN);
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6380 for (i=0, j=0; buf[j]; i++, j++)
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6381 {
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6382 while (buf[j] == ' ')
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6383 j++;
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6384 buf[i] = buf[j];
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6385 }
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6386 buf[i] = '\0';
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6387
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6388 tmp1 = g_utf8_strdown(buf, -1);
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6389 tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT);
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6390 g_snprintf(buf, sizeof(buf), "%s", tmp2);
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6391 g_free(tmp2);
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6392 g_free(tmp1);
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6393
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6394 return buf;
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6395 }
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6396
13592
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6397 static gboolean
6519aeb66b31 [gaim-migrate @ 15978]
Mark Doliner <mark@kingant.net>
parents: 13571
diff changeset
6398 oscar_offline_message(const GaimBuddy *buddy)
12645
fc28451f5d96 [gaim-migrate @ 14983]
Richard Laager <rlaager@wiktel.com>
parents: 12624
diff changeset
6399 {
fc28451f5d96 [gaim-migrate @ 14983]
Richard Laager <rlaager@wiktel.com>
parents: 12624
diff changeset
6400 OscarData *od;
fc28451f5d96 [gaim-migrate @ 14983]
Richard Laager <rlaager@wiktel.com>
parents: 12624
diff changeset
6401 GaimAccount *account;
fc28451f5d96 [gaim-migrate @ 14983]
Richard Laager <rlaager@wiktel.com>
parents: 12624
diff changeset
6402 GaimConnection *gc;
fc28451f5d96 [gaim-migrate @ 14983]
Richard Laager <rlaager@wiktel.com>
parents: 12624
diff changeset
6403
fc28451f5d96 [gaim-migrate @ 14983]
Richard Laager <rlaager@wiktel.com>
parents: 12624
diff changeset
6404 account = gaim_buddy_get_account(buddy);
fc28451f5d96 [gaim-migrate @ 14983]
Richard Laager <rlaager@wiktel.com>
parents: 12624
diff changeset
6405 gc = gaim_account_get_connection(account);
fc28451f5d96 [gaim-migrate @ 14983]
Richard Laager <rlaager@wiktel.com>
parents: 12624
diff changeset
6406 od = (OscarData *)gc->proto_data;
fc28451f5d96 [gaim-migrate @ 14983]
Richard Laager <rlaager@wiktel.com>
parents: 12624
diff changeset
6407
fc28451f5d96 [gaim-migrate @ 14983]
Richard Laager <rlaager@wiktel.com>
parents: 12624
diff changeset
6408 return (od->icq && aim_sn_is_icq(gaim_account_get_username(account)));
fc28451f5d96 [gaim-migrate @ 14983]
Richard Laager <rlaager@wiktel.com>
parents: 12624
diff changeset
6409 }
fc28451f5d96 [gaim-migrate @ 14983]
Richard Laager <rlaager@wiktel.com>
parents: 12624
diff changeset
6410
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6411 static GaimPluginProtocolInfo prpl_info =
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6412 {
9308
b3bda982996b [gaim-migrate @ 10116]
Sean Egan <seanegan@gmail.com>
parents: 9295
diff changeset
6413 OPT_PROTO_MAIL_CHECK | OPT_PROTO_IM_IMAGE,
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6414 NULL, /* user_splits */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6415 NULL, /* protocol_options */
10674
9aa1d4adf3e9 [gaim-migrate @ 12214]
Nathan Walp <nwalp@pidgin.im>
parents: 10662
diff changeset
6416 {"jpeg,gif,bmp,ico", 48, 48, 50, 50,
9aa1d4adf3e9 [gaim-migrate @ 12214]
Nathan Walp <nwalp@pidgin.im>
parents: 10662
diff changeset
6417 GAIM_ICON_SCALE_SEND | GAIM_ICON_SCALE_DISPLAY}, /* icon_spec */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6418 oscar_list_icon, /* list_icon */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6419 oscar_list_emblems, /* list_emblems */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6420 oscar_status_text, /* status_text */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6421 oscar_tooltip_text, /* tooltip_text */
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
6422 oscar_status_types, /* status_types */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6423 oscar_blist_node_menu, /* blist_node_menu */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6424 oscar_chat_info, /* chat_info */
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9753
diff changeset
6425 oscar_chat_info_defaults, /* chat_info_defaults */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6426 oscar_login, /* login */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6427 oscar_close, /* close */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6428 oscar_send_im, /* send_im */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6429 oscar_set_info, /* set_info */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6430 oscar_send_typing, /* send_typing */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6431 oscar_get_info, /* get_info */
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
6432 oscar_set_status, /* set_status */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6433 oscar_set_idle, /* set_idle */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6434 oscar_change_passwd, /* change_passwd */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6435 oscar_add_buddy, /* add_buddy */
10866
f38bda97f981 [gaim-migrate @ 12552]
Mark Doliner <mark@kingant.net>
parents: 10860
diff changeset
6436 NULL, /* add_buddies */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6437 oscar_remove_buddy, /* remove_buddy */
10866
f38bda97f981 [gaim-migrate @ 12552]
Mark Doliner <mark@kingant.net>
parents: 10860
diff changeset
6438 NULL, /* remove_buddies */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6439 oscar_add_permit, /* add_permit */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6440 oscar_add_deny, /* add_deny */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6441 oscar_rem_permit, /* rem_permit */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6442 oscar_rem_deny, /* rem_deny */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6443 oscar_set_permit_deny, /* set_permit_deny */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6444 oscar_join_chat, /* join_chat */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6445 NULL, /* reject_chat */
9973
09ed9a574761 [gaim-migrate @ 10884]
Mark Doliner <mark@kingant.net>
parents: 9972
diff changeset
6446 oscar_get_chat_name, /* get_chat_name */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6447 oscar_chat_invite, /* chat_invite */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6448 oscar_chat_leave, /* chat_leave */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6449 NULL, /* chat_whisper */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6450 oscar_send_chat, /* chat_send */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6451 oscar_keepalive, /* keepalive */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6452 NULL, /* register_user */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6453 NULL, /* get_cb_info */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6454 NULL, /* get_cb_away */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6455 oscar_alias_buddy, /* alias_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6456 oscar_move_buddy, /* group_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6457 oscar_rename_group, /* rename_group */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6458 NULL, /* buddy_free */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6459 oscar_convo_closed, /* convo_closed */
11153
8e600ee6ec61 [gaim-migrate @ 13235]
Mark Doliner <mark@kingant.net>
parents: 11102
diff changeset
6460 oscar_normalize, /* normalize */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6461 oscar_set_icon, /* set_buddy_icon */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6462 NULL, /* remove_group */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6463 NULL, /* get_cb_real_name */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6464 NULL, /* set_chat_topic */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6465 NULL, /* find_blist_chat */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6466 NULL, /* roomlist_get_list */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6467 NULL, /* roomlist_cancel */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6468 NULL, /* roomlist_expand_category */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9466
diff changeset
6469 oscar_can_receive_file, /* can_receive_file */
12143
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
6470 oscar_send_file, /* send_file */
cbebda5f019c [gaim-migrate @ 14444]
Richard Laager <rlaager@wiktel.com>
parents: 12088
diff changeset
6471 oscar_new_xfer, /* new_xfer */
12645
fc28451f5d96 [gaim-migrate @ 14983]
Richard Laager <rlaager@wiktel.com>
parents: 12624
diff changeset
6472 oscar_offline_message, /* offline_message */
12600
e856f985a0b9 [gaim-migrate @ 14934]
Richard Laager <rlaager@wiktel.com>
parents: 12595
diff changeset
6473 NULL, /* whiteboard_prpl_ops */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6474 };
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6475
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6476 static GaimPluginInfo info =
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6477 {
9943
f8e395a054e2 [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
6478 GAIM_PLUGIN_MAGIC,
f8e395a054e2 [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
6479 GAIM_MAJOR_VERSION,
f8e395a054e2 [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
6480 GAIM_MINOR_VERSION,
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6481 GAIM_PLUGIN_PROTOCOL, /**< type */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6482 NULL, /**< ui_requirement */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6483 0, /**< flags */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6484 NULL, /**< dependencies */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6485 GAIM_PRIORITY_DEFAULT, /**< priority */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6486
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6487 "prpl-oscar", /**< id */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6488 "AIM/ICQ", /**< name */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6489 VERSION, /**< version */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6490 /** summary */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6491 N_("AIM/ICQ Protocol Plugin"),
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6492 /** description */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6493 N_("AIM/ICQ Protocol Plugin"),
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6494 NULL, /**< author */
6371
8f94cce8faa5 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
6495 GAIM_WEBSITE, /**< homepage */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6496
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6497 NULL, /**< load */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6498 NULL, /**< unload */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6499 NULL, /**< destroy */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6500
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6501 NULL, /**< ui_info */
8993
294ae6548d4e [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8985
diff changeset
6502 &prpl_info, /**< extra_info */
13311
f6f465b8d1c0 [gaim-migrate @ 15677]
Richard Laager <rlaager@wiktel.com>
parents: 13296
diff changeset
6503 NULL,
9015
67421e0dc497 [gaim-migrate @ 9791]
Luke Schierer <lschiere@pidgin.im>
parents: 8995
diff changeset
6504 oscar_actions
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6505 };
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6506
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6507 static void
5920
7d385de2f9cd [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5917
diff changeset
6508 init_plugin(GaimPlugin *plugin)
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6509 {
5638
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6510 GaimAccountOption *option;
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6511
13705
2f7b356812bc [gaim-migrate @ 16108]
Richard Laager <rlaager@wiktel.com>
parents: 13695
diff changeset
6512 option = gaim_account_option_string_new(_("Server"), "server", OSCAR_DEFAULT_LOGIN_SERVER);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
6513 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
6514
13705
2f7b356812bc [gaim-migrate @ 16108]
Richard Laager <rlaager@wiktel.com>
parents: 13695
diff changeset
6515 option = gaim_account_option_int_new(_("Port"), "port", OSCAR_DEFAULT_LOGIN_PORT);
9830
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
6516 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
6517
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
6518 option = gaim_account_option_string_new(_("Encoding"), "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
2e3c63811475 [gaim-migrate @ 10701]
Mark Doliner <mark@kingant.net>
parents: 9826
diff changeset
6519 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
13073
97537d564d35 [gaim-migrate @ 15435]
Mark Doliner <mark@kingant.net>
parents: 13071
diff changeset
6520
13071
e84e4e56f8f6 [gaim-migrate @ 15433]
Mark Doliner <mark@kingant.net>
parents: 13060
diff changeset
6521 option = gaim_account_option_bool_new(
13672
e5c3bfc208a9 [gaim-migrate @ 16074]
Mark Doliner <mark@kingant.net>
parents: 13664
diff changeset
6522 _("Always use AIM/ICQ proxy server\n(slower, but does not reveal your IP address)"), "always_use_rv_proxy",
e5c3bfc208a9 [gaim-migrate @ 16074]
Mark Doliner <mark@kingant.net>
parents: 13664
diff changeset
6523 OSCAR_DEFAULT_ALWAYS_USE_RV_PROXY);
13071
e84e4e56f8f6 [gaim-migrate @ 15433]
Mark Doliner <mark@kingant.net>
parents: 13060
diff changeset
6524 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
11338
17142948653e [gaim-migrate @ 13551]
Mark Doliner <mark@kingant.net>
parents: 11303
diff changeset
6525
11369
ab0fa7cd61cc [gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly>
parents: 11359
diff changeset
6526 /* Preferences */
9935
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
6527 gaim_prefs_add_none("/plugins/prpl/oscar");
bb0c04ebcdef [gaim-migrate @ 10827]
Mark Doliner <mark@kingant.net>
parents: 9933
diff changeset
6528 gaim_prefs_add_bool("/plugins/prpl/oscar/recent_buddies", FALSE);
9942
3941c39ccff5 [gaim-migrate @ 10834]
Mark Doliner <mark@kingant.net>
parents: 9936
diff changeset
6529 gaim_prefs_add_bool("/plugins/prpl/oscar/show_idle", FALSE);
13672
e5c3bfc208a9 [gaim-migrate @ 16074]
Mark Doliner <mark@kingant.net>
parents: 13664
diff changeset
6530 gaim_prefs_remove("/plugins/prpl/oscar/always_use_rv_proxy");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6531 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6532
5920
7d385de2f9cd [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5917
diff changeset
6533 GAIM_INIT_PLUGIN(oscar, init_plugin, info);