Sat, 22 Sep 2007 16:19:34 +0000
Updated hinting to be less invasive
| 2086 | 1 | /* |
| 15884 | 2 | * purple |
| 2086 | 3 | * |
| 4 | * Some code copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
| 6302 | 5 | * Some code copyright (C) 1999-2001, Eric Warmenhoven |
| 6 | * Some code copyright (C) 2001-2003, Sean Egan | |
|
11155
12904075510f
[gaim-migrate @ 13237]
Mark Doliner <markdoliner@pidgin.im>
parents:
11153
diff
changeset
|
7 | * Some code copyright (C) 2001-2005, Mark Doliner <thekingant@users.sourceforge.net> |
|
11049
6c6adfe954f4
[gaim-migrate @ 12983]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11033
diff
changeset
|
8 | * Some code copyright (C) 2005, Jonathan Clark <ardentlygnarly@users.sourceforge.net> |
| 6302 | 9 | * |
| 10 | * Most libfaim code copyright (C) 1998-2001 Adam Fritzler <afritz@auk.cx> | |
|
8151
195a587b6c32
[gaim-migrate @ 8863]
Mark Doliner <markdoliner@pidgin.im>
parents:
8150
diff
changeset
|
11 | * Some libfaim code copyright (C) 2001-2004 Mark Doliner <thekingant@users.sourceforge.net> |
| 2086 | 12 | * |
| 13 | * This program is free software; you can redistribute it and/or modify | |
| 14 | * it under the terms of the GNU General Public License as published by | |
| 15 | * the Free Software Foundation; either version 2 of the License, or | |
| 16 | * (at your option) any later version. | |
| 17 | * | |
| 18 | * This program is distributed in the hope that it will be useful, | |
| 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 10485 | 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 2086 | 21 | * GNU General Public License for more details. |
| 22 | * | |
| 23 | * You should have received a copy of the GNU General Public License | |
| 24 | * along with this program; if not, write to the Free Software | |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19832
diff
changeset
|
25 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 2086 | 26 | * |
| 27 | */ | |
| 15030 | 28 | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
29 | #include "internal.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
30 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
31 | #include "account.h" |
|
5638
53e752c88ea1
[gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents:
5631
diff
changeset
|
32 | #include "accountopt.h" |
|
6846
f814f02dca87
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
33 | #include "buddyicon.h" |
|
11404
45cde074735d
[gaim-migrate @ 13639]
Mark Doliner <markdoliner@pidgin.im>
parents:
11401
diff
changeset
|
34 | #include "cipher.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
35 | #include "conversation.h" |
|
7083
bdf557b0eea4
[gaim-migrate @ 7648]
Christian Hammond <chipx86@chipx86.com>
parents:
7082
diff
changeset
|
36 | #include "core.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
37 | #include "debug.h" |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6907
diff
changeset
|
38 | #include "imgstore.h" |
| 8231 | 39 | #include "network.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
40 | #include "notify.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
41 | #include "privacy.h" |
| 2086 | 42 | #include "prpl.h" |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
43 | #include "proxy.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
44 | #include "request.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
45 | #include "util.h" |
| 9943 | 46 | #include "version.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
47 | |
| 15030 | 48 | #include "oscarcommon.h" |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
49 | #include "oscar.h" |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
50 | #include "peer.h" |
| 2086 | 51 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
52 | #define OSCAR_STATUS_ID_INVISIBLE "invisible" |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
53 | #define OSCAR_STATUS_ID_OFFLINE "offline" |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
54 | #define OSCAR_STATUS_ID_AVAILABLE "available" |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
55 | #define OSCAR_STATUS_ID_AWAY "away" |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
56 | #define OSCAR_STATUS_ID_DND "dnd" |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
57 | #define OSCAR_STATUS_ID_NA "na" |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
58 | #define OSCAR_STATUS_ID_OCCUPIED "occupied" |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
59 | #define OSCAR_STATUS_ID_FREE4CHAT "free4chat" |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
60 | #define OSCAR_STATUS_ID_CUSTOM "custom" |
|
15588
e6e89a427ed5
Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents:
15524
diff
changeset
|
61 | #define OSCAR_STATUS_ID_MOBILE "mobile" |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
62 | |
|
15927
009137ac8bb8
I don't know if the OSCAR checksum stuff will be copied to pidgin.im, but it certainly won't be at a website that's not ours (wrong because of the sed).
Richard Laager <rlaager@pidgin.im>
parents:
15926
diff
changeset
|
63 | #define AIMHASHDATA "http://pidgin.im/aim_data.php3" |
| 2086 | 64 | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
65 | #define OSCAR_CONNECT_STEPS 6 |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
66 | |
| 15884 | 67 | static OscarCapability purple_caps = OSCAR_CAPABILITY_CHAT | OSCAR_CAPABILITY_BUDDYICON | OSCAR_CAPABILITY_DIRECTIM | OSCAR_CAPABILITY_SENDFILE | OSCAR_CAPABILITY_UNICODE | OSCAR_CAPABILITY_INTEROPERATE | OSCAR_CAPABILITY_ICHAT; |
|
3458
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
68 | |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
69 | static guint8 features_aim[] = {0x01, 0x01, 0x01, 0x02}; |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
70 | static guint8 features_icq[] = {0x01, 0x06}; |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
71 | static guint8 features_icq_offline[] = {0x01}; |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
72 | static guint8 ck[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; |
| 2086 | 73 | |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
74 | struct create_room { |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
75 | char *name; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
76 | int exchange; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
77 | }; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
78 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
79 | struct oscar_ask_directim_data |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
80 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
81 | OscarData *od; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
82 | char *who; |
| 2086 | 83 | }; |
| 84 | ||
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
85 | /* |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
86 | * Various PRPL-specific buddy info that we want to keep track of |
|
11651
02f366130354
[gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents:
11643
diff
changeset
|
87 | * Some other info is maintained by locate.c, and I'd like to move |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
88 | * the rest of this to libfaim, mostly im.c |
|
11651
02f366130354
[gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents:
11643
diff
changeset
|
89 | * |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
90 | * TODO: More of this should use the status API. |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
91 | */ |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
92 | struct buddyinfo { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
93 | gboolean typingnot; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
94 | guint32 ipaddr; |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
95 | |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
96 | unsigned long ico_me_len; |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
97 | unsigned long ico_me_csum; |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
98 | time_t ico_me_time; |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
99 | gboolean ico_informed; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
100 | |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
101 | unsigned long ico_len; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
102 | unsigned long ico_csum; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
103 | time_t ico_time; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
104 | gboolean ico_need; |
| 7406 | 105 | gboolean ico_sent; |
| 2086 | 106 | }; |
| 107 | ||
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
108 | struct name_data { |
| 15884 | 109 | PurpleConnection *gc; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
110 | gchar *name; |
| 3453 | 111 | gchar *nick; |
| 3141 | 112 | }; |
| 113 | ||
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
114 | static char *msgerrreason[] = { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
115 | N_("Invalid error"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
116 | N_("Invalid SNAC"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
117 | N_("Rate to host"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
118 | N_("Rate to client"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
119 | N_("Not logged in"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
120 | N_("Service unavailable"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
121 | N_("Service not defined"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
122 | N_("Obsolete SNAC"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
123 | N_("Not supported by host"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
124 | N_("Not supported by client"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
125 | N_("Refused by client"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
126 | N_("Reply too big"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
127 | N_("Responses lost"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
128 | N_("Request denied"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
129 | N_("Busted SNAC payload"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
130 | N_("Insufficient rights"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
131 | N_("In local permit/deny"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
132 | N_("Too evil (sender)"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
133 | N_("Too evil (receiver)"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
134 | N_("User temporarily unavailable"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
135 | N_("No match"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
136 | N_("List overflow"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
137 | N_("Request ambiguous"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
138 | N_("Queue full"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
139 | N_("Not while on AOL") |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
140 | }; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
141 | static int msgerrreasonlen = 25; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
142 | |
| 15884 | 143 | /* All the libfaim->purple callback functions */ |
| 144 | static int purple_parse_auth_resp (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 145 | static int purple_parse_login (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 146 | static int purple_parse_auth_securid_request(OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 147 | static int purple_handle_redirect (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 148 | static int purple_info_change (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 149 | static int purple_account_confirm (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 150 | static int purple_parse_oncoming (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 151 | static int purple_parse_offgoing (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 152 | static int purple_parse_incoming_im(OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 153 | static int purple_parse_misses (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 154 | static int purple_parse_clientauto (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 155 | static int purple_parse_userinfo (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 156 | static int purple_got_infoblock (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 157 | static int purple_parse_motd (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 158 | static int purple_chatnav_info (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 159 | static int purple_conv_chat_join (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 160 | static int purple_conv_chat_leave (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 161 | static int purple_conv_chat_info_update (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 162 | static int purple_conv_chat_incoming_msg(OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 163 | static int purple_email_parseupdate(OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 164 | static int purple_icon_parseicon (OscarData *, FlapConnection *, FlapFrame *, ...); | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
165 | static int oscar_icon_req (OscarData *, FlapConnection *, FlapFrame *, ...); |
| 15884 | 166 | static int purple_parse_msgack (OscarData *, FlapConnection *, FlapFrame *, ...); |
| 167 | static int purple_parse_ratechange (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 168 | static int purple_parse_evilnotify (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 169 | static int purple_parse_searcherror(OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 170 | static int purple_parse_searchreply(OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 171 | static int purple_bosrights (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 172 | static int purple_connerr (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 173 | static int purple_parse_msgerr (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 174 | static int purple_parse_mtn (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 175 | static int purple_parse_locaterights(OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 176 | static int purple_parse_buddyrights(OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 177 | static int purple_parse_locerr (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 178 | static int purple_icbm_param_info (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 179 | static int purple_parse_genericerr (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 180 | static int purple_memrequest (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 181 | static int purple_selfinfo (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 182 | static int purple_offlinemsg (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 183 | static int purple_offlinemsgdone (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 184 | static int purple_icqalias (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 185 | static int purple_icqinfo (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 186 | static int purple_popup (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 187 | static int purple_ssi_parseerr (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 188 | static int purple_ssi_parserights (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 189 | static int purple_ssi_parselist (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 190 | static int purple_ssi_parseack (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 191 | static int purple_ssi_parseadd (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 192 | static int purple_ssi_authgiven (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 193 | static int purple_ssi_authrequest (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 194 | static int purple_ssi_authreply (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 195 | static int purple_ssi_gotadded (OscarData *, FlapConnection *, FlapFrame *, ...); | |
| 196 | ||
|
19111
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
197 | static void purple_icons_fetch(PurpleConnection *gc); |
| 15884 | 198 | |
| 199 | static void recent_buddies_cb(const char *name, PurplePrefType type, gconstpointer value, gpointer data); | |
| 200 | void oscar_set_info(PurpleConnection *gc, const char *info); | |
| 201 | static void oscar_set_info_and_status(PurpleAccount *account, gboolean setinfo, const char *rawinfo, gboolean setstatus, PurpleStatus *status); | |
| 202 | static void oscar_set_extendedstatus(PurpleConnection *gc); | |
| 203 | static void oscar_format_screenname(PurpleConnection *gc, const char *nick); | |
| 204 | static gboolean purple_ssi_rerequestdata(gpointer data); | |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
205 | |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
206 | static void oscar_free_name_data(struct name_data *data) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
207 | g_free(data->name); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
208 | g_free(data->nick); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
209 | g_free(data); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
210 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
211 | |
|
15122
58eab9b89e86
[gaim-migrate @ 17844]
Daniel Atallah <datallah@pidgin.im>
parents:
15119
diff
changeset
|
212 | #ifdef _WIN32 |
|
58eab9b89e86
[gaim-migrate @ 17844]
Daniel Atallah <datallah@pidgin.im>
parents:
15119
diff
changeset
|
213 | const char *oscar_get_locale_charset(void) { |
|
58eab9b89e86
[gaim-migrate @ 17844]
Daniel Atallah <datallah@pidgin.im>
parents:
15119
diff
changeset
|
214 | static const char *charset = NULL; |
|
58eab9b89e86
[gaim-migrate @ 17844]
Daniel Atallah <datallah@pidgin.im>
parents:
15119
diff
changeset
|
215 | if (charset == NULL) |
|
58eab9b89e86
[gaim-migrate @ 17844]
Daniel Atallah <datallah@pidgin.im>
parents:
15119
diff
changeset
|
216 | g_get_charset(&charset); |
|
58eab9b89e86
[gaim-migrate @ 17844]
Daniel Atallah <datallah@pidgin.im>
parents:
15119
diff
changeset
|
217 | return charset; |
|
58eab9b89e86
[gaim-migrate @ 17844]
Daniel Atallah <datallah@pidgin.im>
parents:
15119
diff
changeset
|
218 | } |
|
58eab9b89e86
[gaim-migrate @ 17844]
Daniel Atallah <datallah@pidgin.im>
parents:
15119
diff
changeset
|
219 | #endif |
|
58eab9b89e86
[gaim-migrate @ 17844]
Daniel Atallah <datallah@pidgin.im>
parents:
15119
diff
changeset
|
220 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
221 | /** |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
222 | * Determine how we can send this message. Per the warnings elsewhere |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
223 | * in this file, these little checks determine the simplest encoding |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
224 | * we can use for a given message send using it. |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
225 | */ |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
226 | static guint32 |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
227 | oscar_charset_check(const char *utf8) |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
228 | { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
229 | int i = 0; |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
230 | int charset = AIM_CHARSET_ASCII; |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
231 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
232 | /* |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
233 | * Can we get away with using our custom encoding? |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
234 | */ |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
235 | while (utf8[i]) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
236 | { |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
237 | if ((unsigned char)utf8[i] > 0x7f) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
238 | /* not ASCII! */ |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
239 | charset = AIM_CHARSET_CUSTOM; |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
240 | break; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
241 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
242 | i++; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
243 | } |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
244 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
245 | /* |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
246 | * Must we send this message as UNICODE (in the UCS-2BE encoding)? |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
247 | */ |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
248 | while (utf8[i]) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
249 | { |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
250 | /* ISO-8859-1 is 0x00-0xbf in the first byte |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
251 | * followed by 0xc0-0xc3 in the second */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
252 | if ((unsigned char)utf8[i] < 0x80) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
253 | i++; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
254 | continue; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
255 | } else if (((unsigned char)utf8[i] & 0xfc) == 0xc0 && |
|
13227
f011e198f246
[gaim-migrate @ 15591]
Mark Doliner <markdoliner@pidgin.im>
parents:
13201
diff
changeset
|
256 | ((unsigned char)utf8[i + 1] & 0xc0) == 0x80) { |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
257 | i += 2; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
258 | continue; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
259 | } |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
260 | charset = AIM_CHARSET_UNICODE; |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
261 | break; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
262 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
263 | |
|
9807
ff713acc7204
[gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents:
9806
diff
changeset
|
264 | return charset; |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
265 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
266 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
267 | /** |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
268 | * Take a string of the form charset="bleh" where bleh is |
|
13227
f011e198f246
[gaim-migrate @ 15591]
Mark Doliner <markdoliner@pidgin.im>
parents:
13201
diff
changeset
|
269 | * one of us-ascii, utf-8, iso-8859-1, or unicode-2-0, and |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
270 | * return a newly allocated string containing bleh. |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
271 | */ |
|
15193
faaef2307bf0
[gaim-migrate @ 17917]
Evan Schoenberg <evands@pidgin.im>
parents:
15147
diff
changeset
|
272 | gchar * |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
273 | oscar_encoding_extract(const char *encoding) |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
274 | { |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
275 | gchar *ret = NULL; |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
276 | char *begin, *end; |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
277 | |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
278 | g_return_val_if_fail(encoding != NULL, NULL); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
279 | |
|
8735
01248ea222d3
[gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents:
8733
diff
changeset
|
280 | /* Make sure encoding begins with charset= */ |
| 10540 | 281 | if (strncmp(encoding, "text/aolrtf; charset=", 21) && |
|
16876
49905718edb8
If we're sent text/plain by an AIM client and it specifies a charset, we can now use that charset via oscar_encoding_extract() instead of ignoring it and therefore assuming UTF-8
Evan Schoenberg <evands@pidgin.im>
parents:
16862
diff
changeset
|
282 | strncmp(encoding, "text/x-aolrtf; charset=", 23) && |
|
49905718edb8
If we're sent text/plain by an AIM client and it specifies a charset, we can now use that charset via oscar_encoding_extract() instead of ignoring it and therefore assuming UTF-8
Evan Schoenberg <evands@pidgin.im>
parents:
16862
diff
changeset
|
283 | strncmp(encoding, "text/plain; charset=", 20)) |
| 10540 | 284 | { |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
285 | return NULL; |
| 10540 | 286 | } |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
287 | |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
288 | begin = strchr(encoding, '"'); |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
289 | end = strrchr(encoding, '"'); |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
290 | |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
291 | if ((begin == NULL) || (end == NULL) || (begin >= end)) |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
292 | return NULL; |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
293 | |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
294 | ret = g_strndup(begin+1, (end-1) - begin); |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
295 | |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
296 | return ret; |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
297 | } |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
298 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
299 | gchar * |
|
17740
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
300 | oscar_encoding_to_utf8(PurpleAccount *account, const char *encoding, const char *text, int textlen) |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
301 | { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
302 | gchar *utf8 = NULL; |
|
9595
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
303 | |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
304 | if ((encoding == NULL) || encoding[0] == '\0') { |
| 15884 | 305 | purple_debug_info("oscar", "Empty encoding, assuming UTF-8\n"); |
|
17155
143ff2796376
Replace strcasecmp() calls with glib equivalents.
Richard Laager <rlaager@pidgin.im>
parents:
17003
diff
changeset
|
306 | } else if (!g_ascii_strcasecmp(encoding, "iso-8859-1")) { |
| 10376 | 307 | utf8 = g_convert(text, textlen, "UTF-8", "iso-8859-1", NULL, NULL, NULL); |
|
17155
143ff2796376
Replace strcasecmp() calls with glib equivalents.
Richard Laager <rlaager@pidgin.im>
parents:
17003
diff
changeset
|
308 | } else if (!g_ascii_strcasecmp(encoding, "ISO-8859-1-Windows-3.1-Latin-1") || |
|
143ff2796376
Replace strcasecmp() calls with glib equivalents.
Richard Laager <rlaager@pidgin.im>
parents:
17003
diff
changeset
|
309 | !g_ascii_strcasecmp(encoding, "us-ascii")) |
|
15232
b86d8eb29842
[gaim-migrate @ 17956]
Mark Doliner <markdoliner@pidgin.im>
parents:
15223
diff
changeset
|
310 | { |
| 10375 | 311 | utf8 = g_convert(text, textlen, "UTF-8", "Windows-1252", NULL, NULL, NULL); |
|
17155
143ff2796376
Replace strcasecmp() calls with glib equivalents.
Richard Laager <rlaager@pidgin.im>
parents:
17003
diff
changeset
|
312 | } else if (!g_ascii_strcasecmp(encoding, "unicode-2-0")) { |
|
17740
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
313 | /* Some official ICQ clients are apparently total crack, |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
314 | * and have been known to save a UTF-8 string converted |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
315 | * from the locale character set to UCS-2 (not from UTF-8 |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
316 | * to UCS-2!) in the away message. This hack should find |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
317 | * and do something (un)reasonable with that, and not |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
318 | * mess up too much else. */ |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
319 | const gchar *charset = purple_account_get_string(account, "encoding", NULL); |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
320 | if (charset) { |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
321 | gsize len; |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
322 | utf8 = g_convert(text, textlen, charset, "UCS-2BE", &len, NULL, NULL); |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
323 | if (!utf8 || len != textlen || !g_utf8_validate(utf8, -1, NULL)) { |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
324 | g_free(utf8); |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
325 | utf8 = NULL; |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
326 | } else { |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
327 | purple_debug_info("oscar", "Used broken ICQ fallback encoding\n"); |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
328 | } |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
329 | } |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
330 | if (!utf8) |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
331 | utf8 = g_convert(text, textlen, "UTF-8", "UCS-2BE", NULL, NULL, NULL); |
|
17155
143ff2796376
Replace strcasecmp() calls with glib equivalents.
Richard Laager <rlaager@pidgin.im>
parents:
17003
diff
changeset
|
332 | } else if (g_ascii_strcasecmp(encoding, "utf-8")) { |
| 15884 | 333 | purple_debug_warning("oscar", "Unrecognized character encoding \"%s\", " |
|
10096
2dba52b4a949
[gaim-migrate @ 11118]
Mark Doliner <markdoliner@pidgin.im>
parents:
10087
diff
changeset
|
334 | "attempting to convert to UTF-8 anyway\n", encoding); |
|
9595
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
335 | utf8 = g_convert(text, textlen, "UTF-8", encoding, NULL, NULL, NULL); |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
336 | } |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
337 | |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
338 | /* |
|
15232
b86d8eb29842
[gaim-migrate @ 17956]
Mark Doliner <markdoliner@pidgin.im>
parents:
15223
diff
changeset
|
339 | * If utf8 is still NULL then either the encoding is utf-8 or |
|
9595
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
340 | * we have been unable to convert the text to utf-8 from the encoding |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
341 | * that was specified. So we check if the text is valid utf-8 then |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
342 | * just copy it. |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
343 | */ |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
344 | if (utf8 == NULL) { |
| 9638 | 345 | if (textlen != 0 && *text != '\0' |
|
13227
f011e198f246
[gaim-migrate @ 15591]
Mark Doliner <markdoliner@pidgin.im>
parents:
13201
diff
changeset
|
346 | && !g_utf8_validate(text, textlen, NULL)) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
347 | 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 | 348 | else |
| 9481 | 349 | utf8 = g_strndup(text, textlen); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
350 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
351 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
352 | return utf8; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
353 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
354 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
355 | static gchar * |
| 15884 | 356 | oscar_utf8_try_convert(PurpleAccount *account, const gchar *msg) |
|
12608
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
357 | { |
|
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
358 | const char *charset = NULL; |
|
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
359 | char *ret = NULL; |
|
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
360 | |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
361 | if(aim_snvalid_icq(purple_account_get_username(account))) |
| 15884 | 362 | charset = purple_account_get_string(account, "encoding", NULL); |
|
12608
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
363 | |
|
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
364 | if(charset && *charset) |
|
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
365 | ret = g_convert(msg, -1, "UTF-8", charset, NULL, NULL, NULL); |
|
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
366 | |
|
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
367 | if(!ret) |
| 15884 | 368 | ret = purple_utf8_try_convert(msg); |
|
12608
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
369 | |
|
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
370 | return ret; |
|
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
371 | } |
|
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
372 | |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
373 | static gchar * |
| 15884 | 374 | purple_plugin_oscar_convert_to_utf8(const gchar *data, gsize datalen, const char *charsetstr, gboolean fallback) |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
375 | { |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
376 | gchar *ret = NULL; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
377 | GError *err = NULL; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
378 | |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
379 | if ((charsetstr == NULL) || (*charsetstr == '\0')) |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
380 | return NULL; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
381 | |
|
17155
143ff2796376
Replace strcasecmp() calls with glib equivalents.
Richard Laager <rlaager@pidgin.im>
parents:
17003
diff
changeset
|
382 | if (g_ascii_strcasecmp("UTF-8", charsetstr)) { |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
383 | if (fallback) |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
384 | ret = g_convert_with_fallback(data, datalen, "UTF-8", charsetstr, "?", NULL, NULL, &err); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
385 | else |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
386 | ret = g_convert(data, datalen, "UTF-8", charsetstr, NULL, NULL, &err); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
387 | if (err != NULL) { |
| 15884 | 388 | purple_debug_warning("oscar", "Conversion from %s failed: %s.\n", |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
389 | charsetstr, err->message); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
390 | g_error_free(err); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
391 | } |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
392 | } else { |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
393 | if (g_utf8_validate(data, datalen, NULL)) |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
394 | ret = g_strndup(data, datalen); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
395 | else |
| 15884 | 396 | purple_debug_warning("oscar", "String is not valid UTF-8.\n"); |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
397 | } |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
398 | |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
399 | return ret; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
400 | } |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
401 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
402 | /** |
|
11081
c0b5f17f4442
[gaim-migrate @ 13095]
Mark Doliner <markdoliner@pidgin.im>
parents:
11049
diff
changeset
|
403 | * This attemps to decode an incoming IM into a UTF8 string. |
|
c0b5f17f4442
[gaim-migrate @ 13095]
Mark Doliner <markdoliner@pidgin.im>
parents:
11049
diff
changeset
|
404 | * |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
405 | * We try decoding using two different character sets. The charset |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
406 | * specified in the IM determines the order in which we attempt to |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
407 | * decode. We do this because there are lots of broken ICQ clients |
| 15884 | 408 | * that don't correctly send non-ASCII messages. And if Purple isn't |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
409 | * able to deal with that crap, then people complain like banshees. |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
410 | * charsetstr1 is always set to what the correct encoding should be. |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
411 | */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
412 | gchar * |
| 15884 | 413 | purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *sourcesn, guint16 charset, guint16 charsubset, const gchar *data, gsize datalen) |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
414 | { |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
415 | gchar *ret = NULL; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
416 | const gchar *charsetstr1, *charsetstr2; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
417 | |
| 15884 | 418 | purple_debug_info("oscar", "Parsing IM part, charset=0x%04hx, charsubset=0x%04hx, datalen=%hd\n", charset, charsubset, datalen); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
419 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
420 | if ((datalen == 0) || (data == NULL)) |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
421 | return NULL; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
422 | |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
423 | if (charset == AIM_CHARSET_UNICODE) { |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
424 | charsetstr1 = "UCS-2BE"; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
425 | charsetstr2 = "UTF-8"; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
426 | } else if (charset == AIM_CHARSET_CUSTOM) { |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
427 | if ((sourcesn != NULL) && aim_snvalid_icq(sourcesn)) |
| 15884 | 428 | charsetstr1 = purple_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
429 | else |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
430 | charsetstr1 = "ISO-8859-1"; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
431 | charsetstr2 = "UTF-8"; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
432 | } else if (charset == AIM_CHARSET_ASCII) { |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
433 | /* Should just be "ASCII" */ |
|
9914
93b0188fc369
[gaim-migrate @ 10806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9908
diff
changeset
|
434 | charsetstr1 = "ASCII"; |
| 15884 | 435 | charsetstr2 = purple_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
436 | } else if (charset == 0x000d) { |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
437 | /* Mobile AIM client on a Nokia 3100 and an LG VX6000 */ |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
438 | charsetstr1 = "ISO-8859-1"; |
| 15884 | 439 | charsetstr2 = purple_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
440 | } else { |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
441 | /* Unknown, hope for valid UTF-8... */ |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
442 | charsetstr1 = "UTF-8"; |
| 15884 | 443 | charsetstr2 = purple_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
| 444 | } | |
| 445 | ||
| 446 | ret = purple_plugin_oscar_convert_to_utf8(data, datalen, charsetstr1, FALSE); | |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
447 | if (ret == NULL) |
| 15884 | 448 | ret = purple_plugin_oscar_convert_to_utf8(data, datalen, charsetstr2, TRUE); |
| 15264 | 449 | if (ret == NULL) { |
|
15305
87539b8cbdfa
[gaim-migrate @ 18033]
Evan Schoenberg <evands@pidgin.im>
parents:
15303
diff
changeset
|
450 | char *str, *salvage, *tmp; |
| 15264 | 451 | |
| 452 | str = g_malloc(datalen + 1); | |
|
15274
19f6578ddb99
[gaim-migrate @ 18002]
Mark Doliner <markdoliner@pidgin.im>
parents:
15268
diff
changeset
|
453 | strncpy(str, data, datalen); |
| 15264 | 454 | str[datalen] = '\0'; |
| 15884 | 455 | salvage = purple_utf8_salvage(str); |
|
15303
40bf2610a143
[gaim-migrate @ 18031]
Evan Schoenberg <evands@pidgin.im>
parents:
15274
diff
changeset
|
456 | tmp = g_strdup_printf(_("(There was an error receiving this message. Either you and %s have different encodings selected, or %s has a buggy client.)"), |
|
40bf2610a143
[gaim-migrate @ 18031]
Evan Schoenberg <evands@pidgin.im>
parents:
15274
diff
changeset
|
457 | sourcesn, sourcesn); |
|
40bf2610a143
[gaim-migrate @ 18031]
Evan Schoenberg <evands@pidgin.im>
parents:
15274
diff
changeset
|
458 | ret = g_strdup_printf("%s %s", salvage, tmp); |
|
40bf2610a143
[gaim-migrate @ 18031]
Evan Schoenberg <evands@pidgin.im>
parents:
15274
diff
changeset
|
459 | g_free(tmp); |
| 15264 | 460 | g_free(str); |
| 461 | g_free(salvage); | |
|
15303
40bf2610a143
[gaim-migrate @ 18031]
Evan Schoenberg <evands@pidgin.im>
parents:
15274
diff
changeset
|
462 | } |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
463 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
464 | return ret; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
465 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
466 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
467 | /** |
|
11081
c0b5f17f4442
[gaim-migrate @ 13095]
Mark Doliner <markdoliner@pidgin.im>
parents:
11049
diff
changeset
|
468 | * Figure out what encoding to use when sending a given outgoing message. |
|
c0b5f17f4442
[gaim-migrate @ 13095]
Mark Doliner <markdoliner@pidgin.im>
parents:
11049
diff
changeset
|
469 | */ |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
470 | static void |
| 15884 | 471 | purple_plugin_oscar_convert_to_best_encoding(PurpleConnection *gc, |
|
13227
f011e198f246
[gaim-migrate @ 15591]
Mark Doliner <markdoliner@pidgin.im>
parents:
13201
diff
changeset
|
472 | const char *destsn, const gchar *from, |
|
f011e198f246
[gaim-migrate @ 15591]
Mark Doliner <markdoliner@pidgin.im>
parents:
13201
diff
changeset
|
473 | gchar **msg, int *msglen_int, |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
474 | guint16 *charset, guint16 *charsubset) |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
475 | { |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
476 | OscarData *od = gc->proto_data; |
| 15884 | 477 | PurpleAccount *account = purple_connection_get_account(gc); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
478 | GError *err = NULL; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
479 | aim_userinfo_t *userinfo = NULL; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
480 | const gchar *charsetstr; |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
481 | gsize msglen; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
482 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
483 | /* Attempt to send as ASCII */ |
|
10098
364dcec11abd
[gaim-migrate @ 11120]
Mark Doliner <markdoliner@pidgin.im>
parents:
10097
diff
changeset
|
484 | if (oscar_charset_check(from) == AIM_CHARSET_ASCII) { |
|
19337
68471e68386a
Use -1 as length with g_convert() functions instead of strlen()
Daniel Atallah <datallah@pidgin.im>
parents:
19335
diff
changeset
|
485 | *msg = g_convert(from, -1, "ASCII", "UTF-8", NULL, &msglen, NULL); |
|
10098
364dcec11abd
[gaim-migrate @ 11120]
Mark Doliner <markdoliner@pidgin.im>
parents:
10097
diff
changeset
|
486 | *charset = AIM_CHARSET_ASCII; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
487 | *charsubset = 0x0000; |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
488 | *msglen_int = msglen; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
489 | return; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
490 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
491 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
492 | /* |
| 10565 | 493 | * If we're sending to an ICQ user, and they are in our |
| 494 | * buddy list, and they are advertising the Unicode | |
| 495 | * capability, and they are online, then attempt to send | |
| 496 | * as UCS-2BE. | |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
497 | */ |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
498 | if ((destsn != NULL) && aim_snvalid_icq(destsn)) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
499 | userinfo = aim_locate_finduserinfo(od, destsn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
500 | |
|
14619
e3577fb5e0f1
[gaim-migrate @ 17280]
Mark Doliner <markdoliner@pidgin.im>
parents:
14614
diff
changeset
|
501 | if ((userinfo != NULL) && (userinfo->capabilities & OSCAR_CAPABILITY_UNICODE)) |
| 10565 | 502 | { |
| 15884 | 503 | PurpleBuddy *b; |
| 504 | b = purple_find_buddy(account, destsn); | |
| 505 | if ((b != NULL) && (PURPLE_BUDDY_IS_ONLINE(b))) | |
| 10565 | 506 | { |
|
19337
68471e68386a
Use -1 as length with g_convert() functions instead of strlen()
Daniel Atallah <datallah@pidgin.im>
parents:
19335
diff
changeset
|
507 | *msg = g_convert(from, -1, "UCS-2BE", "UTF-8", NULL, &msglen, NULL); |
| 10565 | 508 | if (*msg != NULL) |
| 509 | { | |
| 510 | *charset = AIM_CHARSET_UNICODE; | |
| 511 | *charsubset = 0x0000; | |
| 512 | *msglen_int = msglen; | |
| 513 | return; | |
| 514 | } | |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
515 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
516 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
517 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
518 | /* |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
519 | * If this is AIM then attempt to send as ISO-8859-1. If this is |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
520 | * ICQ then attempt to send as the user specified character encoding. |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
521 | */ |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
522 | charsetstr = "ISO-8859-1"; |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
523 | if ((destsn != NULL) && aim_snvalid_icq(destsn)) |
| 15884 | 524 | charsetstr = purple_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
525 | |
|
10097
cdf1f787073f
[gaim-migrate @ 11119]
Calle Englund <notcalle@users.sourceforge.net>
parents:
10096
diff
changeset
|
526 | /* |
|
cdf1f787073f
[gaim-migrate @ 11119]
Calle Englund <notcalle@users.sourceforge.net>
parents:
10096
diff
changeset
|
527 | * XXX - We need a way to only attempt to convert if we KNOW "from" |
|
cdf1f787073f
[gaim-migrate @ 11119]
Calle Englund <notcalle@users.sourceforge.net>
parents:
10096
diff
changeset
|
528 | * can be converted to "charsetstr" |
|
cdf1f787073f
[gaim-migrate @ 11119]
Calle Englund <notcalle@users.sourceforge.net>
parents:
10096
diff
changeset
|
529 | */ |
|
19337
68471e68386a
Use -1 as length with g_convert() functions instead of strlen()
Daniel Atallah <datallah@pidgin.im>
parents:
19335
diff
changeset
|
530 | *msg = g_convert(from, -1, charsetstr, "UTF-8", NULL, &msglen, NULL); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
531 | if (*msg != NULL) { |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
532 | *charset = AIM_CHARSET_CUSTOM; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
533 | *charsubset = 0x0000; |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
534 | *msglen_int = msglen; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
535 | return; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
536 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
537 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
538 | /* |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
539 | * Nothing else worked, so send as UCS-2BE. |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
540 | */ |
|
19337
68471e68386a
Use -1 as length with g_convert() functions instead of strlen()
Daniel Atallah <datallah@pidgin.im>
parents:
19335
diff
changeset
|
541 | *msg = g_convert(from, -1, "UCS-2BE", "UTF-8", NULL, &msglen, &err); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
542 | if (*msg != NULL) { |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
543 | *charset = AIM_CHARSET_UNICODE; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
544 | *charsubset = 0x0000; |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
545 | *msglen_int = msglen; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
546 | return; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
547 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
548 | |
| 15884 | 549 | purple_debug_error("oscar", "Error converting a Unicode message: %s\n", err->message); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
550 | g_error_free(err); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
551 | |
| 15884 | 552 | purple_debug_error("oscar", "This should NEVER happen! Sending UTF-8 text flagged as ASCII.\n"); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
553 | *msg = g_strdup(from); |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
554 | *msglen_int = strlen(*msg); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
555 | *charset = AIM_CHARSET_ASCII; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
556 | *charsubset = 0x0000; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
557 | return; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
558 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
559 | |
|
13357
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
560 | /** |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
561 | * Looks for %n, %d, or %t in a string, and replaces them with the |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
562 | * specified name, date, and time, respectively. |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
563 | * |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
564 | * @param str The string that may contain the special variables. |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
565 | * @param name The sender name. |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
566 | * |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
567 | * @return A newly allocated string where the special variables are |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
568 | * expanded. This should be g_free'd by the caller. |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
569 | */ |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
570 | static gchar * |
| 15884 | 571 | purple_str_sub_away_formatters(const char *str, const char *name) |
|
13357
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
572 | { |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
573 | char *c; |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
574 | GString *cpy; |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
575 | time_t t; |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
576 | struct tm *tme; |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
577 | |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
578 | g_return_val_if_fail(str != NULL, NULL); |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
579 | g_return_val_if_fail(name != NULL, NULL); |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
580 | |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
581 | /* Create an empty GString that is hopefully big enough for most messages */ |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
582 | cpy = g_string_sized_new(1024); |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
583 | |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
584 | t = time(NULL); |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
585 | tme = localtime(&t); |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
586 | |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
587 | c = (char *)str; |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
588 | while (*c) { |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
589 | switch (*c) { |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
590 | case '%': |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
591 | if (*(c + 1)) { |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
592 | switch (*(c + 1)) { |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
593 | case 'n': |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
594 | /* append name */ |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
595 | g_string_append(cpy, name); |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
596 | c++; |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
597 | break; |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
598 | case 'd': |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
599 | /* append date */ |
| 15884 | 600 | g_string_append(cpy, purple_date_format_short(tme)); |
|
13357
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
601 | c++; |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
602 | break; |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
603 | case 't': |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
604 | /* append time */ |
| 15884 | 605 | g_string_append(cpy, purple_time_format(tme)); |
|
13357
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
606 | c++; |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
607 | break; |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
608 | default: |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
609 | g_string_append_c(cpy, *c); |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
610 | } |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
611 | } else { |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
612 | g_string_append_c(cpy, *c); |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
613 | } |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
614 | break; |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
615 | default: |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
616 | g_string_append_c(cpy, *c); |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
617 | } |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
618 | c++; |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
619 | } |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
620 | |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
621 | return g_string_free(cpy, FALSE); |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
622 | } |
|
c865228e89f7
[gaim-migrate @ 15729]
Mark Doliner <markdoliner@pidgin.im>
parents:
13312
diff
changeset
|
623 | |
|
14614
3ed1753cc08a
[gaim-migrate @ 17275]
Mark Doliner <markdoliner@pidgin.im>
parents:
14604
diff
changeset
|
624 | static gchar *oscar_caps_to_string(OscarCapability caps) |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
625 | { |
|
9407
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
626 | GString *str; |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13075
diff
changeset
|
627 | const gchar *tmp; |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
628 | guint bit = 1; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
629 | |
|
9407
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
630 | str = g_string_new(""); |
|
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
631 | |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
632 | if (!caps) { |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
633 | return NULL; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
634 | } else while (bit <= OSCAR_CAPABILITY_LAST) { |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
635 | if (bit & caps) { |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
636 | switch (bit) { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
637 | case OSCAR_CAPABILITY_BUDDYICON: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
638 | tmp = _("Buddy Icon"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
639 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
640 | case OSCAR_CAPABILITY_TALK: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
641 | tmp = _("Voice"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
642 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
643 | case OSCAR_CAPABILITY_DIRECTIM: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
644 | tmp = _("AIM Direct IM"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
645 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
646 | case OSCAR_CAPABILITY_CHAT: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
647 | tmp = _("Chat"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
648 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
649 | case OSCAR_CAPABILITY_GETFILE: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
650 | tmp = _("Get File"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
651 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
652 | case OSCAR_CAPABILITY_SENDFILE: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
653 | tmp = _("Send File"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
654 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
655 | case OSCAR_CAPABILITY_GAMES: |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
656 | case OSCAR_CAPABILITY_GAMES2: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
657 | tmp = _("Games"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
658 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
659 | case OSCAR_CAPABILITY_ADDINS: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
660 | tmp = _("Add-Ins"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
661 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
662 | case OSCAR_CAPABILITY_SENDBUDDYLIST: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
663 | tmp = _("Send Buddy List"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
664 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
665 | case OSCAR_CAPABILITY_ICQ_DIRECT: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
666 | tmp = _("ICQ Direct Connect"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
667 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
668 | case OSCAR_CAPABILITY_APINFO: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
669 | tmp = _("AP User"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
670 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
671 | case OSCAR_CAPABILITY_ICQRTF: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
672 | tmp = _("ICQ RTF"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
673 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
674 | case OSCAR_CAPABILITY_EMPTY: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
675 | tmp = _("Nihilist"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
676 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
677 | case OSCAR_CAPABILITY_ICQSERVERRELAY: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
678 | tmp = _("ICQ Server Relay"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
679 | break; |
|
14619
e3577fb5e0f1
[gaim-migrate @ 17280]
Mark Doliner <markdoliner@pidgin.im>
parents:
14614
diff
changeset
|
680 | case OSCAR_CAPABILITY_UNICODEOLD: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
681 | tmp = _("Old ICQ UTF8"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
682 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
683 | case OSCAR_CAPABILITY_TRILLIANCRYPT: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
684 | tmp = _("Trillian Encryption"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
685 | break; |
|
14619
e3577fb5e0f1
[gaim-migrate @ 17280]
Mark Doliner <markdoliner@pidgin.im>
parents:
14614
diff
changeset
|
686 | case OSCAR_CAPABILITY_UNICODE: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
687 | tmp = _("ICQ UTF8"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
688 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
689 | case OSCAR_CAPABILITY_HIPTOP: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
690 | tmp = _("Hiptop"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
691 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
692 | case OSCAR_CAPABILITY_SECUREIM: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
693 | tmp = _("Security Enabled"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
694 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
695 | case OSCAR_CAPABILITY_VIDEO: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
696 | tmp = _("Video Chat"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
697 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
698 | /* Not actually sure about this one... WinAIM doesn't show anything */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
699 | case OSCAR_CAPABILITY_ICHATAV: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
700 | tmp = _("iChat AV"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
701 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
702 | case OSCAR_CAPABILITY_LIVEVIDEO: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
703 | tmp = _("Live Video"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
704 | break; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
705 | case OSCAR_CAPABILITY_CAMERA: |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
706 | tmp = _("Camera"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
707 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
708 | default: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
709 | tmp = NULL; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
710 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
711 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
712 | if (tmp) |
|
9532
32470c5a1d58
[gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
9481
diff
changeset
|
713 | g_string_append_printf(str, "%s%s", (*(str->str) == '\0' ? "" : ", "), tmp); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
714 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
715 | bit <<= 1; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
716 | } |
|
9407
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
717 | |
|
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
718 | return g_string_free(str, FALSE); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
719 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
720 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
721 | static char *oscar_icqstatus(int state) { |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
722 | /* Make a cute little string that shows the status of the dude or dudet */ |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
723 | if (state & AIM_ICQ_STATE_CHAT) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
724 | return g_strdup_printf(_("Free For Chat")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
725 | else if (state & AIM_ICQ_STATE_DND) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
726 | return g_strdup_printf(_("Do Not Disturb")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
727 | else if (state & AIM_ICQ_STATE_OUT) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
728 | return g_strdup_printf(_("Not Available")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
729 | else if (state & AIM_ICQ_STATE_BUSY) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
730 | return g_strdup_printf(_("Occupied")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
731 | else if (state & AIM_ICQ_STATE_AWAY) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
732 | return g_strdup_printf(_("Away")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
733 | else if (state & AIM_ICQ_STATE_WEBAWARE) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
734 | return g_strdup_printf(_("Web Aware")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
735 | else if (state & AIM_ICQ_STATE_INVISIBLE) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
736 | return g_strdup_printf(_("Invisible")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
737 | else |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
738 | return g_strdup_printf(_("Online")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
739 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
740 | |
|
9973
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
741 | static void |
| 15884 | 742 | oscar_user_info_add_pair(PurpleNotifyUserInfo *user_info, const char *name, const char *value) |
|
13935
70c9d9e75948
[gaim-migrate @ 16344]
Mark Doliner <markdoliner@pidgin.im>
parents:
13924
diff
changeset
|
743 | { |
|
70c9d9e75948
[gaim-migrate @ 16344]
Mark Doliner <markdoliner@pidgin.im>
parents:
13924
diff
changeset
|
744 | if (value && value[0]) { |
| 15884 | 745 | purple_notify_user_info_add_pair(user_info, name, value); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
746 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
747 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
748 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
749 | static void |
| 15884 | 750 | oscar_user_info_convert_and_add_pair(PurpleAccount *account, PurpleNotifyUserInfo *user_info, |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
751 | const char *name, const char *value) |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
752 | { |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
753 | gchar *utf8; |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
754 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
755 | if (value && value[0] && (utf8 = oscar_utf8_try_convert(account, value))) { |
| 15884 | 756 | purple_notify_user_info_add_pair(user_info, name, utf8); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
757 | g_free(utf8); |
|
13935
70c9d9e75948
[gaim-migrate @ 16344]
Mark Doliner <markdoliner@pidgin.im>
parents:
13924
diff
changeset
|
758 | } |
|
70c9d9e75948
[gaim-migrate @ 16344]
Mark Doliner <markdoliner@pidgin.im>
parents:
13924
diff
changeset
|
759 | } |
|
70c9d9e75948
[gaim-migrate @ 16344]
Mark Doliner <markdoliner@pidgin.im>
parents:
13924
diff
changeset
|
760 | |
|
70c9d9e75948
[gaim-migrate @ 16344]
Mark Doliner <markdoliner@pidgin.im>
parents:
13924
diff
changeset
|
761 | static void |
| 15884 | 762 | oscar_string_convert_and_append(PurpleAccount *account, GString *str, const char *newline, |
|
12608
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
763 | const char *name, const char *value) |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
764 | { |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
765 | gchar *utf8; |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
766 | |
|
12608
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
767 | if (value && value[0] && (utf8 = oscar_utf8_try_convert(account, value))) { |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
768 | g_string_append_printf(str, "%s<b>%s:</b> %s", newline, name, utf8); |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
769 | g_free(utf8); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
770 | } |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
771 | } |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
772 | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
773 | static void |
| 15884 | 774 | oscar_user_info_convert_and_add(PurpleAccount *account, PurpleNotifyUserInfo *user_info, |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
775 | const char *name, const char *value) |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
776 | { |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
777 | gchar *utf8; |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
778 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
779 | if (value && value[0] && (utf8 = oscar_utf8_try_convert(account, value))) { |
| 15884 | 780 | purple_notify_user_info_add_pair(user_info, name, value); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
781 | g_free(utf8); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
782 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
783 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
784 | |
| 15884 | 785 | static void oscar_string_append_info(PurpleConnection *gc, PurpleNotifyUserInfo *user_info, PurpleBuddy *b, aim_userinfo_t *userinfo) |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
786 | { |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
787 | OscarData *od; |
| 15884 | 788 | PurpleAccount *account; |
| 789 | PurplePresence *presence = NULL; | |
| 790 | PurpleStatus *status = NULL; | |
| 791 | PurpleGroup *g = NULL; | |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
792 | struct buddyinfo *bi = NULL; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
793 | char *tmp; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
794 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
795 | od = gc->proto_data; |
| 15884 | 796 | account = purple_connection_get_account(gc); |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
797 | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
798 | if ((user_info == NULL) || ((b == NULL) && (userinfo == NULL))) |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
799 | return; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
800 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
801 | if (userinfo == NULL) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
802 | userinfo = aim_locate_finduserinfo(od, b->name); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
803 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
804 | if (b == NULL) |
| 15884 | 805 | b = purple_find_buddy(account, userinfo->sn); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
806 | |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
807 | if (b != NULL) { |
| 15884 | 808 | g = purple_buddy_get_group(b); |
| 809 | presence = purple_buddy_get_presence(b); | |
| 810 | status = purple_presence_get_active_status(presence); | |
|
10498
aff389ee45f3
[gaim-migrate @ 11790]
Mark Doliner <markdoliner@pidgin.im>
parents:
10487
diff
changeset
|
811 | } |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
812 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
813 | if (userinfo != NULL) |
| 15884 | 814 | bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->sn)); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
815 | |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
816 | if (b != NULL) { |
| 15884 | 817 | if (purple_presence_is_online(presence)) { |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
818 | if (aim_snvalid_icq(b->name)) { |
| 15884 | 819 | PurpleStatus *status = purple_presence_get_active_status(presence); |
| 820 | oscar_user_info_add_pair(user_info, _("Status"), purple_status_get_name(status)); | |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
821 | } |
|
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
822 | } else { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
823 | tmp = aim_ssi_itemlist_findparentname(od->ssi.local, b->name); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
824 | if (aim_ssi_waitingforauth(od->ssi.local, tmp, b->name)) |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
825 | oscar_user_info_add_pair(user_info, _("Status"), _("Not Authorized")); |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
826 | else |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
827 | oscar_user_info_add_pair(user_info, _("Status"), _("Offline")); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
828 | } |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
829 | } |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
830 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
831 | if ((bi != NULL) && (bi->ipaddr != 0)) { |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
832 | tmp = g_strdup_printf("%hhu.%hhu.%hhu.%hhu", |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
833 | (bi->ipaddr & 0xff000000) >> 24, |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
834 | (bi->ipaddr & 0x00ff0000) >> 16, |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
835 | (bi->ipaddr & 0x0000ff00) >> 8, |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
836 | (bi->ipaddr & 0x000000ff)); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
837 | oscar_user_info_add_pair(user_info, _("IP Address"), tmp); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
838 | g_free(tmp); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
839 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
840 | |
| 11257 | 841 | |
| 842 | if ((userinfo != NULL) && (userinfo->warnlevel != 0)) { | |
|
11285
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
843 | tmp = g_strdup_printf("%d", (int)(userinfo->warnlevel/10.0 + .5)); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
844 | oscar_user_info_add_pair(user_info, _("Warning Level"), tmp); |
| 11257 | 845 | g_free(tmp); |
| 846 | } | |
| 847 | ||
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
848 | if ((b != NULL) && (b->name != NULL) && (g != NULL) && (g->name != NULL)) { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
849 | tmp = aim_ssi_getcomment(od->ssi.local, g->name, b->name); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
850 | if (tmp != NULL) { |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
851 | char *tmp2 = g_markup_escape_text(tmp, strlen(tmp)); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
852 | g_free(tmp); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
853 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
854 | oscar_user_info_convert_and_add_pair(account, user_info, _("Buddy Comment"), tmp2); |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
855 | g_free(tmp2); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
856 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
857 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
858 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
859 | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
860 | static char *extract_name(const char *name) { |
| 4121 | 861 | char *tmp, *x; |
| 2086 | 862 | int i, j; |
| 4120 | 863 | |
| 864 | if (!name) | |
| 4121 | 865 | return NULL; |
|
13382
ad4d8c44d83d
[gaim-migrate @ 15754]
Daniel Atallah <datallah@pidgin.im>
parents:
13357
diff
changeset
|
866 | |
| 4120 | 867 | x = strchr(name, '-'); |
|
15308
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
868 | if (!x) |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
869 | return NULL; |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
870 | |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
871 | x = strchr(x + 1, '-'); |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
872 | if (!x) |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
873 | return NULL; |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
874 | |
| 2086 | 875 | tmp = g_strdup(++x); |
| 876 | ||
| 877 | for (i = 0, j = 0; x[i]; i++) { | |
|
2361
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
878 | char hex[3]; |
|
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
879 | if (x[i] != '%') { |
| 2086 | 880 | tmp[j++] = x[i]; |
|
2361
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
881 | continue; |
| 2086 | 882 | } |
|
15308
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
883 | strncpy(hex, x + ++i, 2); |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
884 | hex[2] = 0; |
|
2361
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
885 | i++; |
|
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
886 | tmp[j++] = strtol(hex, NULL, 16); |
| 2086 | 887 | } |
| 888 | ||
| 889 | tmp[j] = 0; | |
| 890 | return tmp; | |
| 891 | } | |
| 892 | ||
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
893 | static struct chat_connection * |
| 15884 | 894 | find_oscar_chat(PurpleConnection *gc, int id) |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
895 | { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
896 | OscarData *od = (OscarData *)gc->proto_data; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
897 | GSList *cur; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
898 | struct chat_connection *cc; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
899 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
900 | for (cur = od->oscar_chats; cur != NULL; cur = cur->next) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
901 | { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
902 | cc = (struct chat_connection *)cur->data; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
903 | if (cc->id == id) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
904 | return cc; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
905 | } |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
906 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
907 | return NULL; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
908 | } |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
909 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
910 | static struct chat_connection * |
| 15884 | 911 | find_oscar_chat_by_conn(PurpleConnection *gc, FlapConnection *conn) |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
912 | { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
913 | OscarData *od = (OscarData *)gc->proto_data; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
914 | GSList *cur; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
915 | struct chat_connection *cc; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
916 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
917 | for (cur = od->oscar_chats; cur != NULL; cur = cur->next) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
918 | { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
919 | cc = (struct chat_connection *)cur->data; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
920 | if (cc->conn == conn) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
921 | return cc; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
922 | } |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
923 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
924 | return NULL; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
925 | } |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
926 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
927 | static struct chat_connection * |
| 15884 | 928 | find_oscar_chat_by_conv(PurpleConnection *gc, PurpleConversation *conv) |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
929 | { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
930 | OscarData *od = (OscarData *)gc->proto_data; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
931 | GSList *cur; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
932 | struct chat_connection *cc; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
933 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
934 | for (cur = od->oscar_chats; cur != NULL; cur = cur->next) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
935 | { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
936 | cc = (struct chat_connection *)cur->data; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
937 | if (cc->conv == conv) |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
938 | return cc; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
939 | } |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
940 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
941 | return NULL; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
942 | } |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
943 | |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
944 | void |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
945 | oscar_chat_destroy(struct chat_connection *cc) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
946 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
947 | g_free(cc->name); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
948 | g_free(cc->show); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
949 | g_free(cc); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
950 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
951 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
952 | static void |
| 15884 | 953 | oscar_chat_kill(PurpleConnection *gc, struct chat_connection *cc) |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
954 | { |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
955 | OscarData *od = (OscarData *)gc->proto_data; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
956 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
957 | /* Notify the conversation window that we've left the chat */ |
| 15884 | 958 | serv_got_chat_left(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(cc->conv))); |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
959 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
960 | /* Destroy the chat_connection */ |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
961 | od->oscar_chats = g_slist_remove(od->oscar_chats, cc); |
|
14454
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
962 | flap_connection_schedule_destroy(cc->conn, OSCAR_DISCONNECT_DONE, NULL); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
963 | oscar_chat_destroy(cc); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
964 | } |
|
12909
dfcf4df1dcd7
[gaim-migrate @ 15262]
Daniel Atallah <datallah@pidgin.im>
parents:
12816
diff
changeset
|
965 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
966 | /** |
| 15884 | 967 | * This is the callback function anytime purple_proxy_connect() |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
968 | * establishes a new TCP connection with an oscar host. Depending |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
969 | * on the type of host, we do a few different things here. |
| 8983 | 970 | */ |
|
13232
149d582e5fbb
[gaim-migrate @ 15596]
Mark Doliner <markdoliner@pidgin.im>
parents:
13227
diff
changeset
|
971 | static void |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
972 | connection_established_cb(gpointer data, gint source, const gchar *error_message) |
|
13232
149d582e5fbb
[gaim-migrate @ 15596]
Mark Doliner <markdoliner@pidgin.im>
parents:
13227
diff
changeset
|
973 | { |
| 15884 | 974 | PurpleConnection *gc; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
975 | OscarData *od; |
| 15884 | 976 | PurpleAccount *account; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
977 | FlapConnection *conn; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
978 | |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
979 | conn = data; |
|
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
980 | od = conn->od; |
|
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
981 | gc = od->gc; |
| 15884 | 982 | account = purple_connection_get_account(gc); |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
983 | |
|
14324
8cbedd82b6ac
[gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents:
14254
diff
changeset
|
984 | conn->connect_data = NULL; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
985 | conn->fd = source; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
986 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
987 | if (source < 0) |
|
13232
149d582e5fbb
[gaim-migrate @ 15596]
Mark Doliner <markdoliner@pidgin.im>
parents:
13227
diff
changeset
|
988 | { |
| 15884 | 989 | purple_debug_error("oscar", "unable to connect FLAP server " |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
990 | "of type 0x%04hx\n", conn->type); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
991 | if (conn->type == SNAC_FAMILY_AUTH) |
|
14454
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
992 | { |
|
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
993 | gchar *msg; |
|
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
994 | msg = g_strdup_printf(_("Could not connect to authentication server:\n%s"), |
|
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
995 | error_message); |
| 15884 | 996 | purple_connection_error(gc, msg); |
|
14454
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
997 | g_free(msg); |
|
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
998 | } |
|
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
999 | else if (conn->type == SNAC_FAMILY_LOCATE) |
|
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
1000 | { |
|
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
1001 | gchar *msg; |
|
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
1002 | msg = g_strdup_printf(_("Could not connect to BOS server:\n%s"), |
|
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
1003 | error_message); |
| 15884 | 1004 | purple_connection_error(gc, msg); |
|
14454
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
1005 | g_free(msg); |
|
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
1006 | } |
|
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
1007 | else |
|
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
1008 | { |
|
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
1009 | /* Maybe we should call this for BOS connections, too? */ |
|
13609
a6fbfad454b6
[gaim-migrate @ 15994]
Mark Doliner <markdoliner@pidgin.im>
parents:
13606
diff
changeset
|
1010 | flap_connection_schedule_destroy(conn, |
|
14454
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
1011 | OSCAR_DISCONNECT_COULD_NOT_CONNECT, error_message); |
|
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
1012 | } |
|
13232
149d582e5fbb
[gaim-migrate @ 15596]
Mark Doliner <markdoliner@pidgin.im>
parents:
13227
diff
changeset
|
1013 | return; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1014 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1015 | |
| 15884 | 1016 | purple_debug_info("oscar", "connected to FLAP server of type 0x%04hx\n", |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1017 | conn->type); |
| 15884 | 1018 | conn->watcher_incoming = purple_input_add(conn->fd, |
| 1019 | PURPLE_INPUT_READ, flap_connection_recv_cb, conn); | |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1020 | if (conn->cookie == NULL) |
|
13603
12489c04a4ea
[gaim-migrate @ 15988]
Mark Doliner <markdoliner@pidgin.im>
parents:
13602
diff
changeset
|
1021 | { |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
1022 | if (!aim_snvalid_icq(purple_account_get_username(account))) |
|
13603
12489c04a4ea
[gaim-migrate @ 15988]
Mark Doliner <markdoliner@pidgin.im>
parents:
13602
diff
changeset
|
1023 | /* |
|
12489c04a4ea
[gaim-migrate @ 15988]
Mark Doliner <markdoliner@pidgin.im>
parents:
13602
diff
changeset
|
1024 | * We don't send this when authenticating an ICQ account |
|
12489c04a4ea
[gaim-migrate @ 15988]
Mark Doliner <markdoliner@pidgin.im>
parents:
13602
diff
changeset
|
1025 | * because for some reason ICQ is still using the |
|
12489c04a4ea
[gaim-migrate @ 15988]
Mark Doliner <markdoliner@pidgin.im>
parents:
13602
diff
changeset
|
1026 | * assy/insecure authentication procedure. |
|
12489c04a4ea
[gaim-migrate @ 15988]
Mark Doliner <markdoliner@pidgin.im>
parents:
13602
diff
changeset
|
1027 | */ |
|
12489c04a4ea
[gaim-migrate @ 15988]
Mark Doliner <markdoliner@pidgin.im>
parents:
13602
diff
changeset
|
1028 | flap_connection_send_version(od, conn); |
|
12489c04a4ea
[gaim-migrate @ 15988]
Mark Doliner <markdoliner@pidgin.im>
parents:
13602
diff
changeset
|
1029 | } |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1030 | else |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1031 | { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1032 | flap_connection_send_version_with_cookie(od, conn, |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1033 | conn->cookielen, conn->cookie); |
|
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1034 | g_free(conn->cookie); |
|
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1035 | conn->cookie = NULL; |
|
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1036 | } |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1037 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1038 | if (conn->type == SNAC_FAMILY_AUTH) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1039 | { |
| 15884 | 1040 | aim_request_login(od, conn, purple_account_get_username(account)); |
| 1041 | purple_debug_info("oscar", "Screen name sent, waiting for response\n"); | |
| 1042 | purple_connection_update_progress(gc, _("Screen name sent"), 1, OSCAR_CONNECT_STEPS); | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1043 | ck[1] = 0x65; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1044 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1045 | else if (conn->type == SNAC_FAMILY_LOCATE) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1046 | { |
| 15884 | 1047 | purple_connection_update_progress(gc, _("Connection established, cookie sent"), 4, OSCAR_CONNECT_STEPS); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1048 | ck[4] = 0x61; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1049 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1050 | else if (conn->type == SNAC_FAMILY_CHAT) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1051 | { |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
1052 | od->oscar_chats = g_slist_prepend(od->oscar_chats, conn->new_conn_data); |
|
14324
8cbedd82b6ac
[gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents:
14254
diff
changeset
|
1053 | conn->new_conn_data = NULL; |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1054 | } |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1055 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1056 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1057 | static void |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1058 | flap_connection_established_bos(OscarData *od, FlapConnection *conn) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1059 | { |
| 15884 | 1060 | PurpleConnection *gc = od->gc; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1061 | |
|
15147
101192282f5d
[gaim-migrate @ 17871]
Mark Doliner <markdoliner@pidgin.im>
parents:
15142
diff
changeset
|
1062 | aim_srv_reqpersonalinfo(od, conn); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1063 | |
| 15884 | 1064 | purple_debug_info("oscar", "ssi: requesting rights and list\n"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1065 | aim_ssi_reqrights(od); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1066 | aim_ssi_reqdata(od); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1067 | if (od->getblisttimer > 0) |
| 15884 | 1068 | purple_timeout_remove(od->getblisttimer); |
| 1069 | od->getblisttimer = purple_timeout_add(30000, purple_ssi_rerequestdata, od); | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1070 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1071 | aim_locate_reqrights(od); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1072 | aim_buddylist_reqrights(od, conn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1073 | aim_im_reqparams(od); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1074 | aim_bos_reqrights(od, conn); /* TODO: Don't call this with ssi */ |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1075 | |
| 15884 | 1076 | purple_connection_update_progress(gc, _("Finalizing connection"), 5, OSCAR_CONNECT_STEPS); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1077 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1078 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1079 | static void |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1080 | flap_connection_established_admin(OscarData *od, FlapConnection *conn) |
| 2086 | 1081 | { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1082 | aim_clientready(od, conn); |
| 15884 | 1083 | purple_debug_info("oscar", "connected to admin\n"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1084 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1085 | if (od->chpass) { |
| 15884 | 1086 | purple_debug_info("oscar", "changing password\n"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1087 | aim_admin_changepasswd(od, conn, od->newp, od->oldp); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1088 | g_free(od->oldp); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1089 | od->oldp = NULL; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1090 | g_free(od->newp); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1091 | od->newp = NULL; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1092 | od->chpass = FALSE; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1093 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1094 | if (od->setnick) { |
| 15884 | 1095 | purple_debug_info("oscar", "formatting screen name\n"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1096 | aim_admin_setnick(od, conn, od->newsn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1097 | g_free(od->newsn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1098 | od->newsn = NULL; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1099 | od->setnick = FALSE; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1100 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1101 | if (od->conf) { |
| 15884 | 1102 | purple_debug_info("oscar", "confirming account\n"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1103 | aim_admin_reqconfirm(od, conn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1104 | od->conf = FALSE; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1105 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1106 | if (od->reqemail) { |
| 15884 | 1107 | purple_debug_info("oscar", "requesting e-mail address\n"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1108 | aim_admin_getinfo(od, conn, 0x0011); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1109 | od->reqemail = FALSE; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1110 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1111 | if (od->setemail) { |
| 15884 | 1112 | purple_debug_info("oscar", "setting e-mail address\n"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1113 | aim_admin_setemail(od, conn, od->email); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1114 | g_free(od->email); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1115 | od->email = NULL; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1116 | od->setemail = FALSE; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1117 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1118 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1119 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1120 | static void |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1121 | flap_connection_established_chat(OscarData *od, FlapConnection *conn) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1122 | { |
| 15884 | 1123 | PurpleConnection *gc = od->gc; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1124 | struct chat_connection *chatcon; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1125 | static int id = 1; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1126 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1127 | aim_clientready(od, conn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1128 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1129 | chatcon = find_oscar_chat_by_conn(gc, conn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1130 | chatcon->id = id; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1131 | chatcon->conv = serv_got_joined_chat(gc, id++, chatcon->show); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1132 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1133 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1134 | static void |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1135 | flap_connection_established_chatnav(OscarData *od, FlapConnection *conn) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1136 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1137 | aim_clientready(od, conn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1138 | aim_chatnav_reqrights(od, conn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1139 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1140 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1141 | static void |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1142 | flap_connection_established_alert(OscarData *od, FlapConnection *conn) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1143 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1144 | aim_email_sendcookies(od); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1145 | aim_email_activate(od); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1146 | aim_clientready(od, conn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1147 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1148 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1149 | static void |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1150 | flap_connection_established_bart(OscarData *od, FlapConnection *conn) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1151 | { |
| 15884 | 1152 | PurpleConnection *gc = od->gc; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1153 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1154 | aim_clientready(od, conn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1155 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1156 | od->iconconnecting = FALSE; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1157 | |
|
19111
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
1158 | purple_icons_fetch(gc); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1159 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1160 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1161 | static int |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1162 | flap_connection_established(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1163 | { |
| 15884 | 1164 | purple_debug_info("oscar", "FLAP connection of type 0x%04hx is " |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1165 | "now fully connected\n", conn->type); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1166 | if (conn->type == SNAC_FAMILY_LOCATE) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1167 | flap_connection_established_bos(od, conn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1168 | else if (conn->type == SNAC_FAMILY_ADMIN) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1169 | flap_connection_established_admin(od, conn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1170 | else if (conn->type == SNAC_FAMILY_CHAT) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1171 | flap_connection_established_chat(od, conn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1172 | else if (conn->type == SNAC_FAMILY_CHATNAV) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1173 | flap_connection_established_chatnav(od, conn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1174 | else if (conn->type == SNAC_FAMILY_ALERT) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1175 | flap_connection_established_alert(od, conn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1176 | else if (conn->type == SNAC_FAMILY_BART) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1177 | flap_connection_established_bart(od, conn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1178 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1179 | return 1; |
| 2086 | 1180 | } |
| 1181 | ||
| 15030 | 1182 | void |
| 15884 | 1183 | oscar_login(PurpleAccount *account) |
|
10444
ea10e6d92619
[gaim-migrate @ 11704]
Mark Doliner <markdoliner@pidgin.im>
parents:
10439
diff
changeset
|
1184 | { |
| 15884 | 1185 | PurpleConnection *gc; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1186 | OscarData *od; |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1187 | FlapConnection *newconn; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1188 | |
| 15884 | 1189 | gc = purple_account_get_connection(account); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1190 | od = gc->proto_data = oscar_data_new(); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1191 | od->gc = gc; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1192 | |
| 15884 | 1193 | oscar_data_addhandler(od, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, purple_connerr, 0); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1194 | oscar_data_addhandler(od, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, flap_connection_established, 0); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1195 | |
| 15884 | 1196 | oscar_data_addhandler(od, SNAC_FAMILY_ADMIN, 0x0003, purple_info_change, 0); |
| 1197 | oscar_data_addhandler(od, SNAC_FAMILY_ADMIN, 0x0005, purple_info_change, 0); | |
| 1198 | oscar_data_addhandler(od, SNAC_FAMILY_ADMIN, 0x0007, purple_account_confirm, 0); | |
| 1199 | oscar_data_addhandler(od, SNAC_FAMILY_ALERT, 0x0001, purple_parse_genericerr, 0); | |
| 1200 | oscar_data_addhandler(od, SNAC_FAMILY_ALERT, SNAC_SUBTYPE_ALERT_MAILSTATUS, purple_email_parseupdate, 0); | |
| 1201 | oscar_data_addhandler(od, SNAC_FAMILY_AUTH, 0x0003, purple_parse_auth_resp, 0); | |
| 1202 | oscar_data_addhandler(od, SNAC_FAMILY_AUTH, 0x0007, purple_parse_login, 0); | |
| 1203 | oscar_data_addhandler(od, SNAC_FAMILY_AUTH, SNAC_SUBTYPE_AUTH_SECURID_REQUEST, purple_parse_auth_securid_request, 0); | |
| 1204 | oscar_data_addhandler(od, SNAC_FAMILY_BART, SNAC_SUBTYPE_BART_RESPONSE, purple_icon_parseicon, 0); | |
| 1205 | oscar_data_addhandler(od, SNAC_FAMILY_BOS, 0x0001, purple_parse_genericerr, 0); | |
| 1206 | oscar_data_addhandler(od, SNAC_FAMILY_BOS, 0x0003, purple_bosrights, 0); | |
| 1207 | oscar_data_addhandler(od, SNAC_FAMILY_BUDDY, 0x0001, purple_parse_genericerr, 0); | |
| 1208 | oscar_data_addhandler(od, SNAC_FAMILY_BUDDY, SNAC_SUBTYPE_BUDDY_RIGHTSINFO, purple_parse_buddyrights, 0); | |
| 1209 | oscar_data_addhandler(od, SNAC_FAMILY_BUDDY, SNAC_SUBTYPE_BUDDY_ONCOMING, purple_parse_oncoming, 0); | |
| 1210 | oscar_data_addhandler(od, SNAC_FAMILY_BUDDY, SNAC_SUBTYPE_BUDDY_OFFGOING, purple_parse_offgoing, 0); | |
| 1211 | oscar_data_addhandler(od, SNAC_FAMILY_CHAT, 0x0001, purple_parse_genericerr, 0); | |
| 1212 | oscar_data_addhandler(od, SNAC_FAMILY_CHAT, SNAC_SUBTYPE_CHAT_USERJOIN, purple_conv_chat_join, 0); | |
| 1213 | oscar_data_addhandler(od, SNAC_FAMILY_CHAT, SNAC_SUBTYPE_CHAT_USERLEAVE, purple_conv_chat_leave, 0); | |
| 1214 | oscar_data_addhandler(od, SNAC_FAMILY_CHAT, SNAC_SUBTYPE_CHAT_ROOMINFOUPDATE, purple_conv_chat_info_update, 0); | |
| 1215 | oscar_data_addhandler(od, SNAC_FAMILY_CHAT, SNAC_SUBTYPE_CHAT_INCOMINGMSG, purple_conv_chat_incoming_msg, 0); | |
| 1216 | oscar_data_addhandler(od, SNAC_FAMILY_CHATNAV, 0x0001, purple_parse_genericerr, 0); | |
| 1217 | oscar_data_addhandler(od, SNAC_FAMILY_CHATNAV, SNAC_SUBTYPE_CHATNAV_INFO, purple_chatnav_info, 0); | |
| 1218 | oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_ERROR, purple_ssi_parseerr, 0); | |
| 1219 | oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_RIGHTSINFO, purple_ssi_parserights, 0); | |
| 1220 | oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_LIST, purple_ssi_parselist, 0); | |
| 1221 | oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_SRVACK, purple_ssi_parseack, 0); | |
| 1222 | oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_ADD, purple_ssi_parseadd, 0); | |
| 1223 | oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_RECVAUTH, purple_ssi_authgiven, 0); | |
| 1224 | oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_RECVAUTHREQ, purple_ssi_authrequest, 0); | |
| 1225 | oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_RECVAUTHREP, purple_ssi_authreply, 0); | |
| 1226 | oscar_data_addhandler(od, SNAC_FAMILY_FEEDBAG, SNAC_SUBTYPE_FEEDBAG_ADDED, purple_ssi_gotadded, 0); | |
| 1227 | oscar_data_addhandler(od, SNAC_FAMILY_ICBM, 0x0005, purple_icbm_param_info, 0); | |
| 1228 | oscar_data_addhandler(od, SNAC_FAMILY_ICBM, SNAC_SUBTYPE_ICBM_INCOMING, purple_parse_incoming_im, 0); | |
| 1229 | oscar_data_addhandler(od, SNAC_FAMILY_ICBM, SNAC_SUBTYPE_ICBM_MISSEDCALL, purple_parse_misses, 0); | |
| 1230 | oscar_data_addhandler(od, SNAC_FAMILY_ICBM, SNAC_SUBTYPE_ICBM_CLIENTAUTORESP, purple_parse_clientauto, 0); | |
| 1231 | oscar_data_addhandler(od, SNAC_FAMILY_ICBM, SNAC_SUBTYPE_ICBM_ERROR, purple_parse_msgerr, 0); | |
| 1232 | oscar_data_addhandler(od, SNAC_FAMILY_ICBM, SNAC_SUBTYPE_ICBM_MTN, purple_parse_mtn, 0); | |
| 1233 | oscar_data_addhandler(od, SNAC_FAMILY_ICBM, SNAC_SUBTYPE_ICBM_ACK, purple_parse_msgack, 0); | |
| 1234 | oscar_data_addhandler(od, SNAC_FAMILY_ICQ, SNAC_SUBTYPE_ICQ_OFFLINEMSG, purple_offlinemsg, 0); | |
| 1235 | oscar_data_addhandler(od, SNAC_FAMILY_ICQ, SNAC_SUBTYPE_ICQ_OFFLINEMSGCOMPLETE, purple_offlinemsgdone, 0); | |
| 1236 | oscar_data_addhandler(od, SNAC_FAMILY_ICQ, SNAC_SUBTYPE_ICQ_ALIAS, purple_icqalias, 0); | |
| 1237 | oscar_data_addhandler(od, SNAC_FAMILY_ICQ, SNAC_SUBTYPE_ICQ_INFO, purple_icqinfo, 0); | |
| 1238 | oscar_data_addhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_RIGHTSINFO, purple_parse_locaterights, 0); | |
| 1239 | oscar_data_addhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_USERINFO, purple_parse_userinfo, 0); | |
| 1240 | oscar_data_addhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_ERROR, purple_parse_locerr, 0); | |
| 1241 | oscar_data_addhandler(od, SNAC_FAMILY_LOCATE, SNAC_SUBTYPE_LOCATE_GOTINFOBLOCK, purple_got_infoblock, 0); | |
| 1242 | oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x0001, purple_parse_genericerr, 0); | |
| 1243 | oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x000f, purple_selfinfo, 0); | |
| 1244 | oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x001f, purple_memrequest, 0); | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1245 | oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, 0x0021, oscar_icon_req,0); |
| 15884 | 1246 | oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, SNAC_SUBTYPE_OSERVICE_RATECHANGE, purple_parse_ratechange, 0); |
| 1247 | oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, SNAC_SUBTYPE_OSERVICE_REDIRECT, purple_handle_redirect, 0); | |
| 1248 | oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, SNAC_SUBTYPE_OSERVICE_MOTD, purple_parse_motd, 0); | |
| 1249 | oscar_data_addhandler(od, SNAC_FAMILY_OSERVICE, SNAC_SUBTYPE_OSERVICE_EVIL, purple_parse_evilnotify, 0); | |
| 1250 | oscar_data_addhandler(od, SNAC_FAMILY_POPUP, 0x0002, purple_popup, 0); | |
| 1251 | oscar_data_addhandler(od, SNAC_FAMILY_USERLOOKUP, SNAC_SUBTYPE_USERLOOKUP_ERROR, purple_parse_searcherror, 0); | |
| 1252 | oscar_data_addhandler(od, SNAC_FAMILY_USERLOOKUP, 0x0003, purple_parse_searchreply, 0); | |
| 1253 | ||
| 1254 | purple_debug_misc("oscar", "oscar_login: gc = %p\n", gc); | |
| 1255 | ||
| 1256 | if (!aim_snvalid(purple_account_get_username(account))) { | |
| 8437 | 1257 | gchar *buf; |
|
18342
59204a3c8c11
Update the "that is not a valid screen name!" error message to mention
Mark Doliner <markdoliner@pidgin.im>
parents:
18341
diff
changeset
|
1258 | buf = g_strdup_printf(_("Unable to login: Could not sign on as %s because the screen name is invalid. Screen names must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."), purple_account_get_username(account)); |
|
13937
d5606a63400f
[gaim-migrate @ 16349]
Mark Doliner <markdoliner@pidgin.im>
parents:
13935
diff
changeset
|
1259 | gc->wants_to_die = TRUE; |
| 15884 | 1260 | purple_connection_error(gc, buf); |
| 8437 | 1261 | g_free(buf); |
| 1262 | } | |
| 1263 | ||
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
1264 | if (aim_snvalid_icq((purple_account_get_username(account)))) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1265 | od->icq = TRUE; |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
1266 | } else { |
| 15884 | 1267 | gc->flags |= PURPLE_CONNECTION_HTML; |
| 1268 | gc->flags |= PURPLE_CONNECTION_AUTO_RESP; | |
| 1269 | } | |
| 1270 | ||
| 1271 | /* Connect to core Purple signals */ | |
| 1272 | purple_prefs_connect_callback(gc, "/plugins/prpl/oscar/recent_buddies", recent_buddies_cb, gc); | |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
1273 | |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1274 | newconn = flap_connection_new(od, SNAC_FAMILY_AUTH); |
| 15884 | 1275 | newconn->connect_data = purple_proxy_connect(NULL, account, |
| 1276 | purple_account_get_string(account, "server", OSCAR_DEFAULT_LOGIN_SERVER), | |
| 1277 | purple_account_get_int(account, "port", OSCAR_DEFAULT_LOGIN_PORT), | |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1278 | connection_established_cb, newconn); |
|
14324
8cbedd82b6ac
[gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents:
14254
diff
changeset
|
1279 | if (newconn->connect_data == NULL) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1280 | { |
| 15884 | 1281 | purple_connection_error(gc, _("Couldn't connect to host")); |
| 2086 | 1282 | return; |
| 1283 | } | |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1284 | |
| 15884 | 1285 | purple_connection_update_progress(gc, _("Connecting"), 0, OSCAR_CONNECT_STEPS); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
1286 | ck[0] = 0x5a; |
| 5575 | 1287 | } |
| 1288 | ||
| 15030 | 1289 | void |
| 15884 | 1290 | oscar_close(PurpleConnection *gc) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1291 | { |
|
13598
04f6791f65e0
[gaim-migrate @ 15983]
Mark Doliner <markdoliner@pidgin.im>
parents:
13596
diff
changeset
|
1292 | OscarData *od; |
|
04f6791f65e0
[gaim-migrate @ 15983]
Mark Doliner <markdoliner@pidgin.im>
parents:
13596
diff
changeset
|
1293 | |
|
04f6791f65e0
[gaim-migrate @ 15983]
Mark Doliner <markdoliner@pidgin.im>
parents:
13596
diff
changeset
|
1294 | od = (OscarData *)gc->proto_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1295 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1296 | while (od->oscar_chats) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1297 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1298 | struct chat_connection *cc = od->oscar_chats->data; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1299 | od->oscar_chats = g_slist_remove(od->oscar_chats, cc); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1300 | oscar_chat_destroy(cc); |
| 3630 | 1301 | } |
|
13598
04f6791f65e0
[gaim-migrate @ 15983]
Mark Doliner <markdoliner@pidgin.im>
parents:
13596
diff
changeset
|
1302 | while (od->create_rooms) |
|
04f6791f65e0
[gaim-migrate @ 15983]
Mark Doliner <markdoliner@pidgin.im>
parents:
13596
diff
changeset
|
1303 | { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1304 | struct create_room *cr = od->create_rooms->data; |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1305 | g_free(cr->name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1306 | od->create_rooms = g_slist_remove(od->create_rooms, cr); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1307 | g_free(cr); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1308 | } |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1309 | oscar_data_destroy(od); |
| 2086 | 1310 | gc->proto_data = NULL; |
|
13598
04f6791f65e0
[gaim-migrate @ 15983]
Mark Doliner <markdoliner@pidgin.im>
parents:
13596
diff
changeset
|
1311 | |
| 15884 | 1312 | purple_prefs_disconnect_by_handle(gc); |
| 1313 | ||
| 1314 | purple_debug_info("oscar", "Signed off.\n"); | |
| 2086 | 1315 | } |
| 1316 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1317 | static int |
| 15884 | 1318 | purple_parse_auth_resp(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) |
| 8446 | 1319 | { |
| 15884 | 1320 | PurpleConnection *gc = od->gc; |
| 1321 | PurpleAccount *account = gc->account; | |
|
6029
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
1322 | char *host; int port; |
|
14151
34427f138b1f
[gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents:
14097
diff
changeset
|
1323 | int i; |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1324 | FlapConnection *newconn; |
| 2086 | 1325 | va_list ap; |
| 2704 | 1326 | struct aim_authresp_info *info; |
|
6029
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
1327 | |
| 15884 | 1328 | port = purple_account_get_int(account, "port", OSCAR_DEFAULT_LOGIN_PORT); |
| 2086 | 1329 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1330 | va_start(ap, fr); |
| 2704 | 1331 | info = va_arg(ap, struct aim_authresp_info *); |
| 2086 | 1332 | va_end(ap); |
| 1333 | ||
| 15884 | 1334 | purple_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1335 | "inside auth_resp (Screen name: %s)\n", info->sn); |
| 2704 | 1336 | |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
1337 | if (info->errorcode || !info->bosip || !info->cookielen || !info->cookie) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
1338 | char buf[256]; |
| 2704 | 1339 | switch (info->errorcode) { |
|
14704
2cceedf8ed0a
[gaim-migrate @ 17388]
Mark Doliner <markdoliner@pidgin.im>
parents:
14667
diff
changeset
|
1340 | case 0x01: |
|
2cceedf8ed0a
[gaim-migrate @ 17388]
Mark Doliner <markdoliner@pidgin.im>
parents:
14667
diff
changeset
|
1341 | /* Unregistered screen name */ |
|
2cceedf8ed0a
[gaim-migrate @ 17388]
Mark Doliner <markdoliner@pidgin.im>
parents:
14667
diff
changeset
|
1342 | gc->wants_to_die = TRUE; |
| 15884 | 1343 | purple_connection_error(gc, _("Invalid screen name.")); |
|
14704
2cceedf8ed0a
[gaim-migrate @ 17388]
Mark Doliner <markdoliner@pidgin.im>
parents:
14667
diff
changeset
|
1344 | break; |
| 2086 | 1345 | case 0x05: |
|
14952
764657bad829
[gaim-migrate @ 17662]
Mark Doliner <markdoliner@pidgin.im>
parents:
14899
diff
changeset
|
1346 | /* Incorrect password */ |
| 6498 | 1347 | gc->wants_to_die = TRUE; |
| 15884 | 1348 | if (!purple_account_get_remember_password(account)) |
| 1349 | purple_account_set_password(account, NULL); | |
| 1350 | purple_connection_error(gc, _("Incorrect password.")); | |
| 2086 | 1351 | break; |
| 1352 | case 0x11: | |
| 1353 | /* Suspended account */ | |
| 6498 | 1354 | gc->wants_to_die = TRUE; |
| 15884 | 1355 | purple_connection_error(gc, _("Your account is currently suspended.")); |
| 2086 | 1356 | break; |
|
3498
3f6ce04ea3ad
[gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents:
3490
diff
changeset
|
1357 | case 0x14: |
|
3f6ce04ea3ad
[gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents:
3490
diff
changeset
|
1358 | /* service temporarily unavailable */ |
| 15884 | 1359 | purple_connection_error(gc, _("The AOL Instant Messenger service is temporarily unavailable.")); |
|
3498
3f6ce04ea3ad
[gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents:
3490
diff
changeset
|
1360 | break; |
| 2086 | 1361 | case 0x18: |
|
16862
ebcd573ee1a0
I noticed a new error code a few days ago: "IP address connecting too
Mark Doliner <markdoliner@pidgin.im>
parents:
16859
diff
changeset
|
1362 | /* screen name connecting too frequently */ |
| 6498 | 1363 | gc->wants_to_die = TRUE; |
| 15884 | 1364 | purple_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 | 1365 | break; |
| 1366 | case 0x1c: | |
| 1367 | /* client too old */ | |
| 6498 | 1368 | gc->wants_to_die = TRUE; |
| 15884 | 1369 | g_snprintf(buf, sizeof(buf), _("The client version you are using is too old. Please upgrade at %s"), PURPLE_WEBSITE); |
| 1370 | purple_connection_error(gc, buf); | |
| 2086 | 1371 | break; |
|
16862
ebcd573ee1a0
I noticed a new error code a few days ago: "IP address connecting too
Mark Doliner <markdoliner@pidgin.im>
parents:
16859
diff
changeset
|
1372 | case 0x1d: |
|
ebcd573ee1a0
I noticed a new error code a few days ago: "IP address connecting too
Mark Doliner <markdoliner@pidgin.im>
parents:
16859
diff
changeset
|
1373 | /* IP address connecting too frequently */ |
|
ebcd573ee1a0
I noticed a new error code a few days ago: "IP address connecting too
Mark Doliner <markdoliner@pidgin.im>
parents:
16859
diff
changeset
|
1374 | gc->wants_to_die = TRUE; |
|
ebcd573ee1a0
I noticed a new error code a few days ago: "IP address connecting too
Mark Doliner <markdoliner@pidgin.im>
parents:
16859
diff
changeset
|
1375 | purple_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.")); |
|
ebcd573ee1a0
I noticed a new error code a few days ago: "IP address connecting too
Mark Doliner <markdoliner@pidgin.im>
parents:
16859
diff
changeset
|
1376 | break; |
| 2086 | 1377 | default: |
| 15884 | 1378 | purple_connection_error(gc, _("Authentication failed")); |
| 2086 | 1379 | break; |
| 1380 | } | |
| 15884 | 1381 | purple_debug_info("oscar", "Login Error Code 0x%04hx\n", info->errorcode); |
| 1382 | purple_debug_info("oscar", "Error URL: %s\n", info->errorurl); | |
| 2086 | 1383 | return 1; |
| 1384 | } | |
| 1385 | ||
| 15884 | 1386 | purple_debug_misc("oscar", "Reg status: %hu\n", info->regstatus); |
| 1387 | purple_debug_misc("oscar", "E-mail: %s\n", | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1388 | (info->email != NULL) ? info->email : "null"); |
| 15884 | 1389 | purple_debug_misc("oscar", "BOSIP: %s\n", info->bosip); |
| 1390 | purple_debug_info("oscar", "Closing auth connection...\n"); | |
|
14454
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
1391 | flap_connection_schedule_destroy(conn, OSCAR_DISCONNECT_DONE, NULL); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1392 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1393 | for (i = 0; i < strlen(info->bosip); i++) { |
| 2704 | 1394 | if (info->bosip[i] == ':') { |
| 1395 | port = atoi(&(info->bosip[i+1])); | |
| 2086 | 1396 | break; |
| 1397 | } | |
| 1398 | } | |
| 2704 | 1399 | host = g_strndup(info->bosip, i); |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1400 | newconn = flap_connection_new(od, SNAC_FAMILY_LOCATE); |
|
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1401 | newconn->cookielen = info->cookielen; |
|
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1402 | newconn->cookie = g_memdup(info->cookie, info->cookielen); |
| 15884 | 1403 | newconn->connect_data = purple_proxy_connect(NULL, account, host, port, |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1404 | connection_established_cb, newconn); |
| 2086 | 1405 | g_free(host); |
|
14324
8cbedd82b6ac
[gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents:
14254
diff
changeset
|
1406 | if (newconn->connect_data == NULL) |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1407 | { |
| 15884 | 1408 | purple_connection_error(gc, _("Could Not Connect")); |
| 2086 | 1409 | return 0; |
| 1410 | } | |
| 2704 | 1411 | |
| 15884 | 1412 | purple_connection_update_progress(gc, _("Received authorization"), 3, OSCAR_CONNECT_STEPS); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
1413 | ck[3] = 0x64; |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1414 | |
| 2086 | 1415 | return 1; |
| 1416 | } | |
| 1417 | ||
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1418 | static void |
| 15884 | 1419 | purple_parse_auth_securid_request_yes_cb(gpointer user_data, const char *msg) |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1420 | { |
| 15884 | 1421 | PurpleConnection *gc = user_data; |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1422 | OscarData *od = gc->proto_data; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1423 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1424 | aim_auth_securid_send(od, msg); |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1425 | } |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1426 | |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1427 | static void |
| 15884 | 1428 | purple_parse_auth_securid_request_no_cb(gpointer user_data, const char *value) |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1429 | { |
| 15884 | 1430 | PurpleConnection *gc = user_data; |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1431 | |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1432 | /* Disconnect */ |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1433 | gc->wants_to_die = TRUE; |
| 15884 | 1434 | purple_connection_error(gc, _("The SecurID key entered is invalid.")); |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1435 | } |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1436 | |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1437 | static int |
| 15884 | 1438 | purple_parse_auth_securid_request(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1439 | { |
| 15884 | 1440 | PurpleConnection *gc = od->gc; |
| 1441 | PurpleAccount *account = purple_connection_get_account(gc); | |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1442 | gchar *primary; |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1443 | |
| 15884 | 1444 | purple_debug_info("oscar", "Got SecurID request\n"); |
| 1445 | ||
| 1446 | primary = g_strdup_printf("Enter the SecurID key for %s.", purple_account_get_username(account)); | |
|
20685
039aef89faf6
Updated hinting to be less invasive
Gabriel Schulhof <nix@go-nix.ca>
parents:
20684
diff
changeset
|
1447 | purple_request_input_with_hint(gc, NULL, _("Enter SecurID"), primary, |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1448 | _("Enter the 6 digit number from the digital display."), |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1449 | FALSE, FALSE, NULL, |
| 15884 | 1450 | _("_OK"), G_CALLBACK(purple_parse_auth_securid_request_yes_cb), |
| 1451 | _("_Cancel"), G_CALLBACK(purple_parse_auth_securid_request_no_cb), | |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16462
diff
changeset
|
1452 | account, NULL, NULL, |
|
19267
8d51ec40763b
Added hints to oscar oscar.c
Gabriel Schulhof <nix@go-nix.ca>
parents:
19113
diff
changeset
|
1453 | "account", gc); |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1454 | g_free(primary); |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1455 | |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1456 | return 1; |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1457 | } |
|
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
10458
diff
changeset
|
1458 | |
| 15884 | 1459 | /* XXX - Should use purple_util_fetch_url for the below stuff */ |
| 2086 | 1460 | struct pieceofcrap { |
| 15884 | 1461 | PurpleConnection *gc; |
| 2086 | 1462 | unsigned long offset; |
| 1463 | unsigned long len; | |
| 1464 | char *modname; | |
| 1465 | int fd; | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1466 | FlapConnection *conn; |
| 2086 | 1467 | unsigned int inpa; |
| 1468 | }; | |
| 1469 | ||
| 15884 | 1470 | static void damn_you(gpointer data, gint source, PurpleInputCondition c) |
| 2086 | 1471 | { |
| 1472 | struct pieceofcrap *pos = data; | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1473 | OscarData *od = pos->gc->proto_data; |
| 2086 | 1474 | char in = '\0'; |
| 1475 | int x = 0; | |
| 1476 | unsigned char m[17]; | |
| 1477 | ||
| 1478 | while (read(pos->fd, &in, 1) == 1) { | |
| 1479 | if (in == '\n') | |
| 1480 | x++; | |
| 1481 | else if (in != '\r') | |
| 1482 | x = 0; | |
| 1483 | if (x == 2) | |
| 1484 | break; | |
| 1485 | in = '\0'; | |
| 1486 | } | |
| 1487 | if (in != '\n') { | |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
1488 | char buf[256]; |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
1489 | g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until " |
| 15884 | 1490 | "this is fixed. Check %s for updates."), PURPLE_WEBSITE); |
| 1491 | purple_notify_warning(pos->gc, NULL, | |
|
15444
b793ef258d23
I think this changes every user-visible string that contains 'Gaim.' We probably want the UI to be able
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
1492 | _("Unable to get a valid AIM login hash."), |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1493 | buf); |
| 15884 | 1494 | purple_input_remove(pos->inpa); |
| 2086 | 1495 | close(pos->fd); |
| 1496 | g_free(pos); | |
| 1497 | return; | |
| 1498 | } | |
|
13663
de16367fd001
[gaim-migrate @ 16064]
Mark Doliner <markdoliner@pidgin.im>
parents:
13655
diff
changeset
|
1499 | if (read(pos->fd, m, 16) != 16) |
|
de16367fd001
[gaim-migrate @ 16064]
Mark Doliner <markdoliner@pidgin.im>
parents:
13655
diff
changeset
|
1500 | { |
| 15884 | 1501 | purple_debug_warning("oscar", "Could not read full AIM login hash " |
|
13663
de16367fd001
[gaim-migrate @ 16064]
Mark Doliner <markdoliner@pidgin.im>
parents:
13655
diff
changeset
|
1502 | "from " AIMHASHDATA "--that's bad.\n"); |
|
de16367fd001
[gaim-migrate @ 16064]
Mark Doliner <markdoliner@pidgin.im>
parents:
13655
diff
changeset
|
1503 | } |
| 2086 | 1504 | m[16] = '\0'; |
| 15884 | 1505 | purple_debug_misc("oscar", "Sending hash: "); |
| 2086 | 1506 | for (x = 0; x < 16; x++) |
| 15884 | 1507 | purple_debug_misc(NULL, "%02hhx ", (unsigned char)m[x]); |
| 1508 | ||
| 1509 | purple_debug_misc(NULL, "\n"); | |
| 1510 | purple_input_remove(pos->inpa); | |
| 2086 | 1511 | close(pos->fd); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1512 | aim_sendmemblock(od, pos->conn, 0, 16, m, AIM_SENDMEMBLOCK_FLAG_ISHASH); |
| 2086 | 1513 | g_free(pos); |
| 1514 | } | |
| 1515 | ||
|
14151
34427f138b1f
[gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents:
14097
diff
changeset
|
1516 | static void |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1517 | straight_to_hell(gpointer data, gint source, const gchar *error_message) |
|
14151
34427f138b1f
[gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents:
14097
diff
changeset
|
1518 | { |
| 2086 | 1519 | struct pieceofcrap *pos = data; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
1520 | gchar *buf; |
| 2086 | 1521 | |
| 15884 | 1522 | if (!PURPLE_CONNECTION_IS_VALID(pos->gc)) |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1523 | { |
|
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1524 | g_free(pos->modname); |
|
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1525 | g_free(pos); |
|
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1526 | return; |
|
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1527 | } |
|
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1528 | |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
1529 | pos->fd = source; |
|
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
1530 | |
| 2086 | 1531 | if (source < 0) { |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
1532 | buf = g_strdup_printf(_("You may be disconnected shortly. You may want to use TOC until " |
| 15884 | 1533 | "this is fixed. Check %s for updates."), PURPLE_WEBSITE); |
| 1534 | purple_notify_warning(pos->gc, NULL, | |
|
15444
b793ef258d23
I think this changes every user-visible string that contains 'Gaim.' We probably want the UI to be able
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
1535 | _("Unable to get a valid AIM login hash."), |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1536 | buf); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
1537 | g_free(buf); |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1538 | g_free(pos->modname); |
| 2086 | 1539 | g_free(pos); |
| 1540 | return; | |
| 1541 | } | |
| 1542 | ||
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
1543 | buf = g_strdup_printf("GET " AIMHASHDATA "?offset=%ld&len=%ld&modname=%s HTTP/1.0\n\n", |
| 2086 | 1544 | pos->offset, pos->len, pos->modname ? pos->modname : ""); |
| 1545 | write(pos->fd, buf, strlen(buf)); | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
1546 | g_free(buf); |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1547 | g_free(pos->modname); |
| 15884 | 1548 | pos->inpa = purple_input_add(pos->fd, PURPLE_INPUT_READ, damn_you, pos); |
| 2086 | 1549 | return; |
| 1550 | } | |
| 1551 | ||
| 1552 | /* size of icbmui.ocm, the largest module in AIM 3.5 */ | |
| 1553 | #define AIM_MAX_FILE_SIZE 98304 | |
| 1554 | ||
| 15884 | 1555 | int purple_memrequest(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 2086 | 1556 | va_list ap; |
| 1557 | struct pieceofcrap *pos; | |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
1558 | guint32 offset, len; |
| 2086 | 1559 | char *modname; |
| 1560 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1561 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
1562 | offset = va_arg(ap, guint32); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
1563 | len = va_arg(ap, guint32); |
| 2086 | 1564 | modname = va_arg(ap, char *); |
| 1565 | va_end(ap); | |
| 1566 | ||
| 15884 | 1567 | purple_debug_misc("oscar", "offset: %u, len: %u, file: %s\n", |
|
13227
f011e198f246
[gaim-migrate @ 15591]
Mark Doliner <markdoliner@pidgin.im>
parents:
13201
diff
changeset
|
1568 | offset, len, (modname ? modname : "aim.exe")); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1569 | |
| 2086 | 1570 | if (len == 0) { |
| 15884 | 1571 | purple_debug_misc("oscar", "len is 0, hashing NULL\n"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1572 | aim_sendmemblock(od, conn, offset, len, NULL, |
| 2086 | 1573 | AIM_SENDMEMBLOCK_FLAG_ISREQUEST); |
| 1574 | return 1; | |
| 1575 | } | |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
1576 | /* uncomment this when you're convinced it's right. remember, it's been wrong before. */ |
|
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
1577 | #if 0 |
| 2086 | 1578 | if (offset > AIM_MAX_FILE_SIZE || len > AIM_MAX_FILE_SIZE) { |
| 1579 | char *buf; | |
| 1580 | int i = 8; | |
| 1581 | if (modname) | |
| 1582 | i += strlen(modname); | |
| 1583 | buf = g_malloc(i); | |
| 1584 | i = 0; | |
| 1585 | if (modname) { | |
| 1586 | memcpy(buf, modname, strlen(modname)); | |
| 1587 | i += strlen(modname); | |
| 1588 | } | |
| 1589 | buf[i++] = offset & 0xff; | |
| 1590 | buf[i++] = (offset >> 8) & 0xff; | |
| 1591 | buf[i++] = (offset >> 16) & 0xff; | |
| 1592 | buf[i++] = (offset >> 24) & 0xff; | |
| 1593 | buf[i++] = len & 0xff; | |
| 1594 | buf[i++] = (len >> 8) & 0xff; | |
| 1595 | buf[i++] = (len >> 16) & 0xff; | |
| 1596 | buf[i++] = (len >> 24) & 0xff; | |
| 15884 | 1597 | purple_debug_misc("oscar", "len + offset is invalid, " |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1598 | "hashing request\n"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1599 | aim_sendmemblock(od, command->conn, offset, i, buf, AIM_SENDMEMBLOCK_FLAG_ISREQUEST); |
| 2086 | 1600 | g_free(buf); |
| 1601 | return 1; | |
| 1602 | } | |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
1603 | #endif |
| 2086 | 1604 | |
| 1605 | pos = g_new0(struct pieceofcrap, 1); | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1606 | pos->gc = od->gc; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1607 | pos->conn = conn; |
| 2086 | 1608 | |
| 1609 | pos->offset = offset; | |
| 1610 | pos->len = len; | |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14088
diff
changeset
|
1611 | pos->modname = g_strdup(modname); |
| 2086 | 1612 | |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1613 | /* TODO: Keep track of this return value. */ |
|
15927
009137ac8bb8
I don't know if the OSCAR checksum stuff will be copied to pidgin.im, but it certainly won't be at a website that's not ours (wrong because of the sed).
Richard Laager <rlaager@pidgin.im>
parents:
15926
diff
changeset
|
1614 | if (purple_proxy_connect(NULL, pos->gc->account, "pidgin.im", 80, |
|
14170
f611621bc8a0
[gaim-migrate @ 16742]
Mark Doliner <markdoliner@pidgin.im>
parents:
14151
diff
changeset
|
1615 | straight_to_hell, pos) == NULL) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1616 | { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
1617 | char buf[256]; |
|
17541
287a70d8189f
Add some notes about why Yahoo! web messenger login doesn't work
Mark Doliner <markdoliner@pidgin.im>
parents:
17444
diff
changeset
|
1618 | g_free(pos->modname); |
| 2086 | 1619 | g_free(pos); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1620 | g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. " |
| 15884 | 1621 | "Check %s for updates."), PURPLE_WEBSITE); |
| 1622 | purple_notify_warning(pos->gc, NULL, | |
|
15444
b793ef258d23
I think this changes every user-visible string that contains 'Gaim.' We probably want the UI to be able
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
1623 | _("Unable to get a valid login hash."), |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1624 | buf); |
| 2086 | 1625 | } |
| 1626 | ||
| 1627 | return 1; | |
| 1628 | } | |
| 1629 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1630 | static int |
| 15884 | 1631 | purple_parse_login(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1632 | { |
| 15884 | 1633 | PurpleConnection *gc; |
| 1634 | PurpleAccount *account; | |
| 1635 | ClientInfo info = CLIENTINFO_PURPLE; | |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
1636 | va_list ap; |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
1637 | char *key; |
|
17279
2a86b738c7a8
Fix signing on to AIM with an AOL screen name with a password of more
Mark Doliner <markdoliner@pidgin.im>
parents:
17226
diff
changeset
|
1638 | gboolean truncate_pass; |
| 2086 | 1639 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1640 | gc = od->gc; |
| 15884 | 1641 | account = purple_connection_get_account(gc); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1642 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1643 | va_start(ap, fr); |
| 2086 | 1644 | key = va_arg(ap, char *); |
|
17279
2a86b738c7a8
Fix signing on to AIM with an AOL screen name with a password of more
Mark Doliner <markdoliner@pidgin.im>
parents:
17226
diff
changeset
|
1645 | truncate_pass = va_arg(ap, int); |
| 2086 | 1646 | va_end(ap); |
| 1647 | ||
| 15884 | 1648 | aim_send_login(od, conn, purple_account_get_username(account), |
|
17279
2a86b738c7a8
Fix signing on to AIM with an AOL screen name with a password of more
Mark Doliner <markdoliner@pidgin.im>
parents:
17226
diff
changeset
|
1649 | purple_connection_get_password(gc), truncate_pass, |
|
2a86b738c7a8
Fix signing on to AIM with an AOL screen name with a password of more
Mark Doliner <markdoliner@pidgin.im>
parents:
17226
diff
changeset
|
1650 | &info, key); |
| 15884 | 1651 | |
| 1652 | purple_connection_update_progress(gc, _("Password sent"), 2, OSCAR_CONNECT_STEPS); | |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
1653 | ck[2] = 0x6c; |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1654 | |
| 2086 | 1655 | return 1; |
| 1656 | } | |
| 1657 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1658 | static int |
| 15884 | 1659 | purple_handle_redirect(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) |
| 2086 | 1660 | { |
| 15884 | 1661 | PurpleConnection *gc = od->gc; |
| 1662 | PurpleAccount *account = purple_connection_get_account(gc); | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1663 | char *host, *separator; |
| 2086 | 1664 | int port; |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1665 | FlapConnection *newconn; |
|
4821
9107fba2dbe5
[gaim-migrate @ 5146]
Mark Doliner <markdoliner@pidgin.im>
parents:
4820
diff
changeset
|
1666 | va_list ap; |
|
9107fba2dbe5
[gaim-migrate @ 5146]
Mark Doliner <markdoliner@pidgin.im>
parents:
4820
diff
changeset
|
1667 | struct aim_redirect_data *redir; |
| 2086 | 1668 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1669 | va_start(ap, fr); |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1670 | redir = va_arg(ap, struct aim_redirect_data *); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1671 | va_end(ap); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1672 | |
| 15884 | 1673 | port = purple_account_get_int(account, "port", OSCAR_DEFAULT_LOGIN_PORT); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1674 | separator = strchr(redir->ip, ':'); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1675 | if (separator != NULL) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1676 | { |
|
14011
9c117eecf1c6
[gaim-migrate @ 16492]
Mark Doliner <markdoliner@pidgin.im>
parents:
13970
diff
changeset
|
1677 | host = g_strndup(redir->ip, separator - redir->ip); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1678 | port = atoi(separator + 1); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1679 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1680 | else |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1681 | host = g_strdup(redir->ip); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1682 | |
| 15884 | 1683 | purple_debug_info("oscar", "Connecting to FLAP server %s:%d of type 0x%04hx\n", |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1684 | host, port, redir->group); |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1685 | newconn = flap_connection_new(od, redir->group); |
|
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1686 | newconn->cookielen = redir->cookielen; |
|
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1687 | newconn->cookie = g_memdup(redir->cookie, redir->cookielen); |
|
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1688 | if (newconn->type == SNAC_FAMILY_CHAT) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1689 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1690 | struct chat_connection *cc; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1691 | cc = g_new0(struct chat_connection, 1); |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1692 | cc->conn = newconn; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1693 | cc->gc = gc; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1694 | cc->name = g_strdup(redir->chat.room); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1695 | cc->exchange = redir->chat.exchange; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1696 | cc->instance = redir->chat.instance; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1697 | cc->show = extract_name(redir->chat.room); |
|
14324
8cbedd82b6ac
[gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents:
14254
diff
changeset
|
1698 | newconn->new_conn_data = cc; |
| 15884 | 1699 | purple_debug_info("oscar", "Connecting to chat room %s exchange %hu\n", cc->name, cc->exchange); |
| 1700 | } | |
| 1701 | ||
| 1702 | newconn->connect_data = purple_proxy_connect(NULL, account, host, port, | |
|
14171
351b731b9553
[gaim-migrate @ 16743]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
1703 | connection_established_cb, newconn); |
|
14324
8cbedd82b6ac
[gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents:
14254
diff
changeset
|
1704 | if (newconn->connect_data == NULL) |
|
13632
35dd31f81593
[gaim-migrate @ 16020]
Mark Doliner <markdoliner@pidgin.im>
parents:
13609
diff
changeset
|
1705 | { |
|
14454
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
1706 | flap_connection_schedule_destroy(newconn, |
|
df290cda81a3
[gaim-migrate @ 17099]
Mark Doliner <markdoliner@pidgin.im>
parents:
14416
diff
changeset
|
1707 | OSCAR_DISCONNECT_COULD_NOT_CONNECT, |
|
14899
c65f0b4fb351
[gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents:
14706
diff
changeset
|
1708 | _("Unable to initialize connection")); |
| 15884 | 1709 | purple_debug_error("oscar", "Unable to connect to FLAP server " |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1710 | "of type 0x%04hx\n", redir->group); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1711 | } |
| 2086 | 1712 | g_free(host); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1713 | |
| 2086 | 1714 | return 1; |
| 1715 | } | |
| 1716 | ||
| 15884 | 1717 | static int purple_parse_oncoming(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
1718 | { |
| 15884 | 1719 | PurpleConnection *gc; |
| 1720 | PurpleAccount *account; | |
| 1721 | PurplePresence *presence; | |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1722 | struct buddyinfo *bi; |
| 2993 | 1723 | time_t time_idle = 0, signon = 0; |
| 1724 | int type = 0; | |
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1725 | gboolean buddy_is_away = FALSE; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1726 | const char *status_id; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1727 | gboolean have_status_message = FALSE; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1728 | char *message = NULL; |
| 2086 | 1729 | va_list ap; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1730 | aim_userinfo_t *info; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
1731 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1732 | gc = od->gc; |
| 15884 | 1733 | account = purple_connection_get_account(gc); |
| 1734 | presence = purple_account_get_presence(account); | |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
1735 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1736 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1737 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 1738 | va_end(ap); |
|
11973
42a29ebcf30b
[gaim-migrate @ 14266]
Mark Doliner <markdoliner@pidgin.im>
parents:
11965
diff
changeset
|
1739 | |
|
10130
7256fb884aaf
[gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents:
10116
diff
changeset
|
1740 | g_return_val_if_fail(info != NULL, 1); |
|
7256fb884aaf
[gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents:
10116
diff
changeset
|
1741 | g_return_val_if_fail(info->sn != NULL, 1); |
|
7256fb884aaf
[gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents:
10116
diff
changeset
|
1742 | |
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
1743 | if (info->present & AIM_USERINFO_PRESENT_FLAGS) { |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
1744 | if (info->flags & AIM_FLAG_AWAY) |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1745 | buddy_is_away = TRUE; |
|
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
1746 | } |
| 2993 | 1747 | if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) { |
|
11510
8f618fb35bd3
[gaim-migrate @ 13755]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11495
diff
changeset
|
1748 | type = info->icqinfo.status; |
| 3013 | 1749 | if (!(info->icqinfo.status & AIM_ICQ_STATE_CHAT) && |
| 1750 | (info->icqinfo.status != AIM_ICQ_STATE_NORMAL)) { | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
1751 | buddy_is_away = TRUE; |
| 3013 | 1752 | } |
| 2993 | 1753 | } |
| 1754 | ||
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
1755 | if (aim_snvalid_icq(info->sn)) { |
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1756 | if (type & AIM_ICQ_STATE_CHAT) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1757 | status_id = OSCAR_STATUS_ID_FREE4CHAT; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1758 | else if (type & AIM_ICQ_STATE_DND) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1759 | status_id = OSCAR_STATUS_ID_DND; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1760 | else if (type & AIM_ICQ_STATE_OUT) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1761 | status_id = OSCAR_STATUS_ID_NA; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1762 | else if (type & AIM_ICQ_STATE_BUSY) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1763 | status_id = OSCAR_STATUS_ID_OCCUPIED; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1764 | else if (type & AIM_ICQ_STATE_AWAY) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1765 | status_id = OSCAR_STATUS_ID_AWAY; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1766 | else if (type & AIM_ICQ_STATE_INVISIBLE) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1767 | status_id = OSCAR_STATUS_ID_INVISIBLE; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1768 | else |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1769 | status_id = OSCAR_STATUS_ID_AVAILABLE; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1770 | } else { |
|
12653
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
1771 | if (buddy_is_away) |
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1772 | status_id = OSCAR_STATUS_ID_AWAY; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1773 | else |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1774 | status_id = OSCAR_STATUS_ID_AVAILABLE; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1775 | } |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1776 | |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1777 | /* |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1778 | * Handle the available message. If info->status is NULL then the user |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1779 | * may or may not have an available message, so don't do anything. If |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1780 | * info->status is set to the empty string, then the user's client DOES |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1781 | * support available messages and the user DOES NOT have one set. |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1782 | * Otherwise info->status contains the available message. |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1783 | */ |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1784 | if (info->status != NULL) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1785 | { |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1786 | have_status_message = TRUE; |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1787 | if (info->status[0] != '\0') |
|
17740
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
1788 | message = oscar_encoding_to_utf8(account, info->status_encoding, |
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1789 | info->status, info->status_len); |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1790 | } |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1791 | |
|
16851
e55f1961ad53
We're told by users that Hiptop is not the same thing as mobile, and should not be treated as such.
Sean Egan <seanegan@pidgin.im>
parents:
16821
diff
changeset
|
1792 | if (info->flags & AIM_FLAG_WIRELESS) |
|
15588
e6e89a427ed5
Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents:
15524
diff
changeset
|
1793 | { |
| 15884 | 1794 | purple_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_MOBILE, NULL); |
|
15588
e6e89a427ed5
Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents:
15524
diff
changeset
|
1795 | } else { |
| 15884 | 1796 | purple_prpl_got_user_status_deactive(account, info->sn, OSCAR_STATUS_ID_MOBILE); |
|
15588
e6e89a427ed5
Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents:
15524
diff
changeset
|
1797 | } |
|
e6e89a427ed5
Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents:
15524
diff
changeset
|
1798 | |
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1799 | if (have_status_message) |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1800 | { |
|
16397
68d0b988e78c
Add the iTunes Music Store url to the GaimPresence for buddies onyour
Mark Doliner <markdoliner@pidgin.im>
parents:
16375
diff
changeset
|
1801 | if ((status_id == OSCAR_STATUS_ID_AVAILABLE) && (info->itmsurl != NULL)) |
|
68d0b988e78c
Add the iTunes Music Store url to the GaimPresence for buddies onyour
Mark Doliner <markdoliner@pidgin.im>
parents:
16375
diff
changeset
|
1802 | { |
|
68d0b988e78c
Add the iTunes Music Store url to the GaimPresence for buddies onyour
Mark Doliner <markdoliner@pidgin.im>
parents:
16375
diff
changeset
|
1803 | char *itmsurl; |
|
17740
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
1804 | itmsurl = oscar_encoding_to_utf8(account, info->itmsurl_encoding, |
|
16397
68d0b988e78c
Add the iTunes Music Store url to the GaimPresence for buddies onyour
Mark Doliner <markdoliner@pidgin.im>
parents:
16375
diff
changeset
|
1805 | info->itmsurl, info->itmsurl_len); |
|
68d0b988e78c
Add the iTunes Music Store url to the GaimPresence for buddies onyour
Mark Doliner <markdoliner@pidgin.im>
parents:
16375
diff
changeset
|
1806 | purple_prpl_got_user_status(account, info->sn, status_id, |
|
68d0b988e78c
Add the iTunes Music Store url to the GaimPresence for buddies onyour
Mark Doliner <markdoliner@pidgin.im>
parents:
16375
diff
changeset
|
1807 | "message", message, "itmsurl", itmsurl, NULL); |
|
68d0b988e78c
Add the iTunes Music Store url to the GaimPresence for buddies onyour
Mark Doliner <markdoliner@pidgin.im>
parents:
16375
diff
changeset
|
1808 | g_free(itmsurl); |
|
68d0b988e78c
Add the iTunes Music Store url to the GaimPresence for buddies onyour
Mark Doliner <markdoliner@pidgin.im>
parents:
16375
diff
changeset
|
1809 | } |
|
68d0b988e78c
Add the iTunes Music Store url to the GaimPresence for buddies onyour
Mark Doliner <markdoliner@pidgin.im>
parents:
16375
diff
changeset
|
1810 | else |
|
68d0b988e78c
Add the iTunes Music Store url to the GaimPresence for buddies onyour
Mark Doliner <markdoliner@pidgin.im>
parents:
16375
diff
changeset
|
1811 | { |
|
68d0b988e78c
Add the iTunes Music Store url to the GaimPresence for buddies onyour
Mark Doliner <markdoliner@pidgin.im>
parents:
16375
diff
changeset
|
1812 | purple_prpl_got_user_status(account, info->sn, status_id, |
|
68d0b988e78c
Add the iTunes Music Store url to the GaimPresence for buddies onyour
Mark Doliner <markdoliner@pidgin.im>
parents:
16375
diff
changeset
|
1813 | "message", message, NULL); |
|
68d0b988e78c
Add the iTunes Music Store url to the GaimPresence for buddies onyour
Mark Doliner <markdoliner@pidgin.im>
parents:
16375
diff
changeset
|
1814 | } |
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1815 | g_free(message); |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1816 | } |
|
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
1817 | else |
|
15317
63821f4b1560
[gaim-migrate @ 18045]
Evan Schoenberg <evands@pidgin.im>
parents:
15310
diff
changeset
|
1818 | { |
| 15884 | 1819 | PurpleBuddy *b = purple_find_buddy(account, info->sn); |
|
16120
8c2b1257b30a
Avoid a possible NULL pointer dereference
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16076
diff
changeset
|
1820 | PurpleStatus *status = NULL; |
|
8c2b1257b30a
Avoid a possible NULL pointer dereference
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16076
diff
changeset
|
1821 | const char *active_status_id = NULL; |
|
8c2b1257b30a
Avoid a possible NULL pointer dereference
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16076
diff
changeset
|
1822 | |
|
8c2b1257b30a
Avoid a possible NULL pointer dereference
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16076
diff
changeset
|
1823 | if (b != NULL) { |
|
8c2b1257b30a
Avoid a possible NULL pointer dereference
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16076
diff
changeset
|
1824 | status = purple_presence_get_active_status(purple_buddy_get_presence(b)); |
|
8c2b1257b30a
Avoid a possible NULL pointer dereference
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16076
diff
changeset
|
1825 | active_status_id = purple_status_get_id(status); |
|
8c2b1257b30a
Avoid a possible NULL pointer dereference
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16076
diff
changeset
|
1826 | } |
| 15684 | 1827 | |
|
15317
63821f4b1560
[gaim-migrate @ 18045]
Evan Schoenberg <evands@pidgin.im>
parents:
15310
diff
changeset
|
1828 | if (!active_status_id || strcmp(active_status_id, status_id)) |
| 15884 | 1829 | purple_prpl_got_user_status(account, info->sn, status_id, NULL); |
|
15317
63821f4b1560
[gaim-migrate @ 18045]
Evan Schoenberg <evands@pidgin.im>
parents:
15310
diff
changeset
|
1830 | } |
| 15684 | 1831 | |
|
12350
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
1832 | /* Login time stuff */ |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
1833 | if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE) |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
1834 | signon = info->onlinesince; |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
1835 | else if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN) |
| 2993 | 1836 | signon = time(NULL) - info->sessionlen; |
| 15884 | 1837 | if (!aim_sncmp(purple_account_get_username(account), info->sn)) { |
| 1838 | purple_connection_set_display_name(gc, info->sn); | |
|
17697
5495647b7b5c
Get rid of the oscar time offset. This was an attempt at making sure
Mark Doliner <markdoliner@pidgin.im>
parents:
17693
diff
changeset
|
1839 | } |
|
5495647b7b5c
Get rid of the oscar time offset. This was an attempt at making sure
Mark Doliner <markdoliner@pidgin.im>
parents:
17693
diff
changeset
|
1840 | purple_prpl_got_user_login_time(account, info->sn, signon); |
|
12350
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
1841 | |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
1842 | /* Idle time stuff */ |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
1843 | /* info->idletime is the number of minutes that this user has been idle */ |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
1844 | if (info->present & AIM_USERINFO_PRESENT_IDLE) |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
1845 | time_idle = time(NULL) - info->idletime * 60; |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
1846 | |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
1847 | if (time_idle > 0) |
| 15884 | 1848 | purple_prpl_got_user_idle(account, info->sn, TRUE, time_idle); |
|
12350
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
1849 | else |
| 15884 | 1850 | purple_prpl_got_user_idle(account, info->sn, FALSE, 0); |
|
12350
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
1851 | |
|
f45d8434a759
[gaim-migrate @ 14654]
Mark Doliner <markdoliner@pidgin.im>
parents:
12349
diff
changeset
|
1852 | /* Server stored icon stuff */ |
| 15884 | 1853 | bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, info->sn)); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1854 | if (!bi) { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1855 | bi = g_new0(struct buddyinfo, 1); |
| 15884 | 1856 | g_hash_table_insert(od->buddyinfo, g_strdup(purple_normalize(account, info->sn)), bi); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1857 | } |
|
4739
7263e3ceab43
[gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents:
4738
diff
changeset
|
1858 | bi->typingnot = FALSE; |
|
7263e3ceab43
[gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents:
4738
diff
changeset
|
1859 | bi->ico_informed = FALSE; |
| 6857 | 1860 | bi->ipaddr = info->icqinfo.ipaddr; |
| 1861 | ||
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1862 | if (info->iconcsumlen) { |
|
16534
2ab9e23f99d9
Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents:
16437
diff
changeset
|
1863 | const char *saved_b16 = NULL; |
|
2ab9e23f99d9
Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents:
16437
diff
changeset
|
1864 | char *b16 = NULL; |
| 15884 | 1865 | PurpleBuddy *b = NULL; |
| 1866 | ||
| 1867 | b16 = purple_base16_encode(info->iconcsum, info->iconcsumlen); | |
| 1868 | b = purple_find_buddy(account, info->sn); | |
|
13655
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
1869 | if (b != NULL) |
|
16534
2ab9e23f99d9
Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents:
16437
diff
changeset
|
1870 | saved_b16 = purple_buddy_icons_get_checksum_for_user(b); |
|
7054
b3509b4108e9
[gaim-migrate @ 7617]
Herman Bloggs <herman@bluedigits.com>
parents:
7045
diff
changeset
|
1871 | |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1872 | if (!b16 || !saved_b16 || strcmp(b16, saved_b16)) { |
|
19109
911a0b15644c
Use g_slist_find_custom() instead of writing one ourselves
Mark Doliner <markdoliner@pidgin.im>
parents:
19108
diff
changeset
|
1873 | if (g_slist_find_custom(od->requesticon, info->sn, |
|
911a0b15644c
Use g_slist_find_custom() instead of writing one ourselves
Mark Doliner <markdoliner@pidgin.im>
parents:
19108
diff
changeset
|
1874 | (GCompareFunc)aim_sncmp) == NULL) |
|
911a0b15644c
Use g_slist_find_custom() instead of writing one ourselves
Mark Doliner <markdoliner@pidgin.im>
parents:
19108
diff
changeset
|
1875 | { |
|
19111
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
1876 | od->requesticon = g_slist_prepend(od->requesticon, |
|
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
1877 | g_strdup(purple_normalize(account, info->sn))); |
|
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
1878 | purple_icons_fetch(gc); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1879 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1880 | } |
| 6053 | 1881 | g_free(b16); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1882 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1883 | |
| 2086 | 1884 | return 1; |
| 1885 | } | |
| 1886 | ||
| 15884 | 1887 | static void purple_check_comment(OscarData *od, const char *str) { |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
1888 | if ((str == NULL) || strcmp(str, (const char *)ck)) |
| 15884 | 1889 | aim_locate_setcaps(od, purple_caps); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
1890 | else |
| 15884 | 1891 | aim_locate_setcaps(od, purple_caps | OSCAR_CAPABILITY_SECUREIM); |
| 1892 | } | |
| 1893 | ||
| 1894 | static int purple_parse_offgoing(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { | |
| 1895 | PurpleConnection *gc = od->gc; | |
| 1896 | PurpleAccount *account = purple_connection_get_account(gc); | |
| 2086 | 1897 | va_list ap; |
|
4739
7263e3ceab43
[gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents:
4738
diff
changeset
|
1898 | aim_userinfo_t *info; |
| 2086 | 1899 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1900 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1901 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 1902 | va_end(ap); |
| 1903 | ||
| 15884 | 1904 | purple_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_OFFLINE, NULL); |
| 1905 | purple_prpl_got_user_status_deactive(account, info->sn, OSCAR_STATUS_ID_MOBILE); | |
| 1906 | g_hash_table_remove(od->buddyinfo, purple_normalize(gc->account, info->sn)); | |
|
5837
e75d4061396e
[gaim-migrate @ 6268]
Mark Doliner <markdoliner@pidgin.im>
parents:
5836
diff
changeset
|
1907 | |
| 2086 | 1908 | return 1; |
| 1909 | } | |
| 1910 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
1911 | static int incomingim_chan1(OscarData *od, FlapConnection *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch1_args *args) { |
| 15884 | 1912 | PurpleConnection *gc = od->gc; |
| 1913 | PurpleAccount *account = purple_connection_get_account(gc); | |
| 1914 | PurpleMessageFlags flags = 0; | |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1915 | struct buddyinfo *bi; |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
1916 | PurpleStoredImage *img; |
|
9806
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
1917 | GString *message; |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
1918 | gchar *tmp; |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
1919 | aim_mpmsg_section_t *curpart; |
|
13734
fd3b79cb8e4b
[gaim-migrate @ 16143]
Mark Doliner <markdoliner@pidgin.im>
parents:
13730
diff
changeset
|
1920 | const char *start, *end; |
|
12675
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
1921 | GData *attribs; |
|
9806
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
1922 | |
| 15884 | 1923 | purple_debug_misc("oscar", "Received IM from %s with %d parts\n", |
|
9806
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
1924 | userinfo->sn, args->mpmsg.numparts); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1925 | |
|
10595
1338add2b0b0
[gaim-migrate @ 12010]
Mark Doliner <markdoliner@pidgin.im>
parents:
10594
diff
changeset
|
1926 | if (args->mpmsg.numparts == 0) |
|
1338add2b0b0
[gaim-migrate @ 12010]
Mark Doliner <markdoliner@pidgin.im>
parents:
10594
diff
changeset
|
1927 | return 1; |
|
1338add2b0b0
[gaim-migrate @ 12010]
Mark Doliner <markdoliner@pidgin.im>
parents:
10594
diff
changeset
|
1928 | |
| 15884 | 1929 | bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->sn)); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1930 | if (!bi) { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1931 | bi = g_new0(struct buddyinfo, 1); |
| 15884 | 1932 | g_hash_table_insert(od->buddyinfo, g_strdup(purple_normalize(account, userinfo->sn)), bi); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1933 | } |
|
2273
b7c08d737d81
[gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2249
diff
changeset
|
1934 | |
|
b7c08d737d81
[gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2249
diff
changeset
|
1935 | if (args->icbmflags & AIM_IMFLAGS_AWAY) |
| 15884 | 1936 | flags |= PURPLE_MESSAGE_AUTO_RESP; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1937 | |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1938 | if (args->icbmflags & AIM_IMFLAGS_TYPINGNOT) |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1939 | bi->typingnot = TRUE; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1940 | else |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1941 | bi->typingnot = FALSE; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1942 | |
|
4380
c7c7beab8e56
[gaim-migrate @ 4646]
Mark Doliner <markdoliner@pidgin.im>
parents:
4374
diff
changeset
|
1943 | if ((args->icbmflags & AIM_IMFLAGS_HASICON) && (args->iconlen) && (args->iconsum) && (args->iconstamp)) { |
| 15884 | 1944 | purple_debug_misc("oscar", "%s has an icon\n", userinfo->sn); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1945 | if ((args->iconlen != bi->ico_len) || (args->iconsum != bi->ico_csum) || (args->iconstamp != bi->ico_time)) { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1946 | bi->ico_need = TRUE; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1947 | bi->ico_len = args->iconlen; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1948 | bi->ico_csum = args->iconsum; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1949 | bi->ico_time = args->iconstamp; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1950 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1951 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1952 | |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
1953 | img = purple_buddy_icons_find_account_icon(account); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
1954 | if ((img != NULL) && |
| 7406 | 1955 | (args->icbmflags & AIM_IMFLAGS_BUDDYREQ) && !bi->ico_sent && bi->ico_informed) { |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
1956 | gconstpointer data = purple_imgstore_get_data(img); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
1957 | size_t len = purple_imgstore_get_size(img); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
1958 | purple_debug_info("oscar", |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
1959 | "Sending buddy icon to %s (%d bytes)\n", |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
1960 | userinfo->sn, len); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
1961 | aim_im_sendch2_icon(od, userinfo->sn, data, len, |
|
16677
7cd57586cdbf
The OSCAR timestamp stuff.
Richard Laager <rlaager@pidgin.im>
parents:
16545
diff
changeset
|
1962 | purple_buddy_icons_get_account_icon_timestamp(account), |
|
7cd57586cdbf
The OSCAR timestamp stuff.
Richard Laager <rlaager@pidgin.im>
parents:
16545
diff
changeset
|
1963 | aimutil_iconsum(data, len)); |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
1964 | } |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
1965 | purple_imgstore_unref(img); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1966 | |
|
9806
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
1967 | message = g_string_new(""); |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
1968 | curpart = args->mpmsg.parts; |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
1969 | while (curpart != NULL) { |
| 15884 | 1970 | tmp = purple_plugin_oscar_decode_im_part(account, userinfo->sn, curpart->charset, |
|
12675
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
1971 | curpart->charsubset, curpart->data, curpart->datalen); |
|
9806
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
1972 | if (tmp != NULL) { |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
1973 | g_string_append(message, tmp); |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
1974 | g_free(tmp); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1975 | } |
|
9806
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
1976 | |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
1977 | curpart = curpart->next; |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
1978 | } |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
1979 | tmp = g_string_free(message, FALSE); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1980 | |
|
8666
582a118d6b91
[gaim-migrate @ 9418]
Mark Doliner <markdoliner@pidgin.im>
parents:
8660
diff
changeset
|
1981 | /* |
|
10781
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
1982 | * If the message is from an ICQ user and to an ICQ user then escape any HTML, |
| 9016 | 1983 | * because HTML is not sent over ICQ as a means to format a message. |
|
10781
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
1984 | * So any HTML we receive is intended to be displayed. Also, \r\n must be |
|
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
1985 | * replaced with <br> |
| 8995 | 1986 | * |
| 1987 | * Note: There *may* be some clients which send messages as HTML formatted - | |
| 1988 | * they need to be special-cased somehow. | |
|
8666
582a118d6b91
[gaim-migrate @ 9418]
Mark Doliner <markdoliner@pidgin.im>
parents:
8660
diff
changeset
|
1989 | */ |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
1990 | if (aim_snvalid_icq(purple_account_get_username(account)) && aim_snvalid_icq(userinfo->sn)) { |
| 8995 | 1991 | /* being recevied by ICQ from ICQ - escape HTML so it is displayed as sent */ |
|
10732
5e314ab498bf
[gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents:
10715
diff
changeset
|
1992 | gchar *tmp2 = g_markup_escape_text(tmp, -1); |
|
8493
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
1993 | g_free(tmp); |
|
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
1994 | tmp = tmp2; |
| 15884 | 1995 | tmp2 = purple_strreplace(tmp, "\r\n", "<br>"); |
|
10781
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
1996 | g_free(tmp); |
|
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
1997 | tmp = tmp2; |
|
8493
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
1998 | } |
|
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
1999 | |
|
12675
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2000 | /* |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2001 | * Convert iChat color tags to normal font tags. |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2002 | */ |
| 15884 | 2003 | if (purple_markup_find_tag("body", tmp, &start, &end, &attribs)) |
|
12675
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2004 | { |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2005 | const char *ichattextcolor, *ichatballooncolor; |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2006 | |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2007 | ichattextcolor = g_datalist_get_data(&attribs, "ichattextcolor"); |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2008 | if (ichattextcolor != NULL) |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2009 | { |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2010 | gchar *tmp2; |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2011 | tmp2 = g_strdup_printf("<font color=\"%s\">%s</font>", ichattextcolor, tmp); |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2012 | g_free(tmp); |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2013 | tmp = tmp2; |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2014 | } |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2015 | |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2016 | ichatballooncolor = g_datalist_get_data(&attribs, "ichatballooncolor"); |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2017 | if (ichatballooncolor != NULL) |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2018 | { |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2019 | gchar *tmp2; |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2020 | tmp2 = g_strdup_printf("<font back=\"%s\">%s</font>", ichatballooncolor, tmp); |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2021 | g_free(tmp); |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2022 | tmp = tmp2; |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2023 | } |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2024 | |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2025 | g_datalist_clear(&attribs); |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2026 | } |
|
7eacb2160c67
[gaim-migrate @ 15018]
Mark Doliner <markdoliner@pidgin.im>
parents:
12663
diff
changeset
|
2027 | |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6907
diff
changeset
|
2028 | serv_got_im(gc, userinfo->sn, tmp, flags, time(NULL)); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2029 | g_free(tmp); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2030 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2031 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2032 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2033 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2034 | static int |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2035 | incomingim_chan2(OscarData *od, FlapConnection *conn, aim_userinfo_t *userinfo, IcbmArgsCh2 *args) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2036 | { |
| 15884 | 2037 | PurpleConnection *gc; |
| 2038 | PurpleAccount *account; | |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2039 | char *message = NULL; |
| 9070 | 2040 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2041 | g_return_val_if_fail(od != NULL, 0); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2042 | g_return_val_if_fail(od->gc != NULL, 0); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2043 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2044 | gc = od->gc; |
| 15884 | 2045 | account = purple_connection_get_account(gc); |
| 9070 | 2046 | od = gc->proto_data; |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2047 | |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2048 | if (args == NULL) |
| 4121 | 2049 | return 0; |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
2050 | |
| 15884 | 2051 | purple_debug_misc("oscar", "Incoming rendezvous message of type %u, " |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2052 | "user %s, status %hu\n", args->type, userinfo->sn, args->status); |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2053 | |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2054 | if (args->msg != NULL) |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2055 | { |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2056 | if (args->encoding != NULL) |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2057 | { |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2058 | char *encoding = NULL; |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2059 | encoding = oscar_encoding_extract(args->encoding); |
|
17740
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
2060 | message = oscar_encoding_to_utf8(account, encoding, args->msg, |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
2061 | args->msglen); |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2062 | g_free(encoding); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2063 | } else { |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2064 | if (g_utf8_validate(args->msg, args->msglen, NULL)) |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2065 | message = g_strdup(args->msg); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2066 | } |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2067 | } |
| 2869 | 2068 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2069 | if (args->type & OSCAR_CAPABILITY_CHAT) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2070 | { |
|
15308
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
2071 | char *encoding, *utf8name, *tmp; |
| 5234 | 2072 | GHashTable *components; |
| 2073 | ||
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2074 | if (!args->info.chat.roominfo.name || !args->info.chat.roominfo.exchange) { |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2075 | g_free(message); |
| 4121 | 2076 | return 1; |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2077 | } |
|
15308
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
2078 | encoding = args->encoding ? oscar_encoding_extract(args->encoding) : NULL; |
|
17740
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
2079 | utf8name = oscar_encoding_to_utf8(account, encoding, |
|
15308
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
2080 | args->info.chat.roominfo.name, |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
2081 | args->info.chat.roominfo.namelen); |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
2082 | g_free(encoding); |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
2083 | |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
2084 | tmp = extract_name(utf8name); |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
2085 | if (tmp != NULL) |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
2086 | { |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
2087 | g_free(utf8name); |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
2088 | utf8name = tmp; |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
2089 | } |
|
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
2090 | |
| 5234 | 2091 | components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, |
| 2092 | g_free); | |
|
15308
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
2093 | g_hash_table_replace(components, g_strdup("room"), utf8name); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2094 | g_hash_table_replace(components, g_strdup("exchange"), |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2095 | g_strdup_printf("%d", args->info.chat.roominfo.exchange)); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2096 | serv_got_chat_invite(gc, |
|
15308
2bfe4510454e
[gaim-migrate @ 18036]
Mark Doliner <markdoliner@pidgin.im>
parents:
15305
diff
changeset
|
2097 | utf8name, |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2098 | userinfo->sn, |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2099 | message, |
| 5234 | 2100 | components); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2101 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2102 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2103 | else if ((args->type & OSCAR_CAPABILITY_SENDFILE) || |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2104 | (args->type & OSCAR_CAPABILITY_DIRECTIM)) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2105 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2106 | if (args->status == AIM_RENDEZVOUS_PROPOSE) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2107 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2108 | peer_connection_got_proposition(od, userinfo->sn, message, args); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2109 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2110 | else if (args->status == AIM_RENDEZVOUS_CANCEL) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2111 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2112 | /* The other user canceled a peer request */ |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2113 | PeerConnection *conn; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2114 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2115 | conn = peer_connection_find_by_cookie(od, userinfo->sn, args->cookie); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2116 | /* |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2117 | * If conn is NULL it means we haven't tried to create |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2118 | * a connection with that user. They may be trying to |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2119 | * do something malicious. |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2120 | */ |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2121 | if (conn != NULL) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2122 | { |
|
14464
b7bca43f75b3
[gaim-migrate @ 17110]
Mark Doliner <markdoliner@pidgin.im>
parents:
14454
diff
changeset
|
2123 | peer_connection_destroy(conn, OSCAR_DISCONNECT_REMOTE_CLOSED, NULL); |
|
11369
8d396dd4633d
[gaim-migrate @ 13593]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
11359
diff
changeset
|
2124 | } |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2125 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2126 | else if (args->status == AIM_RENDEZVOUS_CONNECTED) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2127 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2128 | /* |
|
19865
6e7c06b4aa3d
Start watching the listener socket immediately after it's created
Mark Doliner <markdoliner@pidgin.im>
parents:
19859
diff
changeset
|
2129 | * Remote user has accepted our peer request. If we |
|
6e7c06b4aa3d
Start watching the listener socket immediately after it's created
Mark Doliner <markdoliner@pidgin.im>
parents:
19859
diff
changeset
|
2130 | * wanted to we could look up the PeerConnection using |
|
6e7c06b4aa3d
Start watching the listener socket immediately after it's created
Mark Doliner <markdoliner@pidgin.im>
parents:
19859
diff
changeset
|
2131 | * args->cookie, but we don't need to do anything here. |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2132 | */ |
| 3630 | 2133 | } |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2134 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2135 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2136 | else if (args->type & OSCAR_CAPABILITY_GETFILE) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2137 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2138 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2139 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2140 | else if (args->type & OSCAR_CAPABILITY_TALK) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2141 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2142 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2143 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2144 | else if (args->type & OSCAR_CAPABILITY_BUDDYICON) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2145 | { |
| 15884 | 2146 | purple_buddy_icons_set_for_user(account, userinfo->sn, |
|
16539
75a20ae3a527
Change the imgstore and by extension, then the buddy icon code to take over
Richard Laager <rlaager@pidgin.im>
parents:
16538
diff
changeset
|
2147 | g_memdup(args->info.icon.icon, args->info.icon.length), |
|
16534
2ab9e23f99d9
Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents:
16437
diff
changeset
|
2148 | args->info.icon.length, |
|
2ab9e23f99d9
Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents:
16437
diff
changeset
|
2149 | NULL); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2150 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2151 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2152 | else if (args->type & OSCAR_CAPABILITY_ICQSERVERRELAY) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2153 | { |
| 15884 | 2154 | purple_debug_error("oscar", "Got an ICQ Server Relay message of " |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2155 | "type %d\n", args->info.rtfmsg.msgtype); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2156 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2157 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2158 | else |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2159 | { |
| 15884 | 2160 | purple_debug_error("oscar", "Unknown request class %hu\n", |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2161 | args->type); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2162 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2163 | |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2164 | g_free(message); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
2165 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2166 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2167 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2168 | |
| 3453 | 2169 | /* |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2170 | * Authorization Functions |
|
13227
f011e198f246
[gaim-migrate @ 15591]
Mark Doliner <markdoliner@pidgin.im>
parents:
13201
diff
changeset
|
2171 | * Most of these are callbacks from dialogs. They're used by both |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2172 | * methods of authorization (SSI and old-school channel 4 ICBM) |
| 3453 | 2173 | */ |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2174 | /* When you ask other people for authorization */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2175 | static void |
| 15884 | 2176 | purple_auth_request(struct name_data *data, char *msg) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2177 | { |
| 15884 | 2178 | PurpleConnection *gc; |
|
13655
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
2179 | OscarData *od; |
| 15884 | 2180 | PurpleBuddy *buddy; |
| 2181 | PurpleGroup *group; | |
|
13655
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
2182 | |
|
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
2183 | gc = data->gc; |
|
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
2184 | od = gc->proto_data; |
| 15884 | 2185 | buddy = purple_find_buddy(purple_connection_get_account(gc), data->name); |
|
13655
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
2186 | if (buddy != NULL) |
| 15884 | 2187 | group = purple_buddy_get_group(buddy); |
|
13655
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
2188 | else |
|
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
2189 | group = NULL; |
|
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
2190 | |
|
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
2191 | if (group != NULL) |
|
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
2192 | { |
| 15884 | 2193 | purple_debug_info("oscar", "ssi: adding buddy %s to group %s\n", |
|
13655
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
2194 | buddy->name, group->name); |
|
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
2195 | aim_ssi_sendauthrequest(od, data->name, msg ? msg : _("Please authorize me so I can add you to my buddy list.")); |
|
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
2196 | if (!aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY)) |
|
17444
60929f040c86
Clean up some other ssi-related things. This commit and my last one
Mark Doliner <markdoliner@pidgin.im>
parents:
17279
diff
changeset
|
2197 | aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, TRUE); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2198 | } |
|
4337
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
2199 | } |
|
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
2200 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2201 | static void |
| 15884 | 2202 | purple_auth_dontrequest(struct name_data *data) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2203 | { |
| 15884 | 2204 | PurpleConnection *gc = data->gc; |
| 2205 | PurpleBuddy *b = purple_find_buddy(purple_connection_get_account(gc), data->name); | |
|
14030
23144f1dc950
[gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents:
14012
diff
changeset
|
2206 | |
|
23144f1dc950
[gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents:
14012
diff
changeset
|
2207 | /* Remove from local list */ |
| 15884 | 2208 | purple_blist_remove_buddy(b); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2209 | |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
2210 | oscar_free_name_data(data); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2211 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2212 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
2213 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2214 | static void |
| 15884 | 2215 | purple_auth_sendrequest(PurpleConnection *gc, const char *name) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2216 | { |
|
15115
6233e27145ee
[gaim-migrate @ 17837]
Mark Doliner <markdoliner@pidgin.im>
parents:
15074
diff
changeset
|
2217 | struct name_data *data; |
|
6233e27145ee
[gaim-migrate @ 17837]
Mark Doliner <markdoliner@pidgin.im>
parents:
15074
diff
changeset
|
2218 | |
|
6233e27145ee
[gaim-migrate @ 17837]
Mark Doliner <markdoliner@pidgin.im>
parents:
15074
diff
changeset
|
2219 | data = g_new0(struct name_data, 1); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2220 | data->gc = gc; |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2221 | data->name = g_strdup(name); |
|
15115
6233e27145ee
[gaim-migrate @ 17837]
Mark Doliner <markdoliner@pidgin.im>
parents:
15074
diff
changeset
|
2222 | |
|
20685
039aef89faf6
Updated hinting to be less invasive
Gabriel Schulhof <nix@go-nix.ca>
parents:
20684
diff
changeset
|
2223 | purple_request_input_with_hint(data->gc, NULL, _("Authorization Request Message:"), |
|
15115
6233e27145ee
[gaim-migrate @ 17837]
Mark Doliner <markdoliner@pidgin.im>
parents:
15074
diff
changeset
|
2224 | NULL, _("Please authorize me!"), TRUE, FALSE, NULL, |
| 15884 | 2225 | _("_OK"), G_CALLBACK(purple_auth_request), |
| 2226 | _("_Cancel"), G_CALLBACK(purple_auth_dontrequest), | |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16462
diff
changeset
|
2227 | purple_connection_get_account(gc), name, NULL, |
|
19267
8d51ec40763b
Added hints to oscar oscar.c
Gabriel Schulhof <nix@go-nix.ca>
parents:
19113
diff
changeset
|
2228 | "blist", data); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2229 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2230 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
2231 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2232 | static void |
| 15884 | 2233 | purple_auth_sendrequest_menu(PurpleBlistNode *node, gpointer ignored) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2234 | { |
| 15884 | 2235 | PurpleBuddy *buddy; |
| 2236 | PurpleConnection *gc; | |
| 2237 | ||
| 2238 | g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); | |
| 2239 | ||
| 2240 | buddy = (PurpleBuddy *) node; | |
| 2241 | gc = purple_account_get_connection(buddy->account); | |
| 2242 | purple_auth_sendrequest(gc, buddy->name); | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
2243 | } |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
2244 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2245 | /* When other people ask you for authorization */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2246 | static void |
|
19335
4613b53d5741
Warning fixes in the aftermath of resiak's authorize_cb and deny_cb type fixing.
Daniel Atallah <datallah@pidgin.im>
parents:
19317
diff
changeset
|
2247 | purple_auth_grant(gpointer cbdata) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2248 | { |
|
19335
4613b53d5741
Warning fixes in the aftermath of resiak's authorize_cb and deny_cb type fixing.
Daniel Atallah <datallah@pidgin.im>
parents:
19317
diff
changeset
|
2249 | struct name_data *data = cbdata; |
| 15884 | 2250 | PurpleConnection *gc = data->gc; |
|
14030
23144f1dc950
[gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents:
14012
diff
changeset
|
2251 | OscarData *od = gc->proto_data; |
|
23144f1dc950
[gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents:
14012
diff
changeset
|
2252 | |
|
23144f1dc950
[gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents:
14012
diff
changeset
|
2253 | aim_ssi_sendauthreply(od, data->name, 0x01, NULL); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2254 | |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
2255 | oscar_free_name_data(data); |
| 3141 | 2256 | } |
| 2257 | ||
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2258 | /* When other people ask you for authorization */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2259 | static void |
| 15884 | 2260 | purple_auth_dontgrant(struct name_data *data, char *msg) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2261 | { |
| 15884 | 2262 | PurpleConnection *gc = data->gc; |
|
14030
23144f1dc950
[gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents:
14012
diff
changeset
|
2263 | OscarData *od = gc->proto_data; |
|
23144f1dc950
[gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents:
14012
diff
changeset
|
2264 | |
|
23144f1dc950
[gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents:
14012
diff
changeset
|
2265 | aim_ssi_sendauthreply(od, data->name, 0x00, msg ? msg : _("No reason given.")); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2266 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2267 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2268 | static void |
|
19335
4613b53d5741
Warning fixes in the aftermath of resiak's authorize_cb and deny_cb type fixing.
Daniel Atallah <datallah@pidgin.im>
parents:
19317
diff
changeset
|
2269 | purple_auth_dontgrant_msgprompt(gpointer cbdata) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2270 | { |
|
19335
4613b53d5741
Warning fixes in the aftermath of resiak's authorize_cb and deny_cb type fixing.
Daniel Atallah <datallah@pidgin.im>
parents:
19317
diff
changeset
|
2271 | struct name_data *data = cbdata; |
|
20685
039aef89faf6
Updated hinting to be less invasive
Gabriel Schulhof <nix@go-nix.ca>
parents:
20684
diff
changeset
|
2272 | purple_request_input_with_hint(data->gc, NULL, _("Authorization Denied Message:"), |
| 8697 | 2273 | NULL, _("No reason given."), TRUE, FALSE, NULL, |
| 15884 | 2274 | _("_OK"), G_CALLBACK(purple_auth_dontgrant), |
|
15356
a5ad506222a1
[gaim-migrate @ 18085]
Mark Doliner <markdoliner@pidgin.im>
parents:
15345
diff
changeset
|
2275 | _("_Cancel"), G_CALLBACK(oscar_free_name_data), |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16462
diff
changeset
|
2276 | purple_connection_get_account(data->gc), data->name, NULL, |
|
19267
8d51ec40763b
Added hints to oscar oscar.c
Gabriel Schulhof <nix@go-nix.ca>
parents:
19113
diff
changeset
|
2277 | "blist", data); |
| 3141 | 2278 | } |
| 2279 | ||
| 7023 | 2280 | /* When someone sends you buddies */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2281 | static void |
| 15884 | 2282 | purple_icq_buddyadd(struct name_data *data) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2283 | { |
| 15884 | 2284 | PurpleConnection *gc = data->gc; |
| 2285 | ||
| 2286 | purple_blist_request_add_buddy(purple_connection_get_account(gc), data->name, NULL, data->nick); | |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2287 | |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
2288 | oscar_free_name_data(data); |
| 3453 | 2289 | } |
| 2290 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2291 | static int |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2292 | incomingim_chan4(OscarData *od, FlapConnection *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch4_args *args, time_t t) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2293 | { |
| 15884 | 2294 | PurpleConnection *gc = od->gc; |
| 2295 | PurpleAccount *account = purple_connection_get_account(gc); | |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2296 | gchar **msg1, **msg2; |
|
6051
6d481c30603c
[gaim-migrate @ 6501]
Mark Doliner <markdoliner@pidgin.im>
parents:
6040
diff
changeset
|
2297 | int i, numtoks; |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2298 | |
| 4121 | 2299 | if (!args->type || !args->msg || !args->uin) |
| 2300 | return 1; | |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
2301 | |
| 15884 | 2302 | purple_debug_info("oscar", |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2303 | "Received a channel 4 message of type 0x%02hx.\n", |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
2304 | args->type); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2305 | |
|
9919
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
2306 | /* |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
2307 | * Split up the message at the delimeter character, then convert each |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
2308 | * string to UTF-8. Unless, of course, this is a type 1 message. If |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
2309 | * this is a type 1 message, then the delimiter 0xfe could be a valid |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
2310 | * character in whatever encoding the message was sent in. Type 1 |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
2311 | * messages are always made up of only one part, so we can easily account |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
2312 | * for this suck-ass part of the protocol by splitting the string into at |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
2313 | * most 1 baby string. |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
2314 | */ |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
2315 | msg1 = g_strsplit(args->msg, "\376", (args->type == 0x01 ? 1 : 0)); |
|
6051
6d481c30603c
[gaim-migrate @ 6501]
Mark Doliner <markdoliner@pidgin.im>
parents:
6040
diff
changeset
|
2316 | for (numtoks=0; msg1[numtoks]; numtoks++); |
|
6d481c30603c
[gaim-migrate @ 6501]
Mark Doliner <markdoliner@pidgin.im>
parents:
6040
diff
changeset
|
2317 | msg2 = (gchar **)g_malloc((numtoks+1)*sizeof(gchar *)); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2318 | for (i=0; msg1[i]; i++) { |
|
15303
40bf2610a143
[gaim-migrate @ 18031]
Evan Schoenberg <evands@pidgin.im>
parents:
15274
diff
changeset
|
2319 | gchar *uin = g_strdup_printf("%u", args->uin); |
|
40bf2610a143
[gaim-migrate @ 18031]
Evan Schoenberg <evands@pidgin.im>
parents:
15274
diff
changeset
|
2320 | |
| 15884 | 2321 | purple_str_strip_char(msg1[i], '\r'); |
|
14464
b7bca43f75b3
[gaim-migrate @ 17110]
Mark Doliner <markdoliner@pidgin.im>
parents:
14454
diff
changeset
|
2322 | /* TODO: Should use an encoding other than ASCII? */ |
| 15884 | 2323 | msg2[i] = purple_plugin_oscar_decode_im_part(account, uin, AIM_CHARSET_ASCII, 0x0000, msg1[i], strlen(msg1[i])); |
|
15303
40bf2610a143
[gaim-migrate @ 18031]
Evan Schoenberg <evands@pidgin.im>
parents:
15274
diff
changeset
|
2324 | g_free(uin); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2325 | } |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2326 | msg2[i] = NULL; |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2327 | |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
2328 | switch (args->type) { |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2329 | case 0x01: { /* MacICQ message or basic offline message */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2330 | if (i >= 1) { |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
2331 | gchar *uin = g_strdup_printf("%u", args->uin); |
|
8493
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
2332 | gchar *tmp; |
|
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
2333 | |
|
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
2334 | /* If the message came from an ICQ user then escape any HTML */ |
|
10732
5e314ab498bf
[gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents:
10715
diff
changeset
|
2335 | tmp = g_markup_escape_text(msg2[0], -1); |
|
8493
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
2336 | |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2337 | if (t) { /* This is an offline message */ |
|
9680
170d9c1ab218
[gaim-migrate @ 10532]
Dave West <kat@users.sourceforge.net>
parents:
9661
diff
changeset
|
2338 | /* The timestamp is UTC-ish, so we need to get the offset */ |
|
9698
d83c7c4b0ccc
[gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents:
9680
diff
changeset
|
2339 | #ifdef HAVE_TM_GMTOFF |
|
9724
7e977ad7ccef
[gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents:
9713
diff
changeset
|
2340 | time_t now; |
|
7e977ad7ccef
[gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents:
9713
diff
changeset
|
2341 | struct tm *tm; |
|
7e977ad7ccef
[gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents:
9713
diff
changeset
|
2342 | now = time(NULL); |
|
7e977ad7ccef
[gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents:
9713
diff
changeset
|
2343 | tm = localtime(&now); |
|
7e977ad7ccef
[gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents:
9713
diff
changeset
|
2344 | t += tm->tm_gmtoff; |
|
9698
d83c7c4b0ccc
[gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents:
9680
diff
changeset
|
2345 | #else |
|
d83c7c4b0ccc
[gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents:
9680
diff
changeset
|
2346 | # ifdef HAVE_TIMEZONE |
|
9680
170d9c1ab218
[gaim-migrate @ 10532]
Dave West <kat@users.sourceforge.net>
parents:
9661
diff
changeset
|
2347 | tzset(); |
|
170d9c1ab218
[gaim-migrate @ 10532]
Dave West <kat@users.sourceforge.net>
parents:
9661
diff
changeset
|
2348 | t -= timezone; |
|
9698
d83c7c4b0ccc
[gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents:
9680
diff
changeset
|
2349 | # endif |
|
d83c7c4b0ccc
[gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents:
9680
diff
changeset
|
2350 | #endif |
| 8514 | 2351 | serv_got_im(gc, uin, tmp, 0, t); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2352 | } else { /* This is a message from MacICQ/Miranda */ |
| 8514 | 2353 | serv_got_im(gc, uin, tmp, 0, time(NULL)); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2354 | } |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2355 | g_free(uin); |
|
8493
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
2356 | g_free(tmp); |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
2357 | } |
|
3316
43bb95f6167a
[gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents:
3279
diff
changeset
|
2358 | } break; |
|
43bb95f6167a
[gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents:
3279
diff
changeset
|
2359 | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2360 | case 0x04: { /* Someone sent you a URL */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2361 | if (i >= 2) { |
|
7385
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
2362 | if (msg2[1] != NULL) { |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
2363 | gchar *uin = g_strdup_printf("%u", args->uin); |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
2364 | gchar *message = g_strdup_printf("<A HREF=\"%s\">%s</A>", |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
2365 | msg2[1], |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
2366 | (msg2[0] && msg2[0][0]) ? msg2[0] : msg2[1]); |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
2367 | serv_got_im(gc, uin, message, 0, time(NULL)); |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
2368 | g_free(uin); |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
2369 | g_free(message); |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
2370 | } |
| 3453 | 2371 | } |
| 2372 | } break; | |
| 2373 | ||
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2374 | case 0x06: { /* Someone requested authorization */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2375 | if (i >= 6) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2376 | struct name_data *data = g_new(struct name_data, 1); |
|
11102
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
2377 | gchar *sn = g_strdup_printf("%u", args->uin); |
|
15122
58eab9b89e86
[gaim-migrate @ 17844]
Daniel Atallah <datallah@pidgin.im>
parents:
15119
diff
changeset
|
2378 | gchar *reason = NULL; |
|
11102
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
2379 | |
|
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
2380 | if (msg2[5] != NULL) |
| 15884 | 2381 | reason = purple_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg2[5], strlen(msg2[5])); |
| 2382 | ||
| 2383 | purple_debug_info("oscar", | |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
2384 | "Received an authorization request from UIN %u\n", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2385 | args->uin); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2386 | data->gc = gc; |
|
11102
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
2387 | data->name = sn; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2388 | data->nick = NULL; |
|
15122
58eab9b89e86
[gaim-migrate @ 17844]
Daniel Atallah <datallah@pidgin.im>
parents:
15119
diff
changeset
|
2389 | |
| 15884 | 2390 | purple_account_request_authorization(account, sn, NULL, NULL, |
| 2391 | reason, purple_find_buddy(account, sn) != NULL, | |
|
19335
4613b53d5741
Warning fixes in the aftermath of resiak's authorize_cb and deny_cb type fixing.
Daniel Atallah <datallah@pidgin.im>
parents:
19317
diff
changeset
|
2392 | purple_auth_grant, |
|
4613b53d5741
Warning fixes in the aftermath of resiak's authorize_cb and deny_cb type fixing.
Daniel Atallah <datallah@pidgin.im>
parents:
19317
diff
changeset
|
2393 | purple_auth_dontgrant_msgprompt, data); |
| 15119 | 2394 | g_free(reason); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2395 | } |
| 3141 | 2396 | } break; |
| 2397 | ||
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2398 | case 0x07: { /* Someone has denied you authorization */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2399 | if (i >= 1) { |
| 7023 | 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.")); |
| 15884 | 2401 | purple_notify_info(gc, NULL, _("ICQ authorization denied."), |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2402 | dialog_msg); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2403 | g_free(dialog_msg); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2404 | } |
| 3141 | 2405 | } break; |
| 2406 | ||
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2407 | case 0x08: { /* Someone has granted you authorization */ |
| 7023 | 2408 | gchar *dialog_msg = g_strdup_printf(_("The user %u has granted your request to add them to your buddy list."), args->uin); |
| 15884 | 2409 | purple_notify_info(gc, NULL, "ICQ authorization accepted.", |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2410 | dialog_msg); |
| 3141 | 2411 | g_free(dialog_msg); |
| 2412 | } break; | |
| 2413 | ||
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
2414 | case 0x09: { /* Message from the Godly ICQ server itself, I think */ |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
2415 | if (i >= 5) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
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]); |
| 15884 | 2417 | purple_notify_info(gc, NULL, "ICQ Server Message", dialog_msg); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
2418 | g_free(dialog_msg); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
2419 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
2420 | } break; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
2421 | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2422 | case 0x0d: { /* Someone has sent you a pager message from http://www.icq.com/your_uin */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2423 | if (i >= 6) { |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
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]); |
| 15884 | 2425 | purple_notify_info(gc, NULL, "ICQ Page", dialog_msg); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2426 | g_free(dialog_msg); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2427 | } |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
2428 | } break; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
2429 | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2430 | case 0x0e: { /* Someone has emailed you at your_uin@pager.icq.com */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2431 | if (i >= 6) { |
|
13546
0700f0c29e14
[gaim-migrate @ 15922]
Richard Laager <rlaager@pidgin.im>
parents:
13478
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]); |
| 15884 | 2433 | purple_notify_info(gc, NULL, "ICQ E-Mail", dialog_msg); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2434 | g_free(dialog_msg); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2435 | } |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
2436 | } break; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
2437 | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2438 | case 0x12: { |
| 3141 | 2439 | /* Ack for authorizing/denying someone. Or possibly an ack for sending any system notice */ |
| 7023 | 2440 | /* Someone added you to their buddy list? */ |
| 3141 | 2441 | } break; |
| 2442 | ||
| 7023 | 2443 | case 0x13: { /* Someone has sent you some ICQ buddies */ |
| 7631 | 2444 | guint i, num; |
| 3453 | 2445 | gchar **text; |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2446 | text = g_strsplit(args->msg, "\376", 0); |
| 3453 | 2447 | if (text) { |
| 2448 | num = 0; | |
| 2449 | for (i=0; i<strlen(text[0]); i++) | |
| 2450 | num = num*10 + text[0][i]-48; | |
| 2451 | for (i=0; i<num; i++) { | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2452 | struct name_data *data = g_new(struct name_data, 1); |
| 7023 | 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 | 2454 | data->gc = gc; |
|
4790
765a98790ede
[gaim-migrate @ 5110]
Mark Doliner <markdoliner@pidgin.im>
parents:
4785
diff
changeset
|
2455 | data->name = g_strdup(text[i*2+1]); |
|
765a98790ede
[gaim-migrate @ 5110]
Mark Doliner <markdoliner@pidgin.im>
parents:
4785
diff
changeset
|
2456 | data->nick = g_strdup(text[i*2+2]); |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2457 | |
|
20685
039aef89faf6
Updated hinting to be less invasive
Gabriel Schulhof <nix@go-nix.ca>
parents:
20684
diff
changeset
|
2458 | purple_request_action_with_hint(gc, NULL, message, |
| 7023 | 2459 | _("Do you want to add this buddy " |
| 2460 | "to your buddy list?"), | |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16462
diff
changeset
|
2461 | PURPLE_DEFAULT_ACTION_NONE, |
|
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16462
diff
changeset
|
2462 | purple_connection_get_account(gc), data->name, NULL, |
|
19267
8d51ec40763b
Added hints to oscar oscar.c
Gabriel Schulhof <nix@go-nix.ca>
parents:
19113
diff
changeset
|
2463 | "blist", data, 2, |
| 15884 | 2464 | _("_Add"), G_CALLBACK(purple_icq_buddyadd), |
| 12603 | 2465 | _("_Decline"), G_CALLBACK(oscar_free_name_data)); |
| 3453 | 2466 | g_free(message); |
| 2467 | } | |
| 2468 | g_strfreev(text); | |
| 2469 | } | |
| 2470 | } break; | |
| 2471 | ||
|
19819
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2472 | case 0x1a: { /* Handle SMS or someone has sent you a greeting card or requested buddies? */ |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2473 | ByteStream qbs; |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2474 | int smstype, taglen, smslen; |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2475 | char *tagstr = NULL, *smsmsg = NULL; |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2476 | xmlnode *xmlroot = NULL, *xmltmp = NULL; |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2477 | gchar *uin = NULL, *message = NULL; |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2478 | |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2479 | /* From libicq2000-0.3.2/src/ICQ.cpp */ |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2480 | byte_stream_init(&qbs, (guint8 *)args->msg, args->msglen); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2481 | byte_stream_advance(&qbs, 21); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2482 | smstype = byte_stream_getle16(&qbs); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2483 | taglen = byte_stream_getle32(&qbs); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2484 | tagstr = byte_stream_getstr(&qbs, taglen); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2485 | byte_stream_advance(&qbs, 3); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2486 | byte_stream_advance(&qbs, 4); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2487 | smslen = byte_stream_getle32(&qbs); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2488 | smsmsg = byte_stream_getstr(&qbs, smslen); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2489 | |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2490 | /* Check if this is an SMS being sent from server */ |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2491 | if ((smstype == 0) && (!strcmp(tagstr, "ICQSMS")) && (smsmsg != NULL)) |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2492 | { |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2493 | xmlroot = xmlnode_from_str(smsmsg, -1); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2494 | if (xmlroot != NULL) |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2495 | { |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2496 | xmltmp = xmlnode_get_child(xmlroot, "sender"); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2497 | if (xmltmp != NULL) |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2498 | uin = xmlnode_get_data(xmltmp); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2499 | |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2500 | xmltmp = xmlnode_get_child(xmlroot, "text"); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2501 | if (xmltmp != NULL) |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2502 | message = xmlnode_get_data(xmltmp); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2503 | |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2504 | if ((uin != NULL) && (message != NULL)) |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2505 | serv_got_im(gc, uin, message, 0, time(NULL)); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2506 | |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2507 | g_free(uin); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2508 | g_free(message); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2509 | xmlnode_free(xmlroot); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2510 | } |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2511 | } |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2512 | g_free(tagstr); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
2513 | g_free(smsmsg); |
| 3453 | 2514 | } break; |
| 2515 | ||
| 3141 | 2516 | default: { |
| 15884 | 2517 | purple_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2518 | "Received a channel 4 message of unknown type " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2519 | "(type 0x%02hhx).\n", args->type); |
| 3141 | 2520 | } break; |
| 2521 | } | |
| 2522 | ||
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2523 | g_strfreev(msg1); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2524 | g_strfreev(msg2); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2525 | |
| 3141 | 2526 | return 1; |
| 2527 | } | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2528 | |
| 15884 | 2529 | static int purple_parse_incoming_im(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2530 | guint16 channel; |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
2531 | int ret = 0; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
2532 | aim_userinfo_t *userinfo; |
| 2086 | 2533 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2534 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2535 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2536 | channel = (guint16)va_arg(ap, unsigned int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
2537 | userinfo = va_arg(ap, aim_userinfo_t *); |
| 2086 | 2538 | |
| 3141 | 2539 | switch (channel) { |
| 2540 | case 1: { /* standard message */ | |
| 2541 | struct aim_incomingim_ch1_args *args; | |
| 2542 | args = va_arg(ap, struct aim_incomingim_ch1_args *); | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2543 | ret = incomingim_chan1(od, conn, userinfo, args); |
| 3141 | 2544 | } break; |
| 2545 | ||
|
8735
01248ea222d3
[gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents:
8733
diff
changeset
|
2546 | case 2: { /* rendezvous */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2547 | IcbmArgsCh2 *args; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2548 | args = va_arg(ap, IcbmArgsCh2 *); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2549 | ret = incomingim_chan2(od, conn, userinfo, args); |
| 3141 | 2550 | } break; |
| 2551 | ||
| 2552 | case 4: { /* ICQ */ | |
| 2553 | struct aim_incomingim_ch4_args *args; | |
| 2554 | args = va_arg(ap, struct aim_incomingim_ch4_args *); | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2555 | ret = incomingim_chan4(od, conn, userinfo, args, 0); |
| 3141 | 2556 | } break; |
| 2557 | ||
| 2558 | default: { | |
| 15884 | 2559 | purple_debug_warning("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2560 | "ICBM received on unsupported channel (channel " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2561 | "0x%04hx).", channel); |
| 3141 | 2562 | } break; |
| 2086 | 2563 | } |
| 2564 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2565 | va_end(ap); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2566 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2567 | return ret; |
| 2086 | 2568 | } |
| 2569 | ||
| 15884 | 2570 | static int purple_parse_misses(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 2571 | PurpleConnection *gc = od->gc; | |
| 2572 | PurpleAccount *account = purple_connection_get_account(gc); | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2573 | char *buf; |
| 2086 | 2574 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2575 | guint16 chan, nummissed, reason; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
2576 | aim_userinfo_t *userinfo; |
| 2086 | 2577 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2578 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2579 | chan = (guint16)va_arg(ap, unsigned int); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
2580 | userinfo = va_arg(ap, aim_userinfo_t *); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2581 | nummissed = (guint16)va_arg(ap, unsigned int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2582 | reason = (guint16)va_arg(ap, unsigned int); |
| 2086 | 2583 | va_end(ap); |
| 2584 | ||
| 2585 | switch(reason) { | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2586 | case 0: /* Invalid (0) */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2587 | buf = g_strdup_printf( |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16120
diff
changeset
|
2588 | dngettext(PACKAGE, |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2589 | "You missed %hu message from %s because it was invalid.", |
|
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2590 | "You missed %hu messages from %s because they were invalid.", |
|
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2591 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2592 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2593 | userinfo->sn); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2594 | break; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2595 | case 1: /* Message too large */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2596 | buf = g_strdup_printf( |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16120
diff
changeset
|
2597 | dngettext(PACKAGE, |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2598 | "You missed %hu message from %s because it was too large.", |
|
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2599 | "You missed %hu messages from %s because they were too large.", |
|
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2600 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2601 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2602 | userinfo->sn); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2603 | break; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2604 | case 2: /* Rate exceeded */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2605 | buf = g_strdup_printf( |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16120
diff
changeset
|
2606 | dngettext(PACKAGE, |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2607 | "You missed %hu message from %s because the rate limit has been exceeded.", |
|
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2608 | "You missed %hu messages from %s because the rate limit has been exceeded.", |
|
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2609 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2610 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2611 | userinfo->sn); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2612 | break; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2613 | case 3: /* Evil Sender */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2614 | buf = g_strdup_printf( |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16120
diff
changeset
|
2615 | dngettext(PACKAGE, |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2616 | "You missed %hu message from %s because he/she was too evil.", |
|
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2617 | "You missed %hu messages from %s because he/she was too evil.", |
|
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2618 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2619 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2620 | userinfo->sn); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2621 | break; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2622 | case 4: /* Evil Receiver */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2623 | buf = g_strdup_printf( |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16120
diff
changeset
|
2624 | dngettext(PACKAGE, |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2625 | "You missed %hu message from %s because you are too evil.", |
|
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2626 | "You missed %hu messages from %s because you are too evil.", |
|
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2627 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2628 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2629 | userinfo->sn); |
| 2086 | 2630 | break; |
| 2631 | default: | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2632 | buf = g_strdup_printf( |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16120
diff
changeset
|
2633 | dngettext(PACKAGE, |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2634 | "You missed %hu message from %s for an unknown reason.", |
|
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2635 | "You missed %hu messages from %s for an unknown reason.", |
|
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2636 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2637 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2638 | userinfo->sn); |
| 2086 | 2639 | break; |
| 2640 | } | |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
2641 | |
| 15884 | 2642 | if (!purple_conv_present_error(userinfo->sn, account, buf)) |
| 2643 | purple_notify_error(od->gc, NULL, buf, NULL); | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2644 | g_free(buf); |
| 2086 | 2645 | |
| 2646 | return 1; | |
| 2647 | } | |
| 2648 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2649 | static int |
| 15884 | 2650 | purple_parse_clientauto_ch2(OscarData *od, const char *who, guint16 reason, const guchar *cookie) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2651 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2652 | if (reason == 0x0003) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2653 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2654 | /* Rendezvous was refused. */ |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2655 | PeerConnection *conn; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2656 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2657 | conn = peer_connection_find_by_cookie(od, who, cookie); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2658 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2659 | if (conn == NULL) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2660 | { |
| 15884 | 2661 | purple_debug_info("oscar", "Received a rendezvous cancel message " |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2662 | "for a nonexistant connection from %s.\n", who); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2663 | } |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2664 | else |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2665 | { |
|
14464
b7bca43f75b3
[gaim-migrate @ 17110]
Mark Doliner <markdoliner@pidgin.im>
parents:
14454
diff
changeset
|
2666 | peer_connection_destroy(conn, OSCAR_DISCONNECT_REMOTE_REFUSED, NULL); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2667 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2668 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2669 | else |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2670 | { |
| 15884 | 2671 | purple_debug_warning("oscar", "Received an unknown rendezvous " |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2672 | "message from %s. Type 0x%04hx\n", who, reason); |
| 3630 | 2673 | } |
| 2674 | ||
| 2675 | return 0; | |
| 2676 | } | |
| 2677 | ||
| 15884 | 2678 | static int purple_parse_clientauto_ch4(OscarData *od, char *who, guint16 reason, guint32 state, char *msg) { |
| 2679 | PurpleConnection *gc = od->gc; | |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2680 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2681 | switch(reason) { |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2682 | case 0x0003: { /* Reply from an ICQ status message request */ |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
2683 | char *statusmsg, **splitmsg; |
| 15884 | 2684 | PurpleNotifyUserInfo *user_info; |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2685 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2686 | /* Split at (carriage return/newline)'s, then rejoin later with BRs between. */ |
| 9244 | 2687 | statusmsg = oscar_icqstatus(state); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2688 | splitmsg = g_strsplit(msg, "\r\n", 0); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
2689 | |
| 15884 | 2690 | user_info = purple_notify_user_info_new(); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
2691 | |
| 15884 | 2692 | purple_notify_user_info_add_pair(user_info, _("UIN"), who); |
| 2693 | purple_notify_user_info_add_pair(user_info, _("Status"), statusmsg); | |
| 2694 | purple_notify_user_info_add_section_break(user_info); | |
| 2695 | purple_notify_user_info_add_pair(user_info, NULL, g_strjoinv("<BR>", splitmsg)); | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
2696 | |
| 9244 | 2697 | g_free(statusmsg); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2698 | g_strfreev(splitmsg); |
| 9244 | 2699 | |
| 15884 | 2700 | purple_notify_userinfo(gc, who, user_info, NULL, NULL); |
| 2701 | purple_notify_user_info_destroy(user_info); | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
2702 | |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2703 | } break; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2704 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2705 | default: { |
| 15884 | 2706 | purple_debug_warning("oscar", |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
2707 | "Received an unknown client auto-response from %s. " |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2708 | "Type 0x%04hx\n", who, reason); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2709 | } break; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2710 | } /* end of switch */ |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2711 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2712 | return 0; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2713 | } |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2714 | |
| 15884 | 2715 | static int purple_parse_clientauto(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2716 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2717 | guint16 chan, reason; |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2718 | char *who; |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2719 | |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2720 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2721 | chan = (guint16)va_arg(ap, unsigned int); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2722 | who = va_arg(ap, char *); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2723 | reason = (guint16)va_arg(ap, unsigned int); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2724 | |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
2725 | if (chan == 0x0002) { /* File transfer declined */ |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
2726 | guchar *cookie = va_arg(ap, guchar *); |
| 15884 | 2727 | return purple_parse_clientauto_ch2(od, who, reason, cookie); |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
2728 | } else if (chan == 0x0004) { /* ICQ message */ |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2729 | guint32 state = 0; |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2730 | char *msg = NULL; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2731 | if (reason == 0x0003) { |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2732 | state = va_arg(ap, guint32); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2733 | msg = va_arg(ap, char *); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2734 | } |
| 15884 | 2735 | return purple_parse_clientauto_ch4(od, who, reason, state, msg); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2736 | } |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
2737 | |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2738 | va_end(ap); |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2739 | |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2740 | return 1; |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2741 | } |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2742 | |
| 15884 | 2743 | static int purple_parse_genericerr(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 2086 | 2744 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2745 | guint16 reason; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2746 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2747 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2748 | reason = (guint16) va_arg(ap, unsigned int); |
| 2086 | 2749 | va_end(ap); |
| 2750 | ||
| 15884 | 2751 | purple_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2752 | "snac threw error (reason 0x%04hx: %s)\n", reason, |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2753 | (reason < msgerrreasonlen) ? msgerrreason[reason] : "unknown"); |
| 2086 | 2754 | return 1; |
| 2755 | } | |
| 2756 | ||
| 15884 | 2757 | static int purple_parse_msgerr(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 2758 | PurpleConnection *gc = od->gc; | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2759 | #ifdef TODOFT |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2760 | OscarData *od = gc->proto_data; |
| 15884 | 2761 | PurpleXfer *xfer; |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
2762 | #endif |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2763 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2764 | guint16 reason; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2765 | char *data, *buf; |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
2766 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2767 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2768 | reason = (guint16)va_arg(ap, unsigned int); |
| 3752 | 2769 | data = va_arg(ap, char *); |
| 2086 | 2770 | va_end(ap); |
| 2771 | ||
| 15884 | 2772 | purple_debug_error("oscar", |
|
10130
7256fb884aaf
[gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents:
10116
diff
changeset
|
2773 | "Message error with data %s and reason %hu\n", |
|
7256fb884aaf
[gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents:
10116
diff
changeset
|
2774 | (data != NULL ? data : ""), reason); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2775 | |
|
15309
ea0c8c018e7b
[gaim-migrate @ 18037]
Mark Doliner <markdoliner@pidgin.im>
parents:
15308
diff
changeset
|
2776 | if ((data == NULL) || (*data == '\0')) |
|
ea0c8c018e7b
[gaim-migrate @ 18037]
Mark Doliner <markdoliner@pidgin.im>
parents:
15308
diff
changeset
|
2777 | /* We can't do anything if data is empty */ |
|
ea0c8c018e7b
[gaim-migrate @ 18037]
Mark Doliner <markdoliner@pidgin.im>
parents:
15308
diff
changeset
|
2778 | return 1; |
|
ea0c8c018e7b
[gaim-migrate @ 18037]
Mark Doliner <markdoliner@pidgin.im>
parents:
15308
diff
changeset
|
2779 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
2780 | #ifdef TODOFT |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2781 | /* If this was a file transfer request, data is a cookie */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2782 | if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, data))) { |
| 15884 | 2783 | purple_xfer_cancel_remote(xfer); |
| 3630 | 2784 | return 1; |
| 2785 | } | |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
2786 | #endif |
| 3630 | 2787 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2788 | /* Data is assumed to be the destination sn */ |
|
15860
91fc3b830d63
lots of translation updates. Some of these I neglected for way too long.
Luke Schierer <lschiere@pidgin.im>
parents:
15844
diff
changeset
|
2789 | buf = g_strdup_printf(_("Unable to send message: %s"), (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason.")); |
| 15884 | 2790 | if (!purple_conv_present_error(data, purple_connection_get_account(gc), buf)) { |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
2791 | g_free(buf); |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
2792 | buf = g_strdup_printf(_("Unable to send message to %s:"), data ? data : "(unknown)"); |
| 15884 | 2793 | purple_notify_error(od->gc, NULL, buf, |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
2794 | (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason.")); |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
2795 | } |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
2796 | g_free(buf); |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
2797 | |
| 2086 | 2798 | return 1; |
| 2799 | } | |
| 2800 | ||
| 15884 | 2801 | static int purple_parse_mtn(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 2802 | PurpleConnection *gc = od->gc; | |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2803 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2804 | guint16 type1, type2; |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2805 | char *sn; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2806 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2807 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2808 | type1 = (guint16) va_arg(ap, unsigned int); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2809 | sn = va_arg(ap, char *); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2810 | type2 = (guint16) va_arg(ap, unsigned int); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2811 | va_end(ap); |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2812 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2813 | switch (type2) { |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2814 | case 0x0000: { /* Text has been cleared */ |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2815 | serv_got_typing_stopped(gc, sn); |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2816 | } break; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2817 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2818 | case 0x0001: { /* Paused typing */ |
| 15884 | 2819 | serv_got_typing(gc, sn, 0, PURPLE_TYPED); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2820 | } break; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2821 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2822 | case 0x0002: { /* Typing */ |
| 15884 | 2823 | serv_got_typing(gc, sn, 0, PURPLE_TYPING); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2824 | } break; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2825 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2826 | default: { |
|
14030
23144f1dc950
[gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents:
14012
diff
changeset
|
2827 | /* |
|
23144f1dc950
[gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents:
14012
diff
changeset
|
2828 | * It looks like iChat sometimes sends typing notification |
|
23144f1dc950
[gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents:
14012
diff
changeset
|
2829 | * with type1=0x0001 and type2=0x000f. Not sure why. |
|
23144f1dc950
[gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents:
14012
diff
changeset
|
2830 | */ |
| 15884 | 2831 | purple_debug_info("oscar", "Received unknown typing notification message from %s. Type1 is 0x%04x and type2 is 0x%04hx.\n", sn, type1, type2); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2832 | } break; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2833 | } |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2834 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2835 | return 1; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2836 | } |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2837 | |
|
7141
431a007467e8
[gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents:
7129
diff
changeset
|
2838 | /* |
|
13382
ad4d8c44d83d
[gaim-migrate @ 15754]
Daniel Atallah <datallah@pidgin.im>
parents:
13357
diff
changeset
|
2839 | * We get this error when there was an error in the locate family. This |
|
7259
9d12688cee90
[gaim-migrate @ 7836]
Mark Doliner <markdoliner@pidgin.im>
parents:
7253
diff
changeset
|
2840 | * happens when you request info of someone who is offline. |
|
7141
431a007467e8
[gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents:
7129
diff
changeset
|
2841 | */ |
| 15884 | 2842 | static int purple_parse_locerr(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
2843 | gchar *buf; |
| 2086 | 2844 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2845 | guint16 reason; |
| 2086 | 2846 | char *destn; |
|
18197
1cdb844307ae
Use _notify_userinfo instead of _notify_error when there's an error
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18191
diff
changeset
|
2847 | PurpleNotifyUserInfo *user_info; |
| 2086 | 2848 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2849 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2850 | reason = (guint16) va_arg(ap, unsigned int); |
| 2086 | 2851 | destn = va_arg(ap, char *); |
| 2852 | va_end(ap); | |
| 2853 | ||
|
7781
db624418e528
[gaim-migrate @ 8426]
Mark Doliner <markdoliner@pidgin.im>
parents:
7693
diff
changeset
|
2854 | if (destn == NULL) |
|
7793
9d6043375b81
[gaim-migrate @ 8439]
Mark Doliner <markdoliner@pidgin.im>
parents:
7781
diff
changeset
|
2855 | return 1; |
|
12653
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
2856 | |
|
18197
1cdb844307ae
Use _notify_userinfo instead of _notify_error when there's an error
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18191
diff
changeset
|
2857 | user_info = purple_notify_user_info_new(); |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
2858 | buf = g_strdup_printf(_("User information not available: %s"), (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason.")); |
|
18197
1cdb844307ae
Use _notify_userinfo instead of _notify_error when there's an error
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18191
diff
changeset
|
2859 | purple_notify_user_info_add_pair(user_info, NULL, buf); |
|
1cdb844307ae
Use _notify_userinfo instead of _notify_error when there's an error
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18191
diff
changeset
|
2860 | purple_notify_userinfo(od->gc, destn, user_info, NULL, NULL); |
|
1cdb844307ae
Use _notify_userinfo instead of _notify_error when there's an error
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18191
diff
changeset
|
2861 | purple_notify_user_info_destroy(user_info); |
|
1cdb844307ae
Use _notify_userinfo instead of _notify_error when there's an error
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18191
diff
changeset
|
2862 | purple_conv_present_error(destn, purple_connection_get_account(od->gc), buf); |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
2863 | g_free(buf); |
| 2086 | 2864 | |
| 2865 | return 1; | |
| 2866 | } | |
| 2867 | ||
| 15884 | 2868 | static int purple_parse_userinfo(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 2869 | PurpleConnection *gc = od->gc; | |
| 2870 | PurpleAccount *account = purple_connection_get_account(gc); | |
| 2871 | PurpleNotifyUserInfo *user_info; | |
|
11532
b069bbab16be
[gaim-migrate @ 13781]
Luke Schierer <lschiere@pidgin.im>
parents:
11531
diff
changeset
|
2872 | gchar *tmp = NULL, *info_utf8 = NULL, *away_utf8 = NULL; |
|
4791
b35003e42654
[gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents:
4790
diff
changeset
|
2873 | va_list ap; |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2874 | aim_userinfo_t *userinfo; |
| 2086 | 2875 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2876 | va_start(ap, fr); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2877 | userinfo = va_arg(ap, aim_userinfo_t *); |
| 2086 | 2878 | va_end(ap); |
| 2879 | ||
| 15884 | 2880 | user_info = purple_notify_user_info_new(); |
| 2881 | purple_notify_user_info_add_pair(user_info, _("Screen Name"), userinfo->sn); | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
2882 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
2883 | tmp = g_strdup_printf("%d", (int)((userinfo->warnlevel/10.0) + 0.5)); |
| 15884 | 2884 | purple_notify_user_info_add_pair(user_info, _("Warning Level"), tmp); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
2885 | g_free(tmp); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2886 | |
|
10116
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10111
diff
changeset
|
2887 | if (userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) { |
|
17697
5495647b7b5c
Get rid of the oscar time offset. This was an attempt at making sure
Mark Doliner <markdoliner@pidgin.im>
parents:
17693
diff
changeset
|
2888 | time_t t = userinfo->onlinesince; |
| 15884 | 2889 | oscar_user_info_add_pair(user_info, _("Online Since"), purple_date_format_full(localtime(&t))); |
|
10116
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10111
diff
changeset
|
2890 | } |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10111
diff
changeset
|
2891 | |
|
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10111
diff
changeset
|
2892 | if (userinfo->present & AIM_USERINFO_PRESENT_MEMBERSINCE) { |
|
17697
5495647b7b5c
Get rid of the oscar time offset. This was an attempt at making sure
Mark Doliner <markdoliner@pidgin.im>
parents:
17693
diff
changeset
|
2893 | time_t t = userinfo->membersince; |
| 15884 | 2894 | oscar_user_info_add_pair(user_info, _("Member Since"), purple_date_format_full(localtime(&t))); |
|
10116
054b064145a1
[gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10111
diff
changeset
|
2895 | } |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2896 | |
|
12430
07bc0e58c8c2
[gaim-migrate @ 14737]
Mark Doliner <markdoliner@pidgin.im>
parents:
12426
diff
changeset
|
2897 | if (userinfo->capabilities != 0) { |
|
07bc0e58c8c2
[gaim-migrate @ 14737]
Mark Doliner <markdoliner@pidgin.im>
parents:
12426
diff
changeset
|
2898 | tmp = oscar_caps_to_string(userinfo->capabilities); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
2899 | oscar_user_info_add_pair(user_info, _("Capabilities"), tmp); |
|
12430
07bc0e58c8c2
[gaim-migrate @ 14737]
Mark Doliner <markdoliner@pidgin.im>
parents:
12426
diff
changeset
|
2900 | g_free(tmp); |
|
07bc0e58c8c2
[gaim-migrate @ 14737]
Mark Doliner <markdoliner@pidgin.im>
parents:
12426
diff
changeset
|
2901 | } |
|
07bc0e58c8c2
[gaim-migrate @ 14737]
Mark Doliner <markdoliner@pidgin.im>
parents:
12426
diff
changeset
|
2902 | |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2903 | if (userinfo->present & AIM_USERINFO_PRESENT_IDLE) { |
| 15884 | 2904 | tmp = purple_str_seconds_to_string(userinfo->idletime*60); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
2905 | oscar_user_info_add_pair(user_info, _("Idle"), tmp); |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
2906 | g_free(tmp); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
2907 | } |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
2908 | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
2909 | oscar_string_append_info(gc, user_info, NULL, userinfo); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2910 | |
|
13007
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
2911 | /* Available message */ |
|
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
2912 | if ((userinfo->status != NULL) && !(userinfo->flags & AIM_FLAG_AWAY)) |
|
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
2913 | { |
|
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
2914 | if (userinfo->status[0] != '\0') |
|
17740
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
2915 | tmp = oscar_encoding_to_utf8(account, userinfo->status_encoding, |
|
13007
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
2916 | userinfo->status, userinfo->status_len); |
|
16405
052cdb353d30
The iTunes music store link makes sense to show on OS X, too
Evan Schoenberg <evands@pidgin.im>
parents:
16398
diff
changeset
|
2917 | #if defined (_WIN32) || defined (__APPLE__) |
|
16821
9ef40aa44645
Fix a crash if userinfo->itmsurl is NULL on Windows / OS X
Evan Schoenberg <evands@pidgin.im>
parents:
16677
diff
changeset
|
2918 | if (userinfo->itmsurl && (userinfo->itmsurl[0] != '\0')) { |
|
16398
a895aca0a7ce
Ok I couldn't resist. For iChat and Adium buddies who are advertising
Mark Doliner <markdoliner@pidgin.im>
parents:
16397
diff
changeset
|
2919 | gchar *itmsurl, *tmp2; |
|
17740
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
2920 | itmsurl = oscar_encoding_to_utf8(account, userinfo->itmsurl_encoding, |
|
16398
a895aca0a7ce
Ok I couldn't resist. For iChat and Adium buddies who are advertising
Mark Doliner <markdoliner@pidgin.im>
parents:
16397
diff
changeset
|
2921 | userinfo->itmsurl, userinfo->itmsurl_len); |
|
a895aca0a7ce
Ok I couldn't resist. For iChat and Adium buddies who are advertising
Mark Doliner <markdoliner@pidgin.im>
parents:
16397
diff
changeset
|
2922 | tmp2 = g_strdup_printf("<a href=\"%s\">%s</a>", |
|
a895aca0a7ce
Ok I couldn't resist. For iChat and Adium buddies who are advertising
Mark Doliner <markdoliner@pidgin.im>
parents:
16397
diff
changeset
|
2923 | itmsurl, tmp); |
|
a895aca0a7ce
Ok I couldn't resist. For iChat and Adium buddies who are advertising
Mark Doliner <markdoliner@pidgin.im>
parents:
16397
diff
changeset
|
2924 | g_free(tmp); |
|
a895aca0a7ce
Ok I couldn't resist. For iChat and Adium buddies who are advertising
Mark Doliner <markdoliner@pidgin.im>
parents:
16397
diff
changeset
|
2925 | tmp = tmp2; |
|
a895aca0a7ce
Ok I couldn't resist. For iChat and Adium buddies who are advertising
Mark Doliner <markdoliner@pidgin.im>
parents:
16397
diff
changeset
|
2926 | g_free(itmsurl); |
|
a895aca0a7ce
Ok I couldn't resist. For iChat and Adium buddies who are advertising
Mark Doliner <markdoliner@pidgin.im>
parents:
16397
diff
changeset
|
2927 | } |
|
a895aca0a7ce
Ok I couldn't resist. For iChat and Adium buddies who are advertising
Mark Doliner <markdoliner@pidgin.im>
parents:
16397
diff
changeset
|
2928 | #endif |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
2929 | oscar_user_info_add_pair(user_info, _("Available Message"), tmp); |
|
13007
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
2930 | g_free(tmp); |
|
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
2931 | } |
|
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
2932 | |
|
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
2933 | /* Away message */ |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2934 | if ((userinfo->flags & AIM_FLAG_AWAY) && (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) { |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
2935 | tmp = oscar_encoding_extract(userinfo->away_encoding); |
|
17740
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
2936 | away_utf8 = oscar_encoding_to_utf8(account, tmp, userinfo->away, |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
2937 | userinfo->away_len); |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
2938 | g_free(tmp); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2939 | if (away_utf8 != NULL) { |
| 15884 | 2940 | tmp = purple_str_sub_away_formatters(away_utf8, purple_account_get_username(account)); |
| 2941 | purple_notify_user_info_add_section_break(user_info); | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
2942 | oscar_user_info_add_pair(user_info, NULL, tmp); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
2943 | g_free(tmp); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2944 | g_free(away_utf8); |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2945 | } |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2946 | } |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2947 | |
|
13007
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
2948 | /* Info */ |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2949 | if ((userinfo->info_len > 0) && (userinfo->info != NULL) && (userinfo->info_encoding != NULL)) { |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
2950 | tmp = oscar_encoding_extract(userinfo->info_encoding); |
|
17740
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
2951 | info_utf8 = oscar_encoding_to_utf8(account, tmp, userinfo->info, |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
2952 | userinfo->info_len); |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
2953 | g_free(tmp); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2954 | if (info_utf8 != NULL) { |
| 15884 | 2955 | tmp = purple_str_sub_away_formatters(info_utf8, purple_account_get_username(account)); |
| 2956 | purple_notify_user_info_add_section_break(user_info); | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
2957 | oscar_user_info_add_pair(user_info, _("Profile"), tmp); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
2958 | g_free(tmp); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2959 | g_free(info_utf8); |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2960 | } |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2961 | } |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2962 | |
| 15884 | 2963 | purple_notify_userinfo(gc, userinfo->sn, user_info, NULL, NULL); |
| 2964 | purple_notify_user_info_destroy(user_info); | |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2965 | |
| 2086 | 2966 | return 1; |
| 2967 | } | |
| 2968 | ||
| 15884 | 2969 | static int purple_got_infoblock(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
2970 | { |
| 15884 | 2971 | PurpleConnection *gc = od->gc; |
|
17740
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
2972 | PurpleAccount *account = purple_connection_get_account(gc); |
| 15884 | 2973 | PurpleBuddy *b; |
| 2974 | PurplePresence *presence; | |
| 2975 | PurpleStatus *status; | |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
2976 | gchar *message = NULL; |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
2977 | |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
2978 | va_list ap; |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
2979 | aim_userinfo_t *userinfo; |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
2980 | |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
2981 | va_start(ap, fr); |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
2982 | userinfo = va_arg(ap, aim_userinfo_t *); |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
2983 | va_end(ap); |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
2984 | |
|
17740
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
2985 | b = purple_find_buddy(account, userinfo->sn); |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
2986 | if (b == NULL) |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
2987 | return 1; |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
2988 | |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
2989 | if (!aim_snvalid_icq(userinfo->sn)) |
|
14012
71be8ba41740
[gaim-migrate @ 16494]
Mark Doliner <markdoliner@pidgin.im>
parents:
14011
diff
changeset
|
2990 | { |
| 15884 | 2991 | if (strcmp(purple_buddy_get_name(b), userinfo->sn)) |
| 2992 | serv_got_alias(gc, purple_buddy_get_name(b), userinfo->sn); | |
|
14012
71be8ba41740
[gaim-migrate @ 16494]
Mark Doliner <markdoliner@pidgin.im>
parents:
14011
diff
changeset
|
2993 | else |
| 15884 | 2994 | serv_got_alias(gc, purple_buddy_get_name(b), NULL); |
| 2995 | } | |
| 2996 | ||
| 2997 | presence = purple_buddy_get_presence(b); | |
| 2998 | status = purple_presence_get_active_status(presence); | |
| 2999 | ||
| 3000 | if (!purple_status_is_available(status) && purple_status_is_online(status)) | |
|
12271
01d61e68886e
[gaim-migrate @ 14573]
Mark Doliner <markdoliner@pidgin.im>
parents:
12260
diff
changeset
|
3001 | { |
|
13655
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
3002 | if ((userinfo->flags & AIM_FLAG_AWAY) && |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
3003 | (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) { |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
3004 | gchar *charset = oscar_encoding_extract(userinfo->away_encoding); |
|
17740
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
3005 | message = oscar_encoding_to_utf8(account, charset, |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
3006 | userinfo->away, |
|
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
3007 | userinfo->away_len); |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
3008 | g_free(charset); |
| 15884 | 3009 | purple_status_set_attr_string(status, "message", message); |
| 12393 | 3010 | g_free(message); |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
3011 | } |
|
14242
3e91cf0a253f
[gaim-migrate @ 16830]
Henning Norén <henning.noren@gmail.com>
parents:
14209
diff
changeset
|
3012 | else |
|
3e91cf0a253f
[gaim-migrate @ 16830]
Henning Norén <henning.noren@gmail.com>
parents:
14209
diff
changeset
|
3013 | /* Set an empty message so that we know not to show "pending" */ |
| 15884 | 3014 | purple_status_set_attr_string(status, "message", ""); |
| 3015 | ||
| 3016 | purple_blist_update_buddy_status(b, status); | |
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
3017 | } |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
3018 | |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
3019 | return 1; |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
3020 | } |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
3021 | |
| 15884 | 3022 | static int purple_parse_motd(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
3023 | { |
| 2086 | 3024 | char *msg; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3025 | guint16 id; |
| 2086 | 3026 | va_list ap; |
| 3027 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3028 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3029 | id = (guint16) va_arg(ap, unsigned int); |
| 2086 | 3030 | msg = va_arg(ap, char *); |
| 3031 | va_end(ap); | |
| 3032 | ||
| 15884 | 3033 | purple_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3034 | "MOTD: %s (%hu)\n", msg ? msg : "Unknown", id); |
|
2092
f56061012e3c
[gaim-migrate @ 2102]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2090
diff
changeset
|
3035 | if (id < 4) |
| 15884 | 3036 | purple_notify_warning(od->gc, NULL, |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3037 | _("Your AIM connection may be lost."), NULL); |
| 2086 | 3038 | |
| 3039 | return 1; | |
| 3040 | } | |
| 3041 | ||
| 15884 | 3042 | static int purple_chatnav_info(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 2086 | 3043 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3044 | guint16 type; |
| 2086 | 3045 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3046 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3047 | type = (guint16) va_arg(ap, unsigned int); |
| 2086 | 3048 | |
| 3049 | switch(type) { | |
| 3050 | case 0x0002: { | |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3051 | guint8 maxrooms; |
| 2086 | 3052 | struct aim_chat_exchangeinfo *exchanges; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3053 | int exchangecount, i; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3054 | |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3055 | maxrooms = (guint8) va_arg(ap, unsigned int); |
| 2086 | 3056 | exchangecount = va_arg(ap, int); |
| 3057 | exchanges = va_arg(ap, struct aim_chat_exchangeinfo *); | |
| 3058 | ||
| 15884 | 3059 | purple_debug_misc("oscar", "chat info: Chat Rights:\n"); |
| 3060 | purple_debug_misc("oscar", | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3061 | "chat info: \tMax Concurrent Rooms: %hhd\n", maxrooms); |
| 15884 | 3062 | purple_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3063 | "chat info: \tExchange List: (%d total)\n", exchangecount); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3064 | for (i = 0; i < exchangecount; i++) |
| 15884 | 3065 | purple_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3066 | "chat info: \t\t%hu %s\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3067 | exchanges[i].number, exchanges[i].name ? exchanges[i].name : ""); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3068 | while (od->create_rooms) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3069 | struct create_room *cr = od->create_rooms->data; |
| 15884 | 3070 | purple_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3071 | "creating room %s\n", cr->name); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3072 | aim_chatnav_createroom(od, conn, cr->name, cr->exchange); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
3073 | g_free(cr->name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3074 | od->create_rooms = g_slist_remove(od->create_rooms, cr); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
3075 | g_free(cr); |
| 2086 | 3076 | } |
| 3077 | } | |
| 3078 | break; | |
| 3079 | case 0x0008: { | |
| 3080 | char *fqcn, *name, *ck; | |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3081 | guint16 instance, flags, maxmsglen, maxoccupancy, unknown, exchange; |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3082 | guint8 createperms; |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3083 | guint32 createtime; |
| 2086 | 3084 | |
| 3085 | fqcn = va_arg(ap, char *); | |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3086 | instance = (guint16)va_arg(ap, unsigned int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3087 | exchange = (guint16)va_arg(ap, unsigned int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3088 | flags = (guint16)va_arg(ap, unsigned int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3089 | createtime = va_arg(ap, guint32); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3090 | maxmsglen = (guint16)va_arg(ap, unsigned int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3091 | maxoccupancy = (guint16)va_arg(ap, unsigned int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3092 | createperms = (guint8)va_arg(ap, unsigned int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3093 | unknown = (guint16)va_arg(ap, unsigned int); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3094 | name = va_arg(ap, char *); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3095 | ck = va_arg(ap, char *); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3096 | |
| 15884 | 3097 | purple_debug_misc("oscar", |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3098 | "created room: %s %hu %hu %hu %u %hu %hu %hhu %hu %s %s\n", |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3099 | fqcn, exchange, instance, flags, createtime, |
| 2086 | 3100 | maxmsglen, maxoccupancy, createperms, unknown, |
| 3101 | name, ck); | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3102 | aim_chat_join(od, exchange, ck, instance); |
| 2086 | 3103 | } |
| 3104 | break; | |
| 3105 | default: | |
| 15884 | 3106 | purple_debug_warning("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3107 | "chatnav info: unknown type (%04hx)\n", type); |
| 2086 | 3108 | break; |
| 3109 | } | |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3110 | |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3111 | va_end(ap); |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3112 | |
| 2086 | 3113 | return 1; |
| 3114 | } | |
| 3115 | ||
| 15884 | 3116 | static int purple_conv_chat_join(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 2086 | 3117 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3118 | int count, i; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3119 | aim_userinfo_t *info; |
| 15884 | 3120 | PurpleConnection *gc = od->gc; |
| 2086 | 3121 | |
| 3122 | struct chat_connection *c = NULL; | |
| 3123 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3124 | va_start(ap, fr); |
| 2086 | 3125 | count = va_arg(ap, int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3126 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 3127 | va_end(ap); |
| 3128 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3129 | c = find_oscar_chat_by_conn(gc, conn); |
| 2086 | 3130 | if (!c) |
| 3131 | return 1; | |
| 3132 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3133 | for (i = 0; i < count; i++) |
| 15884 | 3134 | purple_conv_chat_add_user(PURPLE_CONV_CHAT(c->conv), info[i].sn, NULL, PURPLE_CBFLAGS_NONE, TRUE); |
| 2086 | 3135 | |
| 3136 | return 1; | |
| 3137 | } | |
| 3138 | ||
| 15884 | 3139 | static int purple_conv_chat_leave(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 2086 | 3140 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3141 | int count, i; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3142 | aim_userinfo_t *info; |
| 15884 | 3143 | PurpleConnection *gc = od->gc; |
| 2086 | 3144 | |
| 3145 | struct chat_connection *c = NULL; | |
| 3146 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3147 | va_start(ap, fr); |
| 2086 | 3148 | count = va_arg(ap, int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3149 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 3150 | va_end(ap); |
| 3151 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3152 | c = find_oscar_chat_by_conn(gc, conn); |
| 2086 | 3153 | if (!c) |
| 3154 | return 1; | |
| 3155 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3156 | for (i = 0; i < count; i++) |
| 15884 | 3157 | purple_conv_chat_remove_user(PURPLE_CONV_CHAT(c->conv), info[i].sn, NULL); |
| 2086 | 3158 | |
| 3159 | return 1; | |
| 3160 | } | |
| 3161 | ||
| 15884 | 3162 | static int purple_conv_chat_info_update(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3163 | va_list ap; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3164 | aim_userinfo_t *userinfo; |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3165 | struct aim_chat_roominfo *roominfo; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3166 | char *roomname; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3167 | int usercount; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3168 | char *roomdesc; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3169 | guint16 unknown_c9, unknown_d2, unknown_d5, maxmsglen, maxvisiblemsglen; |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3170 | guint32 creationtime; |
| 15884 | 3171 | PurpleConnection *gc = od->gc; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3172 | struct chat_connection *ccon = find_oscar_chat_by_conn(gc, conn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3173 | |
|
15223
78cdc3726d97
[gaim-migrate @ 17947]
Evan Schoenberg <evands@pidgin.im>
parents:
15210
diff
changeset
|
3174 | if (!ccon) |
|
78cdc3726d97
[gaim-migrate @ 17947]
Evan Schoenberg <evands@pidgin.im>
parents:
15210
diff
changeset
|
3175 | return 1; |
|
78cdc3726d97
[gaim-migrate @ 17947]
Evan Schoenberg <evands@pidgin.im>
parents:
15210
diff
changeset
|
3176 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3177 | va_start(ap, fr); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3178 | roominfo = va_arg(ap, struct aim_chat_roominfo *); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3179 | roomname = va_arg(ap, char *); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3180 | usercount= va_arg(ap, int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3181 | userinfo = va_arg(ap, aim_userinfo_t *); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3182 | roomdesc = va_arg(ap, char *); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3183 | unknown_c9 = (guint16)va_arg(ap, unsigned int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3184 | creationtime = va_arg(ap, guint32); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3185 | maxmsglen = (guint16)va_arg(ap, unsigned int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3186 | unknown_d2 = (guint16)va_arg(ap, unsigned int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3187 | unknown_d5 = (guint16)va_arg(ap, unsigned int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3188 | maxvisiblemsglen = (guint16)va_arg(ap, unsigned int); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3189 | va_end(ap); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3190 | |
| 15884 | 3191 | purple_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3192 | "inside chat_info_update (maxmsglen = %hu, maxvislen = %hu)\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3193 | maxmsglen, maxvisiblemsglen); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3194 | |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3195 | ccon->maxlen = maxmsglen; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3196 | ccon->maxvis = maxvisiblemsglen; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3197 | |
| 2086 | 3198 | return 1; |
| 3199 | } | |
| 3200 | ||
| 15884 | 3201 | static int purple_conv_chat_incoming_msg(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 3202 | PurpleConnection *gc = od->gc; | |
|
17740
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
3203 | PurpleAccount *account = purple_connection_get_account(gc); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3204 | struct chat_connection *ccon = find_oscar_chat_by_conn(gc, conn); |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
3205 | gchar *utf8; |
| 2086 | 3206 | va_list ap; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3207 | aim_userinfo_t *info; |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
3208 | int len; |
| 2086 | 3209 | char *msg; |
| 8219 | 3210 | char *charset; |
| 2086 | 3211 | |
|
15223
78cdc3726d97
[gaim-migrate @ 17947]
Evan Schoenberg <evands@pidgin.im>
parents:
15210
diff
changeset
|
3212 | if (!ccon) |
|
78cdc3726d97
[gaim-migrate @ 17947]
Evan Schoenberg <evands@pidgin.im>
parents:
15210
diff
changeset
|
3213 | return 1; |
|
78cdc3726d97
[gaim-migrate @ 17947]
Evan Schoenberg <evands@pidgin.im>
parents:
15210
diff
changeset
|
3214 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3215 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3216 | info = va_arg(ap, aim_userinfo_t *); |
| 8219 | 3217 | len = va_arg(ap, int); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3218 | msg = va_arg(ap, char *); |
| 8219 | 3219 | charset = va_arg(ap, char *); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3220 | va_end(ap); |
| 2086 | 3221 | |
|
17740
e392c3758fb9
This fixes a bustination of the official ICQ client in at least some
Ethan Blanton <elb@pidgin.im>
parents:
17697
diff
changeset
|
3222 | utf8 = oscar_encoding_to_utf8(account, charset, msg, len); |
|
8667
534bd4c4fb38
[gaim-migrate @ 9419]
Mark Doliner <markdoliner@pidgin.im>
parents:
8666
diff
changeset
|
3223 | if (utf8 == NULL) |
|
534bd4c4fb38
[gaim-migrate @ 9419]
Mark Doliner <markdoliner@pidgin.im>
parents:
8666
diff
changeset
|
3224 | /* The conversion failed! */ |
|
8668
c72a49a7c46a
[gaim-migrate @ 9420]
Mark Doliner <markdoliner@pidgin.im>
parents:
8667
diff
changeset
|
3225 | utf8 = g_strdup(_("[Unable to display a message from this user because it contained invalid characters.]")); |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
3226 | serv_got_chat_in(gc, ccon->id, info->sn, 0, utf8, time((time_t)NULL)); |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
3227 | g_free(utf8); |
| 2086 | 3228 | |
| 3229 | return 1; | |
| 3230 | } | |
| 3231 | ||
| 15884 | 3232 | static int purple_email_parseupdate(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3233 | va_list ap; |
| 15884 | 3234 | PurpleConnection *gc = od->gc; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3235 | struct aim_emailinfo *emailinfo; |
| 3725 | 3236 | int havenewmail; |
| 7297 | 3237 | char *alertitle, *alerturl; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3238 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3239 | va_start(ap, fr); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3240 | emailinfo = va_arg(ap, struct aim_emailinfo *); |
| 3725 | 3241 | havenewmail = va_arg(ap, int); |
|
7301
f6a3a23fa2fc
[gaim-migrate @ 7885]
Mark Doliner <markdoliner@pidgin.im>
parents:
7297
diff
changeset
|
3242 | alertitle = va_arg(ap, char *); |
|
f6a3a23fa2fc
[gaim-migrate @ 7885]
Mark Doliner <markdoliner@pidgin.im>
parents:
7297
diff
changeset
|
3243 | alerturl = va_arg(ap, char *); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3244 | va_end(ap); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3245 | |
| 15884 | 3246 | if ((emailinfo != NULL) && purple_account_get_check_mail(gc->account)) { |
| 3247 | gchar *to = g_strdup_printf("%s%s%s", purple_account_get_username(purple_connection_get_account(gc)), | |
|
9661
a9895242a351
[gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents:
9659
diff
changeset
|
3248 | emailinfo->domain ? "@" : "", |
|
a9895242a351
[gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents:
9659
diff
changeset
|
3249 | emailinfo->domain ? emailinfo->domain : ""); |
|
5542
0f02c413c862
[gaim-migrate @ 5942]
Mark Doliner <markdoliner@pidgin.im>
parents:
5540
diff
changeset
|
3250 | if (emailinfo->unread && havenewmail) |
| 15884 | 3251 | purple_notify_emails(gc, emailinfo->nummsgs, FALSE, NULL, NULL, (const char **)&to, (const char **)&emailinfo->url, NULL, NULL); |
|
5537
812794b97b08
[gaim-migrate @ 5937]
Mark Doliner <markdoliner@pidgin.im>
parents:
5517
diff
changeset
|
3252 | g_free(to); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3253 | } |
|
13227
f011e198f246
[gaim-migrate @ 15591]
Mark Doliner <markdoliner@pidgin.im>
parents:
13201
diff
changeset
|
3254 | |
|
7301
f6a3a23fa2fc
[gaim-migrate @ 7885]
Mark Doliner <markdoliner@pidgin.im>
parents:
7297
diff
changeset
|
3255 | if (alertitle) |
| 15884 | 3256 | purple_debug_misc("oscar", "Got an alert '%s' %s\n", alertitle, alerturl ? alerturl : ""); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3257 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3258 | return 1; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3259 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3260 | |
| 15884 | 3261 | static int purple_icon_parseicon(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 3262 | PurpleConnection *gc = od->gc; | |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3263 | va_list ap; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3264 | char *sn; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3265 | guint8 iconcsumtype, *iconcsum, *icon; |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3266 | guint16 iconcsumlen, iconlen; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3267 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3268 | va_start(ap, fr); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3269 | sn = va_arg(ap, char *); |
|
11024
f4e005b0922b
[gaim-migrate @ 12897]
Evan Schoenberg <evands@pidgin.im>
parents:
11005
diff
changeset
|
3270 | iconcsumtype = va_arg(ap, int); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3271 | iconcsum = va_arg(ap, guint8 *); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3272 | iconcsumlen = va_arg(ap, int); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3273 | icon = va_arg(ap, guint8 *); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3274 | iconlen = va_arg(ap, int); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3275 | va_end(ap); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3276 | |
|
11024
f4e005b0922b
[gaim-migrate @ 12897]
Evan Schoenberg <evands@pidgin.im>
parents:
11005
diff
changeset
|
3277 | /* |
|
f4e005b0922b
[gaim-migrate @ 12897]
Evan Schoenberg <evands@pidgin.im>
parents:
11005
diff
changeset
|
3278 | * Some AIM clients will send a blank GIF image with iconlen 90 when |
|
f4e005b0922b
[gaim-migrate @ 12897]
Evan Schoenberg <evands@pidgin.im>
parents:
11005
diff
changeset
|
3279 | * no icon is set. Ignore these. |
|
f4e005b0922b
[gaim-migrate @ 12897]
Evan Schoenberg <evands@pidgin.im>
parents:
11005
diff
changeset
|
3280 | */ |
|
f4e005b0922b
[gaim-migrate @ 12897]
Evan Schoenberg <evands@pidgin.im>
parents:
11005
diff
changeset
|
3281 | if ((iconlen > 0) && (iconlen != 90)) { |
|
16534
2ab9e23f99d9
Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents:
16437
diff
changeset
|
3282 | char *b16 = purple_base16_encode(iconcsum, iconcsumlen); |
| 15884 | 3283 | purple_buddy_icons_set_for_user(purple_connection_get_account(gc), |
|
16539
75a20ae3a527
Change the imgstore and by extension, then the buddy icon code to take over
Richard Laager <rlaager@pidgin.im>
parents:
16538
diff
changeset
|
3284 | sn, g_memdup(icon, iconlen), iconlen, b16); |
|
16534
2ab9e23f99d9
Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents:
16437
diff
changeset
|
3285 | g_free(b16); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3286 | } |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3287 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3288 | return 1; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3289 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3290 | |
|
19111
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
3291 | static void |
|
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
3292 | purple_icons_fetch(PurpleConnection *gc) |
|
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
3293 | { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3294 | OscarData *od = gc->proto_data; |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
3295 | aim_userinfo_t *userinfo; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3296 | FlapConnection *conn; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3297 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3298 | conn = flap_connection_getbytype(od, SNAC_FAMILY_BART); |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
3299 | if (!conn) { |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
3300 | if (!od->iconconnecting) { |
|
15147
101192282f5d
[gaim-migrate @ 17871]
Mark Doliner <markdoliner@pidgin.im>
parents:
15142
diff
changeset
|
3301 | aim_srv_requestnew(od, SNAC_FAMILY_BART); |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
3302 | od->iconconnecting = TRUE; |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
3303 | } |
|
19111
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
3304 | return; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3305 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3306 | |
| 5842 | 3307 | if (od->set_icon) { |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
3308 | PurpleAccount *account = purple_connection_get_account(gc); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
3309 | PurpleStoredImage *img = purple_buddy_icons_find_account_icon(account); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
3310 | if (img == NULL) { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3311 | aim_ssi_delicon(od); |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
3312 | } else { |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
3313 | purple_debug_info("oscar", |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
3314 | "Uploading icon to icon server\n"); |
|
19111
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
3315 | aim_bart_upload(od, purple_imgstore_get_data(img), |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
3316 | purple_imgstore_get_size(img)); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
3317 | purple_imgstore_unref(img); |
| 5842 | 3318 | } |
| 3319 | od->set_icon = FALSE; | |
| 3320 | } | |
| 3321 | ||
|
19111
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
3322 | while (od->requesticon != NULL) |
|
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
3323 | { |
|
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
3324 | userinfo = aim_locate_finduserinfo(od, (char *)od->requesticon->data); |
|
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
3325 | if ((userinfo != NULL) && (userinfo->iconcsumlen > 0)) |
|
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
3326 | aim_bart_request(od, od->requesticon->data, userinfo->iconcsumtype, userinfo->iconcsum, userinfo->iconcsumlen); |
|
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
3327 | |
|
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
3328 | g_free(od->requesticon->data); |
|
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
3329 | od->requesticon = g_slist_delete_link(od->requesticon, od->requesticon); |
|
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
3330 | } |
|
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
3331 | |
|
737382260180
Fetch icons all at once instead of one at a time. I tried pretty hard
Mark Doliner <markdoliner@pidgin.im>
parents:
19109
diff
changeset
|
3332 | purple_debug_misc("oscar", "no more icons to request\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3333 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3334 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3335 | /* |
|
15310
dfd424f9d683
[gaim-migrate @ 18038]
Mark Doliner <markdoliner@pidgin.im>
parents:
15309
diff
changeset
|
3336 | * Received in response to an IM sent with the AIM_IMFLAGS_ACK option. |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3337 | */ |
| 15884 | 3338 | static int purple_parse_msgack(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 2086 | 3339 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3340 | guint16 type; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3341 | char *sn; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3342 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3343 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3344 | type = (guint16) va_arg(ap, unsigned int); |
| 2086 | 3345 | sn = va_arg(ap, char *); |
| 3346 | va_end(ap); | |
| 3347 | ||
| 15884 | 3348 | purple_debug_info("oscar", "Sent message to %s.\n", sn); |
| 2086 | 3349 | |
| 3350 | return 1; | |
| 3351 | } | |
| 3352 | ||
| 15884 | 3353 | static int purple_parse_ratechange(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3354 | static const char *codes[5] = { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3355 | "invalid", |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3356 | "change", |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3357 | "warning", |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3358 | "limit", |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3359 | "limit cleared", |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3360 | }; |
| 2086 | 3361 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3362 | guint16 code, rateclass; |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3363 | guint32 windowsize, clear, alert, limit, disconnect, currentavg, maxavg; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3364 | |
|
13227
f011e198f246
[gaim-migrate @ 15591]
Mark Doliner <markdoliner@pidgin.im>
parents:
13201
diff
changeset
|
3365 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3366 | code = (guint16)va_arg(ap, unsigned int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3367 | rateclass= (guint16)va_arg(ap, unsigned int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3368 | windowsize = va_arg(ap, guint32); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3369 | clear = va_arg(ap, guint32); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3370 | alert = va_arg(ap, guint32); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3371 | limit = va_arg(ap, guint32); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3372 | disconnect = va_arg(ap, guint32); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3373 | currentavg = va_arg(ap, guint32); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3374 | maxavg = va_arg(ap, guint32); |
| 2086 | 3375 | va_end(ap); |
| 3376 | ||
| 15884 | 3377 | purple_debug_misc("oscar", |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
3378 | "rate %s (param ID 0x%04hx): curavg = %u, maxavg = %u, alert at %u, " |
|
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
3379 | "clear warning at %u, limit at %u, disconnect at %u (window size = %u)\n", |
| 2086 | 3380 | (code < 5) ? codes[code] : codes[0], |
| 3381 | rateclass, | |
| 3382 | currentavg, maxavg, | |
| 3383 | alert, clear, | |
| 3384 | limit, disconnect, | |
| 3385 | windowsize); | |
| 3386 | ||
|
13257
434b2629ce17
[gaim-migrate @ 15622]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
3387 | if (code == AIM_RATE_CODE_LIMIT) |
|
434b2629ce17
[gaim-migrate @ 15622]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
3388 | { |
|
16375
69202ec2dbfd
Remove the OSCAR rate limiting dialog, as the only time I've ever seen it
Sean Egan <seanegan@pidgin.im>
parents:
16197
diff
changeset
|
3389 | purple_debug_warning("oscar", _("The last action you attempted could not be " |
|
69202ec2dbfd
Remove the OSCAR rate limiting dialog, as the only time I've ever seen it
Sean Egan <seanegan@pidgin.im>
parents:
16197
diff
changeset
|
3390 | "performed because you are over the rate limit. " |
|
69202ec2dbfd
Remove the OSCAR rate limiting dialog, as the only time I've ever seen it
Sean Egan <seanegan@pidgin.im>
parents:
16197
diff
changeset
|
3391 | "Please wait 10 seconds and try again.")); |
| 2086 | 3392 | } |
| 3393 | ||
| 3394 | return 1; | |
| 3395 | } | |
| 3396 | ||
| 15884 | 3397 | static int purple_parse_evilnotify(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
|
13663
de16367fd001
[gaim-migrate @ 16064]
Mark Doliner <markdoliner@pidgin.im>
parents:
13655
diff
changeset
|
3398 | #ifdef CRAZY_WARNING |
| 2086 | 3399 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3400 | guint16 newevil; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3401 | aim_userinfo_t *userinfo; |
| 2086 | 3402 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3403 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3404 | newevil = (guint16) va_arg(ap, unsigned int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3405 | userinfo = va_arg(ap, aim_userinfo_t *); |
| 2086 | 3406 | va_end(ap); |
| 3407 | ||
| 15884 | 3408 | purple_prpl_got_account_warning_level(account, (userinfo && userinfo->sn) ? userinfo->sn : NULL, (newevil/10.0) + 0.5); |
|
11285
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
3409 | #endif |
| 2086 | 3410 | |
| 3411 | return 1; | |
| 3412 | } | |
| 3413 | ||
| 15884 | 3414 | static int purple_selfinfo(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
3415 | int warning_level; |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3416 | va_list ap; |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3417 | aim_userinfo_t *info; |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3418 | |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3419 | va_start(ap, fr); |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3420 | info = va_arg(ap, aim_userinfo_t *); |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3421 | va_end(ap); |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3422 | |
|
11285
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
3423 | /* |
|
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
3424 | * What's with the + 0.5? |
|
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
3425 | * The 0.5 is basically poor-man's rounding. Normally |
|
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
3426 | * casting "13.7" to an int will truncate to "13," but |
|
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
3427 | * with 13.7 + 0.5 = 14.2, which becomes "14" when |
|
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
3428 | * truncated. |
|
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
3429 | */ |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
3430 | warning_level = info->warnlevel/10.0 + 0.5; |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
3431 | |
|
11285
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
3432 | #ifdef CRAZY_WARNING |
| 15884 | 3433 | purple_presence_set_warning_level(presence, warning_level); |
|
11285
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
3434 | #endif |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3435 | |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3436 | return 1; |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3437 | } |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3438 | |
| 15884 | 3439 | static int purple_connerr(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 3440 | PurpleConnection *gc = od->gc; | |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3441 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3442 | guint16 code; |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3443 | char *msg; |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3444 | |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3445 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3446 | code = (guint16)va_arg(ap, int); |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3447 | msg = va_arg(ap, char *); |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3448 | va_end(ap); |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3449 | |
| 15884 | 3450 | purple_debug_info("oscar", "Disconnected. Code is 0x%04x and msg is %s\n", |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
3451 | code, (msg != NULL ? msg : "")); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
3452 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3453 | g_return_val_if_fail(conn != NULL, 1); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3454 | |
|
18875
c9c59be46538
Move a call to purple_connection_error() from oscar.c to
Mark Doliner <markdoliner@pidgin.im>
parents:
18874
diff
changeset
|
3455 | if (conn->type == SNAC_FAMILY_CHAT) { |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
3456 | struct chat_connection *cc; |
|
18879
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3457 | PurpleConversation *conv = NULL; |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
3458 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3459 | cc = find_oscar_chat_by_conn(gc, conn); |
|
18879
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3460 | if (cc != NULL) |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
3461 | { |
|
18879
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3462 | conv = purple_find_chat(gc, cc->id); |
|
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3463 | |
|
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3464 | if (conv != NULL) |
|
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3465 | { |
|
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3466 | /* |
|
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3467 | * TOOD: Have flap_connection_destroy_cb() send us the |
|
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3468 | * error message stored in 'tmp', which should be |
|
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3469 | * human-friendly, and print that to the chat room. |
|
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3470 | */ |
|
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3471 | gchar *buf; |
|
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3472 | buf = g_strdup_printf(_("You have been disconnected from chat " |
|
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3473 | "room %s."), cc->name); |
|
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3474 | purple_conversation_write(conv, NULL, buf, PURPLE_MESSAGE_ERROR, time(NULL)); |
|
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3475 | g_free(buf); |
|
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3476 | } |
|
f50b5858e3ec
Get rid of a crash that happens when signing off if you have a chat room
Mark Doliner <markdoliner@pidgin.im>
parents:
18877
diff
changeset
|
3477 | oscar_chat_kill(gc, cc); |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
3478 | } |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3479 | } |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3480 | |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3481 | return 1; |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3482 | } |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3483 | |
| 15884 | 3484 | static int purple_icbm_param_info(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3485 | struct aim_icbmparameters *params; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3486 | va_list ap; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3487 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3488 | va_start(ap, fr); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3489 | params = va_arg(ap, struct aim_icbmparameters *); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3490 | va_end(ap); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3491 | |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3492 | /* XXX - evidently this crashes on solaris. i have no clue why |
| 15884 | 3493 | purple_debug_misc("oscar", "ICBM Parameters: maxchannel = %hu, default flags = 0x%08lx, max msg len = %hu, " |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
3494 | "max sender evil = %f, max receiver evil = %f, min msg interval = %u\n", |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3495 | params->maxchan, params->flags, params->maxmsglen, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3496 | ((float)params->maxsenderwarn)/10.0, ((float)params->maxrecverwarn)/10.0, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3497 | params->minmsginterval); |
|
2427
761801814c88
[gaim-migrate @ 2440]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2421
diff
changeset
|
3498 | */ |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3499 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3500 | /* Maybe senderwarn and recverwarn should be user preferences... */ |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
3501 | params->flags = 0x0000000b; |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3502 | params->maxmsglen = 8000; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3503 | params->minmsginterval = 0; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3504 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3505 | aim_im_setparams(od, params); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3506 | |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3507 | return 1; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3508 | } |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3509 | |
| 15884 | 3510 | static int purple_parse_locaterights(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) |
| 2993 | 3511 | { |
| 15884 | 3512 | PurpleConnection *gc = od->gc; |
| 3513 | PurpleAccount *account = purple_connection_get_account(gc); | |
|
5306
1707fdf8c530
[gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
3514 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3515 | guint16 maxsiglen; |
| 2993 | 3516 | |
| 3517 | va_start(ap, fr); | |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3518 | maxsiglen = (guint16) va_arg(ap, int); |
| 2993 | 3519 | va_end(ap); |
| 3520 | ||
| 15884 | 3521 | purple_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3522 | "locate rights: max sig len = %d\n", maxsiglen); |
| 2993 | 3523 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3524 | od->rights.maxsiglen = od->rights.maxawaymsglen = (guint)maxsiglen; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3525 | |
| 15884 | 3526 | aim_locate_setcaps(od, purple_caps); |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
3527 | oscar_set_info_and_status(account, TRUE, account->user_info, TRUE, |
| 15884 | 3528 | purple_account_get_active_status(account)); |
| 2993 | 3529 | |
| 3530 | return 1; | |
| 3531 | } | |
| 3532 | ||
| 15884 | 3533 | static int purple_parse_buddyrights(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3534 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3535 | guint16 maxbuddies, maxwatchers; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3536 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3537 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3538 | maxbuddies = (guint16) va_arg(ap, unsigned int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3539 | maxwatchers = (guint16) va_arg(ap, unsigned int); |
| 2086 | 3540 | va_end(ap); |
| 3541 | ||
| 15884 | 3542 | purple_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3543 | "buddy list rights: Max buddies = %hu / Max watchers = %hu\n", maxbuddies, maxwatchers); |
| 2086 | 3544 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3545 | od->rights.maxbuddies = (guint)maxbuddies; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3546 | od->rights.maxwatchers = (guint)maxwatchers; |
| 2993 | 3547 | |
| 2086 | 3548 | return 1; |
| 3549 | } | |
| 3550 | ||
| 15884 | 3551 | static int purple_bosrights(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 3552 | PurpleConnection *gc; | |
| 3553 | PurpleAccount *account; | |
| 3554 | PurpleStatus *status; | |
|
19574
c0ac8f8603de
I'm going to assume this works, without the benefit of testing. Restore AIM idle time on a reconnect. Fixes #333
Sean Egan <seanegan@pidgin.im>
parents:
19337
diff
changeset
|
3555 | PurplePresence *presence; |
|
15689
bcf3c0ddb974
Allow setting of the iTunes Music Store URL for AIM accounts. It's
Mark Doliner <markdoliner@pidgin.im>
parents:
15686
diff
changeset
|
3556 | const char *message, *itmsurl; |
|
12344
5dade80f1792
[gaim-migrate @ 14648]
Mark Doliner <markdoliner@pidgin.im>
parents:
12317
diff
changeset
|
3557 | char *tmp; |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
3558 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3559 | guint16 maxpermits, maxdenies; |
| 2086 | 3560 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3561 | gc = od->gc; |
|
11808
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
3562 | od = (OscarData *)gc->proto_data; |
| 15884 | 3563 | account = purple_connection_get_account(gc); |
|
11808
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
3564 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3565 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3566 | maxpermits = (guint16) va_arg(ap, unsigned int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3567 | maxdenies = (guint16) va_arg(ap, unsigned int); |
| 2086 | 3568 | va_end(ap); |
| 3569 | ||
| 15884 | 3570 | purple_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3571 | "BOS rights: Max permit = %hu / Max deny = %hu\n", maxpermits, maxdenies); |
| 2086 | 3572 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3573 | od->rights.maxpermits = (guint)maxpermits; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3574 | od->rights.maxdenies = (guint)maxdenies; |
| 2993 | 3575 | |
| 15884 | 3576 | purple_connection_set_state(gc, PURPLE_CONNECTED); |
| 3577 | ||
| 3578 | purple_debug_info("oscar", "buddy list loaded\n"); | |
| 2993 | 3579 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3580 | aim_clientready(od, conn); |
|
11808
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
3581 | |
| 15884 | 3582 | if (purple_account_get_user_info(account) != NULL) |
| 3583 | serv_set_info(gc, purple_account_get_user_info(account)); | |
|
15122
58eab9b89e86
[gaim-migrate @ 17844]
Daniel Atallah <datallah@pidgin.im>
parents:
15119
diff
changeset
|
3584 | |
| 15813 | 3585 | if (!od->icq) |
| 3586 | oscar_format_screenname(gc, account->username); | |
|
15741
73a23e5236e3
Automatically format screenname to account->username
Sean Egan <seanegan@pidgin.im>
parents:
15740
diff
changeset
|
3587 | |
|
11808
ae5d32dd826c
[gaim-migrate @ 14099]
Mark Doliner <markdoliner@pidgin.im>
parents:
11766
diff
changeset
|
3588 | /* Set our available message based on the current status */ |
| 15884 | 3589 | status = purple_account_get_active_status(account); |
| 3590 | if (purple_status_is_available(status)) | |
| 3591 | message = purple_status_get_attr_string(status, "message"); | |
|
11810
54a7031fdf39
[gaim-migrate @ 14101]
Mark Doliner <markdoliner@pidgin.im>
parents:
11809
diff
changeset
|
3592 | else |
|
54a7031fdf39
[gaim-migrate @ 14101]
Mark Doliner <markdoliner@pidgin.im>
parents:
11809
diff
changeset
|
3593 | message = NULL; |
| 15884 | 3594 | tmp = purple_markup_strip_html(message); |
| 3595 | itmsurl = purple_status_get_attr_string(status, "itmsurl"); | |
|
15689
bcf3c0ddb974
Allow setting of the iTunes Music Store URL for AIM accounts. It's
Mark Doliner <markdoliner@pidgin.im>
parents:
15686
diff
changeset
|
3596 | aim_srv_setextrainfo(od, FALSE, 0, TRUE, tmp, itmsurl); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3597 | g_free(tmp); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3598 | |
|
19574
c0ac8f8603de
I'm going to assume this works, without the benefit of testing. Restore AIM idle time on a reconnect. Fixes #333
Sean Egan <seanegan@pidgin.im>
parents:
19337
diff
changeset
|
3599 | presence = purple_status_get_presence(status); |
|
19759
17932f81738f
rewster from #pidgin pointed out that the conditional was reversed, and
Ka-Hing Cheung <khc@pidgin.im>
parents:
19574
diff
changeset
|
3600 | aim_srv_setidle(od, !purple_presence_is_idle(presence) ? 0 : time(NULL) - purple_presence_get_idle_time(presence)); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3601 | |
|
4664
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
3602 | if (od->icq) { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3603 | aim_icq_reqofflinemsgs(od); |
|
12652
363cd78076e0
[gaim-migrate @ 14995]
Mark Doliner <markdoliner@pidgin.im>
parents:
12645
diff
changeset
|
3604 | oscar_set_extendedstatus(gc); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3605 | aim_icq_setsecurity(od, |
| 15884 | 3606 | purple_account_get_bool(account, "authorization", OSCAR_DEFAULT_AUTHORIZATION), |
| 3607 | purple_account_get_bool(account, "web_aware", OSCAR_DEFAULT_WEB_AWARE)); | |
|
4664
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
3608 | } |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3609 | |
|
15147
101192282f5d
[gaim-migrate @ 17871]
Mark Doliner <markdoliner@pidgin.im>
parents:
15142
diff
changeset
|
3610 | aim_srv_requestnew(od, SNAC_FAMILY_CHATNAV); |
|
15139
a1400936ad49
[gaim-migrate @ 17862]
Mark Doliner <markdoliner@pidgin.im>
parents:
15122
diff
changeset
|
3611 | |
|
a1400936ad49
[gaim-migrate @ 17862]
Mark Doliner <markdoliner@pidgin.im>
parents:
15122
diff
changeset
|
3612 | /* |
|
a1400936ad49
[gaim-migrate @ 17862]
Mark Doliner <markdoliner@pidgin.im>
parents:
15122
diff
changeset
|
3613 | * The "if" statement here is a pathetic attempt to not attempt to |
|
a1400936ad49
[gaim-migrate @ 17862]
Mark Doliner <markdoliner@pidgin.im>
parents:
15122
diff
changeset
|
3614 | * connect to the alerts servce (aka email notification) if this |
|
a1400936ad49
[gaim-migrate @ 17862]
Mark Doliner <markdoliner@pidgin.im>
parents:
15122
diff
changeset
|
3615 | * screen name does not support it. I think mail notification |
|
a1400936ad49
[gaim-migrate @ 17862]
Mark Doliner <markdoliner@pidgin.im>
parents:
15122
diff
changeset
|
3616 | * works for @mac.com accounts but does not work for the newer |
|
a1400936ad49
[gaim-migrate @ 17862]
Mark Doliner <markdoliner@pidgin.im>
parents:
15122
diff
changeset
|
3617 | * @anythingelse.com accounts. If that's true then this change |
|
a1400936ad49
[gaim-migrate @ 17862]
Mark Doliner <markdoliner@pidgin.im>
parents:
15122
diff
changeset
|
3618 | * breaks mail notification for @mac.com accounts, but it gets rid |
|
a1400936ad49
[gaim-migrate @ 17862]
Mark Doliner <markdoliner@pidgin.im>
parents:
15122
diff
changeset
|
3619 | * of an annoying error at signon for @anythingelse.com accounts. |
|
a1400936ad49
[gaim-migrate @ 17862]
Mark Doliner <markdoliner@pidgin.im>
parents:
15122
diff
changeset
|
3620 | */ |
|
a1400936ad49
[gaim-migrate @ 17862]
Mark Doliner <markdoliner@pidgin.im>
parents:
15122
diff
changeset
|
3621 | if ((od->authinfo->email != NULL) && ((strchr(gc->account->username, '@') == NULL))) |
|
15147
101192282f5d
[gaim-migrate @ 17871]
Mark Doliner <markdoliner@pidgin.im>
parents:
15142
diff
changeset
|
3622 | aim_srv_requestnew(od, SNAC_FAMILY_ALERT); |
| 2086 | 3623 | |
| 3624 | return 1; | |
| 3625 | } | |
| 3626 | ||
| 15884 | 3627 | static int purple_offlinemsg(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3628 | va_list ap; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3629 | struct aim_icq_offlinemsg *msg; |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3630 | struct aim_incomingim_ch4_args args; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3631 | time_t t; |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3632 | |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3633 | va_start(ap, fr); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3634 | msg = va_arg(ap, struct aim_icq_offlinemsg *); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3635 | va_end(ap); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3636 | |
| 15884 | 3637 | purple_debug_info("oscar", |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
3638 | "Received offline message. Converting to channel 4 ICBM...\n"); |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3639 | args.uin = msg->sender; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3640 | args.type = msg->type; |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
3641 | args.flags = msg->flags; |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3642 | args.msglen = msg->msglen; |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3643 | args.msg = msg->msg; |
| 15884 | 3644 | t = purple_time_build(msg->year, msg->month, msg->day, msg->hour, msg->minute, 0); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3645 | incomingim_chan4(od, conn, NULL, &args, t); |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3646 | |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3647 | return 1; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3648 | } |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3649 | |
| 15884 | 3650 | static int purple_offlinemsgdone(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3651 | { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3652 | aim_icq_ackofflinemsgs(od); |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3653 | return 1; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3654 | } |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3655 | |
| 15884 | 3656 | static int purple_icqinfo(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3657 | { |
| 15884 | 3658 | PurpleConnection *gc; |
| 3659 | PurpleAccount *account; | |
| 3660 | PurpleBuddy *buddy; | |
|
16043
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3661 | PurplePresence *presence; |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3662 | PurpleStatus *status; |
|
13935
70c9d9e75948
[gaim-migrate @ 16344]
Mark Doliner <markdoliner@pidgin.im>
parents:
13924
diff
changeset
|
3663 | struct buddyinfo *bi; |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3664 | gchar who[16]; |
| 15884 | 3665 | PurpleNotifyUserInfo *user_info; |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3666 | GString *tmp; |
|
11533
f58436975d44
[gaim-migrate @ 13782]
Richard Laager <rlaager@pidgin.im>
parents:
11532
diff
changeset
|
3667 | gchar *utf8; |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3668 | gchar *buf; |
|
9634
166f3ac40f4a
[gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents:
9631
diff
changeset
|
3669 | const gchar *alias; |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3670 | va_list ap; |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3671 | struct aim_icq_info *info; |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3672 | |
|
13935
70c9d9e75948
[gaim-migrate @ 16344]
Mark Doliner <markdoliner@pidgin.im>
parents:
13924
diff
changeset
|
3673 | gc = od->gc; |
| 15884 | 3674 | account = purple_connection_get_account(gc); |
|
13935
70c9d9e75948
[gaim-migrate @ 16344]
Mark Doliner <markdoliner@pidgin.im>
parents:
13924
diff
changeset
|
3675 | |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3676 | va_start(ap, fr); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3677 | info = va_arg(ap, struct aim_icq_info *); |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3678 | va_end(ap); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3679 | |
|
4664
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
3680 | if (!info->uin) |
|
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
3681 | return 0; |
|
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
3682 | |
| 15884 | 3683 | user_info = purple_notify_user_info_new(); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3684 | |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
3685 | g_snprintf(who, sizeof(who), "%u", info->uin); |
| 15884 | 3686 | buddy = purple_find_buddy(purple_connection_get_account(gc), who); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3687 | if (buddy != NULL) |
| 15884 | 3688 | bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(buddy->account, buddy->name)); |
|
13935
70c9d9e75948
[gaim-migrate @ 16344]
Mark Doliner <markdoliner@pidgin.im>
parents:
13924
diff
changeset
|
3689 | else |
|
70c9d9e75948
[gaim-migrate @ 16344]
Mark Doliner <markdoliner@pidgin.im>
parents:
13924
diff
changeset
|
3690 | bi = NULL; |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3691 | |
| 15884 | 3692 | purple_notify_user_info_add_pair(user_info, _("UIN"), who); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3693 | oscar_user_info_convert_and_add(account, user_info, _("Nick"), info->nick); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3694 | if ((bi != NULL) && (bi->ipaddr != 0)) { |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3695 | char *tstr = g_strdup_printf("%hhu.%hhu.%hhu.%hhu", |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3696 | (bi->ipaddr & 0xff000000) >> 24, |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3697 | (bi->ipaddr & 0x00ff0000) >> 16, |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3698 | (bi->ipaddr & 0x0000ff00) >> 8, |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3699 | (bi->ipaddr & 0x000000ff)); |
| 15884 | 3700 | purple_notify_user_info_add_pair(user_info, _("IP Address"), tstr); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3701 | g_free(tstr); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3702 | } |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3703 | oscar_user_info_convert_and_add(account, user_info, _("First Name"), info->first); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3704 | oscar_user_info_convert_and_add(account, user_info, _("Last Name"), info->last); |
|
12608
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
3705 | if (info->email && info->email[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->email))) { |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3706 | buf = g_strdup_printf("<a href=\"mailto:%s\">%s</a>", utf8, utf8); |
| 15884 | 3707 | purple_notify_user_info_add_pair(user_info, _("E-Mail Address"), buf); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3708 | g_free(buf); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3709 | g_free(utf8); |
|
4625
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
3710 | } |
|
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
3711 | if (info->numaddresses && info->email2) { |
|
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
3712 | int i; |
|
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
3713 | for (i = 0; i < info->numaddresses; i++) { |
|
12608
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
3714 | if (info->email2[i] && info->email2[i][0] && (utf8 = oscar_utf8_try_convert(gc->account, info->email2[i]))) { |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3715 | buf = g_strdup_printf("<a href=\"mailto:%s\">%s</a>", utf8, utf8); |
| 15884 | 3716 | purple_notify_user_info_add_pair(user_info, _("E-Mail Address"), buf); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3717 | g_free(buf); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3718 | g_free(utf8); |
| 4643 | 3719 | } |
|
4625
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
3720 | } |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3721 | } |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3722 | oscar_user_info_convert_and_add(account, user_info, _("Mobile Phone"), info->mobile); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3723 | |
|
10022
b5bb3bdd4d1a
[gaim-migrate @ 10954]
Mark Doliner <markdoliner@pidgin.im>
parents:
10009
diff
changeset
|
3724 | if (info->gender != 0) |
| 15884 | 3725 | purple_notify_user_info_add_pair(user_info, _("Gender"), (info->gender == 1 ? _("Female") : _("Male"))); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3726 | |
|
12491
7e5229b88eea
[gaim-migrate @ 14803]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12486
diff
changeset
|
3727 | if ((info->birthyear > 1900) && (info->birthmonth > 0) && (info->birthday > 0)) { |
|
13717
e42ba3023369
[gaim-migrate @ 16123]
Richard Laager <rlaager@pidgin.im>
parents:
13707
diff
changeset
|
3728 | /* Initialize the struct properly or strftime() will crash |
|
13730
cf63be7eb903
[gaim-migrate @ 16139]
Richard Laager <rlaager@pidgin.im>
parents:
13719
diff
changeset
|
3729 | * under some conditions (e.g. Debian sarge w/ LANG=en_HK). */ |
|
13717
e42ba3023369
[gaim-migrate @ 16123]
Richard Laager <rlaager@pidgin.im>
parents:
13707
diff
changeset
|
3730 | time_t t = time(NULL); |
|
e42ba3023369
[gaim-migrate @ 16123]
Richard Laager <rlaager@pidgin.im>
parents:
13707
diff
changeset
|
3731 | struct tm *tm = localtime(&t); |
|
e42ba3023369
[gaim-migrate @ 16123]
Richard Laager <rlaager@pidgin.im>
parents:
13707
diff
changeset
|
3732 | |
|
e42ba3023369
[gaim-migrate @ 16123]
Richard Laager <rlaager@pidgin.im>
parents:
13707
diff
changeset
|
3733 | tm->tm_mday = (int)info->birthday; |
|
e42ba3023369
[gaim-migrate @ 16123]
Richard Laager <rlaager@pidgin.im>
parents:
13707
diff
changeset
|
3734 | tm->tm_mon = (int)info->birthmonth - 1; |
|
e42ba3023369
[gaim-migrate @ 16123]
Richard Laager <rlaager@pidgin.im>
parents:
13707
diff
changeset
|
3735 | tm->tm_year = (int)info->birthyear - 1900; |
|
e42ba3023369
[gaim-migrate @ 16123]
Richard Laager <rlaager@pidgin.im>
parents:
13707
diff
changeset
|
3736 | |
|
e42ba3023369
[gaim-migrate @ 16123]
Richard Laager <rlaager@pidgin.im>
parents:
13707
diff
changeset
|
3737 | /* To be 100% sure that the fields are re-normalized. |
|
e42ba3023369
[gaim-migrate @ 16123]
Richard Laager <rlaager@pidgin.im>
parents:
13707
diff
changeset
|
3738 | * If you're sure strftime() ALWAYS does this EVERYWHERE, |
|
e42ba3023369
[gaim-migrate @ 16123]
Richard Laager <rlaager@pidgin.im>
parents:
13707
diff
changeset
|
3739 | * feel free to remove it. --rlaager */ |
|
e42ba3023369
[gaim-migrate @ 16123]
Richard Laager <rlaager@pidgin.im>
parents:
13707
diff
changeset
|
3740 | mktime(tm); |
|
e42ba3023369
[gaim-migrate @ 16123]
Richard Laager <rlaager@pidgin.im>
parents:
13707
diff
changeset
|
3741 | |
| 15884 | 3742 | oscar_user_info_convert_and_add(account, user_info, _("Birthday"), purple_date_format_short(tm)); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3743 | } |
|
12491
7e5229b88eea
[gaim-migrate @ 14803]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12486
diff
changeset
|
3744 | if ((info->age > 0) && (info->age < 255)) { |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3745 | char age[5]; |
|
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3746 | snprintf(age, sizeof(age), "%hhd", info->age); |
| 15884 | 3747 | purple_notify_user_info_add_pair(user_info, |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3748 | _("Age"), age); |
|
12608
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
3749 | } |
|
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
3750 | if (info->personalwebpage && info->personalwebpage[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->personalwebpage))) { |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3751 | buf = g_strdup_printf("<a href=\"%s\">%s</a>", utf8, utf8); |
| 15884 | 3752 | purple_notify_user_info_add_pair(user_info, _("Personal Web Page"), buf); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3753 | g_free(buf); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3754 | g_free(utf8); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3755 | } |
|
16043
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3756 | |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3757 | if (buddy != NULL) { |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3758 | const gchar *message; |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3759 | gchar *utf8, *tmp; |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3760 | |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3761 | presence = purple_buddy_get_presence(buddy); |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3762 | status = purple_presence_get_active_status(presence); |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3763 | message = purple_status_get_attr_string(status, "message"); |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3764 | |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3765 | utf8 = message && message[0] ? oscar_utf8_try_convert(account, message) : NULL; |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3766 | tmp = g_strdup_printf("%s%s%s", |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3767 | purple_status_get_name(status), |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3768 | utf8 && *utf8 ? ": " : "", |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3769 | utf8 && *utf8 ? utf8 : ""); |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3770 | g_free(utf8); |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3771 | |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3772 | oscar_user_info_convert_and_add(account, |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3773 | user_info, _("Status"), tmp); |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3774 | } |
|
e5995c414ec5
sf patch #1574238, from Ka-Hing Cheung
Mark Doliner <markdoliner@pidgin.im>
parents:
15927
diff
changeset
|
3775 | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3776 | oscar_user_info_convert_and_add(account, user_info, _("Additional Information"), info->info); |
| 15884 | 3777 | purple_notify_user_info_add_section_break(user_info); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3778 | |
|
4641
bcc6f5e3018a
[gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents:
4634
diff
changeset
|
3779 | if ((info->homeaddr && (info->homeaddr[0])) || (info->homecity && info->homecity[0]) || (info->homestate && info->homestate[0]) || (info->homezip && info->homezip[0])) { |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3780 | tmp = g_string_sized_new(100); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3781 | oscar_string_convert_and_append(account, tmp, "\n<br>", _("Address"), info->homeaddr); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3782 | oscar_string_convert_and_append(account, tmp, "\n<br>", _("City"), info->homecity); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3783 | oscar_string_convert_and_append(account, tmp, "\n<br>", _("State"), info->homestate); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3784 | oscar_string_convert_and_append(account, tmp, "\n<br>", _("Zip Code"), info->homezip); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3785 | |
| 15884 | 3786 | purple_notify_user_info_add_pair(user_info, _("Home Address"), tmp->str); |
| 3787 | purple_notify_user_info_add_section_break(user_info); | |
|
15210
4278244e432c
[gaim-migrate @ 17934]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
3788 | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3789 | g_string_free(tmp, TRUE); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3790 | } |
|
4641
bcc6f5e3018a
[gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents:
4634
diff
changeset
|
3791 | if ((info->workaddr && info->workaddr[0]) || (info->workcity && info->workcity[0]) || (info->workstate && info->workstate[0]) || (info->workzip && info->workzip[0])) { |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3792 | tmp = g_string_sized_new(100); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3793 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3794 | oscar_string_convert_and_append(account, tmp, "\n<br>", _("Address"), info->workaddr); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3795 | oscar_string_convert_and_append(account, tmp, "\n<br>", _("City"), info->workcity); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3796 | oscar_string_convert_and_append(account, tmp, "\n<br>", _("State"), info->workstate); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3797 | oscar_string_convert_and_append(account, tmp, "\n<br>", _("Zip Code"), info->workzip); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3798 | |
| 15884 | 3799 | purple_notify_user_info_add_pair(user_info, _("Work Address"), tmp->str); |
| 3800 | purple_notify_user_info_add_section_break(user_info); | |
|
15210
4278244e432c
[gaim-migrate @ 17934]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
3801 | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3802 | g_string_free(tmp, TRUE); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3803 | } |
|
4641
bcc6f5e3018a
[gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents:
4634
diff
changeset
|
3804 | if ((info->workcompany && info->workcompany[0]) || (info->workdivision && info->workdivision[0]) || (info->workposition && info->workposition[0]) || (info->workwebpage && info->workwebpage[0])) { |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3805 | tmp = g_string_sized_new(100); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3806 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3807 | oscar_string_convert_and_append(account, tmp, "\n<br>", _("Company"), info->workcompany); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3808 | oscar_string_convert_and_append(account, tmp, "\n<br>", _("Division"), info->workdivision); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3809 | oscar_string_convert_and_append(account, tmp, "\n<br>", _("Position"), info->workposition); |
|
12608
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
3810 | if (info->workwebpage && info->workwebpage[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->workwebpage))) { |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3811 | g_string_append_printf(tmp, "\n<br><b>%s:</b> <a href=\"%s\">%s</a>", _("Web Page"), utf8, utf8); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3812 | g_free(utf8); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3813 | } |
| 15884 | 3814 | purple_notify_user_info_add_pair(user_info, _("Work Information"), tmp->str); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
3815 | g_string_free(tmp, TRUE); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3816 | } |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
3817 | |
|
9634
166f3ac40f4a
[gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents:
9631
diff
changeset
|
3818 | if (buddy != NULL) |
| 15884 | 3819 | alias = purple_buddy_get_alias(buddy); |
|
9634
166f3ac40f4a
[gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents:
9631
diff
changeset
|
3820 | else |
|
166f3ac40f4a
[gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents:
9631
diff
changeset
|
3821 | alias = who; |
| 15884 | 3822 | purple_notify_userinfo(gc, who, user_info, NULL, NULL); |
| 3823 | purple_notify_user_info_destroy(user_info); | |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3824 | |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3825 | return 1; |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3826 | } |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3827 | |
| 15884 | 3828 | static int purple_icqalias(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
3829 | { |
| 15884 | 3830 | PurpleConnection *gc = od->gc; |
| 3831 | PurpleAccount *account = purple_connection_get_account(gc); | |
|
4820
1e869f00810b
[gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents:
4819
diff
changeset
|
3832 | gchar who[16], *utf8; |
| 15884 | 3833 | PurpleBuddy *b; |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
3834 | va_list ap; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
3835 | struct aim_icq_info *info; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
3836 | |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
3837 | va_start(ap, fr); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
3838 | info = va_arg(ap, struct aim_icq_info *); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
3839 | va_end(ap); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
3840 | |
|
12608
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
3841 | if (info->uin && info->nick && info->nick[0] && (utf8 = oscar_utf8_try_convert(account, info->nick))) { |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
3842 | g_snprintf(who, sizeof(who), "%u", info->uin); |
|
4820
1e869f00810b
[gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents:
4819
diff
changeset
|
3843 | serv_got_alias(gc, who, utf8); |
| 15884 | 3844 | if ((b = purple_find_buddy(gc->account, who))) { |
| 3845 | purple_blist_node_set_string((PurpleBlistNode*)b, "servernick", utf8); | |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
3846 | } |
|
4820
1e869f00810b
[gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents:
4819
diff
changeset
|
3847 | g_free(utf8); |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
3848 | } |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
3849 | |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
3850 | return 1; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
3851 | } |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
3852 | |
| 15884 | 3853 | static int purple_popup(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3854 | { |
| 15884 | 3855 | PurpleConnection *gc = od->gc; |
|
7032
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
3856 | gchar *text; |
|
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
3857 | va_list ap; |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3858 | char *msg, *url; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3859 | guint16 wid, hei, delay; |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3860 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3861 | va_start(ap, fr); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3862 | msg = va_arg(ap, char *); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3863 | url = va_arg(ap, char *); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3864 | wid = (guint16) va_arg(ap, int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3865 | hei = (guint16) va_arg(ap, int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3866 | delay = (guint16) va_arg(ap, int); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3867 | va_end(ap); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3868 | |
|
7032
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
3869 | text = g_strdup_printf("%s<br><a href=\"%s\">%s</a>", msg, url, url); |
| 15884 | 3870 | purple_notify_formatted(gc, NULL, _("Pop-Up Message"), NULL, text, NULL, NULL); |
|
7032
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
3871 | g_free(text); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3872 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3873 | return 1; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3874 | } |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3875 | |
| 15884 | 3876 | static void oscar_searchresults_add_buddy_cb(PurpleConnection *gc, GList *row, void *user_data) |
| 11359 | 3877 | { |
| 15884 | 3878 | purple_blist_request_add_buddy(purple_connection_get_account(gc), |
| 11359 | 3879 | g_list_nth_data(row, 0), NULL, NULL); |
| 3880 | } | |
| 3881 | ||
| 15884 | 3882 | static int purple_parse_searchreply(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) |
|
7032
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
3883 | { |
| 15884 | 3884 | PurpleConnection *gc = od->gc; |
| 3885 | PurpleNotifySearchResults *results; | |
| 3886 | PurpleNotifySearchColumn *column; | |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
3887 | gchar *secondary; |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
3888 | int i, num; |
| 2086 | 3889 | va_list ap; |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
3890 | char *email, *SNs; |
| 2086 | 3891 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3892 | va_start(ap, fr); |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
3893 | email = va_arg(ap, char *); |
| 2086 | 3894 | num = va_arg(ap, int); |
| 3895 | SNs = va_arg(ap, char *); | |
| 3896 | va_end(ap); | |
| 3897 | ||
| 15884 | 3898 | results = purple_notify_searchresults_new(); |
| 12257 | 3899 | |
| 3900 | if (results == NULL) { | |
| 15884 | 3901 | purple_debug_error("oscar", "purple_parse_searchreply: " |
| 12257 | 3902 | "Unable to display the search results.\n"); |
| 15884 | 3903 | purple_notify_error(gc, NULL, |
| 12257 | 3904 | _("Unable to display the search results."), |
| 3905 | NULL); | |
|
12260
4b2e29383b0e
[gaim-migrate @ 14562]
Mark Doliner <markdoliner@pidgin.im>
parents:
12257
diff
changeset
|
3906 | return 1; |
| 12257 | 3907 | } |
| 3908 | ||
|
12254
af73b85cad3d
[gaim-migrate @ 14556]
Richard Laager <rlaager@pidgin.im>
parents:
12243
diff
changeset
|
3909 | secondary = g_strdup_printf( |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16120
diff
changeset
|
3910 | dngettext(PACKAGE, "The following screen name is associated with %s", |
|
12254
af73b85cad3d
[gaim-migrate @ 14556]
Richard Laager <rlaager@pidgin.im>
parents:
12243
diff
changeset
|
3911 | "The following screen names are associated with %s", |
|
af73b85cad3d
[gaim-migrate @ 14556]
Richard Laager <rlaager@pidgin.im>
parents:
12243
diff
changeset
|
3912 | num), |
|
af73b85cad3d
[gaim-migrate @ 14556]
Richard Laager <rlaager@pidgin.im>
parents:
12243
diff
changeset
|
3913 | email); |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10405
diff
changeset
|
3914 | |
| 15884 | 3915 | column = purple_notify_searchresults_column_new(_("Screen name")); |
| 3916 | purple_notify_searchresults_column_add(results, column); | |
| 11359 | 3917 | |
| 3918 | for (i = 0; i < num; i++) { | |
| 3919 | GList *row = NULL; | |
| 3920 | row = g_list_append(row, g_strdup(&SNs[i * (MAXSNLEN + 1)])); | |
| 15884 | 3921 | purple_notify_searchresults_row_add(results, row); |
| 3922 | } | |
| 3923 | purple_notify_searchresults_button_add(results, PURPLE_NOTIFY_BUTTON_ADD, | |
| 11359 | 3924 | oscar_searchresults_add_buddy_cb); |
| 15884 | 3925 | purple_notify_searchresults(gc, NULL, NULL, secondary, results, NULL, NULL); |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
3926 | |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
3927 | g_free(secondary); |
| 2086 | 3928 | |
| 3929 | return 1; | |
| 3930 | } | |
| 3931 | ||
| 15884 | 3932 | static int purple_parse_searcherror(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 2086 | 3933 | va_list ap; |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
3934 | char *email; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3935 | char *buf; |
| 2086 | 3936 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3937 | va_start(ap, fr); |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
3938 | email = va_arg(ap, char *); |
| 2086 | 3939 | va_end(ap); |
| 3940 | ||
|
13546
0700f0c29e14
[gaim-migrate @ 15922]
Richard Laager <rlaager@pidgin.im>
parents:
13478
diff
changeset
|
3941 | buf = g_strdup_printf(_("No results found for e-mail address %s"), email); |
| 15884 | 3942 | purple_notify_error(od->gc, NULL, buf, NULL); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3943 | g_free(buf); |
| 2086 | 3944 | |
| 3945 | return 1; | |
| 3946 | } | |
| 3947 | ||
| 15884 | 3948 | static int purple_account_confirm(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 3949 | PurpleConnection *gc = od->gc; | |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3950 | guint16 status; |
| 2086 | 3951 | va_list ap; |
| 3952 | char msg[256]; | |
| 3953 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3954 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3955 | status = (guint16) va_arg(ap, unsigned int); /* status code of confirmation request */ |
| 2086 | 3956 | va_end(ap); |
| 3957 | ||
| 15884 | 3958 | purple_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3959 | "account confirmation returned status 0x%04x (%s)\n", status, |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
3960 | status ? "unknown" : "e-mail sent"); |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
3961 | if (!status) { |
|
13546
0700f0c29e14
[gaim-migrate @ 15922]
Richard Laager <rlaager@pidgin.im>
parents:
13478
diff
changeset
|
3962 | g_snprintf(msg, sizeof(msg), _("You should receive an e-mail asking to confirm %s."), |
| 15884 | 3963 | purple_account_get_username(purple_connection_get_account(gc))); |
| 3964 | purple_notify_info(gc, NULL, _("Account Confirmation Requested"), msg); | |
| 2086 | 3965 | } |
| 3966 | ||
| 3967 | return 1; | |
| 3968 | } | |
| 3969 | ||
| 15884 | 3970 | static int purple_info_change(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 3971 | PurpleConnection *gc = od->gc; | |
| 2086 | 3972 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3973 | guint16 perms, err; |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
3974 | char *url, *sn, *email; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
3975 | int change; |
| 2086 | 3976 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3977 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3978 | change = va_arg(ap, int); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3979 | perms = (guint16) va_arg(ap, unsigned int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3980 | err = (guint16) va_arg(ap, unsigned int); |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
3981 | url = va_arg(ap, char *); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
3982 | sn = va_arg(ap, char *); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
3983 | email = va_arg(ap, char *); |
| 2086 | 3984 | va_end(ap); |
| 3985 | ||
| 15884 | 3986 | purple_debug_misc("oscar", |
|
9626
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
3987 | "account info: because of %s, perms=0x%04x, err=0x%04x, url=%s, sn=%s, email=%s\n", |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
3988 | change ? "change" : "request", perms, err, |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
3989 | (url != NULL) ? url : "(null)", |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
3990 | (sn != NULL) ? sn : "(null)", |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
3991 | (email != NULL) ? email : "(null)"); |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
3992 | |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
3993 | if ((err > 0) && (url != NULL)) { |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
3994 | char *dialog_msg; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
3995 | char *dialog_top = g_strdup_printf(_("Error Changing Account Info")); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
3996 | switch (err) { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
3997 | case 0x0001: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
3998 | dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format screen name because the requested screen name differs from the original."), err); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
3999 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4000 | case 0x0006: { |
|
11399
2313bf7bed5b
[gaim-migrate @ 13634]
Mark Doliner <markdoliner@pidgin.im>
parents:
11369
diff
changeset
|
4001 | dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format screen name because it is invalid."), err); |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4002 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4003 | case 0x000b: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4004 | dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format screen name because the requested screen name is too long."), err); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4005 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4006 | case 0x001d: { |
|
13546
0700f0c29e14
[gaim-migrate @ 15922]
Richard Laager <rlaager@pidgin.im>
parents:
13478
diff
changeset
|
4007 | 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
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4008 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4009 | case 0x0021: { |
|
13546
0700f0c29e14
[gaim-migrate @ 15922]
Richard Laager <rlaager@pidgin.im>
parents:
13478
diff
changeset
|
4010 | 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
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4011 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4012 | case 0x0023: { |
|
13546
0700f0c29e14
[gaim-migrate @ 15922]
Richard Laager <rlaager@pidgin.im>
parents:
13478
diff
changeset
|
4013 | dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change e-mail address because the given address is invalid."), err); |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4014 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4015 | default: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4016 | dialog_msg = g_strdup_printf(_("Error 0x%04x: Unknown error."), err); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4017 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4018 | } |
| 15884 | 4019 | purple_notify_error(gc, NULL, dialog_top, dialog_msg); |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4020 | g_free(dialog_top); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4021 | g_free(dialog_msg); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4022 | return 1; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4023 | } |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4024 | |
|
9626
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
4025 | if (email != NULL) { |
|
13546
0700f0c29e14
[gaim-migrate @ 15922]
Richard Laager <rlaager@pidgin.im>
parents:
13478
diff
changeset
|
4026 | char *dialog_msg = g_strdup_printf(_("The e-mail address for %s is %s"), |
| 15884 | 4027 | purple_account_get_username(purple_connection_get_account(gc)), email); |
| 4028 | purple_notify_info(gc, NULL, _("Account Info"), dialog_msg); | |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4029 | g_free(dialog_msg); |
| 2086 | 4030 | } |
| 4031 | ||
| 4032 | return 1; | |
| 4033 | } | |
| 4034 | ||
| 15030 | 4035 | void |
| 15884 | 4036 | oscar_keepalive(PurpleConnection *gc) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4037 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4038 | OscarData *od; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4039 | FlapConnection *conn; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4040 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4041 | od = (OscarData *)gc->proto_data; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4042 | conn = flap_connection_getbytype(od, SNAC_FAMILY_LOCATE); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4043 | if (conn != NULL) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4044 | flap_connection_send_keepalive(od, conn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4045 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4046 | |
| 15030 | 4047 | unsigned int |
| 15884 | 4048 | oscar_send_typing(PurpleConnection *gc, const char *name, PurpleTypingState state) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4049 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4050 | OscarData *od; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4051 | PeerConnection *conn; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4052 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4053 | od = (OscarData *)gc->proto_data; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4054 | conn = peer_connection_find_by_type(od, name, OSCAR_CAPABILITY_DIRECTIM); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4055 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4056 | if ((conn != NULL) && (conn->ready)) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4057 | { |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13829
diff
changeset
|
4058 | peer_odc_send_typing(conn, state); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4059 | } |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4060 | else { |
|
5300
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4061 | /* Don't send if this turkey is in our deny list */ |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4062 | GSList *list; |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4063 | for (list=gc->account->deny; (list && aim_sncmp(name, list->data)); list=list->next); |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4064 | if (!list) { |
| 15884 | 4065 | struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(gc->account, name)); |
|
5300
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4066 | if (bi && bi->typingnot) { |
| 15884 | 4067 | if (state == PURPLE_TYPING) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4068 | aim_im_sendmtn(od, 0x0001, name, 0x0002); |
| 15884 | 4069 | else if (state == PURPLE_TYPED) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4070 | aim_im_sendmtn(od, 0x0001, name, 0x0001); |
|
5300
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4071 | else |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4072 | aim_im_sendmtn(od, 0x0001, name, 0x0000); |
|
5300
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4073 | } |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4074 | } |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4075 | } |
| 2993 | 4076 | return 0; |
| 4077 | } | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
4078 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4079 | /* TODO: Move this into odc.c! */ |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4080 | static void |
| 15884 | 4081 | purple_odc_send_im(PeerConnection *conn, const char *message, PurpleMessageFlags imflags) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4082 | { |
|
13602
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4083 | GString *msg; |
|
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4084 | GString *data; |
|
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4085 | gchar *tmp; |
|
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4086 | int tmplen; |
|
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4087 | guint16 charset, charsubset; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4088 | GData *attribs; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4089 | const char *start, *end, *last; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4090 | int oscar_id = 0; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4091 | |
|
13602
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4092 | msg = g_string_new("<HTML><BODY>"); |
|
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4093 | data = g_string_new("<BINARY>"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4094 | last = message; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4095 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4096 | /* for each valid IMG tag... */ |
| 15884 | 4097 | while (last && *last && purple_markup_find_tag("img", last, &start, &end, &attribs)) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4098 | { |
| 15884 | 4099 | PurpleStoredImage *image = NULL; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4100 | const char *id; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4101 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4102 | if (start - last) { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4103 | g_string_append_len(msg, last, start - last); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4104 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4105 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4106 | id = g_datalist_get_data(&attribs, "id"); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4107 | |
| 15884 | 4108 | /* ... if it refers to a valid purple image ... */ |
|
16437
7ff7c3405ea2
Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents:
16405
diff
changeset
|
4109 | if (id && (image = purple_imgstore_find_by_id(atoi(id)))) { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4110 | /* ... append the message from start to the tag ... */ |
| 15884 | 4111 | unsigned long size = purple_imgstore_get_size(image); |
| 4112 | const char *filename = purple_imgstore_get_filename(image); | |
|
16437
7ff7c3405ea2
Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents:
16405
diff
changeset
|
4113 | gconstpointer imgdata = purple_imgstore_get_data(image); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4114 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4115 | oscar_id++; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4116 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4117 | /* ... insert a new img tag with the oscar id ... */ |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4118 | if (filename) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4119 | g_string_append_printf(msg, |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4120 | "<IMG SRC=\"%s\" ID=\"%d\" DATASIZE=\"%lu\">", |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4121 | filename, oscar_id, size); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4122 | else |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4123 | g_string_append_printf(msg, |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4124 | "<IMG ID=\"%d\" DATASIZE=\"%lu\">", |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4125 | oscar_id, size); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4126 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4127 | /* ... and append the data to the binary section ... */ |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4128 | g_string_append_printf(data, "<DATA ID=\"%d\" SIZE=\"%lu\">", |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4129 | oscar_id, size); |
|
13602
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4130 | g_string_append_len(data, imgdata, size); |
|
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4131 | g_string_append(data, "</DATA>"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4132 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4133 | /* If the tag is invalid, skip it, thus no else here */ |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4134 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4135 | g_datalist_clear(&attribs); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4136 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4137 | /* continue from the end of the tag */ |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4138 | last = end + 1; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4139 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4140 | |
|
13602
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4141 | /* append any remaining message data */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4142 | if (last && *last) |
|
13602
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4143 | g_string_append(msg, last); |
|
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4144 | |
|
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4145 | g_string_append(msg, "</BODY></HTML>"); |
|
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4146 | |
|
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4147 | /* Convert the message to a good encoding */ |
| 15884 | 4148 | purple_plugin_oscar_convert_to_best_encoding(conn->od->gc, |
|
13602
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4149 | conn->sn, msg->str, &tmp, &tmplen, &charset, &charsubset); |
|
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4150 | g_string_free(msg, TRUE); |
|
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4151 | msg = g_string_new_len(tmp, tmplen); |
|
17201
ea978e6a73bb
Fix a leak of the string in each Direct IM message, reported by jas8522 in AdiumTicket:#6982
Evan Schoenberg <evands@pidgin.im>
parents:
17003
diff
changeset
|
4152 | g_free(tmp); |
|
13602
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4153 | |
|
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4154 | /* Append any binary data that we may have */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4155 | if (oscar_id) { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4156 | msg = g_string_append_len(msg, data->str, data->len); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4157 | msg = g_string_append(msg, "</BINARY>"); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4158 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4159 | g_string_free(data, TRUE); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4160 | |
|
13602
6a1cf9b5c913
[gaim-migrate @ 15987]
Mark Doliner <markdoliner@pidgin.im>
parents:
13601
diff
changeset
|
4161 | peer_odc_send_im(conn, msg->str, msg->len, charset, |
| 15884 | 4162 | imflags & PURPLE_MESSAGE_AUTO_RESP); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4163 | g_string_free(msg, TRUE); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4164 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4165 | |
| 15030 | 4166 | int |
| 15884 | 4167 | oscar_send_im(PurpleConnection *gc, const char *name, const char *message, PurpleMessageFlags imflags) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4168 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4169 | OscarData *od; |
| 15884 | 4170 | PurpleAccount *account; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4171 | PeerConnection *conn; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4172 | int ret; |
|
12677
61ea89a83849
[gaim-migrate @ 15020]
Mark Doliner <markdoliner@pidgin.im>
parents:
12675
diff
changeset
|
4173 | char *tmp1, *tmp2; |
|
17691
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4174 | gboolean is_html; |
|
12677
61ea89a83849
[gaim-migrate @ 15020]
Mark Doliner <markdoliner@pidgin.im>
parents:
12675
diff
changeset
|
4175 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4176 | od = (OscarData *)gc->proto_data; |
| 15884 | 4177 | account = purple_connection_get_account(gc); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4178 | ret = 0; |
| 15884 | 4179 | |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
4180 | if (od->icq && aim_snvalid_sms(name)) { |
|
19819
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
4181 | /* |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
4182 | * We're sending to a phone number and this is ICQ, |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
4183 | * so send the message as an SMS using aim_icq_sendsms() |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
4184 | */ |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
4185 | int ret; |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
4186 | purple_debug_info("oscar", "Sending SMS to %s.\n", name); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
4187 | ret = aim_icq_sendsms(od, name, message, purple_account_get_username(account)); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
4188 | return (ret >= 0 ? 1 : ret); |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
4189 | } |
|
e9d8873f4d27
Add non-US SMS support for ICQ. This is a patch from DB42.
Mark Doliner <markdoliner@pidgin.im>
parents:
19759
diff
changeset
|
4190 | |
| 15884 | 4191 | if (imflags & PURPLE_MESSAGE_AUTO_RESP) |
| 4192 | tmp1 = purple_str_sub_away_formatters(message, name); | |
|
12677
61ea89a83849
[gaim-migrate @ 15020]
Mark Doliner <markdoliner@pidgin.im>
parents:
12675
diff
changeset
|
4193 | else |
|
61ea89a83849
[gaim-migrate @ 15020]
Mark Doliner <markdoliner@pidgin.im>
parents:
12675
diff
changeset
|
4194 | tmp1 = g_strdup(message); |
|
3458
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
4195 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4196 | conn = peer_connection_find_by_type(od, name, OSCAR_CAPABILITY_DIRECTIM); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4197 | if ((conn != NULL) && (conn->ready)) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4198 | { |
|
4838
653f06ff2acf
[gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
4199 | /* If we're directly connected, send a direct IM */ |
| 15884 | 4200 | purple_odc_send_im(conn, tmp1, imflags); |
| 2086 | 4201 | } else { |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4202 | struct buddyinfo *bi; |
| 3008 | 4203 | struct aim_sendimext_args args; |
| 15884 | 4204 | PurpleConversation *conv; |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4205 | PurpleStoredImage *img; |
| 15884 | 4206 | |
| 4207 | conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, name, account); | |
| 8962 | 4208 | |
|
12677
61ea89a83849
[gaim-migrate @ 15020]
Mark Doliner <markdoliner@pidgin.im>
parents:
12675
diff
changeset
|
4209 | if (strstr(tmp1, "<IMG ")) |
| 15884 | 4210 | purple_conversation_write(conv, "", |
| 8962 | 4211 | _("Your IM Image was not sent. " |
| 4212 | "You must be Direct Connected to send IM Images."), | |
| 15884 | 4213 | PURPLE_MESSAGE_ERROR, time(NULL)); |
| 4214 | ||
| 4215 | bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, name)); | |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4216 | if (!bi) { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4217 | bi = g_new0(struct buddyinfo, 1); |
| 15884 | 4218 | g_hash_table_insert(od->buddyinfo, g_strdup(purple_normalize(account, name)), bi); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4219 | } |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4220 | |
| 3008 | 4221 | args.flags = AIM_IMFLAGS_ACK | AIM_IMFLAGS_CUSTOMFEATURES; |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
4222 | if (od->icq) { |
|
11185
b8bfd357e6cf
[gaim-migrate @ 13297]
Mark Doliner <markdoliner@pidgin.im>
parents:
11172
diff
changeset
|
4223 | /* We have to present different "features" (whose meaning |
| 11172 | 4224 | is unclear and are merely a result of protocol inspection) |
| 4225 | to offline ICQ buddies. Otherwise, the official | |
| 4226 | ICQ client doesn't treat those messages as being "ANSI- | |
| 4227 | encoded" (and instead, assumes them to be UTF-8). | |
| 4228 | For more details, see SF issue 1179452. | |
| 4229 | */ | |
| 15884 | 4230 | PurpleBuddy *buddy = purple_find_buddy(gc->account, name); |
| 4231 | if (buddy && PURPLE_BUDDY_IS_ONLINE(buddy)) { | |
| 11172 | 4232 | args.features = features_icq; |
| 4233 | args.featureslen = sizeof(features_icq); | |
| 4234 | } else { | |
| 4235 | args.features = features_icq_offline; | |
| 4236 | args.featureslen = sizeof(features_icq_offline); | |
| 4237 | } | |
| 3008 | 4238 | args.flags |= AIM_IMFLAGS_OFFLINE; |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
4239 | } else { |
|
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
4240 | args.features = features_aim; |
|
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
4241 | args.featureslen = sizeof(features_aim); |
|
4972
3dd342b21444
[gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents:
4969
diff
changeset
|
4242 | |
| 15884 | 4243 | if (imflags & PURPLE_MESSAGE_AUTO_RESP) |
|
4972
3dd342b21444
[gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents:
4969
diff
changeset
|
4244 | args.flags |= AIM_IMFLAGS_AWAY; |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
4245 | } |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4246 | |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4247 | if (bi->ico_need) { |
| 15884 | 4248 | purple_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4249 | "Sending buddy icon request with message\n"); |
| 3008 | 4250 | args.flags |= AIM_IMFLAGS_BUDDYREQ; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4251 | bi->ico_need = FALSE; |
| 3008 | 4252 | } |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4253 | |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4254 | img = purple_buddy_icons_find_account_icon(account); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4255 | if (img) { |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4256 | gconstpointer data = purple_imgstore_get_data(img); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4257 | args.iconlen = purple_imgstore_get_size(img); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4258 | args.iconsum = aimutil_iconsum(data, args.iconlen); |
|
16677
7cd57586cdbf
The OSCAR timestamp stuff.
Richard Laager <rlaager@pidgin.im>
parents:
16545
diff
changeset
|
4259 | args.iconstamp = purple_buddy_icons_get_account_icon_timestamp(account); |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4260 | |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4261 | if ((args.iconlen != bi->ico_me_len) || (args.iconsum != bi->ico_me_csum) || (args.iconstamp != bi->ico_me_time)) { |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4262 | bi->ico_informed = FALSE; |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4263 | bi->ico_sent = FALSE; |
| 2086 | 4264 | } |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4265 | |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4266 | /* |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4267 | * TODO: |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4268 | * For some reason sending our icon to people only works |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4269 | * when we're the ones who initiated the conversation. If |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4270 | * the other person sends the first IM then they never get |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4271 | * the icon. We should fix that. |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4272 | */ |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4273 | if (!bi->ico_informed) { |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4274 | purple_debug_info("oscar", |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4275 | "Claiming to have a buddy icon\n"); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4276 | args.flags |= AIM_IMFLAGS_HASICON; |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4277 | bi->ico_me_len = args.iconlen; |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4278 | bi->ico_me_csum = args.iconsum; |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4279 | bi->ico_me_time = args.iconstamp; |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4280 | bi->ico_informed = TRUE; |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4281 | } |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4282 | |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4283 | purple_imgstore_unref(img); |
| 2086 | 4284 | } |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4285 | |
| 3008 | 4286 | args.destsn = name; |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4287 | |
|
8985
5045635e6d86
[gaim-migrate @ 9760]
Mark Doliner <markdoliner@pidgin.im>
parents:
8984
diff
changeset
|
4288 | /* |
|
13166
2724be46f443
[gaim-migrate @ 15528]
Evan Schoenberg <evands@pidgin.im>
parents:
13159
diff
changeset
|
4289 | * If we're IMing an SMS user or an ICQ user from an ICQ account, then strip HTML. |
|
13227
f011e198f246
[gaim-migrate @ 15591]
Mark Doliner <markdoliner@pidgin.im>
parents:
13201
diff
changeset
|
4290 | */ |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
4291 | if (aim_snvalid_sms(name)) { |
|
13166
2724be46f443
[gaim-migrate @ 15528]
Evan Schoenberg <evands@pidgin.im>
parents:
13159
diff
changeset
|
4292 | /* Messaging an SMS (mobile) user */ |
|
16143
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
16124
diff
changeset
|
4293 | tmp2 = purple_markup_strip_html(tmp1); |
|
17691
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4294 | is_html = FALSE; |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
4295 | } else if (aim_snvalid_icq(purple_account_get_username(account))) { |
|
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
4296 | if (aim_snvalid_icq(name)) { |
|
10781
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
4297 | /* From ICQ to ICQ */ |
|
16143
6393e5b11ff5
Patch from shlomil in ticket #78.
Shlomi Loubaton <shlomister@gmail.com>
parents:
16124
diff
changeset
|
4298 | tmp2 = purple_markup_strip_html(tmp1); |
|
17691
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4299 | is_html = FALSE; |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4300 | } else { |
|
10781
0685b98c081c
[gaim-migrate @ 12406]
Mark Doliner <markdoliner@pidgin.im>
parents:
10753
diff
changeset
|
4301 | /* From ICQ to AIM */ |
|
12677
61ea89a83849
[gaim-migrate @ 15020]
Mark Doliner <markdoliner@pidgin.im>
parents:
12675
diff
changeset
|
4302 | tmp2 = g_strdup(tmp1); |
|
17691
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4303 | is_html = TRUE; |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4304 | } |
| 8995 | 4305 | } else { |
|
10785
dddaac60f963
[gaim-migrate @ 12423]
Mark Doliner <markdoliner@pidgin.im>
parents:
10783
diff
changeset
|
4306 | /* From AIM to AIM and AIM to ICQ */ |
|
12677
61ea89a83849
[gaim-migrate @ 15020]
Mark Doliner <markdoliner@pidgin.im>
parents:
12675
diff
changeset
|
4307 | tmp2 = g_strdup(tmp1); |
|
17691
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4308 | is_html = TRUE; |
| 8995 | 4309 | } |
|
12677
61ea89a83849
[gaim-migrate @ 15020]
Mark Doliner <markdoliner@pidgin.im>
parents:
12675
diff
changeset
|
4310 | g_free(tmp1); |
|
61ea89a83849
[gaim-migrate @ 15020]
Mark Doliner <markdoliner@pidgin.im>
parents:
12675
diff
changeset
|
4311 | tmp1 = tmp2; |
|
61ea89a83849
[gaim-migrate @ 15020]
Mark Doliner <markdoliner@pidgin.im>
parents:
12675
diff
changeset
|
4312 | |
| 15884 | 4313 | purple_plugin_oscar_convert_to_best_encoding(gc, name, tmp1, (char **)&args.msg, &args.msglen, &args.charset, &args.charsubset); |
|
17691
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4314 | if (is_html && (args.msglen > MAXMSGLEN)) { |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4315 | /* If the length was too long, try stripping the HTML and then running it back through |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4316 | * purple_strdup_withhtml() and the encoding process. The result may be shorter. */ |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4317 | g_free((char *)args.msg); |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4318 | |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4319 | tmp2 = purple_markup_strip_html(tmp1); |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4320 | g_free(tmp1); |
|
18864
dca57fda6b15
re-escapes the entities that was unescaped by purple_markup_strip_html()
Ka-Hing Cheung <khc@pidgin.im>
parents:
18342
diff
changeset
|
4321 | |
|
dca57fda6b15
re-escapes the entities that was unescaped by purple_markup_strip_html()
Ka-Hing Cheung <khc@pidgin.im>
parents:
18342
diff
changeset
|
4322 | /* re-escape the entities */ |
|
dca57fda6b15
re-escapes the entities that was unescaped by purple_markup_strip_html()
Ka-Hing Cheung <khc@pidgin.im>
parents:
18342
diff
changeset
|
4323 | tmp1 = g_markup_escape_text(tmp2, -1); |
|
17691
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4324 | g_free(tmp2); |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4325 | |
|
18864
dca57fda6b15
re-escapes the entities that was unescaped by purple_markup_strip_html()
Ka-Hing Cheung <khc@pidgin.im>
parents:
18342
diff
changeset
|
4326 | tmp2 = purple_strdup_withhtml(tmp1); |
|
dca57fda6b15
re-escapes the entities that was unescaped by purple_markup_strip_html()
Ka-Hing Cheung <khc@pidgin.im>
parents:
18342
diff
changeset
|
4327 | g_free(tmp1); |
|
dca57fda6b15
re-escapes the entities that was unescaped by purple_markup_strip_html()
Ka-Hing Cheung <khc@pidgin.im>
parents:
18342
diff
changeset
|
4328 | tmp1 = tmp2; |
|
dca57fda6b15
re-escapes the entities that was unescaped by purple_markup_strip_html()
Ka-Hing Cheung <khc@pidgin.im>
parents:
18342
diff
changeset
|
4329 | |
|
17691
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4330 | purple_plugin_oscar_convert_to_best_encoding(gc, name, tmp1, (char **)&args.msg, &args.msglen, &args.charset, &args.charsubset); |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4331 | |
|
19832
84b69b21672b
Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19820
diff
changeset
|
4332 | purple_debug_info("oscar", "Sending %s as %s because the original was too long.\n", |
|
17691
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4333 | message, (char *)args.msg); |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4334 | } |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
4335 | |
| 15884 | 4336 | purple_debug_info("oscar", "Sending IM, charset=0x%04hx, charsubset=0x%04hx, length=%d\n", |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
4337 | args.charset, args.charsubset, args.msglen); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4338 | ret = aim_im_sendch1_ext(od, &args); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
4339 | g_free((char *)args.msg); |
| 2086 | 4340 | } |
|
4838
653f06ff2acf
[gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
4341 | |
|
12677
61ea89a83849
[gaim-migrate @ 15020]
Mark Doliner <markdoliner@pidgin.im>
parents:
12675
diff
changeset
|
4342 | g_free(tmp1); |
|
6310
efd8a4cbff53
[gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents:
6308
diff
changeset
|
4343 | |
|
2303
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
4344 | if (ret >= 0) |
|
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
4345 | return 1; |
|
6310
efd8a4cbff53
[gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents:
6308
diff
changeset
|
4346 | |
|
2303
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
4347 | return ret; |
| 2086 | 4348 | } |
| 4349 | ||
|
13937
d5606a63400f
[gaim-migrate @ 16349]
Mark Doliner <markdoliner@pidgin.im>
parents:
13935
diff
changeset
|
4350 | /* |
|
d5606a63400f
[gaim-migrate @ 16349]
Mark Doliner <markdoliner@pidgin.im>
parents:
13935
diff
changeset
|
4351 | * As of 26 June 2006, ICQ users can request AIM info from |
|
d5606a63400f
[gaim-migrate @ 16349]
Mark Doliner <markdoliner@pidgin.im>
parents:
13935
diff
changeset
|
4352 | * everyone, and can request ICQ info from ICQ users, and |
|
d5606a63400f
[gaim-migrate @ 16349]
Mark Doliner <markdoliner@pidgin.im>
parents:
13935
diff
changeset
|
4353 | * AIM users can only request AIM info. |
|
d5606a63400f
[gaim-migrate @ 16349]
Mark Doliner <markdoliner@pidgin.im>
parents:
13935
diff
changeset
|
4354 | */ |
| 15884 | 4355 | void oscar_get_info(PurpleConnection *gc, const char *name) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4356 | OscarData *od = (OscarData *)gc->proto_data; |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4357 | |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
4358 | if (od->icq && aim_snvalid_icq(name)) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4359 | aim_icq_getallinfo(od, name); |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
4360 | else |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4361 | aim_locate_getinfoshort(od, name, 0x00000003); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4362 | } |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4363 | |
|
8950
1b90ece5fb4f
[gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents:
8907
diff
changeset
|
4364 | #if 0 |
| 15884 | 4365 | static void oscar_set_dir(PurpleConnection *gc, const char *first, const char *middle, const char *last, |
| 3466 | 4366 | const char *maiden, const char *city, const char *state, const char *country, int web) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4367 | /* XXX - some of these things are wrong, but i'm lazy */ |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4368 | OscarData *od = (OscarData *)gc->proto_data; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4369 | aim_locate_setdirinfo(od, first, middle, last, |
| 2086 | 4370 | maiden, NULL, NULL, city, state, NULL, 0, web); |
| 4371 | } | |
|
8950
1b90ece5fb4f
[gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents:
8907
diff
changeset
|
4372 | #endif |
| 2086 | 4373 | |
| 15884 | 4374 | void oscar_set_idle(PurpleConnection *gc, int time) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4375 | OscarData *od = (OscarData *)gc->proto_data; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4376 | aim_srv_setidle(od, time); |
| 2086 | 4377 | } |
| 4378 | ||
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4379 | static |
| 15884 | 4380 | gchar *purple_prpl_oscar_convert_to_infotext(const gchar *str, gsize *ret_len, char **encoding) |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4381 | { |
|
9807
ff713acc7204
[gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents:
9806
diff
changeset
|
4382 | int charset = 0; |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4383 | char *encoded = NULL; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4384 | |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4385 | charset = oscar_charset_check(str); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4386 | if (charset == AIM_CHARSET_UNICODE) { |
|
19337
68471e68386a
Use -1 as length with g_convert() functions instead of strlen()
Daniel Atallah <datallah@pidgin.im>
parents:
19335
diff
changeset
|
4387 | encoded = g_convert(str, -1, "UCS-2BE", "UTF-8", NULL, ret_len, NULL); |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4388 | *encoding = "unicode-2-0"; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4389 | } else if (charset == AIM_CHARSET_CUSTOM) { |
|
19337
68471e68386a
Use -1 as length with g_convert() functions instead of strlen()
Daniel Atallah <datallah@pidgin.im>
parents:
19335
diff
changeset
|
4390 | encoded = g_convert(str, -1, "ISO-8859-1", "UTF-8", NULL, ret_len, NULL); |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4391 | *encoding = "iso-8859-1"; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4392 | } else { |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4393 | encoded = g_strdup(str); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4394 | *ret_len = strlen(str); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4395 | *encoding = "us-ascii"; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4396 | } |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4397 | |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4398 | return encoded; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4399 | } |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4400 | |
| 15030 | 4401 | void |
| 15884 | 4402 | oscar_set_info(PurpleConnection *gc, const char *rawinfo) |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4403 | { |
| 15884 | 4404 | PurpleAccount *account; |
| 4405 | PurpleStatus *status; | |
| 4406 | ||
| 4407 | account = purple_connection_get_account(gc); | |
| 4408 | status = purple_account_get_active_status(account); | |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4409 | oscar_set_info_and_status(account, TRUE, rawinfo, FALSE, status); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4410 | } |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4411 | |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4412 | static void |
| 15884 | 4413 | oscar_set_extendedstatus(PurpleConnection *gc) |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4414 | { |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4415 | OscarData *od; |
| 15884 | 4416 | PurpleAccount *account; |
| 4417 | PurpleStatus *status; | |
|
12653
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4418 | const gchar *status_id; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
4419 | guint32 data = 0x00000000; |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4420 | |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4421 | od = gc->proto_data; |
| 15884 | 4422 | account = purple_connection_get_account(gc); |
| 4423 | status = purple_account_get_active_status(account); | |
| 4424 | status_id = purple_status_get_id(status); | |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4425 | |
|
12652
363cd78076e0
[gaim-migrate @ 14995]
Mark Doliner <markdoliner@pidgin.im>
parents:
12645
diff
changeset
|
4426 | data |= AIM_ICQ_STATE_HIDEIP; |
| 15884 | 4427 | if (purple_account_get_bool(account, "web_aware", OSCAR_DEFAULT_WEB_AWARE)) |
|
12652
363cd78076e0
[gaim-migrate @ 14995]
Mark Doliner <markdoliner@pidgin.im>
parents:
12645
diff
changeset
|
4428 | data |= AIM_ICQ_STATE_WEBAWARE; |
|
363cd78076e0
[gaim-migrate @ 14995]
Mark Doliner <markdoliner@pidgin.im>
parents:
12645
diff
changeset
|
4429 | |
|
17668
128333312eb4
wabz pointed out that this string comparision was being done twice. I
Mark Doliner <markdoliner@pidgin.im>
parents:
17541
diff
changeset
|
4430 | if (!strcmp(status_id, OSCAR_STATUS_ID_AVAILABLE)) |
|
12653
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4431 | data |= AIM_ICQ_STATE_NORMAL; |
|
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4432 | else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY)) |
|
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4433 | data |= AIM_ICQ_STATE_AWAY; |
|
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4434 | else if (!strcmp(status_id, OSCAR_STATUS_ID_DND)) |
|
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4435 | data |= AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_DND | AIM_ICQ_STATE_BUSY; |
|
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4436 | else if (!strcmp(status_id, OSCAR_STATUS_ID_NA)) |
|
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4437 | data |= AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY; |
|
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4438 | else if (!strcmp(status_id, OSCAR_STATUS_ID_OCCUPIED)) |
|
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4439 | data |= AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_BUSY; |
|
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4440 | else if (!strcmp(status_id, OSCAR_STATUS_ID_FREE4CHAT)) |
|
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4441 | data |= AIM_ICQ_STATE_CHAT; |
|
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4442 | else if (!strcmp(status_id, OSCAR_STATUS_ID_INVISIBLE)) |
|
12652
363cd78076e0
[gaim-migrate @ 14995]
Mark Doliner <markdoliner@pidgin.im>
parents:
12645
diff
changeset
|
4443 | data |= AIM_ICQ_STATE_INVISIBLE; |
|
12653
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4444 | else if (!strcmp(status_id, OSCAR_STATUS_ID_CUSTOM)) |
|
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4445 | data |= AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY; |
|
12652
363cd78076e0
[gaim-migrate @ 14995]
Mark Doliner <markdoliner@pidgin.im>
parents:
12645
diff
changeset
|
4446 | |
|
15689
bcf3c0ddb974
Allow setting of the iTunes Music Store URL for AIM accounts. It's
Mark Doliner <markdoliner@pidgin.im>
parents:
15686
diff
changeset
|
4447 | aim_srv_setextrainfo(od, TRUE, data, FALSE, NULL, NULL); |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4448 | } |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4449 | |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4450 | static void |
| 15884 | 4451 | oscar_set_info_and_status(PurpleAccount *account, gboolean setinfo, const char *rawinfo, |
| 4452 | gboolean setstatus, PurpleStatus *status) | |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4453 | { |
| 15884 | 4454 | PurpleConnection *gc = purple_account_get_connection(account); |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4455 | OscarData *od = gc->proto_data; |
| 15884 | 4456 | PurplePresence *presence; |
| 4457 | PurpleStatusType *status_type; | |
| 4458 | PurpleStatusPrimitive primitive; | |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4459 | gboolean invisible; |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4460 | |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4461 | char *htmlinfo; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4462 | char *info_encoding = NULL; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4463 | char *info = NULL; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4464 | gsize infolen = 0; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4465 | |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4466 | const char *htmlaway; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4467 | char *away_encoding = NULL; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4468 | char *away = NULL; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4469 | gsize awaylen = 0; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4470 | |
| 15884 | 4471 | status_type = purple_status_get_type(status); |
| 4472 | primitive = purple_status_type_get_primitive(status_type); | |
| 4473 | presence = purple_account_get_presence(account); | |
| 4474 | invisible = purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_INVISIBLE); | |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4475 | |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4476 | if (!setinfo) |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4477 | { |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4478 | /* Do nothing! */ |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4479 | } |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4480 | else if (od->rights.maxsiglen == 0) |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4481 | { |
| 15884 | 4482 | purple_notify_warning(gc, NULL, _("Unable to set AIM profile."), |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4483 | _("You have probably requested to set your " |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
4484 | "profile before the login procedure completed. " |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4485 | "Your profile remains unset; try setting it " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4486 | "again when you are fully connected.")); |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4487 | } |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4488 | else if (rawinfo != NULL) |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4489 | { |
| 15884 | 4490 | htmlinfo = purple_strdup_withhtml(rawinfo); |
| 4491 | info = purple_prpl_oscar_convert_to_infotext(htmlinfo, &infolen, &info_encoding); | |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4492 | g_free(htmlinfo); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4493 | |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4494 | if (infolen > od->rights.maxsiglen) |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4495 | { |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4496 | gchar *errstr; |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16120
diff
changeset
|
4497 | errstr = g_strdup_printf(dngettext(PACKAGE, "The maximum profile length of %d byte " |
| 16197 | 4498 | "has been exceeded. It has been truncated for you.", |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4499 | "The maximum profile length of %d bytes " |
| 16197 | 4500 | "has been exceeded. It has been truncated for you.", |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4501 | od->rights.maxsiglen), od->rights.maxsiglen); |
| 15884 | 4502 | purple_notify_warning(gc, NULL, _("Profile too long."), errstr); |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4503 | g_free(errstr); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4504 | } |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4505 | } |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4506 | |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4507 | if (!setstatus) |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4508 | { |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4509 | /* Do nothing! */ |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4510 | } |
| 15884 | 4511 | else if (primitive == PURPLE_STATUS_AVAILABLE) |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4512 | { |
|
15689
bcf3c0ddb974
Allow setting of the iTunes Music Store URL for AIM accounts. It's
Mark Doliner <markdoliner@pidgin.im>
parents:
15686
diff
changeset
|
4513 | const char *status_html, *itmsurl; |
| 13802 | 4514 | char *status_text = NULL; |
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
4515 | |
| 15884 | 4516 | status_html = purple_status_get_attr_string(status, "message"); |
|
12349
212226bfabe2
[gaim-migrate @ 14653]
Mark Doliner <markdoliner@pidgin.im>
parents:
12347
diff
changeset
|
4517 | if (status_html != NULL) |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4518 | { |
| 15884 | 4519 | status_text = purple_markup_strip_html(status_html); |
|
12617
a9be8855baad
[gaim-migrate @ 14953]
Mark Doliner <markdoliner@pidgin.im>
parents:
12608
diff
changeset
|
4520 | /* If the status_text is longer than 60 character then truncate it */ |
|
19071
66a62e022ffd
Looks like AOL increased the length of available messages from 60
Mark Doliner <markdoliner@pidgin.im>
parents:
19050
diff
changeset
|
4521 | if (strlen(status_text) > MAXAVAILMSGLEN) |
|
12617
a9be8855baad
[gaim-migrate @ 14953]
Mark Doliner <markdoliner@pidgin.im>
parents:
12608
diff
changeset
|
4522 | { |
|
19071
66a62e022ffd
Looks like AOL increased the length of available messages from 60
Mark Doliner <markdoliner@pidgin.im>
parents:
19050
diff
changeset
|
4523 | char *tmp = g_utf8_find_prev_char(status_text, &status_text[MAXAVAILMSGLEN - 2]); |
|
12617
a9be8855baad
[gaim-migrate @ 14953]
Mark Doliner <markdoliner@pidgin.im>
parents:
12608
diff
changeset
|
4524 | strcpy(tmp, "..."); |
|
a9be8855baad
[gaim-migrate @ 14953]
Mark Doliner <markdoliner@pidgin.im>
parents:
12608
diff
changeset
|
4525 | } |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4526 | } |
| 15884 | 4527 | itmsurl = purple_status_get_attr_string(status, "itmsurl"); |
|
15689
bcf3c0ddb974
Allow setting of the iTunes Music Store URL for AIM accounts. It's
Mark Doliner <markdoliner@pidgin.im>
parents:
15686
diff
changeset
|
4528 | |
|
bcf3c0ddb974
Allow setting of the iTunes Music Store URL for AIM accounts. It's
Mark Doliner <markdoliner@pidgin.im>
parents:
15686
diff
changeset
|
4529 | aim_srv_setextrainfo(od, FALSE, 0, TRUE, status_text, itmsurl); |
| 13802 | 4530 | g_free(status_text); |
| 4531 | ||
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4532 | /* This is needed for us to un-set any previous away message. */ |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4533 | away = g_strdup(""); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4534 | } |
| 15884 | 4535 | else if ((primitive == PURPLE_STATUS_AWAY) || |
| 4536 | (primitive == PURPLE_STATUS_EXTENDED_AWAY)) | |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4537 | { |
| 15884 | 4538 | htmlaway = purple_status_get_attr_string(status, "message"); |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4539 | if ((htmlaway == NULL) || (*htmlaway == '\0')) |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4540 | htmlaway = _("Away"); |
| 15884 | 4541 | away = purple_prpl_oscar_convert_to_infotext(htmlaway, &awaylen, &away_encoding); |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4542 | |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4543 | if (awaylen > od->rights.maxawaymsglen) |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4544 | { |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4545 | gchar *errstr; |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4546 | |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16120
diff
changeset
|
4547 | errstr = g_strdup_printf(dngettext(PACKAGE, "The maximum away message length of %d byte " |
|
15498
2ee3112b6f24
This should be the last of the string changes
Sean Egan <seanegan@pidgin.im>
parents:
15444
diff
changeset
|
4548 | "has been exceeded. It has been truncated for you.", |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4549 | "The maximum away message length of %d bytes " |
|
15498
2ee3112b6f24
This should be the last of the string changes
Sean Egan <seanegan@pidgin.im>
parents:
15444
diff
changeset
|
4550 | "has been exceeded. It has been truncated for you.", |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4551 | od->rights.maxawaymsglen), od->rights.maxawaymsglen); |
| 15884 | 4552 | purple_notify_warning(gc, NULL, _("Away message too long."), errstr); |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4553 | g_free(errstr); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4554 | } |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4555 | } |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4556 | |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4557 | if (setstatus) |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4558 | oscar_set_extendedstatus(gc); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4559 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4560 | aim_locate_setprofile(od, info_encoding, info, MIN(infolen, od->rights.maxsiglen), |
|
11347
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4561 | away_encoding, away, MIN(awaylen, od->rights.maxawaymsglen)); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4562 | g_free(info); |
|
5b88acc51c32
[gaim-migrate @ 13564]
Mark Doliner <markdoliner@pidgin.im>
parents:
11338
diff
changeset
|
4563 | g_free(away); |
| 2086 | 4564 | } |
| 4565 | ||
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
4566 | static void |
| 15884 | 4567 | oscar_set_status_icq(PurpleAccount *account, PurpleStatus *status) |
| 2993 | 4568 | { |
| 15884 | 4569 | PurpleConnection *gc = purple_account_get_connection(account); |
| 10646 | 4570 | OscarData *od = NULL; |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
4571 | |
| 10646 | 4572 | if (gc) |
| 4573 | od = (OscarData *)gc->proto_data; | |
| 4574 | if (!od) | |
| 4575 | return; | |
| 4576 | ||
| 15884 | 4577 | if (purple_status_type_get_primitive(purple_status_get_type(status)) == PURPLE_STATUS_INVISIBLE) |
| 4578 | account->perm_deny = PURPLE_PRIVACY_ALLOW_USERS; | |
|
8265
ff840ad070be
[gaim-migrate @ 8988]
Mark Doliner <markdoliner@pidgin.im>
parents:
8257
diff
changeset
|
4579 | else |
| 15884 | 4580 | account->perm_deny = PURPLE_PRIVACY_DENY_USERS; |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
4581 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4582 | if ((od->ssi.received_data) && (aim_ssi_getpermdeny(od->ssi.local) != account->perm_deny)) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4583 | aim_ssi_setpermdeny(od, account->perm_deny, 0xffffffff); |
| 4342 | 4584 | |
|
12653
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4585 | oscar_set_extendedstatus(gc); |
| 2993 | 4586 | } |
| 4587 | ||
| 15030 | 4588 | void |
| 15884 | 4589 | oscar_set_status(PurpleAccount *account, PurpleStatus *status) |
| 2993 | 4590 | { |
| 15884 | 4591 | purple_debug_info("oscar", "Set status to %s\n", purple_status_get_name(status)); |
| 4592 | ||
| 4593 | if (!purple_status_is_active(status)) | |
| 10485 | 4594 | return; |
| 4595 | ||
| 15884 | 4596 | if (!purple_account_is_connected(account)) |
|
11718
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11670
diff
changeset
|
4597 | return; |
|
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11670
diff
changeset
|
4598 | |
|
12653
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4599 | /* Set the AIM-style away message for both AIM and ICQ accounts */ |
|
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4600 | oscar_set_info_and_status(account, FALSE, NULL, TRUE, status); |
|
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4601 | |
|
47cfcc8e8c48
[gaim-migrate @ 14996]
Mark Doliner <markdoliner@pidgin.im>
parents:
12652
diff
changeset
|
4602 | /* Set the ICQ status for ICQ accounts only */ |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
4603 | if (aim_snvalid_icq(purple_account_get_username(account))) |
|
11718
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11670
diff
changeset
|
4604 | oscar_set_status_icq(account, status); |
| 2086 | 4605 | } |
| 4606 | ||
|
11285
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
4607 | #ifdef CRAZY_WARN |
| 15030 | 4608 | void |
| 15884 | 4609 | oscar_warn(PurpleConnection *gc, const char *name, gboolean anonymous) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4610 | OscarData *od = (OscarData *)gc->proto_data; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4611 | aim_im_warn(od, od->conn, name, anonymous ? AIM_WARN_ANON : 0); |
| 2086 | 4612 | } |
|
11285
f6fff36607b1
[gaim-migrate @ 13482]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
4613 | #endif |
| 2086 | 4614 | |
| 15030 | 4615 | void |
| 15884 | 4616 | oscar_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4617 | OscarData *od = (OscarData *)gc->proto_data; |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
4618 | |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
4619 | if (!aim_snvalid(buddy->name)) { |
|
8092
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
4620 | gchar *buf; |
|
18342
59204a3c8c11
Update the "that is not a valid screen name!" error message to mention
Mark Doliner <markdoliner@pidgin.im>
parents:
18341
diff
changeset
|
4621 | buf = g_strdup_printf(_("Could not add the buddy %s because the screen name is invalid. Screen names must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."), buddy->name); |
| 15884 | 4622 | if (!purple_conv_present_error(buddy->name, purple_connection_get_account(gc), buf)) |
| 4623 | purple_notify_error(gc, NULL, _("Unable To Add"), buf); | |
|
8092
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
4624 | g_free(buf); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4625 | |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4626 | /* Remove from local list */ |
| 15884 | 4627 | purple_blist_remove_buddy(buddy); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4628 | |
|
8092
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
4629 | return; |
|
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
4630 | } |
|
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
4631 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4632 | if ((od->ssi.received_data) && !(aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))) { |
| 15884 | 4633 | purple_debug_info("oscar", |
|
13655
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
4634 | "ssi: adding buddy %s to group %s\n", buddy->name, group->name); |
|
17444
60929f040c86
Clean up some other ssi-related things. This commit and my last one
Mark Doliner <markdoliner@pidgin.im>
parents:
17279
diff
changeset
|
4635 | aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, 0); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4636 | } |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4637 | |
|
10157
650fd69090cd
[gaim-migrate @ 11237]
Mark Doliner <markdoliner@pidgin.im>
parents:
10152
diff
changeset
|
4638 | /* XXX - Should this be done from AIM accounts, as well? */ |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4639 | if (od->icq) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4640 | aim_icq_getalias(od, buddy->name); |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
4641 | } |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
4642 | |
| 15884 | 4643 | void oscar_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4644 | OscarData *od = (OscarData *)gc->proto_data; |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
4645 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4646 | if (od->ssi.received_data) { |
| 15884 | 4647 | purple_debug_info("oscar", |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
4648 | "ssi: deleting buddy %s from group %s\n", buddy->name, group->name); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4649 | aim_ssi_delbuddy(od, buddy->name, group->name); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4650 | } |
|
10866
40eab743e22b
[gaim-migrate @ 12552]
Mark Doliner <markdoliner@pidgin.im>
parents:
10860
diff
changeset
|
4651 | } |
|
40eab743e22b
[gaim-migrate @ 12552]
Mark Doliner <markdoliner@pidgin.im>
parents:
10860
diff
changeset
|
4652 | |
| 15884 | 4653 | void oscar_move_buddy(PurpleConnection *gc, const char *name, const char *old_group, const char *new_group) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4654 | OscarData *od = (OscarData *)gc->proto_data; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4655 | if (od->ssi.received_data && strcmp(old_group, new_group)) { |
| 15884 | 4656 | purple_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4657 | "ssi: moving buddy %s from group %s to group %s\n", name, old_group, new_group); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4658 | aim_ssi_movebuddy(od, old_group, new_group, name); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4659 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4660 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4661 | |
| 15884 | 4662 | void oscar_alias_buddy(PurpleConnection *gc, const char *name, const char *alias) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4663 | OscarData *od = (OscarData *)gc->proto_data; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4664 | if (od->ssi.received_data) { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4665 | char *gname = aim_ssi_itemlist_findparentname(od->ssi.local, name); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4666 | if (gname) { |
| 15884 | 4667 | purple_debug_info("oscar", |
|
9586
cb4e6ae1f4b1
[gaim-migrate @ 10429]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9554
diff
changeset
|
4668 | "ssi: changing the alias for buddy %s to %s\n", name, alias ? alias : "(none)"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4669 | aim_ssi_aliasbuddy(od, gname, name, alias); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4670 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4671 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4672 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4673 | |
|
11005
06c22b605323
[gaim-migrate @ 12864]
Mark Doliner <markdoliner@pidgin.im>
parents:
11002
diff
changeset
|
4674 | /* |
|
06c22b605323
[gaim-migrate @ 12864]
Mark Doliner <markdoliner@pidgin.im>
parents:
11002
diff
changeset
|
4675 | * FYI, the OSCAR SSI code removes empty groups automatically. |
|
06c22b605323
[gaim-migrate @ 12864]
Mark Doliner <markdoliner@pidgin.im>
parents:
11002
diff
changeset
|
4676 | */ |
| 15884 | 4677 | void oscar_rename_group(PurpleConnection *gc, const char *old_name, PurpleGroup *group, GList *moved_buddies) { |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4678 | OscarData *od = (OscarData *)gc->proto_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4679 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4680 | if (od->ssi.received_data) { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4681 | if (aim_ssi_itemlist_finditem(od->ssi.local, group->name, NULL, AIM_SSI_TYPE_GROUP)) { |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
4682 | GList *cur, *groups = NULL; |
| 15884 | 4683 | PurpleAccount *account = purple_connection_get_account(gc); |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
4684 | |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
4685 | /* Make a list of what the groups each buddy is in */ |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
4686 | for (cur = moved_buddies; cur != NULL; cur = cur->next) { |
| 15884 | 4687 | PurpleBlistNode *node = cur->data; |
| 4688 | /* node is PurpleBuddy, parent is a PurpleContact. | |
|
11002
0be28aa755ab
[gaim-migrate @ 12857]
Daniel Atallah <datallah@pidgin.im>
parents:
10949
diff
changeset
|
4689 | * We must go two levels up to get the Group */ |
|
0be28aa755ab
[gaim-migrate @ 12857]
Daniel Atallah <datallah@pidgin.im>
parents:
10949
diff
changeset
|
4690 | groups = g_list_append(groups, |
|
0be28aa755ab
[gaim-migrate @ 12857]
Daniel Atallah <datallah@pidgin.im>
parents:
10949
diff
changeset
|
4691 | node->parent->parent); |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
4692 | } |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
4693 | |
| 15884 | 4694 | purple_account_remove_buddies(account, moved_buddies, groups); |
| 4695 | purple_account_add_buddies(account, moved_buddies); | |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
4696 | g_list_free(groups); |
| 15884 | 4697 | purple_debug_info("oscar", |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
4698 | "ssi: moved all buddies from group %s to %s\n", old_name, group->name); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4699 | } else { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4700 | aim_ssi_rename_group(od, old_name, group->name); |
| 15884 | 4701 | purple_debug_info("oscar", |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
4702 | "ssi: renamed group %s to %s\n", old_name, group->name); |
|
2995
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
4703 | } |
|
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
4704 | } |
|
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
4705 | } |
|
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
4706 | |
|
19050
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4707 | void oscar_remove_group(PurpleConnection *gc, PurpleGroup *group) |
|
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4708 | { |
|
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4709 | aim_ssi_delgroup(gc->proto_data, group->name); |
|
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4710 | } |
|
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4711 | |
| 15884 | 4712 | static gboolean purple_ssi_rerequestdata(gpointer data) { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4713 | OscarData *od = data; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4714 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4715 | aim_ssi_reqdata(od); |
|
12663
0e72aaa59cf5
[gaim-migrate @ 15006]
Mark Doliner <markdoliner@pidgin.im>
parents:
12662
diff
changeset
|
4716 | |
|
13060
255a68fe8471
[gaim-migrate @ 15422]
Mark Doliner <markdoliner@pidgin.im>
parents:
13008
diff
changeset
|
4717 | return TRUE; |
|
5968
f3e4bc7bd718
[gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents:
5954
diff
changeset
|
4718 | } |
|
f3e4bc7bd718
[gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents:
5954
diff
changeset
|
4719 | |
| 15884 | 4720 | static int purple_ssi_parseerr(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 4721 | PurpleConnection *gc = od->gc; | |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4722 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
4723 | guint16 reason; |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4724 | |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4725 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
4726 | reason = (guint16)va_arg(ap, unsigned int); |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4727 | va_end(ap); |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4728 | |
| 15884 | 4729 | purple_debug_error("oscar", "ssi: SNAC error %hu\n", reason); |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4730 | |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4731 | if (reason == 0x0005) { |
| 15884 | 4732 | purple_notify_error(gc, NULL, _("Unable To Retrieve Buddy List"), |
|
15444
b793ef258d23
I think this changes every user-visible string that contains 'Gaim.' We probably want the UI to be able
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
4733 | _("The AIM servers were temporarily unable to send your buddy list. Your buddy list is not lost, and will probably become available in a few hours.")); |
|
12663
0e72aaa59cf5
[gaim-migrate @ 15006]
Mark Doliner <markdoliner@pidgin.im>
parents:
12662
diff
changeset
|
4734 | if (od->getblisttimer > 0) |
| 15884 | 4735 | purple_timeout_remove(od->getblisttimer); |
| 4736 | od->getblisttimer = purple_timeout_add(30000, purple_ssi_rerequestdata, od); | |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4737 | } |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4738 | |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4739 | oscar_set_extendedstatus(gc); |
|
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4740 | |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4741 | /* Activate SSI */ |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4742 | /* Sending the enable causes other people to be able to see you, and you to see them */ |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4743 | /* Make sure your privacy setting/invisibility is set how you want it before this! */ |
| 15884 | 4744 | purple_debug_info("oscar", "ssi: activating server-stored buddy list\n"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4745 | aim_ssi_enable(od); |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4746 | |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4747 | return 1; |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4748 | } |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4749 | |
| 15884 | 4750 | static int purple_ssi_parserights(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4751 | int i; |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4752 | va_list ap; |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4753 | int numtypes; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
4754 | guint16 *maxitems; |
| 2991 | 4755 | |
| 4756 | va_start(ap, fr); | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4757 | numtypes = va_arg(ap, int); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
4758 | maxitems = va_arg(ap, guint16 *); |
| 2991 | 4759 | va_end(ap); |
| 4760 | ||
| 15884 | 4761 | purple_debug_misc("oscar", "ssi rights:"); |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5208
diff
changeset
|
4762 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4763 | for (i=0; i<numtypes; i++) |
| 15884 | 4764 | purple_debug_misc(NULL, " max type 0x%04x=%hd,", |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5208
diff
changeset
|
4765 | i, maxitems[i]); |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5208
diff
changeset
|
4766 | |
| 15884 | 4767 | purple_debug_misc(NULL, "\n"); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4768 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4769 | if (numtypes >= 0) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4770 | od->rights.maxbuddies = maxitems[0]; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4771 | if (numtypes >= 1) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4772 | od->rights.maxgroups = maxitems[1]; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4773 | if (numtypes >= 2) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4774 | od->rights.maxpermits = maxitems[2]; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4775 | if (numtypes >= 3) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4776 | od->rights.maxdenies = maxitems[3]; |
| 2991 | 4777 | |
| 4778 | return 1; | |
| 4779 | } | |
| 4780 | ||
| 15884 | 4781 | static int purple_ssi_parselist(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4782 | { |
| 15884 | 4783 | PurpleConnection *gc; |
| 4784 | PurpleAccount *account; | |
| 4785 | PurpleGroup *g; | |
| 4786 | PurpleBuddy *b; | |
|
2995
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
4787 | struct aim_ssi_item *curitem; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
4788 | guint32 tmp; |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
4789 | PurpleStoredImage *img; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4790 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
4791 | guint16 fmtver, numitems; |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
4792 | guint32 timestamp; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4793 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4794 | gc = od->gc; |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4795 | od = gc->proto_data; |
| 15884 | 4796 | account = purple_connection_get_account(gc); |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
4797 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4798 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
4799 | fmtver = (guint16)va_arg(ap, int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
4800 | numitems = (guint16)va_arg(ap, int); |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
4801 | timestamp = va_arg(ap, guint32); |
| 8219 | 4802 | va_end(ap); |
| 2991 | 4803 | |
|
12663
0e72aaa59cf5
[gaim-migrate @ 15006]
Mark Doliner <markdoliner@pidgin.im>
parents:
12662
diff
changeset
|
4804 | /* Don't attempt to re-request our buddy list later */ |
|
0e72aaa59cf5
[gaim-migrate @ 15006]
Mark Doliner <markdoliner@pidgin.im>
parents:
12662
diff
changeset
|
4805 | if (od->getblisttimer != 0) |
| 15884 | 4806 | purple_timeout_remove(od->getblisttimer); |
|
12663
0e72aaa59cf5
[gaim-migrate @ 15006]
Mark Doliner <markdoliner@pidgin.im>
parents:
12662
diff
changeset
|
4807 | od->getblisttimer = 0; |
|
0e72aaa59cf5
[gaim-migrate @ 15006]
Mark Doliner <markdoliner@pidgin.im>
parents:
12662
diff
changeset
|
4808 | |
| 15884 | 4809 | purple_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4810 | "ssi: syncing local list and server list\n"); |
| 2991 | 4811 | |
| 8219 | 4812 | if ((timestamp == 0) || (numitems == 0)) { |
|
19832
84b69b21672b
Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19820
diff
changeset
|
4813 | purple_debug_info("oscar", "Got AIM SSI with a 0 timestamp or 0 numitems--not syncing. This probably means your buddy list is empty.\n"); |
| 8219 | 4814 | return 1; |
| 4815 | } | |
| 4816 | ||
| 2991 | 4817 | /* Clean the buddy list */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4818 | aim_ssi_cleanlist(od); |
| 2991 | 4819 | |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4820 | { /* If not in server list then prune from local list */ |
| 15884 | 4821 | PurpleBlistNode *gnode, *cnode, *bnode; |
| 4822 | PurpleBuddyList *blist; | |
|
9539
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
4823 | GSList *cur, *next; |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4824 | |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4825 | /* Buddies */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4826 | cur = NULL; |
| 15884 | 4827 | if ((blist = purple_get_blist()) != NULL) { |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4828 | for (gnode = blist->root; gnode; gnode = gnode->next) { |
| 15884 | 4829 | if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4830 | continue; |
| 15884 | 4831 | g = (PurpleGroup *)gnode; |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4832 | for (cnode = gnode->child; cnode; cnode = cnode->next) { |
| 15884 | 4833 | if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4834 | continue; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4835 | for (bnode = cnode->child; bnode; bnode = bnode->next) { |
| 15884 | 4836 | if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4837 | continue; |
| 15884 | 4838 | b = (PurpleBuddy *)bnode; |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4839 | if (b->account == gc->account) { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4840 | if (aim_ssi_itemlist_exists(od->ssi.local, b->name)) { |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4841 | /* If the buddy is an ICQ user then load his nickname */ |
| 15884 | 4842 | const char *servernick = purple_blist_node_get_string((PurpleBlistNode*)b, "servernick"); |
| 8214 | 4843 | char *alias; |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4844 | if (servernick) |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4845 | serv_got_alias(gc, b->name, servernick); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4846 | |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4847 | /* Store local alias on server */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4848 | alias = aim_ssi_getalias(od->ssi.local, g->name, b->name); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4849 | if (!alias && b->alias && strlen(b->alias)) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4850 | aim_ssi_aliasbuddy(od, g->name, b->name, b->alias); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4851 | g_free(alias); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4852 | } else { |
| 15884 | 4853 | purple_debug_info("oscar", |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4854 | "ssi: removing buddy %s from local list\n", b->name); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4855 | /* We can't actually remove now because it will screw up our looping */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4856 | cur = g_slist_prepend(cur, b); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4857 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4858 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4859 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4860 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4861 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4862 | } |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
4863 | |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4864 | while (cur != NULL) { |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4865 | b = cur->data; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4866 | cur = g_slist_remove(cur, b); |
| 15884 | 4867 | purple_blist_remove_buddy(b); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4868 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4869 | |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4870 | /* Permit list */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4871 | if (gc->account->permit) { |
|
9539
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
4872 | next = gc->account->permit; |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
4873 | while (next != NULL) { |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
4874 | cur = next; |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
4875 | next = next->next; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4876 | if (!aim_ssi_itemlist_finditem(od->ssi.local, NULL, cur->data, AIM_SSI_TYPE_PERMIT)) { |
| 15884 | 4877 | purple_debug_info("oscar", |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4878 | "ssi: removing permit %s from local list\n", (const char *)cur->data); |
| 15884 | 4879 | purple_privacy_permit_remove(account, cur->data, TRUE); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4880 | } |
|
9539
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
4881 | } |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4882 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4883 | |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4884 | /* Deny list */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4885 | if (gc->account->deny) { |
|
9539
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
4886 | next = gc->account->deny; |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
4887 | while (next != NULL) { |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
4888 | cur = next; |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
4889 | next = next->next; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4890 | if (!aim_ssi_itemlist_finditem(od->ssi.local, NULL, cur->data, AIM_SSI_TYPE_DENY)) { |
| 15884 | 4891 | purple_debug_info("oscar", |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4892 | "ssi: removing deny %s from local list\n", (const char *)cur->data); |
| 15884 | 4893 | purple_privacy_deny_remove(account, cur->data, TRUE); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4894 | } |
|
9539
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
4895 | } |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4896 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4897 | /* Presence settings (idle time visibility) */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4898 | if ((tmp = aim_ssi_getpresence(od->ssi.local)) != 0xFFFFFFFF) |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4899 | if (!(tmp & 0x400)) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4900 | aim_ssi_setpresence(od, tmp | 0x400); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4901 | } /* end pruning buddies from local list */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4902 | |
| 2991 | 4903 | /* Add from server list to local list */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4904 | for (curitem=od->ssi.local; curitem; curitem=curitem->next) { |
|
19050
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4905 | if ((curitem->name == NULL) || (g_utf8_validate(curitem->name, -1, NULL))) |
| 2991 | 4906 | switch (curitem->type) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4907 | case 0x0000: { /* Buddy */ |
|
4251
7d62db57d86a
[gaim-migrate @ 4501]
Mark Doliner <markdoliner@pidgin.im>
parents:
4249
diff
changeset
|
4908 | if (curitem->name) { |
|
19050
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4909 | struct aim_ssi_item *groupitem = aim_ssi_itemlist_find(od->ssi.local, curitem->gid, 0x0000); |
|
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4910 | char *gname = groupitem ? groupitem->name : NULL; |
|
12608
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
4911 | char *gname_utf8 = gname ? oscar_utf8_try_convert(gc->account, gname) : NULL; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4912 | char *alias = aim_ssi_getalias(od->ssi.local, gname, curitem->name); |
|
14088
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
4913 | char *alias_utf8; |
|
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
4914 | |
|
19050
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4915 | g = purple_find_group(gname_utf8 ? gname_utf8 : _("Orphans")); |
|
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4916 | if (g == NULL) { |
|
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4917 | g = purple_group_new(gname_utf8 ? gname_utf8 : _("Orphans")); |
|
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4918 | purple_blist_add_group(g, NULL); |
|
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4919 | } |
|
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4920 | |
|
14088
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
4921 | if (alias != NULL) |
|
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
4922 | { |
|
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
4923 | if (g_utf8_validate(alias, -1, NULL)) |
|
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
4924 | alias_utf8 = g_strdup(alias); |
|
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
4925 | else |
|
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
4926 | alias_utf8 = oscar_utf8_try_convert(account, alias); |
|
19050
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4927 | g_free(alias); |
|
14088
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
4928 | } |
|
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
4929 | else |
|
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
4930 | alias_utf8 = NULL; |
|
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
4931 | |
|
19050
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4932 | b = purple_find_buddy_in_group(gc->account, curitem->name, g); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4933 | if (b) { |
|
4292
249d89e1b14c
[gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents:
4282
diff
changeset
|
4934 | /* Get server stored alias */ |
| 4705 | 4935 | if (alias_utf8) { |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4936 | g_free(b->alias); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
4937 | b->alias = g_strdup(alias_utf8); |
| 4705 | 4938 | } |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4939 | } else { |
| 15884 | 4940 | b = purple_buddy_new(gc->account, curitem->name, alias_utf8); |
| 4941 | ||
| 4942 | purple_debug_info("oscar", | |
|
19050
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4943 | "ssi: adding buddy %s to group %s to local list\n", curitem->name, g->name); |
| 15884 | 4944 | purple_blist_add_buddy(b, NULL, g, NULL); |
|
4251
7d62db57d86a
[gaim-migrate @ 4501]
Mark Doliner <markdoliner@pidgin.im>
parents:
4249
diff
changeset
|
4945 | } |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4946 | if (!aim_sncmp(curitem->name, account->username)) { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4947 | char *comment = aim_ssi_getcomment(od->ssi.local, gname, curitem->name); |
|
14614
3ed1753cc08a
[gaim-migrate @ 17275]
Mark Doliner <markdoliner@pidgin.im>
parents:
14604
diff
changeset
|
4948 | if (comment != NULL) |
|
3ed1753cc08a
[gaim-migrate @ 17275]
Mark Doliner <markdoliner@pidgin.im>
parents:
14604
diff
changeset
|
4949 | { |
| 15884 | 4950 | purple_check_comment(od, comment); |
|
14614
3ed1753cc08a
[gaim-migrate @ 17275]
Mark Doliner <markdoliner@pidgin.im>
parents:
14604
diff
changeset
|
4951 | g_free(comment); |
|
3ed1753cc08a
[gaim-migrate @ 17275]
Mark Doliner <markdoliner@pidgin.im>
parents:
14604
diff
changeset
|
4952 | } |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4953 | } |
| 7162 | 4954 | g_free(gname_utf8); |
| 4955 | g_free(alias_utf8); | |
| 2991 | 4956 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4957 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4958 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4959 | case 0x0001: { /* Group */ |
|
19050
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4960 | char *gname = curitem->name; |
|
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4961 | char *gname_utf8 = gname ? oscar_utf8_try_convert(gc->account, gname) : NULL; |
|
19085
64f4b8a98800
Only try to add a group locally if it doesn't already exist. This
Mark Doliner <markdoliner@pidgin.im>
parents:
19071
diff
changeset
|
4962 | if (gname_utf8 != NULL && purple_find_group(gname_utf8) == NULL) { |
|
19050
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4963 | g = purple_group_new(gname_utf8); |
|
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4964 | purple_blist_add_group(g, NULL); |
|
78ed2f8cd58d
Some changes from Matthew Goldstein and I to not automatically remove
Mark Doliner <markdoliner@pidgin.im>
parents:
18940
diff
changeset
|
4965 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4966 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4967 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4968 | case 0x0002: { /* Permit buddy */ |
| 2991 | 4969 | if (curitem->name) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4970 | /* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */ |
| 2991 | 4971 | GSList *list; |
| 5575 | 4972 | for (list=account->permit; (list && aim_sncmp(curitem->name, list->data)); list=list->next); |
| 2991 | 4973 | if (!list) { |
| 15884 | 4974 | purple_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4975 | "ssi: adding permit buddy %s to local list\n", curitem->name); |
| 15884 | 4976 | purple_privacy_permit_add(account, curitem->name, TRUE); |
| 2991 | 4977 | } |
| 4978 | } | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4979 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4980 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4981 | case 0x0003: { /* Deny buddy */ |
| 2991 | 4982 | if (curitem->name) { |
| 4983 | GSList *list; | |
| 5575 | 4984 | for (list=account->deny; (list && aim_sncmp(curitem->name, list->data)); list=list->next); |
| 2991 | 4985 | if (!list) { |
| 15884 | 4986 | purple_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4987 | "ssi: adding deny buddy %s to local list\n", curitem->name); |
| 15884 | 4988 | purple_privacy_deny_add(account, curitem->name, TRUE); |
| 2991 | 4989 | } |
| 4990 | } | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4991 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4992 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4993 | case 0x0004: { /* Permit/deny setting */ |
| 2991 | 4994 | if (curitem->data) { |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
4995 | guint8 permdeny; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
4996 | if ((permdeny = aim_ssi_getpermdeny(od->ssi.local)) && (permdeny != account->perm_deny)) { |
| 15884 | 4997 | purple_debug_info("oscar", |
| 5575 | 4998 | "ssi: changing permdeny from %d to %hhu\n", account->perm_deny, permdeny); |
| 4999 | account->perm_deny = permdeny; | |
| 15884 | 5000 | if (od->icq && account->perm_deny == PURPLE_PRIVACY_ALLOW_USERS) { |
| 5001 | purple_presence_set_status_active(account->presence, OSCAR_STATUS_ID_INVISIBLE, TRUE); | |
| 4342 | 5002 | } |
| 2991 | 5003 | } |
| 5004 | } | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5005 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5006 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5007 | case 0x0005: { /* Presence setting */ |
| 15884 | 5008 | /* We don't want to change Purple's setting because it applies to all accounts */ |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5009 | } break; |
| 2991 | 5010 | } /* End of switch on curitem->type */ |
| 5011 | } /* End of for loop */ | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5012 | |
|
11965
0b8d4950b68a
[gaim-migrate @ 14256]
Mark Doliner <markdoliner@pidgin.im>
parents:
11920
diff
changeset
|
5013 | oscar_set_extendedstatus(gc); |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
5014 | |
| 4342 | 5015 | /* Activate SSI */ |
| 5016 | /* Sending the enable causes other people to be able to see you, and you to see them */ | |
| 5017 | /* Make sure your privacy setting/invisibility is set how you want it before this! */ | |
| 15884 | 5018 | purple_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5019 | "ssi: activating server-stored buddy list\n"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5020 | aim_ssi_enable(od); |
| 4342 | 5021 | |
|
15255
f8f2e6c4fa72
[gaim-migrate @ 17982]
Mark Doliner <markdoliner@pidgin.im>
parents:
15232
diff
changeset
|
5022 | /* |
|
f8f2e6c4fa72
[gaim-migrate @ 17982]
Mark Doliner <markdoliner@pidgin.im>
parents:
15232
diff
changeset
|
5023 | * Make sure our server-stored icon is updated correctly in |
|
f8f2e6c4fa72
[gaim-migrate @ 17982]
Mark Doliner <markdoliner@pidgin.im>
parents:
15232
diff
changeset
|
5024 | * the event that the local user set a new icon while this |
|
f8f2e6c4fa72
[gaim-migrate @ 17982]
Mark Doliner <markdoliner@pidgin.im>
parents:
15232
diff
changeset
|
5025 | * account was offline. |
|
f8f2e6c4fa72
[gaim-migrate @ 17982]
Mark Doliner <markdoliner@pidgin.im>
parents:
15232
diff
changeset
|
5026 | */ |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
5027 | img = purple_buddy_icons_find_account_icon(account); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
5028 | oscar_set_icon(gc, img); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
5029 | purple_imgstore_unref(img); |
|
15255
f8f2e6c4fa72
[gaim-migrate @ 17982]
Mark Doliner <markdoliner@pidgin.im>
parents:
15232
diff
changeset
|
5030 | |
| 2991 | 5031 | return 1; |
| 2086 | 5032 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5033 | |
| 15884 | 5034 | static int purple_ssi_parseack(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 5035 | PurpleConnection *gc = od->gc; | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5036 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5037 | struct aim_ssi_tmp *retval; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5038 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5039 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5040 | retval = va_arg(ap, struct aim_ssi_tmp *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5041 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5042 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5043 | while (retval) { |
| 15884 | 5044 | purple_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5045 | "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
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5046 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5047 | if (retval->ack != 0xffff) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5048 | switch (retval->ack) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5049 | case 0x0000: { /* added successfully */ |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5050 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5051 | |
|
4829
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
5052 | case 0x000c: { /* you are over the limit, the cheat is to the limit, come on fhqwhgads */ |
|
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
5053 | gchar *buf; |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
5054 | 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)"))); |
| 15884 | 5055 | if ((retval->name != NULL) && !purple_conv_present_error(retval->name, purple_connection_get_account(gc), buf)) |
| 5056 | purple_notify_error(gc, NULL, _("Unable To Add"), buf); | |
|
4829
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
5057 | g_free(buf); |
|
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
5058 | } |
|
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
5059 | |
| 7023 | 5060 | case 0x000e: { /* buddy requires authorization */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5061 | if ((retval->action == SNAC_SUBTYPE_FEEDBAG_ADD) && (retval->name)) |
| 15884 | 5062 | purple_auth_sendrequest(gc, retval->name); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5063 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5064 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5065 | default: { /* La la la */ |
|
5197
ab4d919050d7
[gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents:
5167
diff
changeset
|
5066 | gchar *buf; |
| 15884 | 5067 | purple_debug_error("oscar", "ssi: Action 0x%04hx was unsuccessful with error 0x%04hx\n", retval->action, retval->ack); |
|
18340
72716c465b68
Get rid of the portion of this error message that says "The most
Mark Doliner <markdoliner@pidgin.im>
parents:
18269
diff
changeset
|
5068 | buf = g_strdup_printf(_("Could not add the buddy %s for an unknown reason."), |
|
72716c465b68
Get rid of the portion of this error message that says "The most
Mark Doliner <markdoliner@pidgin.im>
parents:
18269
diff
changeset
|
5069 | (retval->name ? retval->name : _("(no name)"))); |
| 15884 | 5070 | if ((retval->name != NULL) && !purple_conv_present_error(retval->name, purple_connection_get_account(gc), buf)) |
| 5071 | purple_notify_error(gc, NULL, _("Unable To Add"), buf); | |
|
5197
ab4d919050d7
[gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents:
5167
diff
changeset
|
5072 | g_free(buf); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5073 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5074 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5075 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5076 | retval = retval->next; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5077 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5078 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5079 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5080 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5081 | |
| 15884 | 5082 | static int purple_ssi_parseadd(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 5083 | PurpleConnection *gc = od->gc; | |
|
8227
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5084 | char *gname, *gname_utf8, *alias, *alias_utf8; |
| 15884 | 5085 | PurpleBuddy *b; |
| 5086 | PurpleGroup *g; | |
|
8227
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5087 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
5088 | guint16 type; |
|
8227
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5089 | const char *name; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5090 | |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5091 | va_start(ap, fr); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
5092 | type = (guint16)va_arg(ap, int); |
|
8227
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5093 | name = va_arg(ap, char *); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5094 | va_end(ap); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5095 | |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5096 | if ((type != 0x0000) || (name == NULL)) |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5097 | return 1; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5098 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5099 | gname = aim_ssi_itemlist_findparentname(od->ssi.local, name); |
|
12608
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
5100 | gname_utf8 = gname ? oscar_utf8_try_convert(gc->account, gname) : NULL; |
|
14088
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
5101 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5102 | alias = aim_ssi_getalias(od->ssi.local, gname, name); |
|
14088
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
5103 | if (alias != NULL) |
|
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
5104 | { |
|
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
5105 | if (g_utf8_validate(alias, -1, NULL)) |
|
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
5106 | alias_utf8 = g_strdup(alias); |
|
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
5107 | else |
| 15884 | 5108 | alias_utf8 = oscar_utf8_try_convert(purple_connection_get_account(gc), alias); |
|
14088
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
5109 | } |
|
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
5110 | else |
|
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
5111 | alias_utf8 = NULL; |
|
877eda665ce4
[gaim-migrate @ 16626]
Mark Doliner <markdoliner@pidgin.im>
parents:
14030
diff
changeset
|
5112 | |
| 15884 | 5113 | b = purple_find_buddy(gc->account, name); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5114 | g_free(alias); |
|
8227
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5115 | |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5116 | if (b) { |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5117 | /* Get server stored alias */ |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5118 | if (alias_utf8) { |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5119 | g_free(b->alias); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5120 | b->alias = g_strdup(alias_utf8); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5121 | } |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5122 | } else { |
| 15884 | 5123 | b = purple_buddy_new(gc->account, name, alias_utf8); |
| 5124 | ||
| 5125 | if (!(g = purple_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) { | |
| 5126 | g = purple_group_new(gname_utf8 ? gname_utf8 : _("Orphans")); | |
| 5127 | purple_blist_add_group(g, NULL); | |
|
8227
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5128 | } |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5129 | |
| 15884 | 5130 | purple_debug_info("oscar", |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5131 | "ssi: adding buddy %s to group %s to local list\n", name, gname_utf8 ? gname_utf8 : _("Orphans")); |
| 15884 | 5132 | purple_blist_add_buddy(b, NULL, g, NULL); |
|
8227
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5133 | } |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5134 | g_free(gname_utf8); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5135 | g_free(alias_utf8); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5136 | |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5137 | return 1; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5138 | } |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
5139 | |
| 15884 | 5140 | static int purple_ssi_authgiven(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 5141 | PurpleConnection *gc = od->gc; | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5142 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5143 | char *sn, *msg; |
| 4236 | 5144 | gchar *dialog_msg, *nombre; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5145 | struct name_data *data; |
| 15884 | 5146 | PurpleBuddy *buddy; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5147 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5148 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5149 | sn = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5150 | msg = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5151 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5152 | |
| 15884 | 5153 | purple_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5154 | "ssi: %s has given you permission to add him to your buddy list\n", sn); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5155 | |
| 15884 | 5156 | buddy = purple_find_buddy(gc->account, sn); |
| 5157 | if (buddy && (purple_buddy_get_alias_only(buddy))) | |
| 5158 | nombre = g_strdup_printf("%s (%s)", sn, purple_buddy_get_alias_only(buddy)); | |
| 4236 | 5159 | else |
| 5160 | nombre = g_strdup(sn); | |
| 5161 | ||
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
5162 | 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); |
|
16939
6b2bdb2147b2
Free nombre as soon as we're done using it, for clarity
Evan Schoenberg <evands@pidgin.im>
parents:
16938
diff
changeset
|
5163 | g_free(nombre); |
|
6b2bdb2147b2
Free nombre as soon as we're done using it, for clarity
Evan Schoenberg <evands@pidgin.im>
parents:
16938
diff
changeset
|
5164 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5165 | data = g_new(struct name_data, 1); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5166 | data->gc = gc; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5167 | data->name = g_strdup(sn); |
|
16938
d398661ad227
Pass the screenname properly to purple_account_request_authorization(), passing the nick (if available) separately. Store the nick for use in callbacks in data->nick where possible.
Evan Schoenberg <evands@pidgin.im>
parents:
16885
diff
changeset
|
5168 | data->nick = (buddy ? g_strdup(purple_buddy_get_alias_only(buddy)) : NULL); |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5169 | |
|
20685
039aef89faf6
Updated hinting to be less invasive
Gabriel Schulhof <nix@go-nix.ca>
parents:
20684
diff
changeset
|
5170 | purple_request_yes_no_with_hint(gc, NULL, _("Authorization Given"), dialog_msg, |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16462
diff
changeset
|
5171 | PURPLE_DEFAULT_ACTION_NONE, |
|
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16462
diff
changeset
|
5172 | purple_connection_get_account(gc), sn, NULL, |
|
19267
8d51ec40763b
Added hints to oscar oscar.c
Gabriel Schulhof <nix@go-nix.ca>
parents:
19113
diff
changeset
|
5173 | "blist", data, |
| 15884 | 5174 | G_CALLBACK(purple_icq_buddyadd), |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
5175 | G_CALLBACK(oscar_free_name_data)); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5176 | g_free(dialog_msg); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5177 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5178 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5179 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5180 | |
| 15884 | 5181 | static int purple_ssi_authrequest(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 5182 | PurpleConnection *gc = od->gc; | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5183 | va_list ap; |
|
11102
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
5184 | char *sn; |
|
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
5185 | char *msg; |
| 15884 | 5186 | PurpleAccount *account = purple_connection_get_account(gc); |
|
11567
14ffd9c34829
[gaim-migrate @ 13834]
Daniel Atallah <datallah@pidgin.im>
parents:
11537
diff
changeset
|
5187 | gchar *reason = NULL; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5188 | struct name_data *data; |
| 15884 | 5189 | PurpleBuddy *buddy; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5190 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5191 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5192 | sn = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5193 | msg = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5194 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5195 | |
| 15884 | 5196 | purple_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5197 | "ssi: received authorization request from %s\n", sn); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5198 | |
| 15884 | 5199 | buddy = purple_find_buddy(account, sn); |
| 4236 | 5200 | |
|
11102
8f750ca03455
[gaim-migrate @ 13142]
Richard Laager <rlaager@pidgin.im>
parents:
11084
diff
changeset
|
5201 | if (msg != NULL) |
| 15884 | 5202 | reason = purple_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg, strlen(msg)); |
|
11567
14ffd9c34829
[gaim-migrate @ 13834]
Daniel Atallah <datallah@pidgin.im>
parents:
11537
diff
changeset
|
5203 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5204 | data = g_new(struct name_data, 1); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5205 | data->gc = gc; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5206 | data->name = g_strdup(sn); |
|
16938
d398661ad227
Pass the screenname properly to purple_account_request_authorization(), passing the nick (if available) separately. Store the nick for use in callbacks in data->nick where possible.
Evan Schoenberg <evands@pidgin.im>
parents:
16885
diff
changeset
|
5207 | data->nick = (buddy ? g_strdup(purple_buddy_get_alias_only(buddy)) : NULL); |
|
d398661ad227
Pass the screenname properly to purple_account_request_authorization(), passing the nick (if available) separately. Store the nick for use in callbacks in data->nick where possible.
Evan Schoenberg <evands@pidgin.im>
parents:
16885
diff
changeset
|
5208 | |
|
d398661ad227
Pass the screenname properly to purple_account_request_authorization(), passing the nick (if available) separately. Store the nick for use in callbacks in data->nick where possible.
Evan Schoenberg <evands@pidgin.im>
parents:
16885
diff
changeset
|
5209 | purple_account_request_authorization(account, sn, NULL, |
|
d398661ad227
Pass the screenname properly to purple_account_request_authorization(), passing the nick (if available) separately. Store the nick for use in callbacks in data->nick where possible.
Evan Schoenberg <evands@pidgin.im>
parents:
16885
diff
changeset
|
5210 | (buddy ? purple_buddy_get_alias_only(buddy) : NULL), |
|
19335
4613b53d5741
Warning fixes in the aftermath of resiak's authorize_cb and deny_cb type fixing.
Daniel Atallah <datallah@pidgin.im>
parents:
19317
diff
changeset
|
5211 | reason, buddy != NULL, purple_auth_grant, |
|
4613b53d5741
Warning fixes in the aftermath of resiak's authorize_cb and deny_cb type fixing.
Daniel Atallah <datallah@pidgin.im>
parents:
19317
diff
changeset
|
5212 | purple_auth_dontgrant_msgprompt, data); |
| 15119 | 5213 | g_free(reason); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5214 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5215 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5216 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5217 | |
| 15884 | 5218 | static int purple_ssi_authreply(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 5219 | PurpleConnection *gc = od->gc; | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5220 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5221 | char *sn, *msg; |
| 4236 | 5222 | gchar *dialog_msg, *nombre; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
5223 | guint8 reply; |
| 15884 | 5224 | PurpleBuddy *buddy; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5225 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5226 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5227 | sn = va_arg(ap, char *); |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
5228 | reply = (guint8)va_arg(ap, int); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5229 | msg = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5230 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5231 | |
| 15884 | 5232 | purple_debug_info("oscar", |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
5233 | "ssi: received authorization reply from %s. Reply is 0x%04hhx\n", sn, reply); |
| 4236 | 5234 | |
| 15884 | 5235 | buddy = purple_find_buddy(gc->account, sn); |
| 5236 | if (buddy && (purple_buddy_get_alias_only(buddy))) | |
| 5237 | nombre = g_strdup_printf("%s (%s)", sn, purple_buddy_get_alias_only(buddy)); | |
| 4236 | 5238 | else |
| 5239 | nombre = g_strdup(sn); | |
| 5240 | ||
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5241 | if (reply) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5242 | /* Granted */ |
| 7023 | 5243 | dialog_msg = g_strdup_printf(_("The user %s has granted your request to add them to your buddy list."), nombre); |
| 15884 | 5244 | purple_notify_info(gc, NULL, _("Authorization Granted"), dialog_msg); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5245 | } else { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5246 | /* Denied */ |
| 7023 | 5247 | 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.")); |
| 15884 | 5248 | purple_notify_info(gc, NULL, _("Authorization Denied"), dialog_msg); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5249 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5250 | g_free(dialog_msg); |
| 4236 | 5251 | g_free(nombre); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5252 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5253 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5254 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5255 | |
| 15884 | 5256 | static int purple_ssi_gotadded(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 5257 | PurpleConnection *gc = od->gc; | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5258 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5259 | char *sn; |
| 15884 | 5260 | PurpleBuddy *buddy; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5261 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5262 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5263 | sn = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5264 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5265 | |
| 15884 | 5266 | buddy = purple_find_buddy(gc->account, sn); |
| 5267 | purple_debug_info("oscar", "ssi: %s added you to their buddy list\n", sn); | |
| 5268 | purple_account_notify_added(gc->account, sn, NULL, (buddy ? purple_buddy_get_alias_only(buddy) : NULL), NULL); | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5269 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5270 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5271 | } |
| 2086 | 5272 | |
| 15884 | 5273 | GList *oscar_chat_info(PurpleConnection *gc) { |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5274 | GList *m = NULL; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5275 | struct proto_chat_entry *pce; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5276 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5277 | pce = g_new0(struct proto_chat_entry, 1); |
|
9770
d61fe8dcb6d9
[gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9758
diff
changeset
|
5278 | pce->label = _("_Room:"); |
| 5234 | 5279 | pce->identifier = "room"; |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10472
diff
changeset
|
5280 | pce->required = TRUE; |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5281 | m = g_list_append(m, pce); |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5282 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5283 | pce = g_new0(struct proto_chat_entry, 1); |
|
7841
0000a4c68bf8
[gaim-migrate @ 8494]
Mark Doliner <markdoliner@pidgin.im>
parents:
7805
diff
changeset
|
5284 | pce->label = _("_Exchange:"); |
| 5234 | 5285 | pce->identifier = "exchange"; |
|
10475
1b7fe16233f3
[gaim-migrate @ 11762]
Richard Laager <rlaager@pidgin.im>
parents:
10472
diff
changeset
|
5286 | pce->required = TRUE; |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5287 | pce->is_int = TRUE; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5288 | pce->min = 4; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5289 | pce->max = 20; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5290 | m = g_list_append(m, pce); |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5291 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5292 | return m; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5293 | } |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5294 | |
| 15884 | 5295 | GHashTable *oscar_chat_info_defaults(PurpleConnection *gc, const char *chat_name) |
|
9754
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5296 | { |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5297 | GHashTable *defaults; |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5298 | |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5299 | defaults = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free); |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5300 | |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5301 | if (chat_name != NULL) |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5302 | g_hash_table_insert(defaults, "room", g_strdup(chat_name)); |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5303 | |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5304 | return defaults; |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5305 | } |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
5306 | |
| 15030 | 5307 | char * |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5308 | oscar_get_chat_name(GHashTable *data) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5309 | { |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9914
diff
changeset
|
5310 | return g_strdup(g_hash_table_lookup(data, "room")); |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9914
diff
changeset
|
5311 | } |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9914
diff
changeset
|
5312 | |
| 15030 | 5313 | void |
| 15884 | 5314 | oscar_join_chat(PurpleConnection *gc, GHashTable *data) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5315 | { |
|
8308
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
5316 | OscarData *od = (OscarData *)gc->proto_data; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5317 | FlapConnection *conn; |
| 5234 | 5318 | char *name, *exchange; |
| 5319 | ||
| 5320 | name = g_hash_table_lookup(data, "room"); | |
| 5321 | exchange = g_hash_table_lookup(data, "exchange"); | |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5322 | |
|
8308
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
5323 | if ((name == NULL) || (*name == '\0')) { |
| 15884 | 5324 | purple_notify_error(gc, NULL, _("Invalid chat name specified."), NULL); |
|
8308
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
5325 | return; |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
5326 | } |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
5327 | |
| 15884 | 5328 | purple_debug_info("oscar", "Attempting to join chat room %s.\n", name); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5329 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5330 | if ((conn = flap_connection_getbytype(od, SNAC_FAMILY_CHATNAV))) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5331 | { |
| 15884 | 5332 | purple_debug_info("oscar", "chatnav exists, creating room\n"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5333 | aim_chatnav_createroom(od, conn, name, atoi(exchange)); |
| 2086 | 5334 | } else { |
| 5335 | /* this gets tricky */ | |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
5336 | struct create_room *cr = g_new0(struct create_room, 1); |
| 15884 | 5337 | purple_debug_info("oscar", "chatnav does not exist, opening chatnav\n"); |
| 5234 | 5338 | cr->exchange = atoi(exchange); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
5339 | cr->name = g_strdup(name); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5340 | od->create_rooms = g_slist_prepend(od->create_rooms, cr); |
|
15147
101192282f5d
[gaim-migrate @ 17871]
Mark Doliner <markdoliner@pidgin.im>
parents:
15142
diff
changeset
|
5341 | aim_srv_requestnew(od, SNAC_FAMILY_CHATNAV); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5342 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5343 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5344 | |
| 15030 | 5345 | void |
| 15884 | 5346 | oscar_chat_invite(PurpleConnection *gc, int id, const char *message, const char *name) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5347 | { |
|
8308
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
5348 | OscarData *od = (OscarData *)gc->proto_data; |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
5349 | struct chat_connection *ccon = find_oscar_chat(gc, id); |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10401
diff
changeset
|
5350 | |
|
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10401
diff
changeset
|
5351 | if (ccon == NULL) |
| 2086 | 5352 | return; |
|
10404
9d66d897e96d
[gaim-migrate @ 11649]
Mark Doliner <markdoliner@pidgin.im>
parents:
10401
diff
changeset
|
5353 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5354 | aim_im_sendch2_chatinvite(od, name, message ? message : "", |
| 2086 | 5355 | ccon->exchange, ccon->name, 0x0); |
| 5356 | } | |
| 5357 | ||
| 15030 | 5358 | void |
| 15884 | 5359 | oscar_chat_leave(PurpleConnection *gc, int id) |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5360 | { |
| 15884 | 5361 | PurpleConversation *conv; |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5362 | struct chat_connection *cc; |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5363 | |
| 15884 | 5364 | conv = purple_find_chat(gc, id); |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5365 | |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5366 | g_return_if_fail(conv != NULL); |
|
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5367 | |
| 15884 | 5368 | purple_debug_info("oscar", "Leaving chat room %s\n", conv->name); |
| 5369 | ||
| 5370 | cc = find_oscar_chat(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv))); | |
|
10458
76fb2df916af
[gaim-migrate @ 11727]
Mark Doliner <markdoliner@pidgin.im>
parents:
10444
diff
changeset
|
5371 | oscar_chat_kill(gc, cc); |
| 2086 | 5372 | } |
| 5373 | ||
| 15884 | 5374 | int oscar_send_chat(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags) { |
| 8219 | 5375 | OscarData *od = (OscarData *)gc->proto_data; |
| 15884 | 5376 | PurpleConversation *conv = NULL; |
| 2086 | 5377 | struct chat_connection *c = NULL; |
|
17691
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5378 | char *buf, *buf2, *buf3; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
5379 | guint16 charset, charsubset; |
|
9807
ff713acc7204
[gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents:
9806
diff
changeset
|
5380 | char *charsetstr = NULL; |
| 10111 | 5381 | int len; |
| 8219 | 5382 | |
| 15884 | 5383 | if (!(conv = purple_find_chat(gc, id))) |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5384 | return -EINVAL; |
| 2086 | 5385 | |
| 8219 | 5386 | if (!(c = find_oscar_chat_by_conv(gc, conv))) |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5387 | return -EINVAL; |
| 2086 | 5388 | |
| 15884 | 5389 | buf = purple_strdup_withhtml(message); |
| 8219 | 5390 | |
| 8962 | 5391 | if (strstr(buf, "<IMG ")) |
| 15884 | 5392 | purple_conversation_write(conv, "", |
|
13227
f011e198f246
[gaim-migrate @ 15591]
Mark Doliner <markdoliner@pidgin.im>
parents:
13201
diff
changeset
|
5393 | _("Your IM Image was not sent. " |
|
f011e198f246
[gaim-migrate @ 15591]
Mark Doliner <markdoliner@pidgin.im>
parents:
13201
diff
changeset
|
5394 | "You cannot send IM Images in AIM chats."), |
| 15884 | 5395 | PURPLE_MESSAGE_ERROR, time(NULL)); |
| 5396 | ||
| 5397 | purple_plugin_oscar_convert_to_best_encoding(gc, NULL, buf, &buf2, &len, &charset, &charsubset); | |
|
13697
9c6e76398a20
[gaim-migrate @ 16098]
Mark Doliner <markdoliner@pidgin.im>
parents:
13674
diff
changeset
|
5398 | /* |
|
9c6e76398a20
[gaim-migrate @ 16098]
Mark Doliner <markdoliner@pidgin.im>
parents:
13674
diff
changeset
|
5399 | * Evan S. suggested that maxvis really does mean "number of |
|
9c6e76398a20
[gaim-migrate @ 16098]
Mark Doliner <markdoliner@pidgin.im>
parents:
13674
diff
changeset
|
5400 | * visible characters" and not "number of bytes" |
|
9c6e76398a20
[gaim-migrate @ 16098]
Mark Doliner <markdoliner@pidgin.im>
parents:
13674
diff
changeset
|
5401 | */ |
|
8359
3c62ea91eba8
[gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents:
8353
diff
changeset
|
5402 | if ((len > c->maxlen) || (len > c->maxvis)) { |
|
17691
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5403 | /* If the length was too long, try stripping the HTML and then running it back through |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5404 | * purple_strdup_withhtml() and the encoding process. The result may be shorter. */ |
|
8359
3c62ea91eba8
[gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents:
8353
diff
changeset
|
5405 | g_free(buf2); |
|
17691
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5406 | |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5407 | buf3 = purple_markup_strip_html(buf); |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5408 | g_free(buf); |
|
17693
fe721863e669
Remove a pair of unneeded strlen's
Mark Doliner <markdoliner@pidgin.im>
parents:
17692
diff
changeset
|
5409 | |
|
17691
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5410 | buf = purple_strdup_withhtml(buf3); |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5411 | g_free(buf3); |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5412 | |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5413 | purple_plugin_oscar_convert_to_best_encoding(gc, NULL, buf, &buf2, &len, &charset, &charsubset); |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5414 | |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5415 | if ((len > c->maxlen) || (len > c->maxvis)) { |
|
19832
84b69b21672b
Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19820
diff
changeset
|
5416 | purple_debug_warning("oscar", "Could not send %s because (%i > maxlen %i) or (%i > maxvis %i)\n", |
|
17691
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5417 | buf2, len, c->maxlen, len, c->maxvis); |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5418 | g_free(buf); |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5419 | g_free(buf2); |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5420 | return -E2BIG; |
|
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5421 | } |
|
17693
fe721863e669
Remove a pair of unneeded strlen's
Mark Doliner <markdoliner@pidgin.im>
parents:
17692
diff
changeset
|
5422 | |
|
19832
84b69b21672b
Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19820
diff
changeset
|
5423 | purple_debug_info("oscar", "Sending %s as %s because the original was too long.\n", |
|
17693
fe721863e669
Remove a pair of unneeded strlen's
Mark Doliner <markdoliner@pidgin.im>
parents:
17692
diff
changeset
|
5424 | message, buf2); |
|
8359
3c62ea91eba8
[gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents:
8353
diff
changeset
|
5425 | } |
|
3c62ea91eba8
[gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents:
8353
diff
changeset
|
5426 | |
|
9831
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
5427 | if (charset == AIM_CHARSET_ASCII) |
|
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
5428 | charsetstr = "us-ascii"; |
|
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
5429 | else if (charset == AIM_CHARSET_UNICODE) |
|
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
5430 | charsetstr = "unicode-2-0"; |
|
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
5431 | else if (charset == AIM_CHARSET_CUSTOM) |
|
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
5432 | charsetstr = "iso-8859-1"; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5433 | aim_chat_send_im(od, c->conn, 0, buf2, len, charsetstr, "en"); |
| 8219 | 5434 | g_free(buf2); |
|
17691
75e11249e431
If a message is known to be too long to send to a chat or IM, and it's an HTML message, strip the HTML, re-encode, and try again. The chat part is particularly useful given the short maximum message length and the fact that purple_markup_linkify() will have linkified long links to being twice the number of characters. The IM part is not triggerred in my experience because MAXMSGLEN seems to be far above the number of characters allowed; perhaps it is a number of bytes, not characters?
Evan Schoenberg <evands@pidgin.im>
parents:
17668
diff
changeset
|
5435 | g_free(buf); |
|
8359
3c62ea91eba8
[gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents:
8353
diff
changeset
|
5436 | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5437 | return 0; |
| 2086 | 5438 | } |
| 5439 | ||
| 15884 | 5440 | const char *oscar_list_icon_icq(PurpleAccount *a, PurpleBuddy *b) |
| 15030 | 5441 | { |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
5442 | if ((b == NULL) || (b->name == NULL) || aim_snvalid_sms(b->name)) |
| 15030 | 5443 | { |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
5444 | if (a == NULL || aim_snvalid_icq(purple_account_get_username(a))) |
| 15030 | 5445 | return "icq"; |
| 5446 | else | |
| 5447 | return "aim"; | |
| 5448 | } | |
| 5449 | ||
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
5450 | if (aim_snvalid_icq(b->name)) |
| 15030 | 5451 | return "icq"; |
| 5452 | return "aim"; | |
| 5453 | } | |
| 5454 | ||
| 15884 | 5455 | const char *oscar_list_icon_aim(PurpleAccount *a, PurpleBuddy *b) |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
5456 | { |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
5457 | if ((b == NULL) || (b->name == NULL) || aim_snvalid_sms(b->name)) |
|
13655
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
5458 | { |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
5459 | if (a != NULL && aim_snvalid_icq(purple_account_get_username(a))) |
| 4687 | 5460 | return "icq"; |
| 5461 | else | |
| 5462 | return "aim"; | |
| 5463 | } | |
|
5646
0aa637549d87
[gaim-migrate @ 6060]
Christian Hammond <chipx86@chipx86.com>
parents:
5638
diff
changeset
|
5464 | |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
5465 | if (aim_snvalid_icq(b->name)) |
| 4687 | 5466 | return "icq"; |
| 5467 | return "aim"; | |
| 5468 | } | |
| 5469 | ||
| 15884 | 5470 | const char* oscar_list_emblem(PurpleBuddy *b) |
| 4687 | 5471 | { |
| 15884 | 5472 | PurpleConnection *gc = NULL; |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5473 | OscarData *od = NULL; |
| 15884 | 5474 | PurpleAccount *account = NULL; |
| 5475 | PurplePresence *presence; | |
| 5476 | PurpleStatus *status; | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
5477 | const char *status_id; |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5478 | aim_userinfo_t *userinfo = NULL; |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5479 | |
|
13655
b8dda7d78514
[gaim-migrate @ 16056]
Mark Doliner <markdoliner@pidgin.im>
parents:
13641
diff
changeset
|
5480 | account = b->account; |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5481 | if (account != NULL) |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5482 | gc = account->gc; |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5483 | if (gc != NULL) |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5484 | od = gc->proto_data; |
|
7945
7270cd25f841
[gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents:
7880
diff
changeset
|
5485 | if (od != NULL) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5486 | userinfo = aim_locate_finduserinfo(od, b->name); |
| 4687 | 5487 | |
| 15884 | 5488 | presence = purple_buddy_get_presence(b); |
| 5489 | status = purple_presence_get_active_status(presence); | |
| 5490 | status_id = purple_status_get_id(status); | |
| 5491 | ||
| 5492 | if (purple_presence_is_online(presence) == FALSE) { | |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5493 | char *gname; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5494 | if ((b->name) && (od) && (od->ssi.received_data) && |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5495 | (gname = aim_ssi_itemlist_findparentname(od->ssi.local, b->name)) && |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5496 | (aim_ssi_waitingforauth(od->ssi.local, gname, b->name))) { |
| 15524 | 5497 | return "not-authorized"; |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5498 | } |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5499 | } |
| 15524 | 5500 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
5501 | if (userinfo != NULL ) { |
| 15524 | 5502 | if (userinfo->flags & AIM_FLAG_ADMINISTRATOR) |
| 5503 | return "admin"; | |
| 5504 | if (userinfo->flags & AIM_FLAG_ACTIVEBUDDY) | |
| 5505 | return "bot"; | |
|
16851
e55f1961ad53
We're told by users that Hiptop is not the same thing as mobile, and should not be treated as such.
Sean Egan <seanegan@pidgin.im>
parents:
16821
diff
changeset
|
5506 | if (userinfo->capabilities & OSCAR_CAPABILITY_HIPTOP) |
|
e55f1961ad53
We're told by users that Hiptop is not the same thing as mobile, and should not be treated as such.
Sean Egan <seanegan@pidgin.im>
parents:
16821
diff
changeset
|
5507 | return "hiptop"; |
| 15524 | 5508 | if (userinfo->capabilities & OSCAR_CAPABILITY_SECUREIM) |
| 5509 | return "secure"; | |
|
20651
de8514d357d3
Use birthday emblem in OSCAR. Fixes #300
Sean Egan <seanegan@pidgin.im>
parents:
19865
diff
changeset
|
5510 | if (userinfo->icqinfo.status & AIM_ICQ_STATE_BIRTHDAY) |
|
de8514d357d3
Use birthday emblem in OSCAR. Fixes #300
Sean Egan <seanegan@pidgin.im>
parents:
19865
diff
changeset
|
5511 | return "birthday"; |
| 15524 | 5512 | } |
| 5513 | return NULL; | |
| 4687 | 5514 | } |
| 5515 | ||
| 15884 | 5516 | void oscar_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full) { |
| 5517 | PurpleConnection *gc = b->account->gc; | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5518 | OscarData *od = gc->proto_data; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5519 | aim_userinfo_t *userinfo = aim_locate_finduserinfo(od, b->name); |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5520 | |
| 15884 | 5521 | if (PURPLE_BUDDY_IS_ONLINE(b)) { |
| 5522 | PurplePresence *presence; | |
| 5523 | PurpleStatus *status; | |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5524 | const char *message; |
|
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5525 | |
|
12948
0867a553ed26
[gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents:
12946
diff
changeset
|
5526 | if (full) |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
15204
diff
changeset
|
5527 | oscar_string_append_info(gc, user_info, b, userinfo); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5528 | |
| 15884 | 5529 | presence = purple_buddy_get_presence(b); |
| 5530 | status = purple_presence_get_active_status(presence); | |
| 5531 | message = purple_status_get_attr_string(status, "message"); | |
| 5532 | ||
| 5533 | if (purple_status_is_available(status)) | |
|
12433
d2ad67babd06
[gaim-migrate @ 14740]
Mark Doliner <markdoliner@pidgin.im>
parents:
12430
diff
changeset
|
5534 | { |
|
d2ad67babd06
[gaim-migrate @ 14740]
Mark Doliner <markdoliner@pidgin.im>
parents:
12430
diff
changeset
|
5535 | if (message != NULL) |
|
d2ad67babd06
[gaim-migrate @ 14740]
Mark Doliner <markdoliner@pidgin.im>
parents:
12430
diff
changeset
|
5536 | { |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5537 | /* Available status messages are plain text */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5538 | gchar *tmp; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5539 | tmp = g_markup_escape_text(message, -1); |
| 15884 | 5540 | purple_notify_user_info_add_pair(user_info, _("Message"), tmp); |
|
13452
1aeb81a13082
[gaim-migrate @ 15826]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
13382
diff
changeset
|
5541 | g_free(tmp); |
|
12433
d2ad67babd06
[gaim-migrate @ 14740]
Mark Doliner <markdoliner@pidgin.im>
parents:
12430
diff
changeset
|
5542 | } |
|
d2ad67babd06
[gaim-migrate @ 14740]
Mark Doliner <markdoliner@pidgin.im>
parents:
12430
diff
changeset
|
5543 | } |
|
d2ad67babd06
[gaim-migrate @ 14740]
Mark Doliner <markdoliner@pidgin.im>
parents:
12430
diff
changeset
|
5544 | else |
|
d2ad67babd06
[gaim-migrate @ 14740]
Mark Doliner <markdoliner@pidgin.im>
parents:
12430
diff
changeset
|
5545 | { |
|
d2ad67babd06
[gaim-migrate @ 14740]
Mark Doliner <markdoliner@pidgin.im>
parents:
12430
diff
changeset
|
5546 | if (message != NULL) |
|
d2ad67babd06
[gaim-migrate @ 14740]
Mark Doliner <markdoliner@pidgin.im>
parents:
12430
diff
changeset
|
5547 | { |
|
12189
34cdc686d8cb
[gaim-migrate @ 14491]
Evan Schoenberg <evands@pidgin.im>
parents:
12143
diff
changeset
|
5548 | /* Away messages are HTML */ |
|
7091
4430f44e86ad
[gaim-migrate @ 7656]
Mark Doliner <markdoliner@pidgin.im>
parents:
7083
diff
changeset
|
5549 | gchar *tmp1, *tmp2; |
| 15884 | 5550 | tmp2 = purple_markup_strip_html(message); |
|
10732
5e314ab498bf
[gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents:
10715
diff
changeset
|
5551 | tmp1 = g_markup_escape_text(tmp2, -1); |
|
7091
4430f44e86ad
[gaim-migrate @ 7656]
Mark Doliner <markdoliner@pidgin.im>
parents:
7083
diff
changeset
|
5552 | g_free(tmp2); |
| 15884 | 5553 | tmp2 = purple_str_sub_away_formatters(tmp1, purple_account_get_username(purple_connection_get_account(gc))); |
|
8461
920171a59e45
[gaim-migrate @ 9191]
Mark Doliner <markdoliner@pidgin.im>
parents:
8446
diff
changeset
|
5554 | g_free(tmp1); |
| 15884 | 5555 | purple_notify_user_info_add_pair(user_info, _("Away Message"), tmp2); |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
5556 | g_free(tmp2); |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
5557 | } |
|
12433
d2ad67babd06
[gaim-migrate @ 14740]
Mark Doliner <markdoliner@pidgin.im>
parents:
12430
diff
changeset
|
5558 | else |
|
d2ad67babd06
[gaim-migrate @ 14740]
Mark Doliner <markdoliner@pidgin.im>
parents:
12430
diff
changeset
|
5559 | { |
| 15884 | 5560 | purple_notify_user_info_add_pair(user_info, _("Away Message"), _("<i>(retrieving)</i>")); |
|
12433
d2ad67babd06
[gaim-migrate @ 14740]
Mark Doliner <markdoliner@pidgin.im>
parents:
12430
diff
changeset
|
5561 | } |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5562 | } |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5563 | } |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5564 | } |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5565 | |
| 15884 | 5566 | char *oscar_status_text(PurpleBuddy *b) |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
5567 | { |
| 15884 | 5568 | PurpleConnection *gc; |
| 5569 | PurpleAccount *account; | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
5570 | OscarData *od; |
| 15884 | 5571 | const PurplePresence *presence; |
| 5572 | const PurpleStatus *status; | |
|
12347
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5573 | const char *id; |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5574 | const char *message; |
|
5167
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5575 | gchar *ret = NULL; |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5576 | |
| 15884 | 5577 | gc = purple_account_get_connection(purple_buddy_get_account(b)); |
| 5578 | account = purple_connection_get_account(gc); | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
5579 | od = gc->proto_data; |
| 15884 | 5580 | presence = purple_buddy_get_presence(b); |
| 5581 | status = purple_presence_get_active_status(presence); | |
| 5582 | id = purple_status_get_id(status); | |
| 5583 | ||
|
18269
0d9c99752498
Fix for a crash when trying to get oscar_status_text for a buddy on an
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
18197
diff
changeset
|
5584 | if ((od != NULL) && !purple_presence_is_online(presence)) |
|
11248
18bdab55515d
[gaim-migrate @ 13417]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11238
diff
changeset
|
5585 | { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5586 | char *gname = aim_ssi_itemlist_findparentname(od->ssi.local, b->name); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5587 | if (aim_ssi_waitingforauth(od->ssi.local, gname, b->name)) |
|
5167
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5588 | ret = g_strdup(_("Not Authorized")); |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5589 | else |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5590 | ret = g_strdup(_("Offline")); |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5591 | } |
| 15884 | 5592 | else if (purple_status_is_available(status) && !strcmp(id, OSCAR_STATUS_ID_AVAILABLE)) |
|
12347
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5593 | { |
|
12365
69cf8ac53d5a
[gaim-migrate @ 14669]
Mark Doliner <markdoliner@pidgin.im>
parents:
12361
diff
changeset
|
5594 | /* Available */ |
| 15884 | 5595 | message = purple_status_get_attr_string(status, "message"); |
|
12347
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5596 | if (message != NULL) |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5597 | { |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5598 | ret = g_markup_escape_text(message, -1); |
| 15884 | 5599 | purple_util_chrreplace(ret, '\n', ' '); |
|
12347
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5600 | } |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5601 | } |
| 15884 | 5602 | else if (!purple_status_is_available(status) && !strcmp(id, OSCAR_STATUS_ID_AWAY)) |
|
11248
18bdab55515d
[gaim-migrate @ 13417]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11238
diff
changeset
|
5603 | { |
|
12365
69cf8ac53d5a
[gaim-migrate @ 14669]
Mark Doliner <markdoliner@pidgin.im>
parents:
12361
diff
changeset
|
5604 | /* Away */ |
| 15884 | 5605 | message = purple_status_get_attr_string(status, "message"); |
|
12347
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5606 | if (message != NULL) |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5607 | { |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5608 | gchar *tmp1, *tmp2; |
| 15884 | 5609 | tmp1 = purple_markup_strip_html(message); |
| 5610 | purple_util_chrreplace(tmp1, '\n', ' '); | |
|
12347
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5611 | tmp2 = g_markup_escape_text(tmp1, -1); |
| 15884 | 5612 | ret = purple_str_sub_away_formatters(tmp2, purple_account_get_username(account)); |
|
12347
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5613 | g_free(tmp1); |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5614 | g_free(tmp2); |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5615 | } |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5616 | else |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5617 | { |
|
5b3fea126c69
[gaim-migrate @ 14651]
Mark Doliner <markdoliner@pidgin.im>
parents:
12344
diff
changeset
|
5618 | ret = g_strdup(_("Away")); |
|
11510
8f618fb35bd3
[gaim-migrate @ 13755]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11495
diff
changeset
|
5619 | } |
|
11248
18bdab55515d
[gaim-migrate @ 13417]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11238
diff
changeset
|
5620 | } |
|
18bdab55515d
[gaim-migrate @ 13417]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11238
diff
changeset
|
5621 | else |
| 15884 | 5622 | ret = g_strdup(purple_status_get_name(status)); |
|
5167
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5623 | |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5624 | return ret; |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5625 | } |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5626 | |
| 5842 | 5627 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5628 | static int oscar_icon_req(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { |
| 15884 | 5629 | PurpleConnection *gc = od->gc; |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5630 | va_list ap; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
5631 | guint16 type; |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
5632 | guint8 flags = 0, length = 0; |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
5633 | guchar *md5 = NULL; |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5634 | |
| 5842 | 5635 | va_start(ap, fr); |
| 5636 | type = va_arg(ap, int); | |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5637 | |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5638 | switch(type) { |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5639 | case 0x0000: |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5640 | case 0x0001: { |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5641 | flags = va_arg(ap, int); |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5642 | length = va_arg(ap, int); |
|
11159
76ef02141bcb
[gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents:
11155
diff
changeset
|
5643 | md5 = va_arg(ap, guchar *); |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5644 | |
|
16885
7d49d9448682
flags of 0x00 in oscar_icon_req() can apparently mean 'you should upload your buddy icon' just as flags of 0x41 can. I'm really unclear as to why Adium with libpurple is getting the 0x00 response while Pidgin with the same libpurple code is getting 0x41 after sending identical data (with identical md5 hashes) for a buddy icon... but that's the way it is. This may fix other conditions in which AIM people claim that their buddy icon isn't being properly set; further insight into what's going on would certainly be appreciated.
Evan Schoenberg <evands@pidgin.im>
parents:
16876
diff
changeset
|
5645 | if ((flags == 0x00) || (flags == 0x41)) { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5646 | if (!flap_connection_getbytype(od, SNAC_FAMILY_BART) && !od->iconconnecting) { |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5647 | od->iconconnecting = TRUE; |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5648 | od->set_icon = TRUE; |
|
15147
101192282f5d
[gaim-migrate @ 17871]
Mark Doliner <markdoliner@pidgin.im>
parents:
15142
diff
changeset
|
5649 | aim_srv_requestnew(od, SNAC_FAMILY_BART); |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5650 | } else { |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
5651 | PurpleAccount *account = purple_connection_get_account(gc); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
5652 | PurpleStoredImage *img = purple_buddy_icons_find_account_icon(account); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
5653 | if (img == NULL) { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5654 | aim_ssi_delicon(od); |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
5655 | } else { |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
5656 | |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
5657 | purple_debug_info("oscar", |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
5658 | "Uploading icon to icon server\n"); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
5659 | aim_bart_upload(od, purple_imgstore_get_data(img), |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
5660 | purple_imgstore_get_size(img)); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
5661 | purple_imgstore_unref(img); |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5662 | } |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5663 | } |
| 8363 | 5664 | } else if (flags == 0x81) { |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
5665 | PurpleAccount *account = purple_connection_get_account(gc); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
5666 | PurpleStoredImage *img = purple_buddy_icons_find_account_icon(account); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
5667 | if (img == NULL) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5668 | aim_ssi_delicon(od); |
|
11303
448b8bae1ca7
[gaim-migrate @ 13503]
Richard Laager <rlaager@pidgin.im>
parents:
11285
diff
changeset
|
5669 | else { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5670 | aim_ssi_seticon(od, md5, length); |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
5671 | purple_imgstore_unref(img); |
|
11303
448b8bae1ca7
[gaim-migrate @ 13503]
Richard Laager <rlaager@pidgin.im>
parents:
11285
diff
changeset
|
5672 | } |
| 8363 | 5673 | } |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5674 | } break; |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5675 | |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5676 | case 0x0002: { /* We just set an "available" message? */ |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5677 | } break; |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5678 | } |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5679 | |
| 5842 | 5680 | va_end(ap); |
|
5844
a0f8b06669e7
[gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents:
5842
diff
changeset
|
5681 | |
|
a0f8b06669e7
[gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents:
5842
diff
changeset
|
5682 | return 0; |
| 5842 | 5683 | } |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5684 | |
| 15884 | 5685 | void oscar_set_permit_deny(PurpleConnection *gc) { |
| 5686 | PurpleAccount *account = purple_connection_get_account(gc); | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5687 | OscarData *od = (OscarData *)gc->proto_data; |
|
10866
40eab743e22b
[gaim-migrate @ 12552]
Mark Doliner <markdoliner@pidgin.im>
parents:
10860
diff
changeset
|
5688 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5689 | if (od->ssi.received_data) { |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
5690 | switch (account->perm_deny) { |
| 15884 | 5691 | case PURPLE_PRIVACY_ALLOW_ALL: |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5692 | aim_ssi_setpermdeny(od, 0x01, 0xffffffff); |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
5693 | break; |
| 15884 | 5694 | case PURPLE_PRIVACY_ALLOW_BUDDYLIST: |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5695 | aim_ssi_setpermdeny(od, 0x05, 0xffffffff); |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
5696 | break; |
| 15884 | 5697 | case PURPLE_PRIVACY_ALLOW_USERS: |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5698 | aim_ssi_setpermdeny(od, 0x03, 0xffffffff); |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
5699 | break; |
| 15884 | 5700 | case PURPLE_PRIVACY_DENY_ALL: |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5701 | aim_ssi_setpermdeny(od, 0x02, 0xffffffff); |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
5702 | break; |
| 15884 | 5703 | case PURPLE_PRIVACY_DENY_USERS: |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5704 | aim_ssi_setpermdeny(od, 0x04, 0xffffffff); |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
5705 | break; |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
5706 | default: |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5707 | aim_ssi_setpermdeny(od, 0x01, 0xffffffff); |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
5708 | break; |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
5709 | } |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
5710 | } |
| 2086 | 5711 | } |
| 5712 | ||
| 15884 | 5713 | void oscar_add_permit(PurpleConnection *gc, const char *who) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5714 | OscarData *od = (OscarData *)gc->proto_data; |
| 15884 | 5715 | purple_debug_info("oscar", "ssi: About to add a permit\n"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5716 | if (od->ssi.received_data) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5717 | aim_ssi_addpermit(od, who); |
| 2086 | 5718 | } |
| 5719 | ||
| 15884 | 5720 | void oscar_add_deny(PurpleConnection *gc, const char *who) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5721 | OscarData *od = (OscarData *)gc->proto_data; |
| 15884 | 5722 | purple_debug_info("oscar", "ssi: About to add a deny\n"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5723 | if (od->ssi.received_data) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5724 | aim_ssi_adddeny(od, who); |
| 2086 | 5725 | } |
| 5726 | ||
| 15884 | 5727 | void oscar_rem_permit(PurpleConnection *gc, const char *who) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5728 | OscarData *od = (OscarData *)gc->proto_data; |
| 15884 | 5729 | purple_debug_info("oscar", "ssi: About to delete a permit\n"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5730 | if (od->ssi.received_data) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5731 | aim_ssi_delpermit(od, who); |
| 2086 | 5732 | } |
| 5733 | ||
| 15884 | 5734 | void oscar_rem_deny(PurpleConnection *gc, const char *who) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5735 | OscarData *od = (OscarData *)gc->proto_data; |
| 15884 | 5736 | purple_debug_info("oscar", "ssi: About to delete a deny\n"); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5737 | if (od->ssi.received_data) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5738 | aim_ssi_deldeny(od, who); |
| 2086 | 5739 | } |
| 5740 | ||
| 15030 | 5741 | GList * |
| 15884 | 5742 | oscar_status_types(PurpleAccount *account) |
| 2086 | 5743 | { |
|
12662
061eb8a9e421
[gaim-migrate @ 15005]
Mark Doliner <markdoliner@pidgin.im>
parents:
12661
diff
changeset
|
5744 | gboolean is_icq; |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
5745 | GList *status_types = NULL; |
| 15884 | 5746 | PurpleStatusType *type; |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
5747 | |
|
9973
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
5748 | g_return_val_if_fail(account != NULL, NULL); |
|
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
5749 | |
|
13007
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
5750 | /* Used to flag some statuses as "user settable" or not */ |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
5751 | is_icq = aim_snvalid_icq(purple_account_get_username(account)); |
|
12662
061eb8a9e421
[gaim-migrate @ 15005]
Mark Doliner <markdoliner@pidgin.im>
parents:
12661
diff
changeset
|
5752 | |
|
13007
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
5753 | /* Common status types */ |
|
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
5754 | /* Really the available message should only be settable for AIM accounts */ |
| 15884 | 5755 | type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE, |
|
13007
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
5756 | OSCAR_STATUS_ID_AVAILABLE, |
|
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
5757 | NULL, TRUE, TRUE, FALSE, |
|
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
5758 | "message", _("Message"), |
| 15884 | 5759 | purple_value_new(PURPLE_TYPE_STRING), |
|
15689
bcf3c0ddb974
Allow setting of the iTunes Music Store URL for AIM accounts. It's
Mark Doliner <markdoliner@pidgin.im>
parents:
15686
diff
changeset
|
5760 | "itmsurl", _("iTunes Music Store Link"), |
| 15884 | 5761 | purple_value_new(PURPLE_TYPE_STRING), NULL); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5762 | status_types = g_list_prepend(status_types, type); |
|
13007
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
5763 | |
| 15884 | 5764 | type = purple_status_type_new_full(PURPLE_STATUS_AVAILABLE, |
|
13007
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
5765 | OSCAR_STATUS_ID_FREE4CHAT, |
|
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
5766 | _("Free For Chat"), TRUE, is_icq, FALSE); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5767 | status_types = g_list_prepend(status_types, type); |
|
9976
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
5768 | |
| 15884 | 5769 | type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY, |
|
10195
18379f7920fa
[gaim-migrate @ 11310]
Mark Doliner <markdoliner@pidgin.im>
parents:
10157
diff
changeset
|
5770 | OSCAR_STATUS_ID_AWAY, |
|
12595
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12588
diff
changeset
|
5771 | NULL, TRUE, TRUE, FALSE, |
|
10195
18379f7920fa
[gaim-migrate @ 11310]
Mark Doliner <markdoliner@pidgin.im>
parents:
10157
diff
changeset
|
5772 | "message", _("Message"), |
| 15884 | 5773 | purple_value_new(PURPLE_TYPE_STRING), NULL); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5774 | status_types = g_list_prepend(status_types, type); |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
5775 | |
| 15884 | 5776 | type = purple_status_type_new_full(PURPLE_STATUS_INVISIBLE, |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
5777 | OSCAR_STATUS_ID_INVISIBLE, |
|
12595
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12588
diff
changeset
|
5778 | NULL, TRUE, TRUE, FALSE); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5779 | status_types = g_list_prepend(status_types, type); |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
5780 | |
| 15884 | 5781 | type = purple_status_type_new_full(PURPLE_STATUS_MOBILE, OSCAR_STATUS_ID_MOBILE, NULL, FALSE, FALSE, TRUE); |
|
15588
e6e89a427ed5
Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents:
15524
diff
changeset
|
5782 | status_types = g_list_prepend(status_types, type); |
|
e6e89a427ed5
Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents:
15524
diff
changeset
|
5783 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
5784 | /* ICQ-specific status types */ |
| 15884 | 5785 | type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE, |
|
14209
f629f12af598
[gaim-migrate @ 16791]
Henning Norén <henning.noren@gmail.com>
parents:
14171
diff
changeset
|
5786 | OSCAR_STATUS_ID_OCCUPIED, |
|
f629f12af598
[gaim-migrate @ 16791]
Henning Norén <henning.noren@gmail.com>
parents:
14171
diff
changeset
|
5787 | _("Occupied"), TRUE, is_icq, FALSE, |
|
f629f12af598
[gaim-migrate @ 16791]
Henning Norén <henning.noren@gmail.com>
parents:
14171
diff
changeset
|
5788 | "message", _("Message"), |
| 15884 | 5789 | purple_value_new(PURPLE_TYPE_STRING), NULL); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5790 | status_types = g_list_prepend(status_types, type); |
|
13007
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
5791 | |
|
16462
7a2c98e06f77
Sean proposed changing ICQ's "do not disturb" status from being
Mark Doliner <markdoliner@pidgin.im>
parents:
16405
diff
changeset
|
5792 | type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE, |
|
14209
f629f12af598
[gaim-migrate @ 16791]
Henning Norén <henning.noren@gmail.com>
parents:
14171
diff
changeset
|
5793 | OSCAR_STATUS_ID_DND, |
|
f629f12af598
[gaim-migrate @ 16791]
Henning Norén <henning.noren@gmail.com>
parents:
14171
diff
changeset
|
5794 | _("Do Not Disturb"), TRUE, is_icq, FALSE, |
|
f629f12af598
[gaim-migrate @ 16791]
Henning Norén <henning.noren@gmail.com>
parents:
14171
diff
changeset
|
5795 | "message", _("Message"), |
| 15884 | 5796 | purple_value_new(PURPLE_TYPE_STRING), NULL); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5797 | status_types = g_list_prepend(status_types, type); |
|
13007
8878d47d3595
[gaim-migrate @ 15360]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
5798 | |
| 15884 | 5799 | type = purple_status_type_new_with_attrs(PURPLE_STATUS_EXTENDED_AWAY, |
|
14209
f629f12af598
[gaim-migrate @ 16791]
Henning Norén <henning.noren@gmail.com>
parents:
14171
diff
changeset
|
5800 | OSCAR_STATUS_ID_NA, |
|
f629f12af598
[gaim-migrate @ 16791]
Henning Norén <henning.noren@gmail.com>
parents:
14171
diff
changeset
|
5801 | _("Not Available"), TRUE, is_icq, FALSE, |
|
f629f12af598
[gaim-migrate @ 16791]
Henning Norén <henning.noren@gmail.com>
parents:
14171
diff
changeset
|
5802 | "message", _("Message"), |
| 15884 | 5803 | purple_value_new(PURPLE_TYPE_STRING), NULL); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5804 | status_types = g_list_prepend(status_types, type); |
|
12658
4aa7a873628d
[gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents:
12655
diff
changeset
|
5805 | |
| 15884 | 5806 | type = purple_status_type_new_full(PURPLE_STATUS_OFFLINE, |
|
12658
4aa7a873628d
[gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents:
12655
diff
changeset
|
5807 | OSCAR_STATUS_ID_OFFLINE, |
|
4aa7a873628d
[gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents:
12655
diff
changeset
|
5808 | NULL, TRUE, TRUE, FALSE); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5809 | status_types = g_list_prepend(status_types, type); |
|
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5810 | |
|
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5811 | status_types = g_list_reverse(status_types); |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
5812 | |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
5813 | return status_types; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5814 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5815 | |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5816 | static void oscar_ssi_editcomment(struct name_data *data, const char *text) { |
| 15884 | 5817 | PurpleConnection *gc = data->gc; |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5818 | OscarData *od = gc->proto_data; |
| 15884 | 5819 | PurpleBuddy *b; |
| 5820 | PurpleGroup *g; | |
| 5821 | ||
| 5822 | if (!(b = purple_find_buddy(purple_connection_get_account(data->gc), data->name))) { | |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5823 | oscar_free_name_data(data); |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5824 | return; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5825 | } |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5826 | |
| 15884 | 5827 | if (!(g = purple_buddy_get_group(b))) { |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5828 | oscar_free_name_data(data); |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5829 | return; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5830 | } |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5831 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5832 | aim_ssi_editcomment(od, g->name, data->name, text); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5833 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5834 | if (!aim_sncmp(data->name, gc->account->username)) |
| 15884 | 5835 | purple_check_comment(od, text); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5836 | |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5837 | oscar_free_name_data(data); |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5838 | } |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5839 | |
| 15884 | 5840 | static void oscar_buddycb_edit_comment(PurpleBlistNode *node, gpointer ignore) { |
| 5841 | ||
| 5842 | PurpleBuddy *buddy; | |
| 5843 | PurpleConnection *gc; | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
5844 | OscarData *od; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
5845 | struct name_data *data; |
| 15884 | 5846 | PurpleGroup *g; |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5847 | char *comment; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5848 | gchar *comment_utf8; |
| 9631 | 5849 | gchar *title; |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5850 | |
| 15884 | 5851 | g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); |
| 5852 | ||
| 5853 | buddy = (PurpleBuddy *) node; | |
| 5854 | gc = purple_account_get_connection(buddy->account); | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
5855 | od = gc->proto_data; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
5856 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
5857 | data = g_new(struct name_data, 1); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
5858 | |
| 15884 | 5859 | if (!(g = purple_buddy_get_group(buddy))) |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5860 | return; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5861 | comment = aim_ssi_getcomment(od->ssi.local, g->name, buddy->name); |
|
12608
6223da35dc2f
[gaim-migrate @ 14944]
Richard Laager <rlaager@pidgin.im>
parents:
12603
diff
changeset
|
5862 | comment_utf8 = comment ? oscar_utf8_try_convert(gc->account, comment) : NULL; |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5863 | |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5864 | data->gc = gc; |
|
16938
d398661ad227
Pass the screenname properly to purple_account_request_authorization(), passing the nick (if available) separately. Store the nick for use in callbacks in data->nick where possible.
Evan Schoenberg <evands@pidgin.im>
parents:
16885
diff
changeset
|
5865 | data->name = g_strdup(purple_buddy_get_name(buddy)); |
|
d398661ad227
Pass the screenname properly to purple_account_request_authorization(), passing the nick (if available) separately. Store the nick for use in callbacks in data->nick where possible.
Evan Schoenberg <evands@pidgin.im>
parents:
16885
diff
changeset
|
5866 | data->nick = g_strdup(purple_buddy_get_alias_only(buddy)); |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5867 | |
| 9631 | 5868 | title = g_strdup_printf(_("Buddy Comment for %s"), data->name); |
|
20685
039aef89faf6
Updated hinting to be less invasive
Gabriel Schulhof <nix@go-nix.ca>
parents:
20684
diff
changeset
|
5869 | purple_request_input_with_hint(gc, title, _("Buddy Comment:"), NULL, |
| 8697 | 5870 | comment_utf8, TRUE, FALSE, NULL, |
|
15356
a5ad506222a1
[gaim-migrate @ 18085]
Mark Doliner <markdoliner@pidgin.im>
parents:
15345
diff
changeset
|
5871 | _("_OK"), G_CALLBACK(oscar_ssi_editcomment), |
|
a5ad506222a1
[gaim-migrate @ 18085]
Mark Doliner <markdoliner@pidgin.im>
parents:
15345
diff
changeset
|
5872 | _("_Cancel"), G_CALLBACK(oscar_free_name_data), |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16462
diff
changeset
|
5873 | purple_connection_get_account(gc), data->name, NULL, |
|
19267
8d51ec40763b
Added hints to oscar oscar.c
Gabriel Schulhof <nix@go-nix.ca>
parents:
19113
diff
changeset
|
5874 | "buddy", data); |
| 9631 | 5875 | g_free(title); |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5876 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5877 | g_free(comment); |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5878 | g_free(comment_utf8); |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5879 | } |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5880 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5881 | static void |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5882 | oscar_ask_directim_yes_cb(struct oscar_ask_directim_data *data) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5883 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5884 | peer_connection_propose(data->od, OSCAR_CAPABILITY_DIRECTIM, data->who); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5885 | g_free(data->who); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5886 | g_free(data); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5887 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5888 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5889 | static void |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5890 | oscar_ask_directim_no_cb(struct oscar_ask_directim_data *data) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5891 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5892 | g_free(data->who); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5893 | g_free(data); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5894 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5895 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5896 | /* This is called from right-click menu on a buddy node. */ |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5897 | static void |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5898 | oscar_ask_directim(gpointer object, gpointer ignored) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5899 | { |
| 15884 | 5900 | PurpleBlistNode *node; |
| 5901 | PurpleBuddy *buddy; | |
| 5902 | PurpleConnection *gc; | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5903 | gchar *buf; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5904 | struct oscar_ask_directim_data *data; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5905 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5906 | node = object; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5907 | |
| 15884 | 5908 | g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); |
| 5909 | ||
| 5910 | buddy = (PurpleBuddy *)node; | |
| 5911 | gc = purple_account_get_connection(buddy->account); | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5912 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5913 | data = g_new0(struct oscar_ask_directim_data, 1); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5914 | data->who = g_strdup(buddy->name); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5915 | data->od = gc->proto_data; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5916 | buf = g_strdup_printf(_("You have selected to open a Direct IM connection with %s."), |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5917 | buddy->name); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5918 | |
|
20685
039aef89faf6
Updated hinting to be less invasive
Gabriel Schulhof <nix@go-nix.ca>
parents:
20684
diff
changeset
|
5919 | purple_request_action_with_hint(gc, NULL, buf, |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5920 | _("Because this reveals your IP address, it " |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5921 | "may be considered a security risk. Do you " |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5922 | "wish to continue?"), |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16462
diff
changeset
|
5923 | 0, |
|
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16462
diff
changeset
|
5924 | purple_connection_get_account(gc), data->who, NULL, |
|
19267
8d51ec40763b
Added hints to oscar oscar.c
Gabriel Schulhof <nix@go-nix.ca>
parents:
19113
diff
changeset
|
5925 | "buddy", data, 2, |
|
15356
a5ad506222a1
[gaim-migrate @ 18085]
Mark Doliner <markdoliner@pidgin.im>
parents:
15345
diff
changeset
|
5926 | _("C_onnect"), G_CALLBACK(oscar_ask_directim_yes_cb), |
|
a5ad506222a1
[gaim-migrate @ 18085]
Mark Doliner <markdoliner@pidgin.im>
parents:
15345
diff
changeset
|
5927 | _("_Cancel"), G_CALLBACK(oscar_ask_directim_no_cb)); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5928 | g_free(buf); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5929 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5930 | |
|
13937
d5606a63400f
[gaim-migrate @ 16349]
Mark Doliner <markdoliner@pidgin.im>
parents:
13935
diff
changeset
|
5931 | static void |
| 15884 | 5932 | oscar_get_aim_info_cb(PurpleBlistNode *node, gpointer ignore) |
|
13937
d5606a63400f
[gaim-migrate @ 16349]
Mark Doliner <markdoliner@pidgin.im>
parents:
13935
diff
changeset
|
5933 | { |
| 15884 | 5934 | PurpleBuddy *buddy; |
| 5935 | PurpleConnection *gc; | |
| 5936 | ||
| 5937 | g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node)); | |
| 5938 | ||
| 5939 | buddy = (PurpleBuddy *)node; | |
| 5940 | gc = purple_account_get_connection(buddy->account); | |
| 5941 | ||
| 5942 | aim_locate_getinfoshort(gc->proto_data, purple_buddy_get_name(buddy), 0x00000003); | |
|
13937
d5606a63400f
[gaim-migrate @ 16349]
Mark Doliner <markdoliner@pidgin.im>
parents:
13935
diff
changeset
|
5943 | } |
|
d5606a63400f
[gaim-migrate @ 16349]
Mark Doliner <markdoliner@pidgin.im>
parents:
13935
diff
changeset
|
5944 | |
|
15115
6233e27145ee
[gaim-migrate @ 17837]
Mark Doliner <markdoliner@pidgin.im>
parents:
15074
diff
changeset
|
5945 | static GList * |
| 15884 | 5946 | oscar_buddy_menu(PurpleBuddy *buddy) { |
| 5947 | ||
| 5948 | PurpleConnection *gc; | |
|
13606
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5949 | OscarData *od; |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5950 | GList *menu; |
| 15884 | 5951 | PurpleMenuAction *act; |
|
13606
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5952 | aim_userinfo_t *userinfo; |
|
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5953 | |
| 15884 | 5954 | gc = purple_account_get_connection(buddy->account); |
|
13606
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5955 | od = gc->proto_data; |
|
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5956 | userinfo = aim_locate_finduserinfo(od, buddy->name); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5957 | menu = NULL; |
| 12919 | 5958 | |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
5959 | if (od->icq && aim_snvalid_icq(purple_buddy_get_name(buddy))) |
|
13937
d5606a63400f
[gaim-migrate @ 16349]
Mark Doliner <markdoliner@pidgin.im>
parents:
13935
diff
changeset
|
5960 | { |
| 15884 | 5961 | act = purple_menu_action_new(_("Get AIM Info"), |
| 5962 | PURPLE_CALLBACK(oscar_get_aim_info_cb), | |
|
13937
d5606a63400f
[gaim-migrate @ 16349]
Mark Doliner <markdoliner@pidgin.im>
parents:
13935
diff
changeset
|
5963 | NULL, NULL); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5964 | menu = g_list_prepend(menu, act); |
|
13937
d5606a63400f
[gaim-migrate @ 16349]
Mark Doliner <markdoliner@pidgin.im>
parents:
13935
diff
changeset
|
5965 | } |
|
d5606a63400f
[gaim-migrate @ 16349]
Mark Doliner <markdoliner@pidgin.im>
parents:
13935
diff
changeset
|
5966 | |
| 15884 | 5967 | act = purple_menu_action_new(_("Edit Buddy Comment"), |
| 5968 | PURPLE_CALLBACK(oscar_buddycb_edit_comment), | |
| 12919 | 5969 | NULL, NULL); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5970 | menu = g_list_prepend(menu, act); |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
5971 | |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
5972 | #if 0 |
|
13606
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5973 | if (od->icq) |
|
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5974 | { |
| 15884 | 5975 | act = purple_menu_action_new(_("Get Status Msg"), |
| 5976 | PURPLE_CALLBACK(oscar_get_icqstatusmsg), | |
| 12919 | 5977 | NULL, NULL); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5978 | menu = g_list_prepend(menu, act); |
|
13606
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5979 | } |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
5980 | #endif |
|
13606
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5981 | |
|
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5982 | if (userinfo && |
| 15884 | 5983 | aim_sncmp(purple_account_get_username(buddy->account), buddy->name) && |
| 5984 | PURPLE_BUDDY_IS_ONLINE(buddy)) | |
|
13606
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5985 | { |
|
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5986 | if (userinfo->capabilities & OSCAR_CAPABILITY_DIRECTIM) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
5987 | { |
| 15884 | 5988 | act = purple_menu_action_new(_("Direct IM"), |
| 5989 | PURPLE_CALLBACK(oscar_ask_directim), | |
|
13606
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5990 | NULL, NULL); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5991 | menu = g_list_prepend(menu, act); |
|
13606
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5992 | } |
|
9466
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
5993 | #if 0 |
|
13606
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5994 | /* TODO: This menu item should be added by the core */ |
|
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5995 | if (userinfo->capabilities & OSCAR_CAPABILITY_GETFILE) { |
| 15884 | 5996 | act = purple_menu_action_new(_("Get File"), |
| 5997 | PURPLE_CALLBACK(oscar_ask_getfile), | |
|
13606
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
5998 | NULL, NULL); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
5999 | menu = g_list_prepend(menu, act); |
|
13606
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
6000 | } |
|
4826
ce211ce6a336
[gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents:
4825
diff
changeset
|
6001 | #endif |
|
13606
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
6002 | } |
|
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
6003 | |
|
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
6004 | if (od->ssi.received_data) |
|
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
6005 | { |
|
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
6006 | char *gname; |
|
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
6007 | gname = aim_ssi_itemlist_findparentname(od->ssi.local, buddy->name); |
|
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
6008 | if (gname && aim_ssi_waitingforauth(od->ssi.local, gname, buddy->name)) |
|
edf40f4c8b77
[gaim-migrate @ 15991]
Mark Doliner <markdoliner@pidgin.im>
parents:
13605
diff
changeset
|
6009 | { |
| 15884 | 6010 | act = purple_menu_action_new(_("Re-request Authorization"), |
| 6011 | PURPLE_CALLBACK(purple_auth_sendrequest_menu), | |
| 12919 | 6012 | NULL, NULL); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6013 | menu = g_list_prepend(menu, act); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6014 | } |
| 4916 | 6015 | } |
|
10157
650fd69090cd
[gaim-migrate @ 11237]
Mark Doliner <markdoliner@pidgin.im>
parents:
10152
diff
changeset
|
6016 | |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6017 | menu = g_list_reverse(menu); |
|
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6018 | |
|
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6019 | return menu; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6020 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6021 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6022 | |
| 15884 | 6023 | GList *oscar_blist_node_menu(PurpleBlistNode *node) { |
| 6024 | if(PURPLE_BLIST_NODE_IS_BUDDY(node)) { | |
| 6025 | return oscar_buddy_menu((PurpleBuddy *) node); | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6026 | } else { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6027 | return NULL; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6028 | } |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6029 | } |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6030 | |
| 10570 | 6031 | static void |
| 15884 | 6032 | oscar_icq_privacy_opts(PurpleConnection *gc, PurpleRequestFields *fields) |
| 10570 | 6033 | { |
| 6034 | OscarData *od = gc->proto_data; | |
| 15884 | 6035 | PurpleAccount *account = purple_connection_get_account(gc); |
| 6036 | PurpleRequestField *f; | |
|
12652
363cd78076e0
[gaim-migrate @ 14995]
Mark Doliner <markdoliner@pidgin.im>
parents:
12645
diff
changeset
|
6037 | gboolean auth, web_aware; |
| 10570 | 6038 | |
| 15884 | 6039 | f = purple_request_fields_get_field(fields, "authorization"); |
| 6040 | auth = purple_request_field_bool_get_value(f); | |
| 6041 | ||
| 6042 | f = purple_request_fields_get_field(fields, "web_aware"); | |
| 6043 | web_aware = purple_request_field_bool_get_value(f); | |
| 6044 | ||
| 6045 | purple_account_set_bool(account, "authorization", auth); | |
| 6046 | purple_account_set_bool(account, "web_aware", web_aware); | |
| 10570 | 6047 | |
|
12652
363cd78076e0
[gaim-migrate @ 14995]
Mark Doliner <markdoliner@pidgin.im>
parents:
12645
diff
changeset
|
6048 | oscar_set_extendedstatus(gc); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6049 | aim_icq_setsecurity(od, auth, web_aware); |
| 10570 | 6050 | } |
| 6051 | ||
| 6052 | static void | |
| 15884 | 6053 | oscar_show_icq_privacy_opts(PurplePluginAction *action) |
| 10570 | 6054 | { |
| 15884 | 6055 | PurpleConnection *gc = (PurpleConnection *) action->context; |
| 6056 | PurpleAccount *account = purple_connection_get_account(gc); | |
| 6057 | PurpleRequestFields *fields; | |
| 6058 | PurpleRequestFieldGroup *g; | |
| 6059 | PurpleRequestField *f; | |
|
12652
363cd78076e0
[gaim-migrate @ 14995]
Mark Doliner <markdoliner@pidgin.im>
parents:
12645
diff
changeset
|
6060 | gboolean auth, web_aware; |
| 10570 | 6061 | |
| 15884 | 6062 | auth = purple_account_get_bool(account, "authorization", OSCAR_DEFAULT_AUTHORIZATION); |
| 6063 | web_aware = purple_account_get_bool(account, "web_aware", OSCAR_DEFAULT_WEB_AWARE); | |
| 6064 | ||
| 6065 | fields = purple_request_fields_new(); | |
| 6066 | ||
| 6067 | g = purple_request_field_group_new(NULL); | |
| 6068 | ||
| 6069 | f = purple_request_field_bool_new("authorization", _("Require authorization"), auth); | |
| 6070 | purple_request_field_group_add_field(g, f); | |
| 6071 | ||
| 6072 | f = purple_request_field_bool_new("web_aware", _("Web aware (enabling this will cause you to receive SPAM!)"), web_aware); | |
| 6073 | purple_request_field_group_add_field(g, f); | |
| 6074 | ||
| 6075 | purple_request_fields_add_group(fields, g); | |
| 6076 | ||
|
20685
039aef89faf6
Updated hinting to be less invasive
Gabriel Schulhof <nix@go-nix.ca>
parents:
20684
diff
changeset
|
6077 | purple_request_fields_with_hint(gc, _("ICQ Privacy Options"), _("ICQ Privacy Options"), |
| 10570 | 6078 | NULL, fields, |
| 6079 | _("OK"), G_CALLBACK(oscar_icq_privacy_opts), | |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16462
diff
changeset
|
6080 | _("Cancel"), NULL, |
|
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16462
diff
changeset
|
6081 | purple_connection_get_account(gc), NULL, NULL, |
|
19267
8d51ec40763b
Added hints to oscar oscar.c
Gabriel Schulhof <nix@go-nix.ca>
parents:
19113
diff
changeset
|
6082 | "account", gc); |
| 10570 | 6083 | } |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6084 | |
| 15884 | 6085 | static void oscar_format_screenname(PurpleConnection *gc, const char *nick) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6086 | OscarData *od = gc->proto_data; |
| 15884 | 6087 | if (!aim_sncmp(purple_account_get_username(purple_connection_get_account(gc)), nick)) { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6088 | if (!flap_connection_getbytype(od, SNAC_FAMILY_ADMIN)) { |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6089 | od->setnick = TRUE; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6090 | od->newsn = g_strdup(nick); |
|
15147
101192282f5d
[gaim-migrate @ 17871]
Mark Doliner <markdoliner@pidgin.im>
parents:
15142
diff
changeset
|
6091 | aim_srv_requestnew(od, SNAC_FAMILY_ADMIN); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6092 | } else { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6093 | aim_admin_setnick(od, flap_connection_getbytype(od, SNAC_FAMILY_ADMIN), nick); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6094 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6095 | } else { |
| 15884 | 6096 | purple_notify_error(gc, NULL, _("The new formatting is invalid."), |
|
8152
f26c9406b4b3
[gaim-migrate @ 8864]
Mark Doliner <markdoliner@pidgin.im>
parents:
8151
diff
changeset
|
6097 | _("Screen name formatting can change only capitalization and whitespace.")); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6098 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6099 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6100 | |
| 15884 | 6101 | static void oscar_confirm_account(PurplePluginAction *action) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6102 | { |
| 15884 | 6103 | PurpleConnection *gc; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6104 | OscarData *od; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6105 | FlapConnection *conn; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6106 | |
| 15884 | 6107 | gc = (PurpleConnection *)action->context; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6108 | od = gc->proto_data; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6109 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6110 | conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6111 | if (conn != NULL) { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6112 | aim_admin_reqconfirm(od, conn); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6113 | } else { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6114 | od->conf = TRUE; |
|
15147
101192282f5d
[gaim-migrate @ 17871]
Mark Doliner <markdoliner@pidgin.im>
parents:
15142
diff
changeset
|
6115 | aim_srv_requestnew(od, SNAC_FAMILY_ADMIN); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6116 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6117 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6118 | |
| 15884 | 6119 | static void oscar_show_email(PurplePluginAction *action) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6120 | { |
| 15884 | 6121 | PurpleConnection *gc = (PurpleConnection *) action->context; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6122 | OscarData *od = gc->proto_data; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6123 | FlapConnection *conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6124 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6125 | if (conn) { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6126 | aim_admin_getinfo(od, conn, 0x11); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6127 | } else { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6128 | od->reqemail = TRUE; |
|
15147
101192282f5d
[gaim-migrate @ 17871]
Mark Doliner <markdoliner@pidgin.im>
parents:
15142
diff
changeset
|
6129 | aim_srv_requestnew(od, SNAC_FAMILY_ADMIN); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6130 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6131 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6132 | |
| 15884 | 6133 | static void oscar_change_email(PurpleConnection *gc, const char *email) |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6134 | { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6135 | OscarData *od = gc->proto_data; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6136 | FlapConnection *conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6137 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6138 | if (conn) { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6139 | aim_admin_setemail(od, conn, email); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6140 | } else { |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6141 | od->setemail = TRUE; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6142 | od->email = g_strdup(email); |
|
15147
101192282f5d
[gaim-migrate @ 17871]
Mark Doliner <markdoliner@pidgin.im>
parents:
15142
diff
changeset
|
6143 | aim_srv_requestnew(od, SNAC_FAMILY_ADMIN); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6144 | } |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6145 | } |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
6146 | |
| 15884 | 6147 | static void oscar_show_change_email(PurplePluginAction *action) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6148 | { |
| 15884 | 6149 | PurpleConnection *gc = (PurpleConnection *) action->context; |
|
20685
039aef89faf6
Updated hinting to be less invasive
Gabriel Schulhof <nix@go-nix.ca>
parents:
20684
diff
changeset
|
6150 | purple_request_input_with_hint(gc, NULL, _("Change Address To:"), NULL, NULL, |
| 8697 | 6151 | FALSE, FALSE, NULL, |
|
15356
a5ad506222a1
[gaim-migrate @ 18085]
Mark Doliner <markdoliner@pidgin.im>
parents:
15345
diff
changeset
|
6152 | _("_OK"), G_CALLBACK(oscar_change_email), |
|
a5ad506222a1
[gaim-migrate @ 18085]
Mark Doliner <markdoliner@pidgin.im>
parents:
15345
diff
changeset
|
6153 | _("_Cancel"), NULL, |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16462
diff
changeset
|
6154 | purple_connection_get_account(gc), NULL, NULL, |
|
19267
8d51ec40763b
Added hints to oscar oscar.c
Gabriel Schulhof <nix@go-nix.ca>
parents:
19113
diff
changeset
|
6155 | "account", gc); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6156 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6157 | |
| 15884 | 6158 | static void oscar_show_awaitingauth(PurplePluginAction *action) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6159 | { |
| 15884 | 6160 | PurpleConnection *gc = (PurpleConnection *) action->context; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6161 | OscarData *od = gc->proto_data; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6162 | gchar *nombre, *text, *tmp; |
| 15884 | 6163 | PurpleBlistNode *gnode, *cnode, *bnode; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6164 | int num=0; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6165 | |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6166 | text = g_strdup(""); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6167 | |
| 15884 | 6168 | for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) { |
| 6169 | PurpleGroup *group = (PurpleGroup *)gnode; | |
| 6170 | if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) | |
| 4785 | 6171 | continue; |
| 6695 | 6172 | for (cnode = gnode->child; cnode; cnode = cnode->next) { |
| 15884 | 6173 | if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) |
| 4785 | 6174 | continue; |
| 6695 | 6175 | for (bnode = cnode->child; bnode; bnode = bnode->next) { |
| 15884 | 6176 | PurpleBuddy *buddy = (PurpleBuddy *)bnode; |
| 6177 | if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) | |
| 6695 | 6178 | continue; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6179 | if (buddy->account == gc->account && aim_ssi_waitingforauth(od->ssi.local, group->name, buddy->name)) { |
| 15884 | 6180 | if (purple_buddy_get_alias_only(buddy)) |
| 6181 | nombre = g_strdup_printf(" %s (%s)", buddy->name, purple_buddy_get_alias_only(buddy)); | |
| 6695 | 6182 | else |
| 6183 | nombre = g_strdup_printf(" %s", buddy->name); | |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6184 | tmp = g_strdup_printf("%s%s<br>", text, nombre); |
| 6695 | 6185 | g_free(text); |
| 6186 | text = tmp; | |
| 6187 | g_free(nombre); | |
| 6188 | num++; | |
| 6189 | } | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6190 | } |
| 2979 | 6191 | } |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6192 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6193 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6194 | if (!num) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6195 | g_free(text); |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6196 | text = g_strdup(_("<i>you are not waiting for authorization</i>")); |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6197 | } |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6198 | |
| 15884 | 6199 | purple_notify_formatted(gc, NULL, _("You are awaiting authorization from " |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6200 | "the following buddies"), _("You can re-request " |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6201 | "authorization from these buddies by " |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6202 | "right-clicking on them and selecting " |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
6203 | "\"Re-request Authorization.\""), text, NULL, NULL); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6204 | g_free(text); |
| 2979 | 6205 | } |
| 6206 | ||
| 15884 | 6207 | static void search_by_email_cb(PurpleConnection *gc, const char *email) |
|
7080
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
6208 | { |
|
8950
1b90ece5fb4f
[gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents:
8907
diff
changeset
|
6209 | OscarData *od = (OscarData *)gc->proto_data; |
|
1b90ece5fb4f
[gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents:
8907
diff
changeset
|
6210 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6211 | aim_search_address(od, email); |
|
7080
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
6212 | } |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
6213 | |
| 15884 | 6214 | static void oscar_show_find_email(PurplePluginAction *action) |
|
7080
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
6215 | { |
| 15884 | 6216 | PurpleConnection *gc = (PurpleConnection *) action->context; |
|
20685
039aef89faf6
Updated hinting to be less invasive
Gabriel Schulhof <nix@go-nix.ca>
parents:
20684
diff
changeset
|
6217 | purple_request_input_with_hint(gc, _("Find Buddy by E-Mail"), |
|
7080
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
6218 | _("Search for a buddy by e-mail address"), |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
6219 | _("Type the e-mail address of the buddy you are " |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
6220 | "searching for."), |
| 8697 | 6221 | NULL, FALSE, FALSE, NULL, |
|
15356
a5ad506222a1
[gaim-migrate @ 18085]
Mark Doliner <markdoliner@pidgin.im>
parents:
15345
diff
changeset
|
6222 | _("_Search"), G_CALLBACK(search_by_email_cb), |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16462
diff
changeset
|
6223 | _("_Cancel"), NULL, |
|
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16462
diff
changeset
|
6224 | purple_connection_get_account(gc), NULL, NULL, |
|
19267
8d51ec40763b
Added hints to oscar oscar.c
Gabriel Schulhof <nix@go-nix.ca>
parents:
19113
diff
changeset
|
6225 | "buddy", gc); |
|
7080
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
6226 | } |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
6227 | |
| 15884 | 6228 | static void oscar_show_set_info(PurplePluginAction *action) |
|
7067
c57295414efa
[gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents:
7063
diff
changeset
|
6229 | { |
| 15884 | 6230 | PurpleConnection *gc = (PurpleConnection *) action->context; |
| 6231 | purple_account_request_change_user_info(purple_connection_get_account(gc)); | |
| 6232 | } | |
| 6233 | ||
| 6234 | static void oscar_show_set_info_icqurl(PurplePluginAction *action) | |
| 8576 | 6235 | { |
| 15884 | 6236 | PurpleConnection *gc = (PurpleConnection *) action->context; |
| 6237 | purple_notify_uri(gc, "http://www.icq.com/whitepages/user_details.php"); | |
| 6238 | } | |
| 6239 | ||
| 6240 | static void oscar_change_pass(PurplePluginAction *action) | |
|
7063
4bfe512a4b8c
[gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents:
7060
diff
changeset
|
6241 | { |
| 15884 | 6242 | PurpleConnection *gc = (PurpleConnection *) action->context; |
| 6243 | purple_account_request_change_password(purple_connection_get_account(gc)); | |
| 6244 | } | |
| 6245 | ||
| 6246 | static void oscar_show_chpassurl(PurplePluginAction *action) | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6247 | { |
| 15884 | 6248 | PurpleConnection *gc = (PurpleConnection *) action->context; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6249 | OscarData *od = gc->proto_data; |
| 15884 | 6250 | gchar *substituted = purple_strreplace(od->authinfo->chpassurl, "%s", purple_account_get_username(purple_connection_get_account(gc))); |
| 6251 | purple_notify_uri(gc, substituted); | |
|
5517
1d7b99ac846c
[gaim-migrate @ 5916]
Mark Doliner <markdoliner@pidgin.im>
parents:
5498
diff
changeset
|
6252 | g_free(substituted); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6253 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6254 | |
| 15884 | 6255 | static void oscar_show_imforwardingurl(PurplePluginAction *action) |
|
7026
7828abff32da
[gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents:
7023
diff
changeset
|
6256 | { |
| 15884 | 6257 | PurpleConnection *gc = (PurpleConnection *) action->context; |
| 6258 | purple_notify_uri(gc, "http://mymobile.aol.com/dbreg/register?action=imf&clientID=1"); | |
| 6259 | } | |
| 6260 | ||
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6261 | void oscar_set_icon(PurpleConnection *gc, PurpleStoredImage *img) |
| 5842 | 6262 | { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6263 | OscarData *od = gc->proto_data; |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6264 | |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6265 | if (img == NULL) { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6266 | aim_ssi_delicon(od); |
|
16538
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6267 | } else { |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6268 | PurpleCipher *cipher; |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6269 | PurpleCipherContext *context; |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6270 | guchar md5[16]; |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6271 | gconstpointer data = purple_imgstore_get_data(img); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6272 | size_t len = purple_imgstore_get_size(img); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6273 | |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6274 | |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6275 | cipher = purple_ciphers_find_cipher("md5"); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6276 | context = purple_cipher_context_new(cipher, NULL); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6277 | purple_cipher_context_append(context, data, len); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6278 | purple_cipher_context_digest(context, 16, md5, NULL); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6279 | purple_cipher_context_destroy(context); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6280 | |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6281 | aim_ssi_seticon(od, md5, 16); |
|
c7e61e2917c9
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents:
16534
diff
changeset
|
6282 | } |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6283 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6284 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6285 | /** |
| 15884 | 6286 | * Called by the Purple core to determine whether or not we're |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6287 | * allowed to send a file to this user. |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6288 | */ |
| 15030 | 6289 | gboolean |
| 15884 | 6290 | oscar_can_receive_file(PurpleConnection *gc, const char *who) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6291 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6292 | OscarData *od; |
| 15884 | 6293 | PurpleAccount *account; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6294 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6295 | od = gc->proto_data; |
| 15884 | 6296 | account = purple_connection_get_account(gc); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6297 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6298 | if (od != NULL) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6299 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6300 | aim_userinfo_t *userinfo; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6301 | userinfo = aim_locate_finduserinfo(od, who); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6302 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6303 | /* |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6304 | * Don't allowing sending a file to a user that does not support |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6305 | * file transfer, and don't allow sending to ourselves. |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6306 | */ |
|
13970
0d9441d1cfea
[gaim-migrate @ 16404]
Mark Doliner <markdoliner@pidgin.im>
parents:
13937
diff
changeset
|
6307 | if (((userinfo == NULL) || |
|
0d9441d1cfea
[gaim-migrate @ 16404]
Mark Doliner <markdoliner@pidgin.im>
parents:
13937
diff
changeset
|
6308 | (userinfo->capabilities & OSCAR_CAPABILITY_SENDFILE)) && |
| 15884 | 6309 | aim_sncmp(who, purple_account_get_username(account))) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6310 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6311 | return TRUE; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6312 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6313 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6314 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6315 | return FALSE; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6316 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6317 | |
| 15884 | 6318 | PurpleXfer * |
| 6319 | oscar_new_xfer(PurpleConnection *gc, const char *who) | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6320 | { |
| 15884 | 6321 | PurpleXfer *xfer; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6322 | OscarData *od; |
| 15884 | 6323 | PurpleAccount *account; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6324 | PeerConnection *conn; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6325 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6326 | od = gc->proto_data; |
| 15884 | 6327 | account = purple_connection_get_account(gc); |
| 6328 | ||
| 6329 | xfer = purple_xfer_new(account, PURPLE_XFER_SEND, who); | |
|
15345
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
15317
diff
changeset
|
6330 | if (xfer) |
|
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
15317
diff
changeset
|
6331 | { |
| 15884 | 6332 | purple_xfer_ref(xfer); |
| 6333 | purple_xfer_set_init_fnc(xfer, peer_oft_sendcb_init); | |
| 6334 | purple_xfer_set_cancel_send_fnc(xfer, peer_oft_cb_generic_cancel); | |
| 6335 | purple_xfer_set_request_denied_fnc(xfer, peer_oft_cb_generic_cancel); | |
| 6336 | purple_xfer_set_ack_fnc(xfer, peer_oft_sendcb_ack); | |
|
15345
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
15317
diff
changeset
|
6337 | |
|
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
15317
diff
changeset
|
6338 | conn = peer_connection_new(od, OSCAR_CAPABILITY_SENDFILE, who); |
|
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
15317
diff
changeset
|
6339 | conn->flags |= PEER_CONNECTION_FLAG_INITIATED_BY_ME; |
|
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
15317
diff
changeset
|
6340 | conn->flags |= PEER_CONNECTION_FLAG_APPROVED; |
|
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
15317
diff
changeset
|
6341 | aim_icbm_makecookie(conn->cookie); |
|
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
15317
diff
changeset
|
6342 | conn->xfer = xfer; |
|
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
15317
diff
changeset
|
6343 | xfer->data = conn; |
|
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
15317
diff
changeset
|
6344 | } |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6345 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6346 | return xfer; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6347 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6348 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6349 | /* |
| 15884 | 6350 | * Called by the Purple core when the user indicates that a |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6351 | * file is to be sent to a special someone. |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6352 | */ |
| 15030 | 6353 | void |
| 15884 | 6354 | oscar_send_file(PurpleConnection *gc, const char *who, const char *file) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6355 | { |
| 15884 | 6356 | PurpleXfer *xfer; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6357 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6358 | xfer = oscar_new_xfer(gc, who); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6359 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6360 | if (file != NULL) |
| 15884 | 6361 | purple_xfer_request_accepted(xfer, file); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6362 | else |
| 15884 | 6363 | purple_xfer_request(xfer); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6364 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6365 | |
| 15030 | 6366 | GList * |
| 15884 | 6367 | oscar_actions(PurplePlugin *plugin, gpointer context) |
| 2086 | 6368 | { |
| 15884 | 6369 | PurpleConnection *gc = (PurpleConnection *) context; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6370 | OscarData *od = gc->proto_data; |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6371 | GList *menu = NULL; |
| 15884 | 6372 | PurplePluginAction *act; |
| 6373 | ||
| 6374 | act = purple_plugin_action_new(_("Set User Info..."), | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
6375 | oscar_show_set_info); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6376 | menu = g_list_prepend(menu, act); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6377 | |
| 10570 | 6378 | if (od->icq) |
| 6379 | { | |
| 15884 | 6380 | act = purple_plugin_action_new(_("Set User Info (URL)..."), |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
6381 | oscar_show_set_info_icqurl); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6382 | menu = g_list_prepend(menu, act); |
| 8576 | 6383 | } |
| 6384 | ||
| 15884 | 6385 | act = purple_plugin_action_new(_("Change Password..."), |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
6386 | oscar_change_pass); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6387 | menu = g_list_prepend(menu, act); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6388 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6389 | if (od->authinfo->chpassurl != NULL) |
| 10570 | 6390 | { |
| 15884 | 6391 | act = purple_plugin_action_new(_("Change Password (URL)"), |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
6392 | oscar_show_chpassurl); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6393 | menu = g_list_prepend(menu, act); |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
6394 | |
| 15884 | 6395 | act = purple_plugin_action_new(_("Configure IM Forwarding (URL)"), |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
6396 | oscar_show_imforwardingurl); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6397 | menu = g_list_prepend(menu, act); |
|
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6398 | } |
|
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6399 | |
|
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6400 | menu = g_list_prepend(menu, NULL); |
| 10570 | 6401 | |
| 6402 | if (od->icq) | |
| 6403 | { | |
| 6404 | /* ICQ actions */ | |
| 15884 | 6405 | act = purple_plugin_action_new(_("Set Privacy Options..."), |
| 10570 | 6406 | oscar_show_icq_privacy_opts); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6407 | menu = g_list_prepend(menu, act); |
| 10570 | 6408 | } |
| 6409 | else | |
| 6410 | { | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6411 | /* AIM actions */ |
| 15884 | 6412 | act = purple_plugin_action_new(_("Confirm Account"), |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
6413 | oscar_confirm_account); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6414 | menu = g_list_prepend(menu, act); |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
6415 | |
| 15884 | 6416 | act = purple_plugin_action_new(_("Display Currently Registered E-Mail Address"), |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
6417 | oscar_show_email); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6418 | menu = g_list_prepend(menu, act); |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
6419 | |
| 15884 | 6420 | act = purple_plugin_action_new(_("Change Currently Registered E-Mail Address..."), |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
6421 | oscar_show_change_email); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6422 | menu = g_list_prepend(menu, act); |
|
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6423 | } |
|
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6424 | |
|
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6425 | menu = g_list_prepend(menu, NULL); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6426 | |
| 15884 | 6427 | act = purple_plugin_action_new(_("Show Buddies Awaiting Authorization"), |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
6428 | oscar_show_awaitingauth); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6429 | menu = g_list_prepend(menu, act); |
|
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6430 | |
|
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6431 | menu = g_list_prepend(menu, NULL); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6432 | |
| 15884 | 6433 | act = purple_plugin_action_new(_("Search for Buddy by E-Mail Address..."), |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
6434 | oscar_show_find_email); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6435 | menu = g_list_prepend(menu, act); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6436 | |
|
8591
ae42ad1cd127
[gaim-migrate @ 9342]
Mark Doliner <markdoliner@pidgin.im>
parents:
8590
diff
changeset
|
6437 | #if 0 |
| 15884 | 6438 | act = purple_plugin_action_new(_("Search for Buddy by Information"), |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
6439 | show_find_info); |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6440 | menu = g_list_prepend(menu, act); |
|
8591
ae42ad1cd127
[gaim-migrate @ 9342]
Mark Doliner <markdoliner@pidgin.im>
parents:
8590
diff
changeset
|
6441 | #endif |
| 2086 | 6442 | |
|
14410
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6443 | menu = g_list_reverse(menu); |
|
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6444 | |
|
a5ae93474db6
[gaim-migrate @ 17050]
Mark Doliner <markdoliner@pidgin.im>
parents:
14344
diff
changeset
|
6445 | return menu; |
| 2086 | 6446 | } |
| 6447 | ||
| 15884 | 6448 | void oscar_change_passwd(PurpleConnection *gc, const char *old, const char *new) |
| 2086 | 6449 | { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6450 | OscarData *od = gc->proto_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6451 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6452 | if (od->icq) { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6453 | aim_icq_changepasswd(od, new); |
| 2086 | 6454 | } else { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6455 | FlapConnection *conn; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6456 | conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6457 | if (conn) { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6458 | aim_admin_changepasswd(od, conn, new, old); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6459 | } else { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6460 | od->chpass = TRUE; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6461 | od->oldp = g_strdup(old); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6462 | od->newp = g_strdup(new); |
|
15147
101192282f5d
[gaim-migrate @ 17871]
Mark Doliner <markdoliner@pidgin.im>
parents:
15142
diff
changeset
|
6463 | aim_srv_requestnew(od, SNAC_FAMILY_ADMIN); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6464 | } |
| 2086 | 6465 | } |
| 6466 | } | |
| 6467 | ||
| 15030 | 6468 | void |
| 15884 | 6469 | oscar_convo_closed(PurpleConnection *gc, const char *who) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6470 | { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6471 | OscarData *od; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6472 | PeerConnection *conn; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6473 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6474 | od = gc->proto_data; |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6475 | conn = peer_connection_find_by_type(od, who, OSCAR_CAPABILITY_DIRECTIM); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6476 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6477 | if (conn != NULL) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6478 | { |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6479 | if (!conn->ready) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6480 | aim_im_sendch2_cancel(conn); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6481 | |
|
14464
b7bca43f75b3
[gaim-migrate @ 17110]
Mark Doliner <markdoliner@pidgin.im>
parents:
14454
diff
changeset
|
6482 | peer_connection_destroy(conn, OSCAR_DISCONNECT_LOCAL_CLOSED, NULL); |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6483 | } |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6484 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6485 | |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
6486 | static void |
| 15884 | 6487 | recent_buddies_cb(const char *name, PurplePrefType type, |
|
12816
5f93e09fa9a6
[gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents:
12730
diff
changeset
|
6488 | gconstpointer value, gpointer data) |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
6489 | { |
| 15884 | 6490 | PurpleConnection *gc = data; |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
6491 | OscarData *od = gc->proto_data; |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
6492 | guint32 presence; |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
6493 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6494 | presence = aim_ssi_getpresence(od->ssi.local); |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
6495 | |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
6496 | if (value) { |
|
12486
58a4a7b22512
[gaim-migrate @ 14798]
Mark Doliner <markdoliner@pidgin.im>
parents:
12454
diff
changeset
|
6497 | presence &= ~AIM_SSI_PRESENCE_FLAG_NORECENTBUDDIES; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6498 | aim_ssi_setpresence(od, presence); |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
6499 | } else { |
|
12486
58a4a7b22512
[gaim-migrate @ 14798]
Mark Doliner <markdoliner@pidgin.im>
parents:
12454
diff
changeset
|
6500 | presence |= AIM_SSI_PRESENCE_FLAG_NORECENTBUDDIES; |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6501 | aim_ssi_setpresence(od, presence); |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6502 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6503 | } |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6504 | |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6505 | #ifdef USE_PRPL_PREFERENCES |
| 15884 | 6506 | ppref = purple_plugin_pref_new_with_name_and_label("/plugins/prpl/oscar/recent_buddies", _("Use recent buddies group")); |
| 6507 | purple_plugin_pref_frame_add(frame, ppref); | |
| 6508 | ||
| 6509 | ppref = purple_plugin_pref_new_with_name_and_label("/plugins/prpl/oscar/show_idle", _("Show how long you have been idle")); | |
| 6510 | purple_plugin_pref_frame_add(frame, ppref); | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13572
diff
changeset
|
6511 | #endif |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
6512 | |
| 15030 | 6513 | const char * |
| 15884 | 6514 | oscar_normalize(const PurpleAccount *account, const char *str) |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6515 | { |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6516 | static char buf[BUF_LEN]; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6517 | char *tmp1, *tmp2; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6518 | int i, j; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6519 | |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6520 | g_return_val_if_fail(str != NULL, NULL); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6521 | |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6522 | strncpy(buf, str, BUF_LEN); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6523 | for (i=0, j=0; buf[j]; i++, j++) |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6524 | { |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6525 | while (buf[j] == ' ') |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6526 | j++; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6527 | buf[i] = buf[j]; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6528 | } |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6529 | buf[i] = '\0'; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6530 | |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6531 | tmp1 = g_utf8_strdown(buf, -1); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6532 | tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6533 | g_snprintf(buf, sizeof(buf), "%s", tmp2); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6534 | g_free(tmp2); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6535 | g_free(tmp1); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6536 | |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6537 | return buf; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6538 | } |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11102
diff
changeset
|
6539 | |
| 15030 | 6540 | gboolean |
| 15884 | 6541 | oscar_offline_message(const PurpleBuddy *buddy) |
|
12645
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
6542 | { |
|
17003
02656ccd953e
Fix #755 - Crash on disconnection due to oscar offline messaging check invalid pointer deref.
Daniel Atallah <datallah@pidgin.im>
parents:
16939
diff
changeset
|
6543 | OscarData *od = NULL; |
| 15884 | 6544 | PurpleAccount *account; |
|
17003
02656ccd953e
Fix #755 - Crash on disconnection due to oscar offline messaging check invalid pointer deref.
Daniel Atallah <datallah@pidgin.im>
parents:
16939
diff
changeset
|
6545 | PurpleConnection *gc = NULL; |
| 15884 | 6546 | |
| 6547 | account = purple_buddy_get_account(buddy); | |
|
17003
02656ccd953e
Fix #755 - Crash on disconnection due to oscar offline messaging check invalid pointer deref.
Daniel Atallah <datallah@pidgin.im>
parents:
16939
diff
changeset
|
6548 | if (account != NULL) { |
|
02656ccd953e
Fix #755 - Crash on disconnection due to oscar offline messaging check invalid pointer deref.
Daniel Atallah <datallah@pidgin.im>
parents:
16939
diff
changeset
|
6549 | gc = purple_account_get_connection(account); |
|
02656ccd953e
Fix #755 - Crash on disconnection due to oscar offline messaging check invalid pointer deref.
Daniel Atallah <datallah@pidgin.im>
parents:
16939
diff
changeset
|
6550 | if (gc != NULL) |
|
02656ccd953e
Fix #755 - Crash on disconnection due to oscar offline messaging check invalid pointer deref.
Daniel Atallah <datallah@pidgin.im>
parents:
16939
diff
changeset
|
6551 | od = (OscarData *)gc->proto_data; |
|
02656ccd953e
Fix #755 - Crash on disconnection due to oscar offline messaging check invalid pointer deref.
Daniel Atallah <datallah@pidgin.im>
parents:
16939
diff
changeset
|
6552 | } |
|
02656ccd953e
Fix #755 - Crash on disconnection due to oscar offline messaging check invalid pointer deref.
Daniel Atallah <datallah@pidgin.im>
parents:
16939
diff
changeset
|
6553 | |
|
19820
0f82885da3d8
A little function name shuffling.
Mark Doliner <markdoliner@pidgin.im>
parents:
19819
diff
changeset
|
6554 | return (od != NULL && od->icq && aim_snvalid_icq(purple_account_get_username(account))); |
|
12645
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
6555 | } |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
6556 | |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6557 | /* TODO: Find somewhere to put this instead of including it in a bunch of places. |
| 15884 | 6558 | * Maybe just change purple_accounts_find() to return anything for the prpl if there is no acct_id. |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6559 | */ |
| 15884 | 6560 | static PurpleAccount *find_acct(const char *prpl, const char *acct_id) |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6561 | { |
| 15884 | 6562 | PurpleAccount *acct = NULL; |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6563 | |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6564 | /* If we have a specific acct, use it */ |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6565 | if (acct_id) { |
| 15884 | 6566 | acct = purple_accounts_find(acct_id, prpl); |
| 6567 | if (acct && !purple_account_is_connected(acct)) | |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6568 | acct = NULL; |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6569 | } else { /* Otherwise find an active account for the protocol */ |
|
18122
9bf9970c1b6a
disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents:
18121
diff
changeset
|
6570 | GList *l = purple_accounts_get_all(); |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6571 | while (l) { |
| 15884 | 6572 | if (!strcmp(prpl, purple_account_get_protocol_id(l->data)) |
| 6573 | && purple_account_is_connected(l->data)) { | |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6574 | acct = l->data; |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6575 | break; |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6576 | } |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6577 | l = l->next; |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6578 | } |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6579 | } |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6580 | |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6581 | return acct; |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6582 | } |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6583 | |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6584 | |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6585 | static gboolean oscar_uri_handler(const char *proto, const char *cmd, GHashTable *params) |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6586 | { |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6587 | char *acct_id = g_hash_table_lookup(params, "account"); |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6588 | char prpl[11]; |
| 15884 | 6589 | PurpleAccount *acct; |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6590 | |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6591 | if (g_ascii_strcasecmp(proto, "aim") && g_ascii_strcasecmp(proto, "icq")) |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6592 | return FALSE; |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6593 | |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6594 | g_snprintf(prpl, sizeof(prpl), "prpl-%s", proto); |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6595 | |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6596 | acct = find_acct(prpl, acct_id); |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6597 | |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6598 | if (!acct) |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6599 | return FALSE; |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6600 | |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6601 | /* aim:GoIM?screenname=SCREENNAME&message=MESSAGE */ |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6602 | if (!g_ascii_strcasecmp(cmd, "GoIM")) { |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6603 | char *sname = g_hash_table_lookup(params, "screenname"); |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6604 | if (sname) { |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6605 | char *message = g_hash_table_lookup(params, "message"); |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6606 | |
| 15884 | 6607 | PurpleConversation *conv = purple_find_conversation_with_account( |
| 6608 | PURPLE_CONV_TYPE_IM, sname, acct); | |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6609 | if (conv == NULL) |
| 15884 | 6610 | conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, acct, sname); |
| 6611 | purple_conversation_present(conv); | |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6612 | |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6613 | if (message) { |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6614 | /* Spaces are encoded as '+' */ |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6615 | g_strdelimit(message, "+", ' '); |
|
18940
8a9341775495
Don't actually send messages using the protocol handlers (open the window and pre-populate the message, but require the user to actually send the message). Fixes #1961.
Daniel Atallah <datallah@pidgin.im>
parents:
18879
diff
changeset
|
6616 | purple_conv_send_confirm(conv, message); |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6617 | } |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6618 | } |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6619 | /*else |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6620 | **If pidgindialogs_im() was in the core, we could use it here. |
| 15884 | 6621 | * It is all purple_request_* based, but I'm not sure it really belongs in the core |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6622 | pidgindialogs_im();*/ |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6623 | |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6624 | return TRUE; |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6625 | } |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6626 | /* aim:GoChat?roomname=CHATROOMNAME&exchange=4 */ |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6627 | else if (!g_ascii_strcasecmp(cmd, "GoChat")) { |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6628 | char *rname = g_hash_table_lookup(params, "roomname"); |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6629 | if (rname) { |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6630 | /* This is somewhat hacky, but the params aren't useful after this command */ |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6631 | g_hash_table_insert(params, g_strdup("exchange"), g_strdup("4")); |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6632 | g_hash_table_insert(params, g_strdup("room"), g_strdup(rname)); |
| 15884 | 6633 | serv_join_chat(purple_account_get_connection(acct), params); |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6634 | } |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6635 | /*else |
| 15884 | 6636 | ** Same as above (except that this would have to be re-written using purple_request_*) |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6637 | pidgin_blist_joinchat_show(); */ |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6638 | |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6639 | return TRUE; |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6640 | } |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6641 | /* aim:AddBuddy?screenname=SCREENNAME&groupname=GROUPNAME*/ |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6642 | else if (!g_ascii_strcasecmp(cmd, "AddBuddy")) { |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6643 | char *sname = g_hash_table_lookup(params, "screenname"); |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6644 | char *gname = g_hash_table_lookup(params, "groupname"); |
| 15884 | 6645 | purple_blist_request_add_buddy(acct, sname, gname, NULL); |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6646 | return TRUE; |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6647 | } |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6648 | |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6649 | return FALSE; |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6650 | } |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6651 | |
| 15884 | 6652 | void oscar_init(PurplePluginProtocolInfo *prpl_info) |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6653 | { |
| 15884 | 6654 | PurpleAccountOption *option; |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6655 | static gboolean init = FALSE; |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6656 | |
| 15884 | 6657 | option = purple_account_option_string_new(_("Server"), "server", OSCAR_DEFAULT_LOGIN_SERVER); |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6658 | prpl_info->protocol_options = g_list_append(prpl_info->protocol_options, option); |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6659 | |
| 15884 | 6660 | option = purple_account_option_int_new(_("Port"), "port", OSCAR_DEFAULT_LOGIN_PORT); |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6661 | prpl_info->protocol_options = g_list_append(prpl_info->protocol_options, option); |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6662 | |
| 15884 | 6663 | option = purple_account_option_bool_new( |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6664 | _("Always use ICQ proxy server for file transfers\n(slower, but does not reveal your IP address)"), "always_use_rv_proxy", |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6665 | OSCAR_DEFAULT_ALWAYS_USE_RV_PROXY); |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6666 | prpl_info->protocol_options = g_list_append(prpl_info->protocol_options, option); |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6667 | |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6668 | if (init) |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6669 | return; |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6670 | init = TRUE; |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6671 | |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6672 | /* Preferences */ |
| 15884 | 6673 | purple_prefs_add_none("/plugins/prpl/oscar"); |
| 6674 | purple_prefs_add_bool("/plugins/prpl/oscar/recent_buddies", FALSE); | |
| 6675 | purple_prefs_add_bool("/plugins/prpl/oscar/show_idle", FALSE); | |
| 6676 | purple_prefs_remove("/plugins/prpl/oscar/always_use_rv_proxy"); | |
|
15685
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6677 | |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6678 | /* protocol handler */ |
|
483b223d0b60
uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents:
15684
diff
changeset
|
6679 | /* TODO: figure out a good instance to use here */ |
| 15884 | 6680 | purple_signal_connect(purple_get_core(), "uri-handler", &init, |
| 6681 | PURPLE_CALLBACK(oscar_uri_handler), NULL); | |
| 6682 | } | |
| 6683 |