Tue, 12 Oct 2004 00:49:19 +0000
[gaim-migrate @ 11098]
gaim_prefs_connect_callback() now takes a handle that can be used to disconnect
the callbacks later on. The callback id's remain, so people can still use those
if they want, although I'm not sure if there's any need for them any more.
I also switched the order for initializing the prefs subsystem and statically
compiled protocol plugins so that prpl prefs can work for statically compiled
prpls.
| 2086 | 1 | /* |
| 2 | * gaim | |
| 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 | |
|
8151
195a587b6c32
[gaim-migrate @ 8863]
Mark Doliner <markdoliner@pidgin.im>
parents:
8150
diff
changeset
|
7 | * Some code copyright (C) 2001-2004, Mark Doliner <thekingant@users.sourceforge.net> |
| 6302 | 8 | * |
| 9 | * 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
|
10 | * Some libfaim code copyright (C) 2001-2004 Mark Doliner <thekingant@users.sourceforge.net> |
| 2086 | 11 | * |
| 12 | * This program is free software; you can redistribute it and/or modify | |
| 13 | * it under the terms of the GNU General Public License as published by | |
| 14 | * the Free Software Foundation; either version 2 of the License, or | |
| 15 | * (at your option) any later version. | |
| 16 | * | |
| 17 | * This program is distributed in the hope that it will be useful, | |
| 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 2086 | 20 | * GNU General Public License for more details. |
| 21 | * | |
| 22 | * You should have received a copy of the GNU General Public License | |
| 23 | * along with this program; if not, write to the Free Software | |
| 24 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 25 | * | |
| 26 | */ | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
27 | #include "internal.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
28 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
29 | #include "account.h" |
|
5638
53e752c88ea1
[gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents:
5631
diff
changeset
|
30 | #include "accountopt.h" |
|
6846
f814f02dca87
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
31 | #include "buddyicon.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
32 | #include "conversation.h" |
|
7083
bdf557b0eea4
[gaim-migrate @ 7648]
Christian Hammond <chipx86@chipx86.com>
parents:
7082
diff
changeset
|
33 | #include "core.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
34 | #include "debug.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
35 | #include "ft.h" |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6907
diff
changeset
|
36 | #include "imgstore.h" |
| 8231 | 37 | #include "network.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
38 | #include "notify.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
39 | #include "privacy.h" |
| 2086 | 40 | #include "prpl.h" |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
41 | #include "proxy.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
42 | #include "request.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
43 | #include "util.h" |
| 9943 | 44 | #include "version.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
45 | |
| 2086 | 46 | #include "aim.h" |
| 5842 | 47 | #include "md5.h" |
| 2086 | 48 | |
|
9976
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
49 | #define OSCAR_STATUS_ID_INVISIBLE "invisible" |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
50 | #define OSCAR_STATUS_ID_OFFLINE "offline" |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
51 | #define OSCAR_STATUS_ID_ONLINE "online" |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
52 | #define OSCAR_STATUS_ID_AVAILABLE "available" |
|
9976
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
53 | #define OSCAR_STATUS_ID_AWAY "away" |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
54 | #define OSCAR_STATUS_ID_DND "dnd" |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
55 | #define OSCAR_STATUS_ID_NA "na" |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
56 | #define OSCAR_STATUS_ID_OCCUPIED "occupied" |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
57 | #define OSCAR_STATUS_ID_FREE4CHAT "free4chat" |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
58 | #define OSCAR_STATUS_ID_CUSTOM "custom" |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
59 | |
| 2086 | 60 | #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3" |
| 61 | ||
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
62 | #define OSCAR_CONNECT_STEPS 6 |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
63 | #define OSCAR_DEFAULT_CUSTOM_ENCODING "ISO-8859-1" |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
64 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
65 | static GaimPlugin *my_protocol = NULL; |
|
4249
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4246
diff
changeset
|
66 | |
|
7376
67d0debf3d8e
[gaim-migrate @ 7971]
Mark Doliner <markdoliner@pidgin.im>
parents:
7366
diff
changeset
|
67 | static int caps_aim = AIM_CAPS_CHAT | AIM_CAPS_BUDDYICON | AIM_CAPS_DIRECTIM | AIM_CAPS_SENDFILE | AIM_CAPS_INTEROPERATE | AIM_CAPS_ICHAT; |
|
67d0debf3d8e
[gaim-migrate @ 7971]
Mark Doliner <markdoliner@pidgin.im>
parents:
7366
diff
changeset
|
68 | static int caps_icq = AIM_CAPS_BUDDYICON | AIM_CAPS_DIRECTIM | AIM_CAPS_SENDFILE | AIM_CAPS_ICQUTF8 | AIM_CAPS_INTEROPERATE | AIM_CAPS_ICHAT; |
|
3458
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
69 | |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
70 | static fu8_t features_aim[] = {0x01, 0x01, 0x01, 0x02}; |
|
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
71 | static fu8_t features_icq[] = {0x01, 0x06}; |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
72 | static fu8_t ck[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; |
| 2086 | 73 | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
74 | typedef struct _OscarData OscarData; |
|
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
75 | struct _OscarData { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
76 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
77 | aim_conn_t *conn; |
| 2086 | 78 | |
| 79 | guint cnpa; | |
| 80 | guint paspa; | |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
81 | guint emlpa; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
82 | guint icopa; |
| 2086 | 83 | |
| 4823 | 84 | gboolean iconconnecting; |
| 5842 | 85 | gboolean set_icon; |
| 4823 | 86 | |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
87 | GSList *create_rooms; |
| 2086 | 88 | |
| 89 | gboolean conf; | |
| 90 | gboolean reqemail; | |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
91 | gboolean setemail; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
92 | char *email; |
| 2979 | 93 | gboolean setnick; |
| 94 | char *newsn; | |
| 2086 | 95 | gboolean chpass; |
| 96 | char *oldp; | |
| 97 | char *newp; | |
|
9971
8291bafb0025
[gaim-migrate @ 10882]
Daniel Atallah <datallah@pidgin.im>
parents:
9948
diff
changeset
|
98 | |
| 2086 | 99 | GSList *oscar_chats; |
| 100 | GSList *direct_ims; | |
| 3630 | 101 | GSList *file_transfers; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
102 | GHashTable *buddyinfo; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
103 | GSList *requesticon; |
| 2086 | 104 | |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
105 | gboolean killme; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
106 | gboolean icq; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
107 | guint icontimer; |
|
5968
f3e4bc7bd718
[gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents:
5954
diff
changeset
|
108 | guint getblisttimer; |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
109 | guint getinfotimer; |
| 2993 | 110 | |
| 111 | struct { | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
112 | guint maxwatchers; /* max users who can watch you */ |
| 2993 | 113 | guint maxbuddies; /* max users you can watch */ |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
114 | guint maxgroups; /* max groups in server list */ |
| 2993 | 115 | guint maxpermits; /* max users on permit list */ |
| 116 | guint maxdenies; /* max users on deny list */ | |
| 117 | guint maxsiglen; /* max size (bytes) of profile */ | |
| 118 | guint maxawaymsglen; /* max size (bytes) of posted away message */ | |
| 119 | } rights; | |
| 2086 | 120 | }; |
| 121 | ||
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
122 | struct create_room { |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
123 | char *name; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
124 | int exchange; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
125 | }; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
126 | |
| 2086 | 127 | struct chat_connection { |
| 128 | char *name; | |
| 129 | char *show; /* AOL did something funny to us */ | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
130 | fu16_t exchange; |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
131 | fu16_t instance; |
| 2086 | 132 | int fd; /* this is redundant since we have the conn below */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
133 | aim_conn_t *conn; |
| 2086 | 134 | int inpa; |
| 135 | int id; | |
| 5575 | 136 | GaimConnection *gc; /* i hate this. */ |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
137 | GaimConversation *conv; /* bah. */ |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
138 | int maxlen; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
139 | int maxvis; |
| 2086 | 140 | }; |
| 141 | ||
| 8971 | 142 | struct oscar_direct_im { |
| 5575 | 143 | GaimConnection *gc; |
| 2086 | 144 | char name[80]; |
| 145 | int watcher; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
146 | aim_conn_t *conn; |
| 3008 | 147 | gboolean connected; |
| 8978 | 148 | gboolean gpc_pend; |
| 149 | gboolean killme; | |
| 8984 | 150 | gboolean donttryagain; |
| 2086 | 151 | }; |
| 152 | ||
| 153 | struct ask_direct { | |
| 5575 | 154 | GaimConnection *gc; |
| 2086 | 155 | char *sn; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
156 | char ip[64]; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
157 | fu8_t cookie[8]; |
| 8984 | 158 | gboolean donttryagain; |
| 2086 | 159 | }; |
| 160 | ||
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
161 | /* |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
162 | * Various PRPL-specific buddy info that we want to keep track of |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
163 | * Some other info is maintained by locate.c, and I'd like to move |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
164 | * the rest of this to libfaim, mostly im.c |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
165 | */ |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
166 | struct buddyinfo { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
167 | gboolean typingnot; |
|
6292
ec8a58bc2b87
[gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents:
6281
diff
changeset
|
168 | gchar *availmsg; |
| 6857 | 169 | fu32_t ipaddr; |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
170 | |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
171 | unsigned long ico_me_len; |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
172 | unsigned long ico_me_csum; |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
173 | time_t ico_me_time; |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
174 | gboolean ico_informed; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
175 | |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
176 | unsigned long ico_len; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
177 | unsigned long ico_csum; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
178 | time_t ico_time; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
179 | gboolean ico_need; |
| 7406 | 180 | gboolean ico_sent; |
| 2086 | 181 | }; |
| 182 | ||
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
183 | struct name_data { |
| 5575 | 184 | GaimConnection *gc; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
185 | gchar *name; |
| 3453 | 186 | gchar *nick; |
| 3141 | 187 | }; |
| 188 | ||
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
189 | static char *msgerrreason[] = { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
190 | N_("Invalid error"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
191 | N_("Invalid SNAC"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
192 | N_("Rate to host"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
193 | N_("Rate to client"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
194 | N_("Not logged in"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
195 | N_("Service unavailable"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
196 | N_("Service not defined"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
197 | N_("Obsolete SNAC"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
198 | N_("Not supported by host"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
199 | N_("Not supported by client"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
200 | N_("Refused by client"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
201 | N_("Reply too big"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
202 | N_("Responses lost"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
203 | N_("Request denied"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
204 | N_("Busted SNAC payload"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
205 | N_("Insufficient rights"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
206 | N_("In local permit/deny"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
207 | N_("Too evil (sender)"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
208 | N_("Too evil (receiver)"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
209 | N_("User temporarily unavailable"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
210 | N_("No match"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
211 | N_("List overflow"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
212 | N_("Request ambiguous"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
213 | N_("Queue full"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
214 | N_("Not while on AOL") |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
215 | }; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
216 | static int msgerrreasonlen = 25; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
217 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
218 | /* All the libfaim->gaim callback functions */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
219 | static int gaim_parse_auth_resp (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
220 | static int gaim_parse_login (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
221 | static int gaim_handle_redirect (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
222 | static int gaim_info_change (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
223 | static int gaim_account_confirm (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
224 | static int gaim_parse_oncoming (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
225 | static int gaim_parse_offgoing (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
226 | static int gaim_parse_incoming_im(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
227 | static int gaim_parse_misses (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
228 | static int gaim_parse_clientauto (aim_session_t *, aim_frame_t *, ...); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
229 | static int gaim_parse_userinfo (aim_session_t *, aim_frame_t *, ...); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
230 | static int gaim_reqinfo_timeout (aim_session_t *, aim_frame_t *, ...); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
231 | static int gaim_parse_motd (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
232 | static int gaim_chatnav_info (aim_session_t *, aim_frame_t *, ...); |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
233 | static int gaim_conv_chat_join (aim_session_t *, aim_frame_t *, ...); |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
234 | static int gaim_conv_chat_leave (aim_session_t *, aim_frame_t *, ...); |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
235 | static int gaim_conv_chat_info_update (aim_session_t *, aim_frame_t *, ...); |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
236 | static int gaim_conv_chat_incoming_msg(aim_session_t *, aim_frame_t *, ...); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
237 | static int gaim_email_parseupdate(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
238 | static int gaim_icon_error (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
239 | static int gaim_icon_parseicon (aim_session_t *, aim_frame_t *, ...); |
|
5844
a0f8b06669e7
[gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents:
5842
diff
changeset
|
240 | static int oscar_icon_req (aim_session_t *, aim_frame_t *, ...); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
241 | static int gaim_parse_msgack (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
242 | static int gaim_parse_ratechange (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
243 | static int gaim_parse_evilnotify (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
244 | static int gaim_parse_searcherror(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
245 | static int gaim_parse_searchreply(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
246 | static int gaim_bosrights (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
247 | static int gaim_connerr (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
248 | static int conninitdone_admin (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
249 | static int conninitdone_bos (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
250 | static int conninitdone_chatnav (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
251 | static int conninitdone_chat (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
252 | static int conninitdone_email (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
253 | static int conninitdone_icon (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
254 | static int gaim_parse_msgerr (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
255 | static int gaim_parse_mtn (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
256 | static int gaim_parse_locaterights(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
257 | static int gaim_parse_buddyrights(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
258 | static int gaim_parse_locerr (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
259 | static int gaim_icbm_param_info (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
260 | static int gaim_parse_genericerr (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
261 | static int gaim_memrequest (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
262 | static int gaim_selfinfo (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
263 | static int gaim_offlinemsg (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
264 | static int gaim_offlinemsgdone (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
265 | static int gaim_icqalias (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
266 | static int gaim_icqinfo (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
267 | static int gaim_popup (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
268 | #ifndef NOSSI |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
269 | static int gaim_ssi_parseerr (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
270 | static int gaim_ssi_parserights (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
271 | static int gaim_ssi_parselist (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
272 | static int gaim_ssi_parseack (aim_session_t *, aim_frame_t *, ...); |
|
8227
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
273 | static int gaim_ssi_parseadd (aim_session_t *, aim_frame_t *, ...); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
274 | static int gaim_ssi_authgiven (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
275 | static int gaim_ssi_authrequest (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
276 | static int gaim_ssi_authreply (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
277 | static int gaim_ssi_gotadded (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
278 | #endif |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
279 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
280 | /* for DirectIM/image transfer */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
281 | static int gaim_odc_initiate (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
282 | static int gaim_odc_incoming (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
283 | static int gaim_odc_typing (aim_session_t *, aim_frame_t *, ...); |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6907
diff
changeset
|
284 | static int gaim_odc_update_ui (aim_session_t *, aim_frame_t *, ...); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
285 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
286 | /* for file transfer */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
287 | static int oscar_sendfile_estblsh(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
288 | static int oscar_sendfile_prompt (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
289 | static int oscar_sendfile_ack (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
290 | static int oscar_sendfile_done (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
291 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
292 | static gboolean gaim_icon_timerfunc(gpointer data); |
| 8971 | 293 | static void oscar_callback(gpointer data, gint source, GaimInputCondition condition); |
| 8983 | 294 | static void oscar_direct_im_initiate(GaimConnection *gc, const char *who, const char *cookie); |
|
5954
58e43cf2dc1f
[gaim-migrate @ 6398]
Mark Doliner <markdoliner@pidgin.im>
parents:
5948
diff
changeset
|
295 | static void oscar_set_info(GaimConnection *gc, const char *text); |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
296 | static void recent_buddies_cb(const char *name, GaimPrefType type, gpointer value, gpointer data); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
297 | |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
298 | static void oscar_free_name_data(struct name_data *data) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
299 | g_free(data->name); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
300 | g_free(data->nick); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
301 | g_free(data); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
302 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
303 | |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
304 | static void oscar_free_buddyinfo(void *data) { |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
305 | struct buddyinfo *bi = data; |
|
6292
ec8a58bc2b87
[gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents:
6281
diff
changeset
|
306 | g_free(bi->availmsg); |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
307 | g_free(bi); |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
308 | } |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
309 | |
|
9807
ff713acc7204
[gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents:
9806
diff
changeset
|
310 | static fu32_t oscar_charset_check(const char *utf8) |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
311 | { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
312 | int i = 0; |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
313 | int charset = AIM_CHARSET_ASCII; |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
314 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
315 | /* Determine how we can send this message. Per the warnings elsewhere |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
316 | * in this file, these little checks determine the simplest encoding |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
317 | * we can use for a given message send using it. */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
318 | while (utf8[i]) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
319 | if ((unsigned char)utf8[i] > 0x7f) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
320 | /* not ASCII! */ |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
321 | charset = AIM_CHARSET_CUSTOM; |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
322 | break; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
323 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
324 | i++; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
325 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
326 | while (utf8[i]) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
327 | /* ISO-8859-1 is 0x00-0xbf in the first byte |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
328 | * followed by 0xc0-0xc3 in the second */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
329 | if ((unsigned char)utf8[i] < 0x80) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
330 | i++; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
331 | continue; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
332 | } else if (((unsigned char)utf8[i] & 0xfc) == 0xc0 && |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
333 | ((unsigned char)utf8[i + 1] & 0xc0) == 0x80) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
334 | i += 2; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
335 | continue; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
336 | } |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
337 | charset = AIM_CHARSET_UNICODE; |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
338 | break; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
339 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
340 | |
|
9807
ff713acc7204
[gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents:
9806
diff
changeset
|
341 | return charset; |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
342 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
343 | |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
344 | /* |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
345 | * Take a string of the form charset="bleh" where bleh is |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
346 | * one of us-ascii, utf-8, iso-8859-1, or unicode-2-0, and |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
347 | * return a newly allocated string containing bleh. |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
348 | */ |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
349 | static gchar *oscar_encoding_extract(const char *encoding) |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
350 | { |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
351 | gchar *ret = NULL; |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
352 | char *begin, *end; |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
353 | |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
354 | g_return_val_if_fail(encoding != NULL, NULL); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
355 | |
|
8735
01248ea222d3
[gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents:
8733
diff
changeset
|
356 | /* Make sure encoding begins with charset= */ |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
357 | if (strncmp(encoding, "text/aolrtf; charset=", 21)) |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
358 | return NULL; |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
359 | |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
360 | begin = strchr(encoding, '"'); |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
361 | end = strrchr(encoding, '"'); |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
362 | |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
363 | if ((begin == NULL) || (end == NULL) || (begin >= end)) |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
364 | return NULL; |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
365 | |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
366 | ret = g_strndup(begin+1, (end-1) - begin); |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
367 | |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
368 | return ret; |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
369 | } |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
370 | |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
371 | static gchar * |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
372 | oscar_encoding_to_utf8(const char *encoding, const char *text, int textlen) |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
373 | { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
374 | gchar *utf8 = NULL; |
|
9595
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
375 | |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
376 | if ((encoding == NULL) || encoding[0] == '\0') { |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
377 | gaim_debug_info("oscar", "Empty encoding, assuming UTF-8\n"); |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
378 | |
| 9639 | 379 | } else if (!strcmp(encoding, "iso-8859-1") |
| 380 | || !strcmp(encoding, "ISO-8859-1-Windows-3.1-Latin-1")) { | |
|
9595
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
381 | utf8 = g_convert(text, textlen, "UTF-8", "ISO-8859-1", NULL, NULL, NULL); |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
382 | |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
383 | } else if (!strcmp(encoding, "unicode-2-0")) { |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
384 | utf8 = g_convert(text, textlen, "UTF-8", "UCS-2BE", NULL, NULL, NULL); |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
385 | |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
386 | } else if (strcmp(encoding, "us-ascii") && strcmp(encoding, "utf-8")) { |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
387 | gaim_debug_warning("oscar", "Unrecognized character encoding \"%s\", " |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
388 | "attempting to convert to UTF-8 anyway\n"); |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
389 | utf8 = g_convert(text, textlen, "UTF-8", encoding, NULL, NULL, NULL); |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
390 | } |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
391 | |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
392 | /* |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
393 | * If utf8 is still NULL then either the encoding is us-ascii/utf-8 or |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
394 | * 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
|
395 | * 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
|
396 | * just copy it. |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
397 | */ |
|
3860d7d423ca
[gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents:
9586
diff
changeset
|
398 | if (utf8 == NULL) { |
| 9638 | 399 | if (textlen != 0 && *text != '\0' |
| 400 | && !g_utf8_validate(text, textlen, NULL)) | |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
401 | utf8 = g_strdup(_("(There was an error receiving this message. The buddy you are speaking to most likely has a buggy client.)")); |
| 9476 | 402 | else |
| 9481 | 403 | utf8 = g_strndup(text, textlen); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
404 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
405 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
406 | return utf8; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
407 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
408 | |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
409 | static gchar * |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
410 | gaim_plugin_oscar_convert_to_utf8(const fu8_t *data, fu16_t datalen, const char *charsetstr, gboolean fallback) |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
411 | { |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
412 | gchar *ret = NULL; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
413 | GError *err = NULL; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
414 | |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
415 | if ((charsetstr == NULL) || (*charsetstr == '\0')) |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
416 | return NULL; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
417 | |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
418 | if (strcasecmp("UTF-8", charsetstr)) { |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
419 | if (fallback) |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
420 | 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
|
421 | else |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
422 | ret = g_convert(data, datalen, "UTF-8", charsetstr, NULL, NULL, &err); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
423 | if (err != NULL) { |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
424 | gaim_debug_warning("oscar", "Conversation from %s failed: %s.\n", |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
425 | charsetstr, err->message); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
426 | g_error_free(err); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
427 | } |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
428 | } else { |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
429 | if (g_utf8_validate(data, datalen, NULL)) |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
430 | ret = g_strndup(data, datalen); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
431 | else |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
432 | gaim_debug_warning("oscar", "String is not valid UTF-8.\n"); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
433 | } |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
434 | |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
435 | return ret; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
436 | } |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
437 | |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
438 | /* |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
439 | * We try decoding using two different character sets. The charset |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
440 | * 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
|
441 | * decode. We do this because there are lots of broken ICQ clients |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
442 | * that don't correctly send non-ASCII messages. And if Gaim isn't |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
443 | * able to deal with that crap, then people complain like banshees. |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
444 | * charsetstr1 is always set to what the correct encoding should be. |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
445 | */ |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
446 | static gchar * |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
447 | gaim_plugin_oscar_decode_im_part(GaimAccount *account, const char *sourcesn, fu16_t charset, fu16_t charsubset, fu8_t *data, fu16_t datalen) |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
448 | { |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
449 | gchar *ret = NULL; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
450 | const gchar *charsetstr1, *charsetstr2; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
451 | |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
452 | gaim_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
|
453 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
454 | if ((datalen == 0) || (data == NULL)) |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
455 | return NULL; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
456 | |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
457 | if (charset == AIM_CHARSET_UNICODE) { |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
458 | charsetstr1 = "UCS-2BE"; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
459 | charsetstr2 = "UTF-8"; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
460 | } else if (charset == AIM_CHARSET_CUSTOM) { |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
461 | if ((sourcesn != NULL) && aim_sn_is_icq(sourcesn)) |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
462 | charsetstr1 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
463 | else |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
464 | charsetstr1 = "ISO-8859-1"; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
465 | charsetstr2 = "UTF-8"; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
466 | } else if (charset == AIM_CHARSET_ASCII) { |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
467 | /* Should just be "ASCII" */ |
|
9914
93b0188fc369
[gaim-migrate @ 10806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9908
diff
changeset
|
468 | charsetstr1 = "ASCII"; |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
469 | charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
470 | } else if (charset == 0x000d) { |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
471 | /* 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
|
472 | charsetstr1 = "ISO-8859-1"; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
473 | charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
474 | } else { |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
475 | /* Unknown, hope for valid UTF-8... */ |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
476 | charsetstr1 = "UTF-8"; |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
477 | charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
478 | } |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
479 | |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
480 | ret = gaim_plugin_oscar_convert_to_utf8(data, datalen, charsetstr1, FALSE); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
481 | if (ret == NULL) |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
482 | ret = gaim_plugin_oscar_convert_to_utf8(data, datalen, charsetstr2, TRUE); |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
483 | if (ret == NULL) |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
484 | ret = g_strdup(_("(There was an error receiving this message. The buddy you are speaking to most likely has a buggy client.)")); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
485 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
486 | return ret; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
487 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
488 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
489 | static void |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
490 | gaim_plugin_oscar_convert_to_best_encoding(GaimConnection *gc, const char *destsn, const gchar *from, |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
491 | gchar **msg, int *msglen_int, |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
492 | fu16_t *charset, fu16_t *charsubset) |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
493 | { |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
494 | OscarData *od = gc->proto_data; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
495 | GaimAccount *account = gaim_connection_get_account(gc); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
496 | GError *err = NULL; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
497 | aim_userinfo_t *userinfo = NULL; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
498 | const gchar *charsetstr; |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
499 | gsize msglen; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
500 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
501 | /* Attempt to send as ASCII */ |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
502 | *msg = g_convert(from, strlen(from), "ASCII", "UTF-8", NULL, &msglen, NULL); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
503 | if (*msg != NULL) { |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
504 | *charset = AIM_CHARSET_ASCII; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
505 | *charsubset = 0x0000; |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
506 | *msglen_int = msglen; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
507 | return; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
508 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
509 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
510 | /* |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
511 | * If we're sending to an ICQ user, and they are advertising the |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
512 | * Unicode capability, then attempt to send as UCS-2BE. |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
513 | */ |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
514 | if ((destsn != NULL) && aim_sn_is_icq(destsn)) |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
515 | userinfo = aim_locate_finduserinfo(od->sess, destsn); |
|
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 | if ((userinfo != NULL) && (userinfo->capabilities & AIM_CAPS_ICQUTF8)) { |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
518 | *msg = g_convert(from, strlen(from), "UCS-2BE", "UTF-8", NULL, &msglen, NULL); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
519 | if (*msg != NULL) { |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
520 | *charset = AIM_CHARSET_UNICODE; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
521 | *charsubset = 0x0000; |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
522 | *msglen_int = msglen; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
523 | return; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
524 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
525 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
526 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
527 | /* |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
528 | * 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
|
529 | * ICQ then attempt to send as the user specified character encoding. |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
530 | */ |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
531 | charsetstr = "ISO-8859-1"; |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
532 | if ((destsn != NULL) && aim_sn_is_icq(destsn)) |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
533 | charsetstr = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
534 | |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
535 | *msg = g_convert(from, strlen(from), charsetstr, "UTF-8", NULL, &msglen, NULL); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
536 | if (*msg != NULL) { |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
537 | *charset = AIM_CHARSET_CUSTOM; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
538 | *charsubset = 0x0000; |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
539 | *msglen_int = msglen; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
540 | return; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
541 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
542 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
543 | /* |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
544 | * Nothing else worked, so send as UCS-2BE. |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
545 | */ |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
546 | *msg = g_convert(from, strlen(from), "UCS-2BE", "UTF-8", NULL, &msglen, &err); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
547 | if (*msg != NULL) { |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
548 | *charset = AIM_CHARSET_UNICODE; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
549 | *charsubset = 0x0000; |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
550 | *msglen_int = msglen; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
551 | return; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
552 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
553 | |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
554 | gaim_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
|
555 | g_error_free(err); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
556 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
557 | gaim_debug_error("oscar", "This should NEVER happen! Sending UTF-8 text flagged as ASCII.\n"); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
558 | *msg = g_strdup(from); |
|
10039
cb0a6cbd0023
[gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents:
10022
diff
changeset
|
559 | *msglen_int = strlen(*msg); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
560 | *charset = AIM_CHARSET_ASCII; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
561 | *charsubset = 0x0000; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
562 | return; |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
563 | } |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
564 | |
|
9407
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
565 | gchar *oscar_caps_to_string(guint caps) |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
566 | { |
|
9407
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
567 | GString *str; |
|
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
568 | gchar *tmp; |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
569 | guint bit = 1; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
570 | |
|
9407
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
571 | str = g_string_new(""); |
|
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
572 | |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
573 | if (!caps) { |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
574 | return NULL; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
575 | } else while (bit <= AIM_CAPS_LAST) { |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
576 | if (bit & caps) { |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
577 | switch (bit) { |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
578 | case AIM_CAPS_BUDDYICON: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
579 | tmp = _("Buddy Icon"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
580 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
581 | case AIM_CAPS_TALK: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
582 | tmp = _("Voice"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
583 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
584 | case AIM_CAPS_DIRECTIM: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
585 | tmp = _("AIM Direct IM"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
586 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
587 | case AIM_CAPS_CHAT: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
588 | tmp = _("Chat"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
589 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
590 | case AIM_CAPS_GETFILE: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
591 | tmp = _("Get File"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
592 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
593 | case AIM_CAPS_SENDFILE: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
594 | tmp = _("Send File"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
595 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
596 | case AIM_CAPS_GAMES: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
597 | case AIM_CAPS_GAMES2: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
598 | tmp = _("Games"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
599 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
600 | case AIM_CAPS_ADDINS: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
601 | tmp = _("Add-Ins"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
602 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
603 | case AIM_CAPS_SENDBUDDYLIST: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
604 | tmp = _("Send Buddy List"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
605 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
606 | case AIM_CAPS_ICQ_DIRECT: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
607 | tmp = _("ICQ Direct Connect"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
608 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
609 | case AIM_CAPS_APINFO: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
610 | tmp = _("AP User"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
611 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
612 | case AIM_CAPS_ICQRTF: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
613 | tmp = _("ICQ RTF"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
614 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
615 | case AIM_CAPS_EMPTY: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
616 | tmp = _("Nihilist"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
617 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
618 | case AIM_CAPS_ICQSERVERRELAY: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
619 | tmp = _("ICQ Server Relay"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
620 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
621 | case AIM_CAPS_ICQUTF8OLD: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
622 | tmp = _("Old ICQ UTF8"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
623 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
624 | case AIM_CAPS_TRILLIANCRYPT: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
625 | tmp = _("Trillian Encryption"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
626 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
627 | case AIM_CAPS_ICQUTF8: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
628 | tmp = _("ICQ UTF8"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
629 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
630 | case AIM_CAPS_HIPTOP: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
631 | tmp = _("Hiptop"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
632 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
633 | case AIM_CAPS_SECUREIM: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
634 | tmp = _("Security Enabled"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
635 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
636 | case AIM_CAPS_VIDEO: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
637 | tmp = _("Video Chat"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
638 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
639 | /* Not actually sure about this one... WinAIM doesn't show anything */ |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
640 | case AIM_CAPS_ICHATAV: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
641 | tmp = _("iChat AV"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
642 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
643 | case AIM_CAPS_LIVEVIDEO: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
644 | tmp = _("Live Video"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
645 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
646 | case AIM_CAPS_CAMERA: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
647 | tmp = _("Camera"); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
648 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
649 | default: |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
650 | tmp = NULL; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
651 | break; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
652 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
653 | if (tmp) |
|
9532
32470c5a1d58
[gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
9481
diff
changeset
|
654 | 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
|
655 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
656 | bit <<= 1; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
657 | } |
|
9407
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
658 | |
|
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
659 | return g_string_free(str, FALSE); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
660 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
661 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
662 | static char *oscar_icqstatus(int state) { |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
663 | /* 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
|
664 | if (state & AIM_ICQ_STATE_CHAT) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
665 | return g_strdup_printf(_("Free For Chat")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
666 | else if (state & AIM_ICQ_STATE_DND) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
667 | return g_strdup_printf(_("Do Not Disturb")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
668 | else if (state & AIM_ICQ_STATE_OUT) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
669 | return g_strdup_printf(_("Not Available")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
670 | else if (state & AIM_ICQ_STATE_BUSY) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
671 | return g_strdup_printf(_("Occupied")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
672 | else if (state & AIM_ICQ_STATE_AWAY) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
673 | return g_strdup_printf(_("Away")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
674 | else if (state & AIM_ICQ_STATE_WEBAWARE) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
675 | return g_strdup_printf(_("Web Aware")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
676 | else if (state & AIM_ICQ_STATE_INVISIBLE) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
677 | return g_strdup_printf(_("Invisible")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
678 | else |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
679 | return g_strdup_printf(_("Online")); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
680 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
681 | |
|
9973
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
682 | static void |
|
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
683 | oscar_string_append(GString *str, const char *newline, const char *name, const char *value) |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
684 | { |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
685 | gchar *utf8; |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
686 | |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
687 | if (value && value[0] && (utf8 = gaim_utf8_try_convert(value))) { |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
688 | 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
|
689 | g_free(utf8); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
690 | } |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
691 | } |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
692 | |
|
9973
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
693 | static void oscar_string_append_info(GaimConnection *gc, GString *str, const char *newline, GaimBuddy *b, aim_userinfo_t *userinfo) |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
694 | { |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
695 | OscarData *od; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
696 | GaimAccount *account; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
697 | GaimPresence *presence; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
698 | GaimPresence *buddy_presence; |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
699 | GaimGroup *g = NULL; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
700 | struct buddyinfo *bi = NULL; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
701 | char *tmp; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
702 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
703 | od = gc->proto_data; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
704 | account = gaim_connection_get_account(gc); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
705 | presence = gaim_account_get_presence(account); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
706 | buddy_presence = gaim_buddy_get_presence(b); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
707 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
708 | if ((str == NULL) || (newline == NULL) || ((b == NULL) && (userinfo == NULL))) |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
709 | return; |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
710 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
711 | if (userinfo == NULL) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
712 | userinfo = aim_locate_finduserinfo(od->sess, b->name); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
713 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
714 | if (b == NULL) |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
715 | b = gaim_find_buddy(account, userinfo->sn); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
716 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
717 | if (b != NULL) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
718 | g = gaim_find_buddys_group(b); |
|
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 | if (userinfo != NULL) |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
721 | bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, userinfo->sn)); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
722 | |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
723 | if (b != NULL) { |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
724 | if (gaim_presence_is_online(buddy_presence)) { |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
725 | if (aim_sn_is_icq(b->name)) { |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
726 | tmp = oscar_icqstatus((b->uc & 0xffff0000) >> 16); |
|
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
727 | oscar_string_append(str, newline, _("Status"), tmp); |
|
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
728 | g_free(tmp); |
|
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
729 | } |
|
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
730 | } else { |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
731 | tmp = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name); |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
732 | if (aim_ssi_waitingforauth(od->sess->ssi.local, tmp, b->name)) |
|
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
733 | oscar_string_append(str, newline, _("Status"), _("Not Authorized")); |
|
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
734 | else |
|
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
735 | oscar_string_append(str, newline, _("Status"), _("Offline")); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
736 | } |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
737 | } |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
738 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
739 | if ((bi != NULL) && (bi->ipaddr != 0)) { |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
740 | tmp = g_strdup_printf("%hhu.%hhu.%hhu.%hhu", |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
741 | (bi->ipaddr & 0xff000000) >> 24, |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
742 | (bi->ipaddr & 0x00ff0000) >> 16, |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
743 | (bi->ipaddr & 0x0000ff00) >> 8, |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
744 | (bi->ipaddr & 0x000000ff)); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
745 | oscar_string_append(str, newline, _("IP Address"), tmp); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
746 | g_free(tmp); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
747 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
748 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
749 | if ((userinfo != NULL) && (userinfo->capabilities != 0)) { |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
750 | tmp = oscar_caps_to_string(userinfo->capabilities); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
751 | oscar_string_append(str, newline, _("Capabilities"), tmp); |
|
9407
51d14211393c
[gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents:
9381
diff
changeset
|
752 | g_free(tmp); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
753 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
754 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
755 | if ((b != NULL) && (b->name != NULL) && (g != NULL) && (g->name != NULL)) { |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
756 | tmp = aim_ssi_getcomment(od->sess->ssi.local, g->name, b->name); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
757 | if (tmp != NULL) { |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
758 | char *tmp2 = g_markup_escape_text(tmp, strlen(tmp)); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
759 | g_free(tmp); |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
760 | oscar_string_append(str, newline, _("Buddy Comment"), tmp2); |
|
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
761 | g_free(tmp2); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
762 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
763 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
764 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
765 | if ((bi != NULL) && (bi->availmsg != NULL) && gaim_presence_is_available(presence)) { |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
766 | tmp = g_markup_escape_text(bi->availmsg, strlen(bi->availmsg)); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
767 | oscar_string_append(str, newline, _("Available"), tmp); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
768 | g_free(tmp); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
769 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
770 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
771 | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
772 | static char *extract_name(const char *name) { |
| 4121 | 773 | char *tmp, *x; |
| 2086 | 774 | int i, j; |
| 4120 | 775 | |
| 776 | if (!name) | |
| 4121 | 777 | return NULL; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
778 | |
| 4120 | 779 | x = strchr(name, '-'); |
| 4121 | 780 | |
| 2086 | 781 | if (!x) return NULL; |
| 782 | x = strchr(++x, '-'); | |
| 783 | if (!x) return NULL; | |
| 784 | tmp = g_strdup(++x); | |
| 785 | ||
| 786 | for (i = 0, j = 0; x[i]; i++) { | |
|
2361
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
787 | char hex[3]; |
|
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
788 | if (x[i] != '%') { |
| 2086 | 789 | tmp[j++] = x[i]; |
|
2361
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
790 | continue; |
| 2086 | 791 | } |
|
2361
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
792 | strncpy(hex, x + ++i, 2); hex[2] = 0; |
|
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
793 | i++; |
|
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
794 | tmp[j++] = strtol(hex, NULL, 16); |
| 2086 | 795 | } |
| 796 | ||
| 797 | tmp[j] = 0; | |
| 798 | return tmp; | |
| 799 | } | |
| 800 | ||
| 5575 | 801 | static struct chat_connection *find_oscar_chat(GaimConnection *gc, int id) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
802 | GSList *g = ((OscarData *)gc->proto_data)->oscar_chats; |
| 2086 | 803 | struct chat_connection *c = NULL; |
| 804 | ||
| 805 | while (g) { | |
| 806 | c = (struct chat_connection *)g->data; | |
| 807 | if (c->id == id) | |
| 808 | break; | |
| 809 | g = g->next; | |
| 810 | c = NULL; | |
| 811 | } | |
| 812 | ||
| 813 | return c; | |
| 814 | } | |
| 815 | ||
| 5575 | 816 | static struct chat_connection *find_oscar_chat_by_conn(GaimConnection *gc, |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
817 | aim_conn_t *conn) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
818 | GSList *g = ((OscarData *)gc->proto_data)->oscar_chats; |
| 2086 | 819 | struct chat_connection *c = NULL; |
| 820 | ||
| 821 | while (g) { | |
| 822 | c = (struct chat_connection *)g->data; | |
| 823 | if (c->conn == conn) | |
| 824 | break; | |
| 825 | g = g->next; | |
| 826 | c = NULL; | |
| 827 | } | |
| 828 | ||
| 829 | return c; | |
| 830 | } | |
| 831 | ||
| 8219 | 832 | static struct chat_connection *find_oscar_chat_by_conv(GaimConnection *gc, |
| 833 | GaimConversation *conv) { | |
| 834 | GSList *g = ((OscarData *)gc->proto_data)->oscar_chats; | |
| 835 | struct chat_connection *c = NULL; | |
| 836 | ||
| 837 | while (g) { | |
| 838 | c = (struct chat_connection *)g->data; | |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
839 | if (c->conv == conv) |
| 8219 | 840 | break; |
| 841 | g = g->next; | |
| 842 | c = NULL; | |
| 843 | } | |
| 844 | ||
| 845 | return c; | |
| 846 | } | |
| 847 | ||
| 8971 | 848 | /***************************************************************************** |
| 849 | * Begin scary direct im stuff | |
| 850 | *****************************************************************************/ | |
| 851 | ||
| 852 | static struct oscar_direct_im *oscar_direct_im_find(OscarData *od, const char *who) { | |
| 853 | GSList *d = od->direct_ims; | |
| 854 | struct oscar_direct_im *m = NULL; | |
| 855 | ||
| 856 | while (d) { | |
| 857 | m = (struct oscar_direct_im *)d->data; | |
| 858 | if (!aim_sncmp(who, m->name)) | |
| 859 | return m; | |
| 860 | d = d->next; | |
| 861 | } | |
| 862 | ||
| 863 | return NULL; | |
| 864 | } | |
| 865 | ||
| 866 | static void oscar_direct_im_destroy(OscarData *od, struct oscar_direct_im *dim) | |
| 867 | { | |
| 868 | gaim_debug_info("oscar", | |
| 869 | "destroying Direct IM for %s.\n", dim->name); | |
| 870 | ||
| 871 | od->direct_ims = g_slist_remove(od->direct_ims, dim); | |
| 8978 | 872 | if (dim->gpc_pend) { |
| 873 | dim->killme = TRUE; | |
| 874 | return; | |
| 875 | } | |
| 8971 | 876 | if (dim->watcher) |
| 877 | gaim_input_remove(dim->watcher); | |
| 878 | if (dim->conn) { | |
| 879 | aim_conn_close(dim->conn); | |
| 880 | aim_conn_kill(od->sess, &dim->conn); | |
| 881 | } | |
| 882 | g_free(dim); | |
| 883 | } | |
| 884 | ||
| 885 | /* the only difference between this and destroy is this writes a conv message */ | |
| 886 | static void oscar_direct_im_disconnect(OscarData *od, struct oscar_direct_im *dim) | |
| 887 | { | |
| 888 | GaimConversation *conv; | |
| 889 | char buf[256]; | |
| 890 | ||
| 891 | gaim_debug_info("oscar", | |
| 892 | "%s disconnected Direct IM.\n", dim->name); | |
| 893 | ||
| 894 | if (dim->connected) | |
| 895 | g_snprintf(buf, sizeof buf, _("Direct IM with %s closed"), dim->name); | |
| 8978 | 896 | else |
| 8971 | 897 | g_snprintf(buf, sizeof buf, _("Direct IM with %s failed"), dim->name); |
| 898 | ||
| 899 | conv = gaim_find_conversation_with_account(dim->name, gaim_connection_get_account(dim->gc)); | |
| 900 | if (conv) { | |
| 901 | gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL)); | |
|
9463
d0dcc391c32b
[gaim-migrate @ 10288]
Mark Doliner <markdoliner@pidgin.im>
parents:
9455
diff
changeset
|
902 | gaim_conversation_update_progress(conv, 0); |
| 8971 | 903 | } else { |
| 904 | gaim_notify_error(dim->gc, NULL, _("Direct Connect failed"), buf); | |
| 905 | } | |
| 906 | ||
| 907 | oscar_direct_im_destroy(od, dim); | |
| 908 | ||
| 909 | return; | |
| 910 | } | |
| 911 | ||
| 912 | /* oops i made two of these. this one just calls the other one. */ | |
| 913 | static void gaim_odc_disconnect(aim_session_t *sess, aim_conn_t *conn) | |
| 914 | { | |
| 915 | GaimConnection *gc = sess->aux_data; | |
| 916 | OscarData *od = (OscarData *)gc->proto_data; | |
| 917 | struct oscar_direct_im *dim; | |
| 918 | char *sn; | |
| 919 | ||
| 920 | sn = g_strdup(aim_odc_getsn(conn)); | |
| 921 | dim = oscar_direct_im_find(od, sn); | |
| 922 | oscar_direct_im_disconnect(od, dim); | |
| 923 | g_free(sn); | |
| 924 | } | |
| 925 | ||
| 926 | static void destroy_direct_im_request(struct ask_direct *d) { | |
| 927 | gaim_debug_info("oscar", "Freeing DirectIM prompts.\n"); | |
| 928 | ||
| 929 | g_free(d->sn); | |
| 930 | g_free(d); | |
| 931 | } | |
| 932 | ||
| 933 | /* this is just a gaim_proxy_connect cb that sets up the rest of the cbs */ | |
| 934 | static void oscar_odc_callback(gpointer data, gint source, GaimInputCondition condition) { | |
| 935 | struct oscar_direct_im *dim = data; | |
| 936 | GaimConnection *gc = dim->gc; | |
| 937 | OscarData *od = gc->proto_data; | |
| 938 | GaimConversation *conv; | |
| 939 | char buf[256]; | |
| 940 | struct sockaddr name; | |
| 941 | socklen_t name_len = 1; | |
| 942 | ||
| 943 | g_return_if_fail(gc != NULL); | |
| 944 | ||
| 8978 | 945 | dim->gpc_pend = FALSE; |
| 946 | if (dim->killme) { | |
| 947 | oscar_direct_im_destroy(od, dim); | |
| 948 | return; | |
| 949 | } | |
| 950 | ||
| 8971 | 951 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 952 | oscar_direct_im_destroy(od, dim); | |
| 953 | return; | |
| 954 | } | |
| 955 | ||
| 956 | if (source < 0) { | |
| 8984 | 957 | if (dim->donttryagain) { |
| 958 | oscar_direct_im_disconnect(od, dim); | |
| 959 | return; | |
| 960 | } else { | |
| 961 | fu8_t cookie[8]; | |
| 962 | char *who = g_strdup(dim->name); | |
| 963 | const char *tmp = aim_odc_getcookie(dim->conn); | |
| 964 | ||
| 965 | memcpy(cookie, tmp, 8); | |
| 966 | oscar_direct_im_destroy(od, dim); | |
| 967 | oscar_direct_im_initiate(gc, who, cookie); | |
| 968 | gaim_debug_info("oscar", "asking direct im initiator to connect to us\n"); | |
| 969 | g_free(who); | |
| 970 | return; | |
| 971 | } | |
| 8971 | 972 | } |
| 973 | ||
| 974 | dim->conn->fd = source; | |
| 975 | aim_conn_completeconnect(od->sess, dim->conn); | |
| 976 | conv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, dim->name); | |
| 977 | ||
| 978 | /* This is the best way to see if we're connected or not */ | |
| 8983 | 979 | /* Is this really needed? */ |
| 8971 | 980 | if (getpeername(source, &name, &name_len) == 0) { |
| 981 | g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), dim->name); | |
| 982 | dim->connected = TRUE; | |
| 983 | gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL)); | |
| 8983 | 984 | dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, oscar_callback, dim->conn); |
| 985 | } else { | |
| 8984 | 986 | if (dim->donttryagain) { |
| 987 | oscar_direct_im_disconnect(od, dim); | |
| 988 | return; | |
| 989 | } else { | |
| 990 | fu8_t cookie[8]; | |
| 991 | char *who = g_strdup(dim->name); | |
| 992 | const char *tmp = aim_odc_getcookie(dim->conn); | |
| 993 | ||
| 994 | memcpy(cookie, tmp, 8); | |
| 995 | oscar_direct_im_destroy(od, dim); | |
| 996 | oscar_direct_im_initiate(gc, who, cookie); | |
| 997 | gaim_debug_info("oscar", "asking direct im initiator to connect to us\n"); | |
| 998 | g_free(who); | |
| 999 | return; | |
| 1000 | } | |
| 8983 | 1001 | } |
| 1002 | ||
| 1003 | ||
| 8971 | 1004 | } |
| 1005 | ||
| 1006 | static void accept_direct_im_request(struct ask_direct *d) { | |
| 1007 | GaimConnection *gc = d->gc; | |
| 1008 | OscarData *od; | |
| 1009 | struct oscar_direct_im *dim; | |
| 1010 | char *host; int port = 5190; | |
| 1011 | int i, rc; | |
| 8982 | 1012 | char *tmp; |
| 1013 | GaimConversation *conv; | |
| 8971 | 1014 | |
| 1015 | if (!g_list_find(gaim_connections_get_all(), gc)) { | |
| 1016 | destroy_direct_im_request(d); | |
| 1017 | return; | |
| 1018 | } | |
| 1019 | ||
| 1020 | od = (OscarData *)gc->proto_data; | |
| 1021 | gaim_debug_info("oscar", "Accepted DirectIM.\n"); | |
| 1022 | ||
| 1023 | dim = oscar_direct_im_find(od, d->sn); | |
| 1024 | if (dim && dim->connected) { | |
| 1025 | destroy_direct_im_request(d); /* 40 */ /* what does that 40 mean? */ | |
| 1026 | gaim_debug_info("oscar", "Wait, we're already connected, ignoring DirectIM.\n"); | |
| 1027 | return; | |
| 1028 | } | |
| 1029 | dim = g_new0(struct oscar_direct_im, 1); | |
| 1030 | dim->gc = d->gc; | |
| 8984 | 1031 | dim->donttryagain = d->donttryagain; |
| 8971 | 1032 | g_snprintf(dim->name, sizeof dim->name, "%s", d->sn); |
| 1033 | ||
| 1034 | dim->conn = aim_odc_connect(od->sess, d->sn, NULL, d->cookie); | |
| 1035 | od->direct_ims = g_slist_append(od->direct_ims, dim); | |
| 1036 | if (!dim->conn) { | |
| 1037 | oscar_direct_im_disconnect(od, dim); | |
| 1038 | destroy_direct_im_request(d); | |
| 1039 | return; | |
| 1040 | } | |
| 1041 | ||
| 1042 | aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING, | |
| 1043 | gaim_odc_incoming, 0); | |
| 1044 | aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING, | |
| 1045 | gaim_odc_typing, 0); | |
| 1046 | aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_IMAGETRANSFER, | |
| 1047 | gaim_odc_update_ui, 0); | |
| 1048 | ||
| 1049 | gaim_debug_info("oscar", "ip is %s.\n", d->ip); | |
| 1050 | for (i = 0; i < (int)strlen(d->ip); i++) { | |
| 1051 | if (d->ip[i] == ':') { | |
| 1052 | port = atoi(&(d->ip[i+1])); | |
| 1053 | break; | |
| 1054 | } | |
| 1055 | } | |
| 1056 | host = g_strndup(d->ip, i); | |
| 1057 | dim->conn->status |= AIM_CONN_STATUS_INPROGRESS; | |
| 8978 | 1058 | dim->gpc_pend = TRUE; |
| 8971 | 1059 | rc = gaim_proxy_connect(gc->account, host, port, oscar_odc_callback, dim); |
| 8982 | 1060 | |
| 1061 | conv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, d->sn); | |
| 1062 | tmp = g_strdup_printf(_("Attempting to connect to %s at %s:%hu for Direct IM."), d->sn, host, | |
| 1063 | port); | |
| 1064 | gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL)); | |
| 1065 | g_free(tmp); | |
| 8983 | 1066 | |
| 8971 | 1067 | g_free(host); |
| 1068 | if (rc < 0) { | |
| 8978 | 1069 | dim->gpc_pend = FALSE; |
| 8971 | 1070 | oscar_direct_im_disconnect(od, dim); |
| 1071 | destroy_direct_im_request(d); | |
| 1072 | return; | |
| 1073 | } | |
| 1074 | ||
| 1075 | destroy_direct_im_request(d); | |
| 1076 | ||
| 1077 | return; | |
| 1078 | } | |
| 1079 | ||
| 1080 | /* | |
| 1081 | * We have just established a socket with the other dude, so set up some handlers. | |
| 1082 | */ | |
| 1083 | static int gaim_odc_initiate(aim_session_t *sess, aim_frame_t *fr, ...) { | |
| 5575 | 1084 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1085 | OscarData *od = (OscarData *)gc->proto_data; |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
1086 | GaimConversation *conv; |
| 8971 | 1087 | struct oscar_direct_im *dim; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1088 | char buf[256]; |
| 8971 | 1089 | char *sn; |
| 1090 | va_list ap; | |
| 1091 | aim_conn_t *newconn, *listenerconn; | |
| 1092 | ||
| 1093 | va_start(ap, fr); | |
| 1094 | newconn = va_arg(ap, aim_conn_t *); | |
| 1095 | listenerconn = va_arg(ap, aim_conn_t *); | |
| 1096 | va_end(ap); | |
| 1097 | ||
| 1098 | aim_conn_close(listenerconn); | |
| 1099 | aim_conn_kill(sess, &listenerconn); | |
| 1100 | ||
| 1101 | sn = g_strdup(aim_odc_getsn(newconn)); | |
| 1102 | ||
| 1103 | gaim_debug_info("oscar", | |
| 1104 | "DirectIM: initiate success to %s\n", sn); | |
| 1105 | dim = oscar_direct_im_find(od, sn); | |
| 1106 | ||
| 1107 | conv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, sn); | |
| 1108 | gaim_input_remove(dim->watcher); | |
| 1109 | dim->conn = newconn; | |
| 1110 | dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, oscar_callback, dim->conn); | |
| 1111 | dim->connected = TRUE; | |
| 1112 | g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), sn); | |
| 1113 | g_free(sn); | |
| 1114 | gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL)); | |
| 1115 | ||
| 1116 | aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING, gaim_odc_incoming, 0); | |
| 1117 | aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING, gaim_odc_typing, 0); | |
| 1118 | aim_conn_addhandler(sess, newconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_IMAGETRANSFER, gaim_odc_update_ui, 0); | |
| 1119 | ||
| 1120 | return 1; | |
| 1121 | } | |
| 1122 | ||
| 1123 | /* | |
| 1124 | * This is called when each chunk of an image is received. It can be used to | |
| 1125 | * update a progress bar, or to eat lots of dry cat food. Wet cat food is | |
| 1126 | * nasty, you sicko. | |
| 1127 | */ | |
| 1128 | static int gaim_odc_update_ui(aim_session_t *sess, aim_frame_t *fr, ...) { | |
| 1129 | va_list ap; | |
| 1130 | char *sn; | |
| 1131 | double percent; | |
| 1132 | GaimConnection *gc = sess->aux_data; | |
| 1133 | OscarData *od = (OscarData *)gc->proto_data; | |
| 1134 | GaimConversation *c; | |
| 1135 | struct oscar_direct_im *dim; | |
| 1136 | ||
| 1137 | va_start(ap, fr); | |
| 1138 | sn = va_arg(ap, char *); | |
| 1139 | percent = va_arg(ap, double); | |
| 1140 | va_end(ap); | |
| 1141 | ||
| 1142 | if (!sn || !(dim = oscar_direct_im_find(od, sn))) | |
| 1143 | return 1; | |
| 1144 | if (dim->watcher) { | |
| 1145 | gaim_input_remove(dim->watcher); /* Otherwise, the callback will callback */ | |
| 1146 | /* The callback will callback? I don't get how that would happen here. */ | |
| 1147 | dim->watcher = 0; | |
| 1148 | } | |
| 1149 | ||
| 1150 | c = gaim_find_conversation_with_account(sn, gaim_connection_get_account(gc)); | |
| 1151 | if (c != NULL) | |
| 1152 | gaim_conversation_update_progress(c, percent); | |
| 1153 | dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, | |
| 1154 | oscar_callback, dim->conn); | |
| 1155 | ||
| 1156 | return 1; | |
| 1157 | } | |
| 1158 | ||
| 1159 | /* | |
| 1160 | * This is called after a direct IM has been received in its entirety. This | |
| 1161 | * function is passed a long chunk of data which contains the IM with any | |
| 1162 | * data chunks (images) appended to it. | |
| 1163 | * | |
| 1164 | * This function rips out all the data chunks and creates an imgstore for | |
| 1165 | * each one. In order to do this, it first goes through the IM and takes | |
| 1166 | * out all the IMG tags. When doing so, it rewrites the original IMG tag | |
| 1167 | * with one compatible with the imgstore Gaim core code. For each one, we | |
| 1168 | * then read in chunks of data from the end of the message and actually | |
| 1169 | * create the img store using the given data. | |
| 1170 | * | |
| 1171 | * For somewhat easy reference, here's a sample message | |
| 1172 | * (without the whitespace and asterisks): | |
| 1173 | * | |
| 1174 | * <HTML><BODY BGCOLOR="#ffffff"> | |
| 1175 | * <FONT LANG="0"> | |
| 1176 | * This is a really stupid picture:<BR> | |
| 1177 | * <IMG SRC="Sample.jpg" ID="1" WIDTH="283" HEIGHT="212" DATASIZE="9894"><BR> | |
| 1178 | * Yeah it is<BR> | |
| 1179 | * Here is another one:<BR> | |
| 1180 | * <IMG SRC="Soap Bubbles.bmp" ID="2" WIDTH="256" HEIGHT="256" DATASIZE="65978"> | |
| 1181 | * </FONT> | |
| 1182 | * </BODY></HTML> | |
| 1183 | * <BINARY> | |
| 1184 | * <DATA ID="1" SIZE="9894">datadatadatadata</DATA> | |
| 1185 | * <DATA ID="2" SIZE="65978">datadatadatadata</DATA> | |
| 1186 | * </BINARY> | |
| 1187 | */ | |
| 1188 | static int gaim_odc_incoming(aim_session_t *sess, aim_frame_t *fr, ...) { | |
| 1189 | GaimConnection *gc = sess->aux_data; | |
| 1190 | GaimConvImFlags imflags = 0; | |
| 1191 | gchar *utf8; | |
| 1192 | GString *newmsg = g_string_new(""); | |
| 1193 | GSList *images = NULL; | |
| 1194 | va_list ap; | |
| 1195 | const char *sn, *msg, *msgend, *binary; | |
| 1196 | size_t len; | |
| 1197 | int encoding, isawaymsg; | |
| 1198 | ||
| 1199 | va_start(ap, fr); | |
| 1200 | sn = va_arg(ap, const char *); | |
| 1201 | msg = va_arg(ap, const char *); | |
| 1202 | len = va_arg(ap, size_t); | |
| 1203 | encoding = va_arg(ap, int); | |
| 1204 | isawaymsg = va_arg(ap, int); | |
| 1205 | va_end(ap); | |
| 1206 | msgend = msg + len; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1207 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1208 | gaim_debug_info("oscar", |
| 8971 | 1209 | "Got DirectIM message from %s\n", sn); |
| 1210 | ||
| 1211 | if (isawaymsg) | |
| 1212 | imflags |= GAIM_CONV_IM_AUTO_RESP; | |
| 1213 | ||
| 1214 | /* message has a binary trailer */ | |
| 1215 | if ((binary = gaim_strcasestr(msg, "<binary>"))) { | |
| 1216 | GData *attribs; | |
| 1217 | const char *tmp, *start, *end, *last = NULL; | |
| 1218 | ||
| 1219 | tmp = msg; | |
| 1220 | ||
| 1221 | /* for each valid image tag... */ | |
| 1222 | while (gaim_markup_find_tag("img", tmp, &start, &end, &attribs)) { | |
| 1223 | const char *id, *src, *datasize; | |
| 1224 | const char *tag = NULL, *data = NULL; | |
| 1225 | size_t size; | |
| 1226 | int imgid = 0; | |
| 1227 | ||
| 1228 | /* update the location of the last img tag */ | |
| 1229 | last = end; | |
| 1230 | ||
| 1231 | /* grab attributes */ | |
| 1232 | id = g_datalist_get_data(&attribs, "id"); | |
| 1233 | src = g_datalist_get_data(&attribs, "src"); | |
| 1234 | datasize = g_datalist_get_data(&attribs, "datasize"); | |
| 1235 | ||
| 1236 | /* if we have id & datasize, build the data tag */ | |
| 1237 | if (id && datasize) | |
| 1238 | tag = g_strdup_printf("<data id=\"%s\" size=\"%s\">", id, datasize); | |
| 1239 | ||
| 1240 | /* if we have a tag, find the start of the data */ | |
| 1241 | if (tag && (data = gaim_strcasestr(binary, tag))) | |
| 1242 | data += strlen(tag); | |
| 1243 | ||
| 1244 | /* check the data is here and store it */ | |
| 1245 | if (data + (size = atoi(datasize)) <= msgend) | |
| 1246 | imgid = gaim_imgstore_add(data, size, src); | |
| 1247 | ||
| 1248 | /* | |
| 1249 | * XXX - The code below contains some calls to oscar_encoding_to_utf8 | |
| 1250 | * The hardcoded "us-ascii" value REALLY needs to be removed. | |
| 1251 | */ | |
| 1252 | /* if we have a stored image... */ | |
| 1253 | if (imgid) { | |
| 1254 | /* append the message up to the tag */ | |
| 1255 | utf8 = oscar_encoding_to_utf8("us-ascii", tmp, start - tmp); | |
| 1256 | if (utf8 != NULL) { | |
| 1257 | newmsg = g_string_append(newmsg, utf8); | |
| 1258 | g_free(utf8); | |
| 1259 | } | |
| 1260 | ||
| 1261 | /* write the new image tag */ | |
| 1262 | g_string_append_printf(newmsg, "<IMG ID=\"%d\">", imgid); | |
| 1263 | ||
| 1264 | /* and record the image number */ | |
| 1265 | images = g_slist_append(images, GINT_TO_POINTER(imgid)); | |
| 1266 | } else { | |
| 1267 | /* otherwise, copy up to the end of the tag */ | |
| 1268 | utf8 = oscar_encoding_to_utf8("us-ascii", tmp, (end + 1) - tmp); | |
| 1269 | if (utf8 != NULL) { | |
| 1270 | newmsg = g_string_append(newmsg, utf8); | |
| 1271 | g_free(utf8); | |
| 1272 | } | |
| 1273 | } | |
| 1274 | ||
| 1275 | /* clear the attribute list */ | |
| 1276 | g_datalist_clear(&attribs); | |
| 1277 | ||
| 1278 | /* continue from the end of the tag */ | |
| 1279 | tmp = end + 1; | |
| 1280 | } | |
| 1281 | ||
| 1282 | /* append any remaining message data (without the > :-) */ | |
| 1283 | if (last++ && (last < binary)) | |
| 1284 | newmsg = g_string_append_len(newmsg, last, binary - last); | |
| 1285 | ||
| 1286 | /* set the flag if we caught any images */ | |
| 1287 | if (images) | |
| 1288 | imflags |= GAIM_CONV_IM_IMAGES; | |
| 1289 | } else { | |
| 1290 | g_string_append_len(newmsg, msg, len); | |
| 1291 | } | |
| 1292 | ||
| 1293 | /* XXX - I imagine Paco-Paco will want to do some voodoo with the encoding here */ | |
| 1294 | serv_got_im(gc, sn, newmsg->str, imflags, time(NULL)); | |
| 1295 | ||
| 1296 | /* free up the message */ | |
| 1297 | g_string_free(newmsg, TRUE); | |
| 1298 | ||
| 1299 | /* unref any images we allocated */ | |
| 1300 | if (images) { | |
| 1301 | GSList *tmp; | |
| 1302 | int id; | |
| 1303 | ||
| 1304 | for (tmp = images; tmp != NULL; tmp = tmp->next) { | |
| 1305 | id = GPOINTER_TO_INT(tmp->data); | |
| 1306 | gaim_imgstore_unref(id); | |
| 1307 | } | |
| 1308 | ||
| 1309 | g_slist_free(images); | |
| 1310 | } | |
| 1311 | ||
| 1312 | return 1; | |
| 1313 | } | |
| 1314 | ||
| 1315 | static int gaim_odc_typing(aim_session_t *sess, aim_frame_t *fr, ...) { | |
| 1316 | va_list ap; | |
| 1317 | char *sn; | |
| 1318 | int typing; | |
| 1319 | GaimConnection *gc = sess->aux_data; | |
| 1320 | ||
| 1321 | va_start(ap, fr); | |
| 1322 | sn = va_arg(ap, char *); | |
| 1323 | typing = va_arg(ap, int); | |
| 1324 | va_end(ap); | |
| 1325 | ||
| 1326 | if (typing == 0x0002) { | |
| 1327 | /* I had to leave this. It's just too funny. It reminds me of my sister. */ | |
| 1328 | gaim_debug_info("oscar", | |
| 1329 | "ohmigod! %s has started typing (DirectIM). He's going to send you a message! *squeal*\n", sn); | |
| 1330 | serv_got_typing(gc, sn, 0, GAIM_TYPING); | |
| 1331 | } else if (typing == 0x0001) | |
| 1332 | serv_got_typing(gc, sn, 0, GAIM_TYPED); | |
| 1333 | else | |
| 1334 | serv_got_typing_stopped(gc, sn); | |
| 1335 | return 1; | |
| 1336 | } | |
| 1337 | ||
| 1338 | static int gaim_odc_send_im(aim_session_t *sess, aim_conn_t *conn, const char *message, GaimConvImFlags imflags) { | |
| 1339 | char *buf; | |
| 1340 | size_t len; | |
| 1341 | int ret; | |
| 1342 | GString *msg = g_string_new("<HTML><BODY>"); | |
| 1343 | GString *data = g_string_new("</BODY></HTML><BINARY>"); | |
| 1344 | GData *attribs; | |
| 1345 | const char *start, *end, *last; | |
| 1346 | int oscar_id = 0; | |
| 1347 | ||
| 1348 | last = message; | |
| 1349 | ||
| 1350 | /* for each valid IMG tag... */ | |
| 1351 | while (last && *last && gaim_markup_find_tag("img", last, &start, &end, &attribs)) { | |
| 1352 | GaimStoredImage *image = NULL; | |
| 1353 | const char *id; | |
| 1354 | ||
| 1355 | if (start - last) { | |
| 1356 | g_string_append_len(msg, last, start - last); | |
| 1357 | } | |
| 1358 | ||
| 1359 | id = g_datalist_get_data(&attribs, "id"); | |
| 1360 | ||
| 1361 | /* ... if it refers to a valid gaim image ... */ | |
| 1362 | if (id && (image = gaim_imgstore_get(atoi(id)))) { | |
| 1363 | /* ... append the message from start to the tag ... */ | |
|
9126
b95adbd031d5
[gaim-migrate @ 9903]
Mark Doliner <markdoliner@pidgin.im>
parents:
9070
diff
changeset
|
1364 | unsigned long size = gaim_imgstore_get_size(image); |
| 8971 | 1365 | const char *filename = gaim_imgstore_get_filename(image); |
| 1366 | gpointer imgdata = gaim_imgstore_get_data(image); | |
| 1367 | ||
| 1368 | oscar_id++; | |
| 1369 | ||
| 1370 | /* ... insert a new img tag with the oscar id ... */ | |
| 1371 | if (filename) | |
| 1372 | g_string_append_printf(msg, | |
|
9126
b95adbd031d5
[gaim-migrate @ 9903]
Mark Doliner <markdoliner@pidgin.im>
parents:
9070
diff
changeset
|
1373 | "<IMG SRC=\"%s\" ID=\"%d\" DATASIZE=\"%lu\">", |
| 8971 | 1374 | filename, oscar_id, size); |
| 1375 | else | |
| 1376 | g_string_append_printf(msg, | |
|
9126
b95adbd031d5
[gaim-migrate @ 9903]
Mark Doliner <markdoliner@pidgin.im>
parents:
9070
diff
changeset
|
1377 | "<IMG ID=\"%d\" DATASIZE=\"%lu\">", |
| 8971 | 1378 | oscar_id, size); |
| 1379 | ||
| 1380 | /* ... and append the data to the binary section ... */ | |
|
9126
b95adbd031d5
[gaim-migrate @ 9903]
Mark Doliner <markdoliner@pidgin.im>
parents:
9070
diff
changeset
|
1381 | g_string_append_printf(data, "<DATA ID=\"%d\" SIZE=\"%lu\">", |
| 8971 | 1382 | oscar_id, size); |
| 1383 | data = g_string_append_len(data, imgdata, size); | |
| 1384 | data = g_string_append(data, "</DATA>"); | |
| 1385 | } | |
| 1386 | /* If the tag is invalid, skip it, thus no else here */ | |
| 1387 | ||
| 1388 | g_datalist_clear(&attribs); | |
| 1389 | ||
| 1390 | /* continue from the end of the tag */ | |
| 1391 | last = end + 1; | |
| 1392 | } | |
| 1393 | ||
| 1394 | /* append any remaining message data (without the > :-) */ | |
| 1395 | if (last && *last) | |
| 1396 | msg = g_string_append(msg, last); | |
| 1397 | ||
| 1398 | /* if we inserted any images in the binary section, append it */ | |
| 1399 | if (oscar_id) { | |
| 1400 | msg = g_string_append_len(msg, data->str, data->len); | |
| 1401 | msg = g_string_append(msg, "</BINARY>"); | |
| 1402 | } | |
| 1403 | ||
| 1404 | len = msg->len; | |
| 1405 | buf = msg->str; | |
| 1406 | g_string_free(msg, FALSE); | |
| 1407 | g_string_free(data, TRUE); | |
| 1408 | ||
| 1409 | ||
| 1410 | /* XXX - The last parameter below is the encoding. Let Paco-Paco do something with it. */ | |
| 1411 | if (imflags & GAIM_CONV_IM_AUTO_RESP) | |
| 1412 | ret = aim_odc_send_im(sess, conn, buf, len, 0, 1); | |
| 1413 | else | |
| 1414 | ret = aim_odc_send_im(sess, conn, buf, len, 0, 0); | |
| 1415 | ||
| 1416 | g_free(buf); | |
| 1417 | ||
| 1418 | return ret; | |
| 1419 | } | |
| 1420 | ||
| 1421 | struct ask_do_dir_im { | |
| 1422 | char *who; | |
| 1423 | GaimConnection *gc; | |
| 1424 | }; | |
| 1425 | ||
| 1426 | static void oscar_cancel_direct_im(struct ask_do_dir_im *data) { | |
| 1427 | g_free(data->who); | |
| 1428 | g_free(data); | |
| 1429 | } | |
| 1430 | ||
| 8983 | 1431 | /* this function is used to initiate a direct im session with someone. |
| 1432 | * we start listening on a port and send a request. they either connect | |
| 1433 | * or send some kind of reply. If they can't connect, they ask us to | |
| 1434 | * connect to them, and so we do that. | |
| 1435 | * | |
| 1436 | * this function will also get called if the other side initiate's a direct | |
| 1437 | * im and we try to connect and fail. in that case cookie will not be null. | |
| 1438 | * | |
| 1439 | * note that cookie is an 8 byte string that isn't NULL terminated | |
| 1440 | */ | |
| 1441 | static void oscar_direct_im_initiate(GaimConnection *gc, const char *who, const char *cookie) { | |
| 8971 | 1442 | OscarData *od; |
| 1443 | struct oscar_direct_im *dim; | |
| 1444 | int listenfd; | |
| 8982 | 1445 | const char *ip; |
| 8971 | 1446 | |
| 1447 | od = (OscarData *)gc->proto_data; | |
| 1448 | ||
| 8983 | 1449 | dim = oscar_direct_im_find(od, who); |
| 8971 | 1450 | if (dim) { |
| 1451 | if (!(dim->connected)) { /* We'll free the old, unconnected dim, and start over */ | |
| 1452 | oscar_direct_im_disconnect(od, dim); | |
| 1453 | gaim_debug_info("oscar", | |
| 1454 | "Gave up on old direct IM, trying again\n"); | |
| 1455 | } else { | |
| 1456 | gaim_notify_error(gc, NULL, "DirectIM already open.", NULL); | |
| 8980 | 1457 | return; |
| 8971 | 1458 | } |
| 1459 | } | |
| 1460 | dim = g_new0(struct oscar_direct_im, 1); | |
| 1461 | dim->gc = gc; | |
| 8983 | 1462 | g_snprintf(dim->name, sizeof dim->name, "%s", who); |
| 8971 | 1463 | |
| 1464 | listenfd = gaim_network_listen_range(5190, 5199); | |
| 8982 | 1465 | ip = gaim_network_get_my_ip(od->conn ? od->conn->fd : -1); |
| 9455 | 1466 | if (listenfd >= 0) |
| 1467 | dim->conn = aim_odc_initiate(od->sess, who, listenfd, gaim_network_ip_atoi(ip), gaim_network_get_port_from_fd(listenfd), cookie); | |
| 8971 | 1468 | if (dim->conn != NULL) { |
| 8982 | 1469 | char *tmp; |
| 1470 | GaimConversation *conv; | |
| 1471 | ||
| 8971 | 1472 | od->direct_ims = g_slist_append(od->direct_ims, dim); |
| 1473 | dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, | |
| 1474 | oscar_callback, dim->conn); | |
| 1475 | aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIM_ESTABLISHED, | |
| 1476 | gaim_odc_initiate, 0); | |
| 8982 | 1477 | |
| 8983 | 1478 | conv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, who); |
| 1479 | tmp = g_strdup_printf(_("Asking %s to connect to us at %s:%hu for Direct IM."), who, ip, | |
| 8982 | 1480 | gaim_network_get_port_from_fd(listenfd)); |
| 1481 | gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL)); | |
| 1482 | g_free(tmp); | |
| 8971 | 1483 | } else { |
| 1484 | gaim_notify_error(gc, NULL, _("Unable to open Direct IM"), NULL); | |
| 1485 | oscar_direct_im_destroy(od, dim); | |
| 1486 | } | |
| 8983 | 1487 | } |
| 1488 | ||
| 1489 | static void oscar_direct_im(struct ask_do_dir_im *data) { | |
| 1490 | GaimConnection *gc = data->gc; | |
| 1491 | ||
| 1492 | if (!g_list_find(gaim_connections_get_all(), gc)) { | |
| 1493 | g_free(data->who); | |
| 1494 | g_free(data); | |
| 1495 | return; | |
| 1496 | } | |
| 1497 | ||
| 1498 | oscar_direct_im_initiate(gc, data->who, NULL); | |
| 8971 | 1499 | g_free(data->who); |
| 1500 | g_free(data); | |
| 1501 | } | |
| 1502 | ||
| 1503 | /* this is the right click menu cb thingy */ | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1504 | static void oscar_ask_direct_im(GaimBlistNode *node, gpointer ignored) { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1505 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1506 | GaimBuddy *buddy; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1507 | GaimConnection *gc; |
| 8971 | 1508 | gchar *buf; |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1509 | struct ask_do_dir_im *data; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1510 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1511 | g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node)); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1512 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1513 | buddy = (GaimBuddy *) node; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1514 | gc = gaim_account_get_connection(buddy->account); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1515 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1516 | data = g_new0(struct ask_do_dir_im, 1); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1517 | data->who = g_strdup(buddy->name); |
| 8971 | 1518 | data->gc = gc; |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1519 | buf = g_strdup_printf(_("You have selected to open a Direct IM connection with %s."), |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1520 | buddy->name); |
| 8971 | 1521 | |
| 1522 | gaim_request_action(gc, NULL, buf, | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1523 | _("Because this reveals your IP address, it " |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1524 | "may be considered a privacy risk. Do you " |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1525 | "wish to continue?"), |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1526 | 0, data, 2, |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1527 | _("Connect"), G_CALLBACK(oscar_direct_im), |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
1528 | _("Cancel"), G_CALLBACK(oscar_cancel_direct_im)); |
| 8971 | 1529 | g_free(buf); |
| 1530 | } | |
| 1531 | ||
| 1532 | /***************************************************************************** | |
| 1533 | * End scary direct im stuff | |
| 1534 | *****************************************************************************/ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1535 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1536 | static void oscar_callback(gpointer data, gint source, GaimInputCondition condition) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1537 | aim_conn_t *conn = (aim_conn_t *)data; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1538 | aim_session_t *sess = aim_conn_getsess(conn); |
| 5575 | 1539 | GaimConnection *gc = sess ? sess->aux_data : NULL; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1540 | OscarData *od; |
| 2086 | 1541 | |
| 1542 | if (!gc) { | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1543 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1544 | "oscar callback for closed connection (1).\n"); |
| 2086 | 1545 | return; |
| 1546 | } | |
| 1547 | ||
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1548 | od = (OscarData *)gc->proto_data; |
| 2086 | 1549 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
1550 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 1551 | /* oh boy. this is probably bad. i guess the only thing we |
| 1552 | * can really do is return? */ | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1553 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1554 | "oscar callback for closed connection (2).\n"); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1555 | gaim_debug_misc("oscar", "gc = %p\n", gc); |
| 2086 | 1556 | return; |
| 1557 | } | |
| 1558 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1559 | if (condition & GAIM_INPUT_READ) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1560 | if (conn->type == AIM_CONN_TYPE_LISTENER) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1561 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1562 | "got information on rendezvous listener\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1563 | if (aim_handlerendconnect(od->sess, conn) < 0) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1564 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1565 | "connection error (rendezvous listener)\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1566 | aim_conn_kill(od->sess, &conn); |
| 8446 | 1567 | /* AAA - Don't we need to gaim_xfer_cancel here? --marv */ |
| 2086 | 1568 | } |
| 1569 | } else { | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1570 | if (aim_get_command(od->sess, conn) >= 0) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1571 | aim_rxdispatch(od->sess); |
|
6029
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
1572 | if (od->killme) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1573 | gaim_debug_error("oscar", "Waiting to be destroyed\n"); |
|
6029
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
1574 | return; |
|
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
1575 | } |
| 2086 | 1576 | } else { |
| 1577 | if ((conn->type == AIM_CONN_TYPE_BOS) || | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1578 | !(aim_getconn_type(od->sess, AIM_CONN_TYPE_BOS))) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1579 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1580 | "major connection error\n"); |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1581 | gaim_connection_error(gc, _("Disconnected.")); |
| 2086 | 1582 | } else if (conn->type == AIM_CONN_TYPE_CHAT) { |
| 1583 | struct chat_connection *c = find_oscar_chat_by_conn(gc, conn); | |
| 9627 | 1584 | GaimConversation *conv = gaim_find_chat(gc, c->id); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
1585 | char *buf; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1586 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1587 | "disconnected from chat room %s\n", c->name); |
| 2086 | 1588 | c->conn = NULL; |
| 1589 | if (c->inpa > 0) | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1590 | gaim_input_remove(c->inpa); |
| 2086 | 1591 | c->inpa = 0; |
| 1592 | c->fd = -1; | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1593 | aim_conn_kill(od->sess, &conn); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
1594 | buf = g_strdup_printf(_("You have been disconnected from chat room %s."), c->name); |
| 9627 | 1595 | if (conv) |
| 1596 | gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_ERROR, time(NULL)); | |
| 1597 | else | |
| 1598 | gaim_notify_error(gc, NULL, buf, NULL); | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
1599 | g_free(buf); |
| 2086 | 1600 | } else if (conn->type == AIM_CONN_TYPE_CHATNAV) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1601 | if (od->cnpa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1602 | gaim_input_remove(od->cnpa); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1603 | od->cnpa = 0; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1604 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1605 | "removing chatnav input watcher\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1606 | while (od->create_rooms) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1607 | struct create_room *cr = od->create_rooms->data; |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1608 | g_free(cr->name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1609 | od->create_rooms = |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1610 | g_slist_remove(od->create_rooms, cr); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1611 | g_free(cr); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1612 | gaim_notify_error(gc, NULL, |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1613 | _("Chat is currently unavailable"), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1614 | NULL); |
| 2086 | 1615 | } |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1616 | aim_conn_kill(od->sess, &conn); |
| 2086 | 1617 | } else if (conn->type == AIM_CONN_TYPE_AUTH) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1618 | if (od->paspa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1619 | gaim_input_remove(od->paspa); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1620 | od->paspa = 0; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1621 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1622 | "removing authconn input watcher\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1623 | aim_conn_kill(od->sess, &conn); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1624 | } else if (conn->type == AIM_CONN_TYPE_EMAIL) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1625 | if (od->emlpa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1626 | gaim_input_remove(od->emlpa); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1627 | od->emlpa = 0; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1628 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1629 | "removing email input watcher\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1630 | aim_conn_kill(od->sess, &conn); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1631 | } else if (conn->type == AIM_CONN_TYPE_ICON) { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1632 | if (od->icopa > 0) |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1633 | gaim_input_remove(od->icopa); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1634 | od->icopa = 0; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1635 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1636 | "removing icon input watcher\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1637 | aim_conn_kill(od->sess, &conn); |
| 2086 | 1638 | } else if (conn->type == AIM_CONN_TYPE_RENDEZVOUS) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1639 | if (conn->subtype == AIM_CONN_SUBTYPE_OFT_DIRECTIM) |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1640 | gaim_odc_disconnect(od->sess, conn); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1641 | aim_conn_kill(od->sess, &conn); |
| 2086 | 1642 | } else { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1643 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1644 | "holy crap! generic connection error! %hu\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1645 | conn->type); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1646 | aim_conn_kill(od->sess, &conn); |
| 2086 | 1647 | } |
| 1648 | } | |
| 1649 | } | |
| 1650 | } | |
| 1651 | } | |
| 1652 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1653 | static void oscar_debug(aim_session_t *sess, int level, const char *format, va_list va) { |
| 5575 | 1654 | GaimConnection *gc = sess->aux_data; |
|
7285
b9d07d0c9bc2
[gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents:
7283
diff
changeset
|
1655 | gchar *s = g_strdup_vprintf(format, va); |
|
b9d07d0c9bc2
[gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents:
7283
diff
changeset
|
1656 | gchar *buf; |
|
b9d07d0c9bc2
[gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents:
7283
diff
changeset
|
1657 | |
|
b9d07d0c9bc2
[gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents:
7283
diff
changeset
|
1658 | buf = g_strdup_printf("%s %d: %s", gaim_account_get_username(gaim_connection_get_account(gc)), level, s); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1659 | gaim_debug_info("oscar", buf); |
|
7285
b9d07d0c9bc2
[gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents:
7283
diff
changeset
|
1660 | if (buf[strlen(buf)-1] != '\n') |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1661 | gaim_debug_info(NULL, "\n"); |
|
7285
b9d07d0c9bc2
[gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents:
7283
diff
changeset
|
1662 | g_free(buf); |
| 2086 | 1663 | g_free(s); |
| 1664 | } | |
| 1665 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1666 | static void oscar_login_connect(gpointer data, gint source, GaimInputCondition cond) |
| 2086 | 1667 | { |
| 5575 | 1668 | GaimConnection *gc = data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1669 | OscarData *od; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1670 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1671 | aim_conn_t *conn; |
| 2086 | 1672 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
1673 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 1674 | close(source); |
| 1675 | return; | |
| 1676 | } | |
| 1677 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1678 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1679 | sess = od->sess; |
| 2086 | 1680 | conn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH); |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
1681 | conn->fd = source; |
| 2086 | 1682 | |
| 1683 | if (source < 0) { | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1684 | gaim_connection_error(gc, _("Couldn't connect to host")); |
| 2086 | 1685 | return; |
| 1686 | } | |
| 1687 | ||
| 1688 | aim_conn_completeconnect(sess, conn); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1689 | gc->inpa = gaim_input_add(conn->fd, GAIM_INPUT_READ, oscar_callback, conn); |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1690 | aim_request_login(sess, conn, gaim_account_get_username(gaim_connection_get_account(gc))); |
|
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1691 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1692 | gaim_debug_info("oscar", |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1693 | "Screen name sent, waiting for response\n"); |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1694 | gaim_connection_update_progress(gc, _("Screen name sent"), 1, OSCAR_CONNECT_STEPS); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
1695 | ck[1] = 0x65; |
| 2086 | 1696 | } |
| 1697 | ||
| 5575 | 1698 | static void oscar_login(GaimAccount *account) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1699 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1700 | aim_conn_t *conn; |
| 5575 | 1701 | GaimConnection *gc = gaim_account_get_connection(account); |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1702 | OscarData *od = gc->proto_data = g_new0(OscarData, 1); |
| 2086 | 1703 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1704 | gaim_debug_misc("oscar", "oscar_login: gc = %p\n", gc); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
1705 | |
| 8437 | 1706 | if (!aim_snvalid(gaim_account_get_username(account))) { |
| 1707 | gchar *buf; | |
|
8590
6f7b9c538d68
[gaim-migrate @ 9341]
Mark Doliner <markdoliner@pidgin.im>
parents:
8589
diff
changeset
|
1708 | buf = g_strdup_printf(_("Unable to login: Could not sign on as %s because the screen name is invalid. Screen names must either start with a letter and contain only letters, numbers and spaces, or contain only numbers."), gaim_account_get_username(account)); |
| 8437 | 1709 | gaim_connection_error(gc, buf); |
| 1710 | g_free(buf); | |
| 1711 | } | |
| 1712 | ||
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
1713 | if (aim_sn_is_icq((gaim_account_get_username(account)))) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1714 | od->icq = TRUE; |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
1715 | } else { |
|
6622
277eb0b14653
[gaim-migrate @ 7146]
Robert McQueen <robot101@debian.org>
parents:
6621
diff
changeset
|
1716 | gc->flags |= GAIM_CONNECTION_HTML; |
|
277eb0b14653
[gaim-migrate @ 7146]
Robert McQueen <robot101@debian.org>
parents:
6621
diff
changeset
|
1717 | gc->flags |= GAIM_CONNECTION_AUTO_RESP; |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
1718 | } |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
1719 | od->buddyinfo = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, oscar_free_buddyinfo); |
| 2086 | 1720 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1721 | sess = g_new0(aim_session_t, 1); |
|
7285
b9d07d0c9bc2
[gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents:
7283
diff
changeset
|
1722 | aim_session_init(sess, TRUE, 0); |
| 2086 | 1723 | aim_setdebuggingcb(sess, oscar_debug); |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1724 | /* |
|
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1725 | * We need an immediate queue because we don't use a while-loop |
|
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1726 | * to see if things need to be sent. |
|
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1727 | */ |
| 2086 | 1728 | aim_tx_setenqueue(sess, AIM_TX_IMMEDIATE, NULL); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1729 | od->sess = sess; |
| 2086 | 1730 | sess->aux_data = gc; |
| 1731 | ||
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
1732 | /* Connect to core Gaim signals */ |
|
10087
e5b80a38939d
[gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10042
diff
changeset
|
1733 | gaim_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
|
1734 | |
| 2086 | 1735 | conn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL); |
| 1736 | if (conn == NULL) { | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1737 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1738 | "internal connection error\n"); |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1739 | gaim_connection_error(gc, _("Unable to login to AIM")); |
| 2086 | 1740 | return; |
| 1741 | } | |
| 1742 | ||
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
1743 | aim_conn_addhandler(sess, conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
| 2086 | 1744 | aim_conn_addhandler(sess, conn, 0x0017, 0x0007, gaim_parse_login, 0); |
| 1745 | aim_conn_addhandler(sess, conn, 0x0017, 0x0003, gaim_parse_auth_resp, 0); | |
| 1746 | ||
| 1747 | conn->status |= AIM_CONN_STATUS_INPROGRESS; | |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
1748 | if (gaim_proxy_connect(account, gaim_account_get_string(account, "server", FAIM_LOGIN_SERVER), |
| 5575 | 1749 | gaim_account_get_int(account, "port", FAIM_LOGIN_PORT), |
| 1750 | oscar_login_connect, gc) < 0) { | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1751 | gaim_connection_error(gc, _("Couldn't connect to host")); |
| 2086 | 1752 | return; |
| 1753 | } | |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
1754 | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1755 | gaim_connection_update_progress(gc, _("Connecting"), 0, OSCAR_CONNECT_STEPS); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
1756 | ck[0] = 0x5a; |
| 5575 | 1757 | } |
| 1758 | ||
| 1759 | static void oscar_close(GaimConnection *gc) { | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1760 | OscarData *od = (OscarData *)gc->proto_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1761 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1762 | while (od->oscar_chats) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1763 | struct chat_connection *n = od->oscar_chats->data; |
| 2086 | 1764 | if (n->inpa > 0) |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1765 | gaim_input_remove(n->inpa); |
| 2086 | 1766 | g_free(n->name); |
| 1767 | g_free(n->show); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1768 | od->oscar_chats = g_slist_remove(od->oscar_chats, n); |
| 2086 | 1769 | g_free(n); |
| 1770 | } | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1771 | while (od->direct_ims) { |
| 8971 | 1772 | struct oscar_direct_im *n = od->direct_ims->data; |
| 1773 | oscar_direct_im_destroy(od, n); | |
| 2086 | 1774 | } |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1775 | /* BBB */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1776 | while (od->file_transfers) { |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
1777 | GaimXfer *xfer; |
|
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
1778 | xfer = (GaimXfer *)od->file_transfers->data; |
| 7805 | 1779 | gaim_xfer_cancel_local(xfer); |
| 3630 | 1780 | } |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1781 | while (od->requesticon) { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1782 | char *sn = od->requesticon->data; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1783 | od->requesticon = g_slist_remove(od->requesticon, sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1784 | free(sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1785 | } |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1786 | g_hash_table_destroy(od->buddyinfo); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1787 | while (od->create_rooms) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1788 | struct create_room *cr = od->create_rooms->data; |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1789 | g_free(cr->name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1790 | od->create_rooms = g_slist_remove(od->create_rooms, cr); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1791 | g_free(cr); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1792 | } |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1793 | if (od->email) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1794 | g_free(od->email); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1795 | if (od->newp) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1796 | g_free(od->newp); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1797 | if (od->oldp) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1798 | g_free(od->oldp); |
| 2086 | 1799 | if (gc->inpa > 0) |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1800 | gaim_input_remove(gc->inpa); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1801 | if (od->cnpa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1802 | gaim_input_remove(od->cnpa); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1803 | if (od->paspa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1804 | gaim_input_remove(od->paspa); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1805 | if (od->emlpa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1806 | gaim_input_remove(od->emlpa); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1807 | if (od->icopa > 0) |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1808 | gaim_input_remove(od->icopa); |
|
6907
895dc33ce157
[gaim-migrate @ 7454]
Mark Doliner <markdoliner@pidgin.im>
parents:
6905
diff
changeset
|
1809 | if (od->icontimer > 0) |
| 8287 | 1810 | gaim_timeout_remove(od->icontimer); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
1811 | if (od->getblisttimer > 0) |
| 8287 | 1812 | gaim_timeout_remove(od->getblisttimer); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
1813 | if (od->getinfotimer > 0) |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
1814 | gaim_timeout_remove(od->getinfotimer); |
|
10087
e5b80a38939d
[gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10042
diff
changeset
|
1815 | gaim_prefs_disconnect_by_handle(gc); |
|
9971
8291bafb0025
[gaim-migrate @ 10882]
Daniel Atallah <datallah@pidgin.im>
parents:
9948
diff
changeset
|
1816 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1817 | aim_session_kill(od->sess); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1818 | g_free(od->sess); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1819 | od->sess = NULL; |
| 2086 | 1820 | g_free(gc->proto_data); |
| 1821 | gc->proto_data = NULL; | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1822 | gaim_debug_info("oscar", "Signed off.\n"); |
| 2086 | 1823 | } |
| 1824 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1825 | static void oscar_bos_connect(gpointer data, gint source, GaimInputCondition cond) { |
| 5575 | 1826 | GaimConnection *gc = data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1827 | OscarData *od; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1828 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1829 | aim_conn_t *bosconn; |
| 2086 | 1830 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
1831 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 1832 | close(source); |
| 1833 | return; | |
| 1834 | } | |
| 1835 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1836 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1837 | sess = od->sess; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1838 | bosconn = od->conn; |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
1839 | bosconn->fd = source; |
| 2086 | 1840 | |
| 1841 | if (source < 0) { | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1842 | gaim_connection_error(gc, _("Could Not Connect")); |
| 2086 | 1843 | return; |
| 1844 | } | |
| 1845 | ||
| 1846 | aim_conn_completeconnect(sess, bosconn); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1847 | gc->inpa = gaim_input_add(bosconn->fd, GAIM_INPUT_READ, oscar_callback, bosconn); |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1848 | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1849 | gaim_connection_update_progress(gc, |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
1850 | _("Connection established, cookie sent"), 4, OSCAR_CONNECT_STEPS); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
1851 | ck[4] = 0x61; |
| 2086 | 1852 | } |
| 1853 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1854 | /* BBB */ |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1855 | /* |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1856 | * This little area in oscar.c is the nexus of file transfer code, |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1857 | * so I wrote a little explanation of what happens. I am such a |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1858 | * ninja. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1859 | * |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1860 | * The series of events for a file send is: |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1861 | * -Create xfer and call gaim_xfer_request (this happens in oscar_ask_sendfile) |
|
8735
01248ea222d3
[gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents:
8733
diff
changeset
|
1862 | * -User chooses a file and oscar_xfer_init is called. It establishes a |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1863 | * listening socket, then asks the remote user to connect to us (and |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1864 | * gives them the file name, port, IP, etc.) |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1865 | * -They connect to us and we send them an AIM_CB_OFT_PROMPT (this happens |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1866 | * in oscar_sendfile_estblsh) |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1867 | * -They send us an AIM_CB_OFT_ACK and then we start sending data |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1868 | * -When we finish, they send us an AIM_CB_OFT_DONE and they close the |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1869 | * connection. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1870 | * -We get drunk because file transfer kicks ass. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1871 | * |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1872 | * The series of events for a file receive is: |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1873 | * -Create xfer and call gaim_xfer request (this happens in incomingim_chan2) |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1874 | * -Gaim user selects file to name and location to save file to and |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1875 | * oscar_xfer_init is called |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1876 | * -It connects to the remote user using the IP they gave us earlier |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1877 | * -After connecting, they send us an AIM_CB_OFT_PROMPT. In reply, we send |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1878 | * them an AIM_CB_OFT_ACK. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1879 | * -They begin to send us lots of raw data. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1880 | * -When they finish sending data we send an AIM_CB_OFT_DONE and then close |
|
8735
01248ea222d3
[gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents:
8733
diff
changeset
|
1881 | * the connection. |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1882 | */ |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1883 | static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition); |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1884 | |
| 8446 | 1885 | /* |
| 1886 | * Miscellaneous xfer functions | |
| 1887 | */ | |
| 1888 | static GaimXfer *oscar_find_xfer_by_cookie(GSList *fts, const fu8_t *ck) | |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1889 | { |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
1890 | GaimXfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1891 | struct aim_oft_info *oft_info; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1892 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1893 | while (fts) { |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1894 | xfer = fts->data; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1895 | oft_info = xfer->data; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1896 | |
| 8446 | 1897 | if (oft_info && !memcmp(ck, oft_info->cookie, 8)) |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1898 | return xfer; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1899 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1900 | fts = g_slist_next(fts); |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1901 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1902 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1903 | return NULL; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1904 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1905 | |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
1906 | static GaimXfer *oscar_find_xfer_by_conn(GSList *fts, aim_conn_t *conn) |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1907 | { |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
1908 | GaimXfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1909 | struct aim_oft_info *oft_info; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1910 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1911 | while (fts) { |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1912 | xfer = fts->data; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1913 | oft_info = xfer->data; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1914 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1915 | if (oft_info && (conn == oft_info->conn)) |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1916 | return xfer; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1917 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1918 | fts = g_slist_next(fts); |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1919 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1920 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1921 | return NULL; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1922 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1923 | |
| 8446 | 1924 | static void oscar_xfer_end(GaimXfer *xfer) |
| 1925 | { | |
| 1926 | struct aim_oft_info *oft_info = xfer->data; | |
| 1927 | GaimConnection *gc = oft_info->sess->aux_data; | |
| 1928 | OscarData *od = gc->proto_data; | |
| 1929 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1930 | gaim_debug_info("oscar", "AAA - in oscar_xfer_end\n"); |
| 8446 | 1931 | |
| 1932 | if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) { | |
| 1933 | oft_info->fh.nrecvd = gaim_xfer_get_bytes_sent(xfer); | |
| 1934 | aim_oft_sendheader(oft_info->sess, AIM_CB_OFT_DONE, oft_info); | |
| 1935 | } | |
| 1936 | ||
| 1937 | aim_conn_kill(oft_info->sess, &oft_info->conn); | |
| 1938 | aim_oft_destroyinfo(oft_info); | |
| 1939 | xfer->data = NULL; | |
| 1940 | od->file_transfers = g_slist_remove(od->file_transfers, xfer); | |
| 1941 | } | |
| 1942 | ||
| 1943 | /* | |
| 1944 | * xfer functions used when receiving files | |
| 1945 | */ | |
| 1946 | ||
| 1947 | static void oscar_xfer_init_recv(GaimXfer *xfer) | |
| 1948 | { | |
| 1949 | struct aim_oft_info *oft_info = xfer->data; | |
| 1950 | GaimConnection *gc = oft_info->sess->aux_data; | |
| 1951 | OscarData *od = gc->proto_data; | |
| 1952 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1953 | gaim_debug_info("oscar", "AAA - in oscar_xfer_recv_init\n"); |
| 8446 | 1954 | |
| 1955 | oft_info->conn = aim_newconn(od->sess, AIM_CONN_TYPE_RENDEZVOUS, NULL); | |
| 1956 | if (oft_info->conn) { | |
| 1957 | oft_info->conn->subtype = AIM_CONN_SUBTYPE_OFT_SENDFILE; | |
| 1958 | aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_PROMPT, oscar_sendfile_prompt, 0); | |
| 1959 | oft_info->conn->fd = xfer->fd = gaim_proxy_connect(gaim_connection_get_account(gc), | |
| 1960 | xfer->remote_ip, xfer->remote_port, oscar_sendfile_connected, xfer); | |
| 1961 | if (xfer->fd == -1) { | |
| 1962 | gaim_xfer_error(GAIM_XFER_RECEIVE, xfer->who, | |
| 1963 | _("Unable to establish file descriptor.")); | |
| 1964 | gaim_xfer_cancel_local(xfer); | |
| 1965 | } | |
| 1966 | } else { | |
| 1967 | gaim_xfer_error(GAIM_XFER_RECEIVE, xfer->who, | |
| 1968 | _("Unable to create new connection.")); | |
| 1969 | gaim_xfer_cancel_local(xfer); | |
| 1970 | /* Try a different port? Ask them to connect to us? /join #gaim and whine? */ | |
| 1971 | } | |
| 1972 | ||
| 1973 | } | |
| 1974 | ||
| 1975 | static void oscar_xfer_cancel_recv(GaimXfer *xfer) | |
| 1976 | { | |
| 1977 | struct aim_oft_info *oft_info = xfer->data; | |
| 1978 | GaimConnection *gc = oft_info->sess->aux_data; | |
| 1979 | OscarData *od = gc->proto_data; | |
| 1980 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
1981 | gaim_debug_info("oscar", "AAA - in oscar_xfer_cancel_recv\n"); |
| 8446 | 1982 | |
|
9771
42bd06e5b1b3
[gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents:
9770
diff
changeset
|
1983 | if (gaim_xfer_get_status(xfer) != GAIM_XFER_STATUS_CANCEL_REMOTE) |
|
42bd06e5b1b3
[gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents:
9770
diff
changeset
|
1984 | aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info); |
| 8446 | 1985 | |
| 1986 | aim_conn_kill(oft_info->sess, &oft_info->conn); | |
| 1987 | aim_oft_destroyinfo(oft_info); | |
| 1988 | xfer->data = NULL; | |
| 1989 | od->file_transfers = g_slist_remove(od->file_transfers, xfer); | |
| 1990 | } | |
| 1991 | ||
| 1992 | static void oscar_xfer_ack_recv(GaimXfer *xfer, const char *buffer, size_t size) | |
| 1993 | { | |
| 1994 | struct aim_oft_info *oft_info = xfer->data; | |
| 1995 | ||
| 1996 | /* Update our rolling checksum. Like Walmart, yo. */ | |
| 1997 | oft_info->fh.recvcsum = aim_oft_checksum_chunk(buffer, size, oft_info->fh.recvcsum); | |
| 1998 | } | |
| 1999 | ||
| 2000 | /* | |
| 2001 | * xfer functions used when sending files | |
| 2002 | */ | |
| 2003 | ||
| 2004 | static void oscar_xfer_init_send(GaimXfer *xfer) | |
| 2005 | { | |
| 2006 | struct aim_oft_info *oft_info = xfer->data; | |
| 2007 | GaimConnection *gc = oft_info->sess->aux_data; | |
| 2008 | OscarData *od = gc->proto_data; | |
| 2009 | int listenfd; | |
| 2010 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2011 | gaim_debug_info("oscar", "AAA - in oscar_xfer_send_init\n"); |
| 8446 | 2012 | |
| 2013 | xfer->filename = g_path_get_basename(xfer->local_filename); | |
| 2014 | strncpy(oft_info->fh.name, xfer->filename, 64); | |
| 2015 | oft_info->fh.name[63] = '\0'; | |
| 2016 | oft_info->fh.totsize = gaim_xfer_get_size(xfer); | |
| 2017 | oft_info->fh.size = gaim_xfer_get_size(xfer); | |
| 2018 | oft_info->fh.checksum = aim_oft_checksum_file(xfer->local_filename); | |
| 2019 | ||
| 2020 | /* Create a listening socket and an associated libfaim conn */ | |
| 2021 | if ((listenfd = gaim_network_listen_range(5190, 5199)) < 0) { | |
| 2022 | gaim_xfer_cancel_local(xfer); | |
| 2023 | return; | |
| 2024 | } | |
| 2025 | xfer->local_port = gaim_network_get_port_from_fd(listenfd); | |
| 2026 | oft_info->port = xfer->local_port; | |
| 2027 | if (aim_sendfile_listen(od->sess, oft_info, listenfd) != 0) { | |
| 2028 | gaim_xfer_cancel_local(xfer); | |
| 2029 | return; | |
| 2030 | } | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2031 | gaim_debug_misc("oscar", |
| 8446 | 2032 | "port is %hu, ip is %s\n", |
| 2033 | xfer->local_port, oft_info->clientip); | |
| 2034 | if (oft_info->conn) { | |
| 2035 | xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn); | |
| 2036 | aim_im_sendch2_sendfile_ask(od->sess, oft_info); | |
| 2037 | aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ESTABLISHED, oscar_sendfile_estblsh, 0); | |
| 2038 | } else { | |
| 2039 | gaim_xfer_error(GAIM_XFER_SEND, xfer->who, | |
| 2040 | _("Unable to establish listener socket.")); | |
| 2041 | gaim_xfer_cancel_local(xfer); | |
| 2042 | } | |
| 2043 | } | |
| 2044 | ||
| 2045 | static void oscar_xfer_cancel_send(GaimXfer *xfer) | |
| 2046 | { | |
| 2047 | struct aim_oft_info *oft_info = xfer->data; | |
| 2048 | GaimConnection *gc = oft_info->sess->aux_data; | |
| 2049 | OscarData *od = gc->proto_data; | |
| 2050 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2051 | gaim_debug_info("oscar", "AAA - in oscar_xfer_cancel_send\n"); |
| 8446 | 2052 | |
|
9771
42bd06e5b1b3
[gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents:
9770
diff
changeset
|
2053 | if (gaim_xfer_get_status(xfer) != GAIM_XFER_STATUS_CANCEL_REMOTE) |
|
42bd06e5b1b3
[gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents:
9770
diff
changeset
|
2054 | aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info); |
| 8446 | 2055 | |
| 2056 | aim_conn_kill(oft_info->sess, &oft_info->conn); | |
| 2057 | aim_oft_destroyinfo(oft_info); | |
| 2058 | xfer->data = NULL; | |
| 2059 | od->file_transfers = g_slist_remove(od->file_transfers, xfer); | |
| 2060 | } | |
| 2061 | ||
| 2062 | static void oscar_xfer_ack_send(GaimXfer *xfer, const char *buffer, size_t size) | |
| 2063 | { | |
| 2064 | struct aim_oft_info *oft_info = xfer->data; | |
| 2065 | ||
| 2066 | /* I'm not sure I like how we do this. --marv | |
| 2067 | * I do. AIM file transfers aren't really meant to be thought | |
| 2068 | * of as a transferring just a single file. The rendezvous | |
| 2069 | * establishes a connection between two computers, and then | |
| 2070 | * those computers can use the same connection for transferring | |
| 2071 | * multiple files. So we don't want the Gaim core up and closing | |
| 2072 | * the socket all willy-nilly. We want to do that in the oscar | |
| 2073 | * prpl, whenever one side or the other says they're finished | |
| 2074 | * using the connection. There might be a better way to intercept | |
| 2075 | * the socket from the core, however... --KingAnt | |
| 2076 | */ | |
| 2077 | ||
| 2078 | /* | |
| 2079 | * If we're done sending, intercept the socket from the core ft code | |
| 2080 | * and wait for the other guy to send the "done" OFT packet. | |
| 2081 | */ | |
| 2082 | if (gaim_xfer_get_bytes_remaining(xfer) <= 0) { | |
| 2083 | gaim_input_remove(xfer->watcher); | |
| 2084 | xfer->watcher = gaim_input_add(xfer->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn); | |
| 2085 | xfer->fd = 0; | |
| 2086 | gaim_xfer_set_completed(xfer, TRUE); | |
| 2087 | } | |
| 2088 | } | |
| 2089 | ||
|
9466
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2090 | static gboolean oscar_can_receive_file(GaimConnection *gc, const char *who) { |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2091 | gboolean can_receive = FALSE; |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2092 | OscarData *od = gc->proto_data; |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2093 | |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2094 | if (!od->icq) { |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2095 | aim_userinfo_t *userinfo; |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2096 | userinfo = aim_locate_finduserinfo(od->sess, who); |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2097 | if (userinfo && userinfo->capabilities & AIM_CAPS_SENDFILE) |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2098 | can_receive = TRUE; |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2099 | } |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2100 | |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2101 | return can_receive; |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2102 | } |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2103 | |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2104 | static void oscar_send_file(GaimConnection *gc, const char *who, const char *file) { |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
2105 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
2106 | OscarData *od; |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
2107 | GaimXfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2108 | struct aim_oft_info *oft_info; |
| 8231 | 2109 | const char *ip; |
| 3752 | 2110 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
2111 | od = (OscarData *)gc->proto_data; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
2112 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2113 | /* You want to send a file to someone else, you're so generous */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2114 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2115 | /* Build the file transfer handle */ |
|
9466
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2116 | xfer = gaim_xfer_new(gc->account, GAIM_XFER_SEND, who); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2117 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2118 | /* Create the oscar-specific data */ |
|
8838
c23227da7b4a
[gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents:
8800
diff
changeset
|
2119 | ip = gaim_network_get_my_ip(od->conn ? od->conn->fd : -1); |
|
9466
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2120 | oft_info = aim_oft_createinfo(od->sess, NULL, who, ip, 0, 0, 0, NULL); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2121 | xfer->data = oft_info; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2122 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2123 | /* Setup our I/O op functions */ |
| 8446 | 2124 | gaim_xfer_set_init_fnc(xfer, oscar_xfer_init_send); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2125 | gaim_xfer_set_end_fnc(xfer, oscar_xfer_end); |
|
4675
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
2126 | gaim_xfer_set_cancel_send_fnc(xfer, oscar_xfer_cancel_send); |
| 8446 | 2127 | gaim_xfer_set_request_denied_fnc(xfer, oscar_xfer_cancel_send); |
| 2128 | gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack_send); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2129 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2130 | /* Keep track of this transfer for later */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2131 | od->file_transfers = g_slist_append(od->file_transfers, xfer); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2132 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2133 | /* Now perform the request */ |
|
9466
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2134 | if (file) |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2135 | gaim_xfer_request_accepted(xfer, file); |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2136 | else |
|
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
2137 | gaim_xfer_request(xfer); |
| 3630 | 2138 | } |
| 2139 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2140 | static int gaim_parse_auth_resp(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
6029
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
2141 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2142 | OscarData *od = gc->proto_data; |
|
6029
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
2143 | GaimAccount *account = gc->account; |
|
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
2144 | aim_conn_t *bosconn; |
|
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
2145 | char *host; int port; |
|
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
2146 | int i, rc; |
| 2086 | 2147 | va_list ap; |
| 2704 | 2148 | struct aim_authresp_info *info; |
|
6029
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6019
diff
changeset
|
2149 | |
| 5575 | 2150 | port = gaim_account_get_int(account, "port", FAIM_LOGIN_PORT); |
| 2086 | 2151 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2152 | va_start(ap, fr); |
| 2704 | 2153 | info = va_arg(ap, struct aim_authresp_info *); |
| 2086 | 2154 | va_end(ap); |
| 2155 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2156 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2157 | "inside auth_resp (Screen name: %s)\n", info->sn); |
| 2704 | 2158 | |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
2159 | 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
|
2160 | char buf[256]; |
| 2704 | 2161 | switch (info->errorcode) { |
| 2086 | 2162 | case 0x05: |
| 2163 | /* Incorrect nick/password */ | |
| 6498 | 2164 | gc->wants_to_die = TRUE; |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
2165 | gaim_connection_error(gc, _("Incorrect nickname or password.")); |
| 2086 | 2166 | break; |
| 2167 | case 0x11: | |
| 2168 | /* Suspended account */ | |
| 6498 | 2169 | gc->wants_to_die = TRUE; |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
2170 | gaim_connection_error(gc, _("Your account is currently suspended.")); |
| 2086 | 2171 | break; |
|
3498
3f6ce04ea3ad
[gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents:
3490
diff
changeset
|
2172 | case 0x14: |
|
3f6ce04ea3ad
[gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents:
3490
diff
changeset
|
2173 | /* service temporarily unavailable */ |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
2174 | gaim_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
|
2175 | break; |
| 2086 | 2176 | case 0x18: |
| 2177 | /* connecting too frequently */ | |
| 6498 | 2178 | gc->wants_to_die = TRUE; |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
2179 | gaim_connection_error(gc, _("You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer.")); |
| 2086 | 2180 | break; |
| 2181 | case 0x1c: | |
| 2182 | /* client too old */ | |
| 6498 | 2183 | gc->wants_to_die = TRUE; |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6350
diff
changeset
|
2184 | g_snprintf(buf, sizeof(buf), _("The client version you are using is too old. Please upgrade at %s"), GAIM_WEBSITE); |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
2185 | gaim_connection_error(gc, buf); |
| 2086 | 2186 | break; |
| 2187 | default: | |
|
6623
75ba9eb9d3f8
[gaim-migrate @ 7147]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
6622
diff
changeset
|
2188 | gaim_connection_error(gc, _("Authentication failed")); |
| 2086 | 2189 | break; |
| 2190 | } | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2191 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2192 | "Login Error Code 0x%04hx\n", info->errorcode); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2193 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2194 | "Error URL: %s\n", info->errorurl); |
| 2086 | 2195 | od->killme = TRUE; |
| 2196 | return 1; | |
| 2197 | } | |
| 2198 | ||
| 2199 | ||
|
9992
d733f96bfc7b
[gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents:
9991
diff
changeset
|
2200 | gaim_debug_misc("oscar", "Reg status: %hu\n", info->regstatus); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2201 | |
| 2704 | 2202 | if (info->email) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2203 | gaim_debug_misc("oscar", "Email: %s\n", info->email); |
| 2086 | 2204 | } else { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2205 | gaim_debug_misc("oscar", "Email is NULL\n"); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2206 | } |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2207 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2208 | gaim_debug_misc("oscar", "BOSIP: %s\n", info->bosip); |
|
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2209 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2210 | "Closing auth connection...\n"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2211 | aim_conn_kill(sess, &fr->conn); |
| 2086 | 2212 | |
| 2213 | bosconn = aim_newconn(sess, AIM_CONN_TYPE_BOS, NULL); | |
| 2214 | if (bosconn == NULL) { | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
2215 | gaim_connection_error(gc, _("Internal Error")); |
| 2086 | 2216 | od->killme = TRUE; |
| 2217 | return 0; | |
| 2218 | } | |
| 2219 | ||
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
2220 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
| 2675 | 2221 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_bos, 0); |
| 2086 | 2222 | aim_conn_addhandler(sess, bosconn, 0x0009, 0x0003, gaim_bosrights, 0); |
| 2223 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ACK, AIM_CB_ACK_ACK, NULL, 0); | |
| 2224 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_REDIRECT, gaim_handle_redirect, 0); | |
| 2993 | 2225 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_RIGHTSINFO, gaim_parse_locaterights, 0); |
| 2086 | 2226 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_RIGHTSINFO, gaim_parse_buddyrights, 0); |
| 2227 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_ONCOMING, gaim_parse_oncoming, 0); | |
| 2228 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_OFFGOING, gaim_parse_offgoing, 0); | |
| 2229 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_INCOMING, gaim_parse_incoming_im, 0); | |
| 2230 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_ERROR, gaim_parse_locerr, 0); | |
| 2231 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_MISSEDCALL, gaim_parse_misses, 0); | |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2232 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_CLIENTAUTORESP, gaim_parse_clientauto, 0); |
| 2086 | 2233 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_RATECHANGE, gaim_parse_ratechange, 0); |
| 2234 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_EVIL, gaim_parse_evilnotify, 0); | |
| 2235 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOK, AIM_CB_LOK_ERROR, gaim_parse_searcherror, 0); | |
| 2236 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOK, 0x0003, gaim_parse_searchreply, 0); | |
| 2237 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_ERROR, gaim_parse_msgerr, 0); | |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2238 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_MTN, gaim_parse_mtn, 0); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2239 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_USERINFO, gaim_parse_userinfo, 0); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
2240 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_REQUESTINFOTIMEOUT, gaim_reqinfo_timeout, 0); |
| 2086 | 2241 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_ACK, gaim_parse_msgack, 0); |
| 2242 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_MOTD, gaim_parse_motd, 0); | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2243 | aim_conn_addhandler(sess, bosconn, 0x0004, 0x0005, gaim_icbm_param_info, 0); |
| 2086 | 2244 | aim_conn_addhandler(sess, bosconn, 0x0001, 0x0001, gaim_parse_genericerr, 0); |
| 2245 | aim_conn_addhandler(sess, bosconn, 0x0003, 0x0001, gaim_parse_genericerr, 0); | |
| 2246 | aim_conn_addhandler(sess, bosconn, 0x0009, 0x0001, gaim_parse_genericerr, 0); | |
| 2247 | aim_conn_addhandler(sess, bosconn, 0x0001, 0x001f, gaim_memrequest, 0); | |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
2248 | aim_conn_addhandler(sess, bosconn, 0x0001, 0x000f, gaim_selfinfo, 0); |
|
5844
a0f8b06669e7
[gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents:
5842
diff
changeset
|
2249 | aim_conn_addhandler(sess, bosconn, 0x0001, 0x0021, oscar_icon_req,0); |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2250 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_OFFLINEMSG, gaim_offlinemsg, 0); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2251 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_OFFLINEMSGCOMPLETE, gaim_offlinemsgdone, 0); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2252 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_POP, 0x0002, gaim_popup, 0); |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
2253 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_ALIAS, gaim_icqalias, 0); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
2254 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_INFO, gaim_icqinfo, 0); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2255 | #ifndef NOSSI |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
2256 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ERROR, gaim_ssi_parseerr, 0); |
| 2991 | 2257 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RIGHTSINFO, gaim_ssi_parserights, 0); |
| 2258 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_LIST, gaim_ssi_parselist, 0); | |
| 2259 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_NOLIST, gaim_ssi_parselist, 0); | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2260 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_SRVACK, gaim_ssi_parseack, 0); |
|
8227
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
2261 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ADD, gaim_ssi_parseadd, 0); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2262 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RECVAUTH, gaim_ssi_authgiven, 0); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2263 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RECVAUTHREQ, gaim_ssi_authrequest, 0); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2264 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RECVAUTHREP, gaim_ssi_authreply, 0); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2265 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ADDED, gaim_ssi_gotadded, 0); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2266 | #endif |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
2267 | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2268 | od->conn = bosconn; |
| 2704 | 2269 | for (i = 0; i < (int)strlen(info->bosip); i++) { |
| 2270 | if (info->bosip[i] == ':') { | |
| 2271 | port = atoi(&(info->bosip[i+1])); | |
| 2086 | 2272 | break; |
| 2273 | } | |
| 2274 | } | |
| 2704 | 2275 | host = g_strndup(info->bosip, i); |
| 2086 | 2276 | bosconn->status |= AIM_CONN_STATUS_INPROGRESS; |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
2277 | rc = gaim_proxy_connect(gc->account, host, port, oscar_bos_connect, gc); |
| 2086 | 2278 | g_free(host); |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
2279 | if (rc < 0) { |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
2280 | gaim_connection_error(gc, _("Could Not Connect")); |
| 2086 | 2281 | od->killme = TRUE; |
| 2282 | return 0; | |
| 2283 | } | |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
2284 | aim_sendcookie(sess, bosconn, info->cookielen, info->cookie); |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2285 | gaim_input_remove(gc->inpa); |
| 2704 | 2286 | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2287 | gaim_connection_update_progress(gc, _("Received authorization"), 3, OSCAR_CONNECT_STEPS); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
2288 | ck[3] = 0x64; |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
2289 | |
| 2086 | 2290 | return 1; |
| 2291 | } | |
| 2292 | ||
|
7285
b9d07d0c9bc2
[gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents:
7283
diff
changeset
|
2293 | /* XXX - Should use gaim_url_fetch for the below stuff */ |
| 2086 | 2294 | struct pieceofcrap { |
| 5575 | 2295 | GaimConnection *gc; |
| 2086 | 2296 | unsigned long offset; |
| 2297 | unsigned long len; | |
| 2298 | char *modname; | |
| 2299 | int fd; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2300 | aim_conn_t *conn; |
| 2086 | 2301 | unsigned int inpa; |
| 2302 | }; | |
| 2303 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2304 | static void damn_you(gpointer data, gint source, GaimInputCondition c) |
| 2086 | 2305 | { |
| 2306 | struct pieceofcrap *pos = data; | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2307 | OscarData *od = pos->gc->proto_data; |
| 2086 | 2308 | char in = '\0'; |
| 2309 | int x = 0; | |
| 2310 | unsigned char m[17]; | |
| 2311 | ||
| 2312 | while (read(pos->fd, &in, 1) == 1) { | |
| 2313 | if (in == '\n') | |
| 2314 | x++; | |
| 2315 | else if (in != '\r') | |
| 2316 | x = 0; | |
| 2317 | if (x == 2) | |
| 2318 | break; | |
| 2319 | in = '\0'; | |
| 2320 | } | |
| 2321 | if (in != '\n') { | |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
2322 | char buf[256]; |
|
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
2323 | g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until " |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6350
diff
changeset
|
2324 | "this is fixed. Check %s for updates."), GAIM_WEBSITE); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2325 | gaim_notify_warning(pos->gc, NULL, |
| 7422 | 2326 | _("Gaim was unable to get a valid AIM login hash."), |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2327 | buf); |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2328 | gaim_input_remove(pos->inpa); |
| 2086 | 2329 | close(pos->fd); |
| 2330 | g_free(pos); | |
| 2331 | return; | |
| 2332 | } | |
| 2333 | read(pos->fd, m, 16); | |
| 2334 | m[16] = '\0'; | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2335 | gaim_debug_misc("oscar", "Sending hash: "); |
| 2086 | 2336 | for (x = 0; x < 16; x++) |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2337 | gaim_debug_misc(NULL, "%02hhx ", (unsigned char)m[x]); |
|
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2338 | |
|
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2339 | gaim_debug_misc(NULL, "\n"); |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2340 | gaim_input_remove(pos->inpa); |
| 2086 | 2341 | close(pos->fd); |
| 2342 | aim_sendmemblock(od->sess, pos->conn, 0, 16, m, AIM_SENDMEMBLOCK_FLAG_ISHASH); | |
| 2343 | g_free(pos); | |
| 2344 | } | |
| 2345 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2346 | static void straight_to_hell(gpointer data, gint source, GaimInputCondition cond) { |
| 2086 | 2347 | struct pieceofcrap *pos = data; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2348 | gchar *buf; |
| 2086 | 2349 | |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
2350 | pos->fd = source; |
|
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
2351 | |
| 2086 | 2352 | if (source < 0) { |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2353 | buf = g_strdup_printf(_("You may be disconnected shortly. You may want to use TOC until " |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6350
diff
changeset
|
2354 | "this is fixed. Check %s for updates."), GAIM_WEBSITE); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2355 | gaim_notify_warning(pos->gc, NULL, |
| 7422 | 2356 | _("Gaim was unable to get a valid AIM login hash."), |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2357 | buf); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2358 | g_free(buf); |
| 2086 | 2359 | if (pos->modname) |
| 2360 | g_free(pos->modname); | |
| 2361 | g_free(pos); | |
| 2362 | return; | |
| 2363 | } | |
| 2364 | ||
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2365 | buf = g_strdup_printf("GET " AIMHASHDATA "?offset=%ld&len=%ld&modname=%s HTTP/1.0\n\n", |
| 2086 | 2366 | pos->offset, pos->len, pos->modname ? pos->modname : ""); |
| 2367 | write(pos->fd, buf, strlen(buf)); | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2368 | g_free(buf); |
| 2086 | 2369 | if (pos->modname) |
| 2370 | g_free(pos->modname); | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2371 | pos->inpa = gaim_input_add(pos->fd, GAIM_INPUT_READ, damn_you, pos); |
| 2086 | 2372 | return; |
| 2373 | } | |
| 2374 | ||
| 2375 | /* size of icbmui.ocm, the largest module in AIM 3.5 */ | |
| 2376 | #define AIM_MAX_FILE_SIZE 98304 | |
| 2377 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2378 | int gaim_memrequest(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 2379 | va_list ap; |
| 2380 | struct pieceofcrap *pos; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2381 | fu32_t offset, len; |
| 2086 | 2382 | char *modname; |
| 2383 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2384 | va_start(ap, fr); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
2385 | offset = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
2386 | len = va_arg(ap, fu32_t); |
| 2086 | 2387 | modname = va_arg(ap, char *); |
| 2388 | va_end(ap); | |
| 2389 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2390 | gaim_debug_misc("oscar", |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
2391 | "offset: %u, len: %u, file: %s\n", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2392 | offset, len, (modname ? modname : "aim.exe")); |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2393 | |
| 2086 | 2394 | if (len == 0) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2395 | gaim_debug_misc("oscar", "len is 0, hashing NULL\n"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2396 | aim_sendmemblock(sess, fr->conn, offset, len, NULL, |
| 2086 | 2397 | AIM_SENDMEMBLOCK_FLAG_ISREQUEST); |
| 2398 | return 1; | |
| 2399 | } | |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
2400 | /* 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
|
2401 | #if 0 |
| 2086 | 2402 | if (offset > AIM_MAX_FILE_SIZE || len > AIM_MAX_FILE_SIZE) { |
| 2403 | char *buf; | |
| 2404 | int i = 8; | |
| 2405 | if (modname) | |
| 2406 | i += strlen(modname); | |
| 2407 | buf = g_malloc(i); | |
| 2408 | i = 0; | |
| 2409 | if (modname) { | |
| 2410 | memcpy(buf, modname, strlen(modname)); | |
| 2411 | i += strlen(modname); | |
| 2412 | } | |
| 2413 | buf[i++] = offset & 0xff; | |
| 2414 | buf[i++] = (offset >> 8) & 0xff; | |
| 2415 | buf[i++] = (offset >> 16) & 0xff; | |
| 2416 | buf[i++] = (offset >> 24) & 0xff; | |
| 2417 | buf[i++] = len & 0xff; | |
| 2418 | buf[i++] = (len >> 8) & 0xff; | |
| 2419 | buf[i++] = (len >> 16) & 0xff; | |
| 2420 | buf[i++] = (len >> 24) & 0xff; | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2421 | gaim_debug_misc("oscar", "len + offset is invalid, " |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2422 | "hashing request\n"); |
| 2086 | 2423 | aim_sendmemblock(sess, command->conn, offset, i, buf, AIM_SENDMEMBLOCK_FLAG_ISREQUEST); |
| 2424 | g_free(buf); | |
| 2425 | return 1; | |
| 2426 | } | |
|
9625
f2cda8836eb9
[gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents:
9620
diff
changeset
|
2427 | #endif |
| 2086 | 2428 | |
| 2429 | pos = g_new0(struct pieceofcrap, 1); | |
| 2430 | pos->gc = sess->aux_data; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2431 | pos->conn = fr->conn; |
| 2086 | 2432 | |
| 2433 | pos->offset = offset; | |
| 2434 | pos->len = len; | |
| 2435 | pos->modname = modname ? g_strdup(modname) : NULL; | |
| 2436 | ||
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
2437 | if (gaim_proxy_connect(pos->gc->account, "gaim.sourceforge.net", 80, straight_to_hell, pos) != 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
2438 | char buf[256]; |
| 2086 | 2439 | if (pos->modname) |
| 2440 | g_free(pos->modname); | |
| 2441 | g_free(pos); | |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
2442 | g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until " |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6350
diff
changeset
|
2443 | "this is fixed. Check %s for updates."), GAIM_WEBSITE); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2444 | gaim_notify_warning(pos->gc, NULL, |
| 7422 | 2445 | _("Gaim was unable to get a valid login hash."), |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2446 | buf); |
| 2086 | 2447 | } |
| 2448 | ||
| 2449 | return 1; | |
| 2450 | } | |
| 2451 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2452 | static int gaim_parse_login(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 2453 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2454 | OscarData *od = gc->proto_data; |
|
5591
2327f0802baa
[gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents:
5580
diff
changeset
|
2455 | GaimAccount *account = gaim_connection_get_account(gc); |
| 5575 | 2456 | GaimAccount *ac = gaim_connection_get_account(gc); |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
2457 | #if 0 |
|
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
2458 | struct client_info_s info = {"gaim", 7, 3, 2003, "us", "en", 0x0004, 0x0000, 0x04b}; |
|
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
2459 | #endif |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2460 | va_list ap; |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2461 | char *key; |
| 2086 | 2462 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2463 | va_start(ap, fr); |
| 2086 | 2464 | key = va_arg(ap, char *); |
| 2465 | va_end(ap); | |
| 2466 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2467 | if (od->icq) { |
|
3458
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
2468 | struct client_info_s info = CLIENTINFO_ICQ_KNOWNGOOD; |
|
5591
2327f0802baa
[gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents:
5580
diff
changeset
|
2469 | aim_send_login(sess, fr->conn, gaim_account_get_username(ac), |
|
2327f0802baa
[gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents:
5580
diff
changeset
|
2470 | gaim_account_get_password(account), &info, key); |
|
3458
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
2471 | } else { |
|
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
2472 | struct client_info_s info = CLIENTINFO_AIM_KNOWNGOOD; |
|
5591
2327f0802baa
[gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents:
5580
diff
changeset
|
2473 | aim_send_login(sess, fr->conn, gaim_account_get_username(ac), |
|
2327f0802baa
[gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents:
5580
diff
changeset
|
2474 | gaim_account_get_password(account), &info, key); |
|
3458
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
2475 | } |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2476 | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2477 | gaim_connection_update_progress(gc, _("Password sent"), 2, OSCAR_CONNECT_STEPS); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
2478 | ck[2] = 0x6c; |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
2479 | |
| 2086 | 2480 | return 1; |
| 2481 | } | |
| 2482 | ||
| 2675 | 2483 | static int conninitdone_chat(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 2484 | GaimConnection *gc = sess->aux_data; |
| 2647 | 2485 | struct chat_connection *chatcon; |
| 2486 | static int id = 1; | |
| 2487 | ||
|
6905
dd40a6134713
[gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents:
6879
diff
changeset
|
2488 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, 0x0001, gaim_parse_genericerr, 0); |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
2489 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_USERJOIN, gaim_conv_chat_join, 0); |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
2490 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_USERLEAVE, gaim_conv_chat_leave, 0); |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
2491 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_ROOMINFOUPDATE, gaim_conv_chat_info_update, 0); |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
2492 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_INCOMINGMSG, gaim_conv_chat_incoming_msg, 0); |
| 2675 | 2493 | |
| 2672 | 2494 | aim_clientready(sess, fr->conn); |
| 2675 | 2495 | |
| 2647 | 2496 | chatcon = find_oscar_chat_by_conn(gc, fr->conn); |
| 2497 | chatcon->id = id; | |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
2498 | chatcon->conv = serv_got_joined_chat(gc, id++, chatcon->show); |
| 2647 | 2499 | |
| 2500 | return 1; | |
| 2501 | } | |
| 2502 | ||
| 2675 | 2503 | static int conninitdone_chatnav(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2504 | ||
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
2505 | aim_conn_addhandler(sess, fr->conn, 0x000d, 0x0001, gaim_parse_genericerr, 0); |
| 2647 | 2506 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CTN, AIM_CB_CTN_INFO, gaim_chatnav_info, 0); |
| 2675 | 2507 | |
| 2508 | aim_clientready(sess, fr->conn); | |
| 2509 | ||
| 2510 | aim_chatnav_reqrights(sess, fr->conn); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2511 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2512 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2513 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2514 | |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2515 | static int conninitdone_email(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2516 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2517 | aim_conn_addhandler(sess, fr->conn, 0x0018, 0x0001, gaim_parse_genericerr, 0); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2518 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_EML, AIM_CB_EML_MAILSTATUS, gaim_email_parseupdate, 0); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2519 | |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
2520 | aim_email_sendcookies(sess); |
|
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7261
diff
changeset
|
2521 | aim_email_activate(sess); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2522 | aim_clientready(sess, fr->conn); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2523 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2524 | return 1; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2525 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2526 | |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2527 | static int conninitdone_icon(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 2528 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2529 | OscarData *od = gc->proto_data; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2530 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2531 | aim_conn_addhandler(sess, fr->conn, 0x0018, 0x0001, gaim_parse_genericerr, 0); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2532 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ICO, AIM_CB_ICO_ERROR, gaim_icon_error, 0); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2533 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ICO, AIM_CB_ICO_RESPONSE, gaim_icon_parseicon, 0); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2534 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2535 | aim_clientready(sess, fr->conn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2536 | |
| 4823 | 2537 | od->iconconnecting = FALSE; |
| 2538 | ||
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2539 | if (od->icontimer) |
| 8287 | 2540 | gaim_timeout_remove(od->icontimer); |
| 8273 | 2541 | od->icontimer = gaim_timeout_add(100, gaim_icon_timerfunc, gc); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2542 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2543 | return 1; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2544 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2545 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2546 | static void oscar_chatnav_connect(gpointer data, gint source, GaimInputCondition cond) { |
| 5575 | 2547 | GaimConnection *gc = data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2548 | OscarData *od; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2549 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2550 | aim_conn_t *tstconn; |
| 2086 | 2551 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
2552 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 2553 | close(source); |
| 2554 | return; | |
| 2555 | } | |
| 2556 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2557 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2558 | sess = od->sess; |
| 2086 | 2559 | tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_CHATNAV); |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
2560 | tstconn->fd = source; |
| 2086 | 2561 | |
| 2562 | if (source < 0) { | |
| 2563 | aim_conn_kill(sess, &tstconn); | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2564 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2565 | "unable to connect to chatnav server\n"); |
| 2086 | 2566 | return; |
| 2567 | } | |
| 2568 | ||
| 2569 | aim_conn_completeconnect(sess, tstconn); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2570 | od->cnpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2571 | gaim_debug_info("oscar", "chatnav: connected\n"); |
| 2086 | 2572 | } |
| 2573 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2574 | static void oscar_auth_connect(gpointer data, gint source, GaimInputCondition cond) |
| 2086 | 2575 | { |
| 5575 | 2576 | GaimConnection *gc = data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2577 | OscarData *od; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2578 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2579 | aim_conn_t *tstconn; |
| 2086 | 2580 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
2581 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 2582 | close(source); |
| 2583 | return; | |
| 2584 | } | |
| 2585 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2586 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2587 | sess = od->sess; |
| 2086 | 2588 | tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH); |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
2589 | tstconn->fd = source; |
| 2086 | 2590 | |
| 2591 | if (source < 0) { | |
| 2592 | aim_conn_kill(sess, &tstconn); | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2593 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2594 | "unable to connect to authorizer\n"); |
| 2086 | 2595 | return; |
| 2596 | } | |
| 2597 | ||
| 2598 | aim_conn_completeconnect(sess, tstconn); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2599 | od->paspa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2600 | gaim_debug_info("oscar", "admin: connected\n"); |
| 2086 | 2601 | } |
| 2602 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2603 | static void oscar_chat_connect(gpointer data, gint source, GaimInputCondition cond) |
| 2086 | 2604 | { |
| 2605 | struct chat_connection *ccon = data; | |
| 5575 | 2606 | GaimConnection *gc = ccon->gc; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2607 | OscarData *od; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2608 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2609 | aim_conn_t *tstconn; |
| 2086 | 2610 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
2611 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 2612 | close(source); |
| 2613 | g_free(ccon->show); | |
| 2614 | g_free(ccon->name); | |
| 2615 | g_free(ccon); | |
| 2616 | return; | |
| 2617 | } | |
| 2618 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2619 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2620 | sess = od->sess; |
| 2086 | 2621 | tstconn = ccon->conn; |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
2622 | tstconn->fd = source; |
| 2086 | 2623 | |
| 2624 | if (source < 0) { | |
| 2625 | aim_conn_kill(sess, &tstconn); | |
| 2626 | g_free(ccon->show); | |
| 2627 | g_free(ccon->name); | |
| 2628 | g_free(ccon); | |
| 2629 | return; | |
| 2630 | } | |
| 2631 | ||
| 2632 | aim_conn_completeconnect(sess, ccon->conn); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2633 | ccon->inpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2634 | od->oscar_chats = g_slist_append(od->oscar_chats, ccon); |
| 2086 | 2635 | } |
| 2636 | ||
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2637 | static void oscar_email_connect(gpointer data, gint source, GaimInputCondition cond) { |
| 5575 | 2638 | GaimConnection *gc = data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2639 | OscarData *od; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2640 | aim_session_t *sess; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2641 | aim_conn_t *tstconn; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2642 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
2643 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2644 | close(source); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2645 | return; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2646 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2647 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2648 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2649 | sess = od->sess; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2650 | tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_EMAIL); |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
2651 | tstconn->fd = source; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2652 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2653 | if (source < 0) { |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2654 | aim_conn_kill(sess, &tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2655 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2656 | "unable to connect to email server\n"); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2657 | return; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2658 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2659 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2660 | aim_conn_completeconnect(sess, tstconn); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2661 | od->emlpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2662 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2663 | "email: connected\n"); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2664 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2665 | |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2666 | static void oscar_icon_connect(gpointer data, gint source, GaimInputCondition cond) { |
| 5575 | 2667 | GaimConnection *gc = data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2668 | OscarData *od; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2669 | aim_session_t *sess; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2670 | aim_conn_t *tstconn; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2671 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
2672 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2673 | close(source); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2674 | return; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2675 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2676 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2677 | od = gc->proto_data; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2678 | sess = od->sess; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2679 | tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_ICON); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2680 | tstconn->fd = source; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2681 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2682 | if (source < 0) { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2683 | aim_conn_kill(sess, &tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2684 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2685 | "unable to connect to icon server\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2686 | return; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2687 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2688 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2689 | aim_conn_completeconnect(sess, tstconn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2690 | od->icopa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2691 | gaim_debug_info("oscar", "icon: connected\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2692 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2693 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2694 | /* Hrmph. I don't know how to make this look better. --mid */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2695 | static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 2696 | GaimConnection *gc = sess->aux_data; |
| 2697 | GaimAccount *account = gaim_connection_get_account(gc); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2698 | aim_conn_t *tstconn; |
| 4452 | 2699 | int i; |
| 2086 | 2700 | char *host; |
| 2701 | int port; | |
|
4821
9107fba2dbe5
[gaim-migrate @ 5146]
Mark Doliner <markdoliner@pidgin.im>
parents:
4820
diff
changeset
|
2702 | va_list ap; |
|
9107fba2dbe5
[gaim-migrate @ 5146]
Mark Doliner <markdoliner@pidgin.im>
parents:
4820
diff
changeset
|
2703 | struct aim_redirect_data *redir; |
| 2086 | 2704 | |
| 5575 | 2705 | port = gaim_account_get_int(account, "port", FAIM_LOGIN_PORT); |
| 2086 | 2706 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2707 | va_start(ap, fr); |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
2708 | redir = va_arg(ap, struct aim_redirect_data *); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
2709 | va_end(ap); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
2710 | |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
2711 | for (i = 0; i < (int)strlen(redir->ip); i++) { |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
2712 | if (redir->ip[i] == ':') { |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
2713 | port = atoi(&(redir->ip[i+1])); |
| 2086 | 2714 | break; |
| 2715 | } | |
| 2716 | } | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
2717 | host = g_strndup(redir->ip, i); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
2718 | |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
2719 | switch(redir->group) { |
| 2086 | 2720 | case 0x7: /* Authorizer */ |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2721 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2722 | "Reconnecting with authorizor...\n"); |
| 2086 | 2723 | tstconn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL); |
| 2724 | if (tstconn == NULL) { | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2725 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2726 | "unable to reconnect with authorizer\n"); |
| 2086 | 2727 | g_free(host); |
| 2728 | return 1; | |
| 2729 | } | |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
2730 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
| 2675 | 2731 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_admin, 0); |
| 2086 | 2732 | |
| 2733 | tstconn->status |= AIM_CONN_STATUS_INPROGRESS; | |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
2734 | if (gaim_proxy_connect(account, host, port, oscar_auth_connect, gc) != 0) { |
| 2086 | 2735 | aim_conn_kill(sess, &tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2736 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2737 | "unable to reconnect with authorizer\n"); |
| 2086 | 2738 | g_free(host); |
| 2739 | return 1; | |
| 2740 | } | |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
2741 | aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
2742 | break; |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
2743 | |
| 2086 | 2744 | case 0xd: /* ChatNav */ |
| 2745 | tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHATNAV, NULL); | |
| 2746 | if (tstconn == NULL) { | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2747 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2748 | "unable to connect to chatnav server\n"); |
| 2086 | 2749 | g_free(host); |
| 2750 | return 1; | |
| 2751 | } | |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
2752 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
| 2675 | 2753 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_chatnav, 0); |
| 2086 | 2754 | |
| 2755 | tstconn->status |= AIM_CONN_STATUS_INPROGRESS; | |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
2756 | if (gaim_proxy_connect(account, host, port, oscar_chatnav_connect, gc) != 0) { |
| 2086 | 2757 | aim_conn_kill(sess, &tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2758 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2759 | "unable to connect to chatnav server\n"); |
| 2086 | 2760 | g_free(host); |
| 2761 | return 1; | |
| 2762 | } | |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
2763 | aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
2764 | break; |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
2765 | |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
2766 | case 0xe: { /* Chat */ |
| 2086 | 2767 | struct chat_connection *ccon; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2768 | |
| 2086 | 2769 | tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHAT, NULL); |
| 2770 | if (tstconn == NULL) { | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2771 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2772 | "unable to connect to chat server\n"); |
| 2086 | 2773 | g_free(host); |
| 2774 | return 1; | |
| 2775 | } | |
| 2776 | ||
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
2777 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
| 2675 | 2778 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_chat, 0); |
| 2779 | ||
| 2086 | 2780 | ccon = g_new0(struct chat_connection, 1); |
| 2781 | ccon->conn = tstconn; | |
| 2782 | ccon->gc = gc; | |
| 2783 | ccon->fd = -1; | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
2784 | ccon->name = g_strdup(redir->chat.room); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
2785 | ccon->exchange = redir->chat.exchange; |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
2786 | ccon->instance = redir->chat.instance; |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
2787 | ccon->show = extract_name(redir->chat.room); |
| 4634 | 2788 | |
| 2086 | 2789 | ccon->conn->status |= AIM_CONN_STATUS_INPROGRESS; |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
2790 | if (gaim_proxy_connect(account, host, port, oscar_chat_connect, ccon) != 0) { |
| 2086 | 2791 | aim_conn_kill(sess, &tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2792 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2793 | "unable to connect to chat server\n"); |
| 2086 | 2794 | g_free(host); |
| 2795 | g_free(ccon->show); | |
| 2796 | g_free(ccon->name); | |
| 2797 | g_free(ccon); | |
| 2798 | return 1; | |
| 2799 | } | |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
2800 | aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2801 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2802 | "Connected to chat room %s exchange %hu\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2803 | ccon->name, ccon->exchange); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
2804 | } break; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2805 | |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2806 | case 0x0010: { /* icon */ |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2807 | if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_ICON, NULL))) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2808 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2809 | "unable to connect to icon server\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2810 | g_free(host); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2811 | return 1; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2812 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2813 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2814 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_icon, 0); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2815 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2816 | tstconn->status |= AIM_CONN_STATUS_INPROGRESS; |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
2817 | if (gaim_proxy_connect(account, host, port, oscar_icon_connect, gc) != 0) { |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2818 | aim_conn_kill(sess, &tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2819 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2820 | "unable to connect to icon server\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2821 | g_free(host); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2822 | return 1; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2823 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2824 | aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2825 | } break; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2826 | |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2827 | case 0x0018: { /* email */ |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2828 | if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_EMAIL, NULL))) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2829 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2830 | "unable to connect to email server\n"); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2831 | g_free(host); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2832 | return 1; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2833 | } |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
2834 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2835 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_email, 0); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2836 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2837 | tstconn->status |= AIM_CONN_STATUS_INPROGRESS; |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
2838 | if (gaim_proxy_connect(account, host, port, oscar_email_connect, gc) != 0) { |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2839 | aim_conn_kill(sess, &tstconn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2840 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2841 | "unable to connect to email server\n"); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2842 | g_free(host); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2843 | return 1; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2844 | } |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
2845 | aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2846 | } break; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
2847 | |
| 2086 | 2848 | default: /* huh? */ |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
2849 | gaim_debug_warning("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2850 | "got redirect for unknown service 0x%04hx\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2851 | redir->group); |
| 2086 | 2852 | break; |
| 2853 | } | |
| 2854 | ||
| 2855 | g_free(host); | |
| 2856 | return 1; | |
| 2857 | } | |
| 2858 | ||
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2859 | static int gaim_parse_oncoming(aim_session_t *sess, aim_frame_t *fr, ...) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2860 | { |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2861 | GaimConnection *gc; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2862 | GaimAccount *account; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2863 | OscarData *od; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2864 | struct buddyinfo *bi; |
| 2993 | 2865 | time_t time_idle = 0, signon = 0; |
| 2866 | int type = 0; | |
| 2867 | int caps = 0; | |
| 2086 | 2868 | va_list ap; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2869 | aim_userinfo_t *info; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2870 | gboolean buddy_is_away = FALSE; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2871 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2872 | gc = sess->aux_data; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2873 | account = gaim_connection_get_account(gc); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2874 | od = gc->proto_data; |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
2875 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2876 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
2877 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 2878 | va_end(ap); |
| 2879 | ||
| 2993 | 2880 | if (info->present & AIM_USERINFO_PRESENT_CAPABILITIES) |
| 2881 | caps = info->capabilities; | |
| 3267 | 2882 | |
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
2883 | if (info->present & AIM_USERINFO_PRESENT_FLAGS) { |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
2884 | if (info->flags & AIM_FLAG_AWAY) |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2885 | buddy_is_away = TRUE; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2886 | } |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2887 | |
| 2993 | 2888 | if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) { |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2889 | type = (info->icqinfo.status << 16); |
| 3013 | 2890 | if (!(info->icqinfo.status & AIM_ICQ_STATE_CHAT) && |
| 2891 | (info->icqinfo.status != AIM_ICQ_STATE_NORMAL)) { | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2892 | buddy_is_away = TRUE; |
| 3013 | 2893 | } |
| 2993 | 2894 | } |
| 2895 | ||
|
7141
431a007467e8
[gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents:
7129
diff
changeset
|
2896 | if (caps & AIM_CAPS_ICQ_DIRECT) |
|
431a007467e8
[gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents:
7129
diff
changeset
|
2897 | caps ^= AIM_CAPS_ICQ_DIRECT; |
| 2993 | 2898 | |
| 2899 | if (info->present & AIM_USERINFO_PRESENT_IDLE) { | |
| 2086 | 2900 | time(&time_idle); |
| 2901 | time_idle -= info->idletime*60; | |
|
9295
a0ea1692dde9
[gaim-migrate @ 10098]
Mark Doliner <markdoliner@pidgin.im>
parents:
9285
diff
changeset
|
2902 | /* time_idle should be the seconds since epoch at which the user became idle */ |
| 2993 | 2903 | } |
| 2904 | ||
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
2905 | if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE) |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
2906 | signon = info->onlinesince; |
|
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
2907 | else if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN) |
| 2993 | 2908 | signon = time(NULL) - info->sessionlen; |
| 2086 | 2909 | |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
2910 | if (!aim_sncmp(gaim_account_get_username(account), info->sn)) |
| 5575 | 2911 | gaim_connection_set_display_name(gc, info->sn); |
|
2305
9ba346379088
[gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2303
diff
changeset
|
2912 | |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
2913 | bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, info->sn)); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2914 | if (!bi) { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2915 | bi = g_new0(struct buddyinfo, 1); |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
2916 | g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(account, info->sn)), bi); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2917 | } |
|
4739
7263e3ceab43
[gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents:
4738
diff
changeset
|
2918 | bi->typingnot = FALSE; |
|
7263e3ceab43
[gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents:
4738
diff
changeset
|
2919 | bi->ico_informed = FALSE; |
| 6857 | 2920 | bi->ipaddr = info->icqinfo.ipaddr; |
| 2921 | ||
| 2922 | /* Available message stuff */ | |
|
6292
ec8a58bc2b87
[gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents:
6281
diff
changeset
|
2923 | free(bi->availmsg); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
2924 | if (info->avail != NULL) |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
2925 | bi->availmsg = oscar_encoding_to_utf8(info->avail_encoding, info->avail, info->avail_len); |
|
5837
e75d4061396e
[gaim-migrate @ 6268]
Mark Doliner <markdoliner@pidgin.im>
parents:
5836
diff
changeset
|
2926 | else |
|
6292
ec8a58bc2b87
[gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents:
6281
diff
changeset
|
2927 | bi->availmsg = NULL; |
| 4732 | 2928 | |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
2929 | /* Server stored icon stuff */ |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
2930 | if (info->iconcsumlen) { |
| 7125 | 2931 | const char *filename = NULL, *saved_b16 = NULL; |
|
9801
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
2932 | char *b16 = NULL, *filepath = NULL; |
|
7093
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
2933 | GaimBuddy *b = NULL; |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
2934 | |
|
7106
eaeff5775818
[gaim-migrate @ 7671]
Christian Hammond <chipx86@chipx86.com>
parents:
7098
diff
changeset
|
2935 | b16 = gaim_base16_encode(info->iconcsum, info->iconcsumlen); |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
2936 | b = gaim_find_buddy(account, info->sn); |
|
7093
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
2937 | /* |
|
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
2938 | * If for some reason the checksum is valid, but cached file is not.. |
|
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
2939 | * we want to know. |
|
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
2940 | */ |
| 7693 | 2941 | filename = gaim_blist_node_get_string((GaimBlistNode*)b, "buddy_icon"); |
|
7093
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
2942 | if (filename != NULL) { |
|
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
2943 | if (g_file_test(filename, G_FILE_TEST_EXISTS)) |
| 7693 | 2944 | saved_b16 = gaim_blist_node_get_string((GaimBlistNode*)b, |
| 2945 | "icon_checksum"); | |
|
9801
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
2946 | else { |
|
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
2947 | filepath = g_build_filename(gaim_buddy_icons_get_cache_dir(), |
|
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
2948 | filename, NULL); |
|
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
2949 | if (g_file_test(filepath, G_FILE_TEST_EXISTS)) |
|
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
2950 | saved_b16 = gaim_blist_node_get_string((GaimBlistNode*)b, |
|
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
2951 | "icon_checksum"); |
|
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
2952 | g_free(filepath); |
|
c061a7280591
[gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9797
diff
changeset
|
2953 | } |
|
7093
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
2954 | } else |
|
2fef5364eb2b
[gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents:
7091
diff
changeset
|
2955 | saved_b16 = NULL; |
|
7054
b3509b4108e9
[gaim-migrate @ 7617]
Herman Bloggs <herman@bluedigits.com>
parents:
7045
diff
changeset
|
2956 | |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
2957 | if (!b16 || !saved_b16 || strcmp(b16, saved_b16)) { |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
2958 | GSList *cur = od->requesticon; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
2959 | while (cur && aim_sncmp((char *)cur->data, info->sn)) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
2960 | cur = cur->next; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
2961 | if (!cur) { |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
2962 | od->requesticon = g_slist_append(od->requesticon, g_strdup(gaim_normalize(account, info->sn))); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
2963 | if (od->icontimer) |
| 8287 | 2964 | gaim_timeout_remove(od->icontimer); |
| 8273 | 2965 | od->icontimer = gaim_timeout_add(500, gaim_icon_timerfunc, gc); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
2966 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
2967 | } |
| 6053 | 2968 | g_free(b16); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
2969 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
2970 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2971 | /* XXX - Represent other ICQ statuses */ |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2972 | if (buddy_is_away == TRUE) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2973 | gaim_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_AWAY, NULL); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2974 | else |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
2975 | gaim_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_AVAILABLE, NULL); |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
2976 | gaim_prpl_got_user_login_time(account, info->sn, signon); |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
2977 | gaim_prpl_got_user_warning_level(account, info->sn, info->warnlevel/10.0 + 0.5); |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
2978 | |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
2979 | if (time_idle > 0) |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
2980 | gaim_prpl_got_user_idle(account, info->sn, TRUE, time_idle); |
|
10009
8a4fcc043f47
[gaim-migrate @ 10926]
Mark Doliner <markdoliner@pidgin.im>
parents:
9995
diff
changeset
|
2981 | else |
|
8a4fcc043f47
[gaim-migrate @ 10926]
Mark Doliner <markdoliner@pidgin.im>
parents:
9995
diff
changeset
|
2982 | gaim_prpl_got_user_idle(account, info->sn, FALSE, 0); |
| 2086 | 2983 | |
| 2984 | return 1; | |
| 2985 | } | |
| 2986 | ||
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
2987 | static void gaim_check_comment(OscarData *od, const char *str) { |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
2988 | if ((str == NULL) || strcmp(str, ck)) |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
2989 | aim_locate_setcaps(od->sess, caps_aim); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
2990 | else |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
2991 | aim_locate_setcaps(od->sess, caps_aim | AIM_CAPS_SECUREIM); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
2992 | } |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
2993 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2994 | static int gaim_parse_offgoing(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 2995 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
2996 | OscarData *od = gc->proto_data; |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
2997 | GaimAccount *account = gaim_connection_get_account(gc); |
| 2086 | 2998 | va_list ap; |
|
4739
7263e3ceab43
[gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents:
4738
diff
changeset
|
2999 | aim_userinfo_t *info; |
| 2086 | 3000 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3001 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3002 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 3003 | va_end(ap); |
| 3004 | ||
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
3005 | gaim_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_OFFLINE, NULL); |
| 2086 | 3006 | |
| 7261 | 3007 | g_hash_table_remove(od->buddyinfo, gaim_normalize(gc->account, info->sn)); |
|
5837
e75d4061396e
[gaim-migrate @ 6268]
Mark Doliner <markdoliner@pidgin.im>
parents:
5836
diff
changeset
|
3008 | |
| 2086 | 3009 | return 1; |
| 3010 | } | |
| 3011 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3012 | /* BBB */ |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
3013 | /* |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3014 | * This is called after a remote AIM user has connected to us. We |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3015 | * want to do some voodoo with the socket file descriptors, add a |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3016 | * callback or two, and then send the AIM_CB_OFT_PROMPT. |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
3017 | */ |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3018 | static int oscar_sendfile_estblsh(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3019 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3020 | OscarData *od = (OscarData *)gc->proto_data; |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
3021 | GaimXfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3022 | struct aim_oft_info *oft_info; |
| 3630 | 3023 | va_list ap; |
| 3024 | aim_conn_t *conn, *listenerconn; | |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3025 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3026 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3027 | "AAA - in oscar_sendfile_estblsh\n"); |
| 3630 | 3028 | va_start(ap, fr); |
| 3029 | conn = va_arg(ap, aim_conn_t *); | |
| 3030 | listenerconn = va_arg(ap, aim_conn_t *); | |
| 3031 | va_end(ap); | |
| 3032 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3033 | if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, listenerconn))) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3034 | return 1; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3035 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3036 | if (!(oft_info = xfer->data)) |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3037 | return 1; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3038 | |
| 3630 | 3039 | /* Stop watching listener conn; watch transfer conn instead */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3040 | gaim_input_remove(xfer->watcher); |
| 3630 | 3041 | aim_conn_kill(sess, &listenerconn); |
| 3042 | ||
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3043 | oft_info->conn = conn; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3044 | xfer->fd = oft_info->conn->fd; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3045 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3046 | aim_conn_addhandler(sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ACK, oscar_sendfile_ack, 0); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3047 | aim_conn_addhandler(sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DONE, oscar_sendfile_done, 0); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3048 | xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3049 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3050 | /* Inform the other user that we are connected and ready to transfer */ |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3051 | aim_oft_sendheader(sess, AIM_CB_OFT_PROMPT, oft_info); |
| 3630 | 3052 | |
| 3053 | return 0; | |
| 3054 | } | |
| 3055 | ||
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
3056 | /* |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
3057 | * This is the gaim callback passed to gaim_proxy_connect when connecting to another AIM |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3058 | * user in order to transfer a file. |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
3059 | */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3060 | static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition) { |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
3061 | GaimXfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3062 | struct aim_oft_info *oft_info; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3063 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3064 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3065 | "AAA - in oscar_sendfile_connected\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3066 | if (!(xfer = data)) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3067 | return; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3068 | if (!(oft_info = xfer->data)) |
| 3630 | 3069 | return; |
| 8446 | 3070 | if (source < 0) { |
| 3071 | gaim_xfer_cancel_remote(xfer); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3072 | return; |
| 8446 | 3073 | } |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3074 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3075 | xfer->fd = source; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3076 | oft_info->conn->fd = source; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3077 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3078 | aim_conn_completeconnect(oft_info->sess, oft_info->conn); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3079 | xfer->watcher = gaim_input_add(xfer->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3080 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3081 | /* Inform the other user that we are connected and ready to transfer */ |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3082 | aim_im_sendch2_sendfile_accept(oft_info->sess, oft_info); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3083 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3084 | return; |
| 3630 | 3085 | } |
| 3086 | ||
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
3087 | /* |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3088 | * This is called when a buddy sends us some file info. This happens when they |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3089 | * are sending a file to you, and you have just established a connection to them. |
|
4650
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4649
diff
changeset
|
3090 | * You should send them the exact same info except use the real cookie. We also |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3091 | * get like totally ready to like, receive the file, kay? |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
3092 | */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3093 | static int oscar_sendfile_prompt(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3094 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3095 | OscarData *od = gc->proto_data; |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
3096 | GaimXfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3097 | struct aim_oft_info *oft_info; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3098 | va_list ap; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3099 | aim_conn_t *conn; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3100 | fu8_t *cookie; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3101 | struct aim_fileheader_t *fh; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3102 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3103 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3104 | "AAA - in oscar_sendfile_prompt\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3105 | va_start(ap, fr); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3106 | conn = va_arg(ap, aim_conn_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3107 | cookie = va_arg(ap, fu8_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3108 | fh = va_arg(ap, struct aim_fileheader_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3109 | va_end(ap); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3110 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3111 | if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn))) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3112 | return 1; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3113 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3114 | if (!(oft_info = xfer->data)) |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3115 | return 1; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3116 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3117 | /* We want to stop listening with a normal thingy */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3118 | gaim_input_remove(xfer->watcher); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3119 | xfer->watcher = 0; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3120 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3121 | /* They sent us some information about the file they're sending */ |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3122 | memcpy(&oft_info->fh, fh, sizeof(*fh)); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3123 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3124 | /* Fill in the cookie */ |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3125 | memcpy(&oft_info->fh.bcookie, oft_info->cookie, 8); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3126 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3127 | /* XXX - convert the name from UTF-8 to UCS-2 if necessary, and pass the encoding to the call below */ |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3128 | aim_oft_sendheader(oft_info->sess, AIM_CB_OFT_ACK, oft_info); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3129 | gaim_xfer_start(xfer, xfer->fd, NULL, 0); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3130 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3131 | return 0; |
| 3630 | 3132 | } |
| 3133 | ||
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
3134 | /* |
|
4657
24c70a9dec22
[gaim-migrate @ 4968]
Mark Doliner <markdoliner@pidgin.im>
parents:
4656
diff
changeset
|
3135 | * We are sending a file to someone else. They have just acknowledged our |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3136 | * prompt, so we want to start sending data like there's no tomorrow. |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
3137 | */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3138 | static int oscar_sendfile_ack(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3139 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3140 | OscarData *od = gc->proto_data; |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
3141 | GaimXfer *xfer; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3142 | va_list ap; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3143 | aim_conn_t *conn; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3144 | fu8_t *cookie; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3145 | struct aim_fileheader_t *fh; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3146 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3147 | gaim_debug_info("oscar", "AAA - in oscar_sendfile_ack\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3148 | va_start(ap, fr); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3149 | conn = va_arg(ap, aim_conn_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3150 | cookie = va_arg(ap, fu8_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3151 | fh = va_arg(ap, struct aim_fileheader_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3152 | va_end(ap); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3153 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3154 | if (!(xfer = oscar_find_xfer_by_cookie(od->file_transfers, cookie))) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3155 | return 1; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3156 | |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3157 | /* We want to stop listening with a normal thingy */ |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3158 | gaim_input_remove(xfer->watcher); |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3159 | xfer->watcher = 0; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3160 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3161 | gaim_xfer_start(xfer, xfer->fd, NULL, 0); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3162 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3163 | return 0; |
| 3630 | 3164 | } |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3165 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3166 | /* |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3167 | * We just sent a file to someone. They said they got it and everything, |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3168 | * so we can close our direct connection and what not. |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3169 | */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3170 | static int oscar_sendfile_done(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3171 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3172 | OscarData *od = gc->proto_data; |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
3173 | GaimXfer *xfer; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3174 | va_list ap; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3175 | aim_conn_t *conn; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3176 | fu8_t *cookie; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3177 | struct aim_fileheader_t *fh; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3178 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3179 | gaim_debug_info("oscar", "AAA - in oscar_sendfile_done\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3180 | va_start(ap, fr); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3181 | conn = va_arg(ap, aim_conn_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3182 | cookie = va_arg(ap, fu8_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3183 | fh = va_arg(ap, struct aim_fileheader_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3184 | va_end(ap); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3185 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3186 | if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn))) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3187 | return 1; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3188 | |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3189 | xfer->fd = conn->fd; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3190 | gaim_xfer_end(xfer); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3191 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3192 | return 0; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3193 | } |
| 3630 | 3194 | |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3195 | static int incomingim_chan1(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch1_args *args) { |
| 5575 | 3196 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3197 | OscarData *od = gc->proto_data; |
|
8708
31a7bd5a32f4
[gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents:
8701
diff
changeset
|
3198 | GaimAccount *account = gaim_connection_get_account(gc); |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
3199 | GaimConvImFlags flags = 0; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3200 | struct buddyinfo *bi; |
| 5575 | 3201 | const char *iconfile; |
|
9806
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3202 | GString *message; |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3203 | gchar *tmp; |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3204 | aim_mpmsg_section_t *curpart; |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3205 | |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3206 | gaim_debug_misc("oscar", "Recived IM from %s with %d parts\n", |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3207 | userinfo->sn, args->mpmsg.numparts); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3208 | |
|
8708
31a7bd5a32f4
[gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents:
8701
diff
changeset
|
3209 | bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, userinfo->sn)); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3210 | if (!bi) { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3211 | bi = g_new0(struct buddyinfo, 1); |
|
8708
31a7bd5a32f4
[gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents:
8701
diff
changeset
|
3212 | g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(account, userinfo->sn)), bi); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3213 | } |
|
2273
b7c08d737d81
[gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2249
diff
changeset
|
3214 | |
|
b7c08d737d81
[gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2249
diff
changeset
|
3215 | if (args->icbmflags & AIM_IMFLAGS_AWAY) |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
3216 | flags |= GAIM_CONV_IM_AUTO_RESP; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3217 | |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3218 | if (args->icbmflags & AIM_IMFLAGS_TYPINGNOT) |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3219 | bi->typingnot = TRUE; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3220 | else |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3221 | bi->typingnot = FALSE; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3222 | |
|
4380
c7c7beab8e56
[gaim-migrate @ 4646]
Mark Doliner <markdoliner@pidgin.im>
parents:
4374
diff
changeset
|
3223 | if ((args->icbmflags & AIM_IMFLAGS_HASICON) && (args->iconlen) && (args->iconsum) && (args->iconstamp)) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3224 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3225 | "%s has an icon\n", userinfo->sn); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3226 | 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
|
3227 | bi->ico_need = TRUE; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3228 | bi->ico_len = args->iconlen; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3229 | bi->ico_csum = args->iconsum; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
3230 | bi->ico_time = args->iconstamp; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3231 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3232 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3233 | |
|
8708
31a7bd5a32f4
[gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents:
8701
diff
changeset
|
3234 | if ((iconfile = gaim_account_get_buddy_icon(account)) && |
| 7406 | 3235 | (args->icbmflags & AIM_IMFLAGS_BUDDYREQ) && !bi->ico_sent && bi->ico_informed) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3236 | FILE *file; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3237 | struct stat st; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3238 | |
| 5575 | 3239 | if (!stat(iconfile, &st)) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3240 | char *buf = g_malloc(st.st_size); |
| 5575 | 3241 | file = fopen(iconfile, "rb"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3242 | if (file) { |
|
9532
32470c5a1d58
[gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
9481
diff
changeset
|
3243 | /* XXX - Use g_file_get_contents() */ |
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2597
diff
changeset
|
3244 | int len = fread(buf, 1, st.st_size, file); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3245 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3246 | "Sending buddy icon to %s (%d bytes, " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3247 | "%lu reported)\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3248 | userinfo->sn, len, st.st_size); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3249 | aim_im_sendch2_icon(sess, userinfo->sn, buf, st.st_size, |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3250 | st.st_mtime, aimutil_iconsum(buf, st.st_size)); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3251 | fclose(file); |
|
2336
43d65c408209
[gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
3252 | } else |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3253 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3254 | "Can't open buddy icon file!\n"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3255 | g_free(buf); |
|
2336
43d65c408209
[gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
3256 | } else |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3257 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3258 | "Can't stat buddy icon file!\n"); |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3259 | } |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3260 | |
|
9806
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3261 | message = g_string_new(""); |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3262 | curpart = args->mpmsg.parts; |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3263 | while (curpart != NULL) { |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
3264 | tmp = gaim_plugin_oscar_decode_im_part(account, userinfo->sn, curpart->charset, curpart->charsubset, |
|
9806
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3265 | curpart->data, curpart->datalen); |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3266 | if (tmp != NULL) { |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3267 | g_string_append(message, tmp); |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3268 | g_free(tmp); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3269 | } |
|
9806
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3270 | |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3271 | curpart = curpart->next; |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3272 | } |
|
6b4ad56649c6
[gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents:
9801
diff
changeset
|
3273 | tmp = g_string_free(message, FALSE); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3274 | |
|
8666
582a118d6b91
[gaim-migrate @ 9418]
Mark Doliner <markdoliner@pidgin.im>
parents:
8660
diff
changeset
|
3275 | /* |
| 8995 | 3276 | * If the message is being received by an ICQ user then escape any HTML, |
| 9016 | 3277 | * because HTML is not sent over ICQ as a means to format a message. |
| 8995 | 3278 | * so any HTML we receive is intended to be displayed |
| 3279 | * | |
| 3280 | * Note: There *may* be some clients which send messages as HTML formatted - | |
| 3281 | * they need to be special-cased somehow. | |
|
8666
582a118d6b91
[gaim-migrate @ 9418]
Mark Doliner <markdoliner@pidgin.im>
parents:
8660
diff
changeset
|
3282 | */ |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
3283 | if (aim_sn_is_icq(gaim_account_get_username(account)) && aim_sn_is_icq(userinfo->sn)) { |
| 8995 | 3284 | /* being recevied by ICQ from ICQ - escape HTML so it is displayed as sent */ |
| 3285 | gchar *tmp2 = gaim_escape_html(tmp); | |
|
8493
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
3286 | g_free(tmp); |
|
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
3287 | tmp = tmp2; |
|
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
3288 | } |
|
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
3289 | |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6907
diff
changeset
|
3290 | serv_got_im(gc, userinfo->sn, tmp, flags, time(NULL)); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3291 | g_free(tmp); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3292 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3293 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3294 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3295 | |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3296 | static int incomingim_chan2(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch2_args *args) { |
| 9070 | 3297 | GaimConnection *gc; |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3298 | GaimAccount *account; |
| 9070 | 3299 | OscarData *od; |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3300 | const char *username = NULL; |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3301 | char *message = NULL; |
| 9070 | 3302 | |
| 3303 | g_return_val_if_fail(sess != NULL, 0); | |
| 3304 | g_return_val_if_fail(sess->aux_data != NULL, 0); | |
| 3305 | ||
| 3306 | gc = sess->aux_data; | |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3307 | account = gaim_connection_get_account(gc); |
| 9070 | 3308 | od = gc->proto_data; |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3309 | username = gaim_account_get_username(account); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3310 | |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3311 | if (args == NULL) |
| 4121 | 3312 | return 0; |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3313 | |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3314 | gaim_debug_misc("oscar", "rendezvous with %s, status is %hu\n", |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3315 | userinfo->sn, args->status); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3316 | |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3317 | if (args->msg != NULL) |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3318 | { |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3319 | if (args->encoding != NULL) |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3320 | { |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3321 | char *encoding = NULL; |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3322 | encoding = oscar_encoding_extract(args->encoding); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3323 | message = oscar_encoding_to_utf8(encoding, args->msg, args->msglen); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3324 | g_free(encoding); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3325 | } else { |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3326 | if (g_utf8_validate(args->msg, args->msglen, NULL)) |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3327 | message = g_strdup(args->msg); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3328 | } |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3329 | } |
| 2869 | 3330 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3331 | if (args->reqclass & AIM_CAPS_CHAT) { |
| 4121 | 3332 | char *name; |
| 5234 | 3333 | GHashTable *components; |
| 3334 | ||
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3335 | 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
|
3336 | g_free(message); |
| 4121 | 3337 | return 1; |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3338 | } |
| 5234 | 3339 | components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, |
| 3340 | g_free); | |
| 4121 | 3341 | name = extract_name(args->info.chat.roominfo.name); |
| 5234 | 3342 | g_hash_table_replace(components, g_strdup("room"), g_strdup(name ? name : args->info.chat.roominfo.name)); |
| 3343 | g_hash_table_replace(components, g_strdup("exchange"), g_strdup_printf("%d", args->info.chat.roominfo.exchange)); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3344 | serv_got_chat_invite(gc, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3345 | name ? name : args->info.chat.roominfo.name, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3346 | userinfo->sn, |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3347 | message, |
| 5234 | 3348 | components); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3349 | if (name) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3350 | g_free(name); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3351 | } else if (args->reqclass & AIM_CAPS_SENDFILE) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3352 | /* BBB */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3353 | if (args->status == AIM_RENDEZVOUS_PROPOSE) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3354 | /* Someone wants to send a file (or files) to us */ |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
3355 | GaimXfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3356 | struct aim_oft_info *oft_info; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3357 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3358 | if (!args->cookie || !args->port || !args->verifiedip || |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3359 | !args->info.sendfile.filename || !args->info.sendfile.totsize || |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3360 | !args->info.sendfile.totfiles || !args->reqclass) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3361 | gaim_debug_warning("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3362 | "%s tried to send you a file with incomplete " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3363 | "information.\n", userinfo->sn); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3364 | if (args->proxyip) |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3365 | gaim_debug_warning("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3366 | "IP for a proxy server was given. Gaim " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3367 | "does not support this yet.\n"); |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3368 | g_free(message); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3369 | return 1; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
3370 | } |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3371 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3372 | if (args->info.sendfile.subtype == AIM_OFT_SUBTYPE_SEND_DIR) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3373 | /* last char of the ft req is a star, they are sending us a |
|
8735
01248ea222d3
[gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents:
8733
diff
changeset
|
3374 | * directory -- remove the star and trailing slash so we don't save |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3375 | * directories that look like 'dirname\*' -- arl */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3376 | char *tmp = strrchr(args->info.sendfile.filename, '\\'); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3377 | if (tmp && (tmp[1] == '*')) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3378 | tmp[0] = '\0'; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3379 | } |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3380 | gaim_debug_warning("oscar", |
| 8446 | 3381 | "We're receiving a whole directory! What fun! " |
| 3382 | "Especially since we don't support that!\n"); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3383 | } |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3384 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3385 | /* Build the file transfer handle */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3386 | xfer = gaim_xfer_new(gc->account, GAIM_XFER_RECEIVE, userinfo->sn); |
|
5163
c4e7e5cde47d
[gaim-migrate @ 5527]
Mark Doliner <markdoliner@pidgin.im>
parents:
5149
diff
changeset
|
3387 | xfer->remote_ip = g_strdup(args->verifiedip); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3388 | xfer->remote_port = args->port; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3389 | gaim_xfer_set_filename(xfer, args->info.sendfile.filename); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3390 | gaim_xfer_set_size(xfer, args->info.sendfile.totsize); |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3391 | gaim_xfer_set_message(xfer, message); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3392 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3393 | /* Create the oscar-specific data */ |
|
5163
c4e7e5cde47d
[gaim-migrate @ 5527]
Mark Doliner <markdoliner@pidgin.im>
parents:
5149
diff
changeset
|
3394 | oft_info = aim_oft_createinfo(od->sess, args->cookie, userinfo->sn, args->clientip, xfer->remote_port, 0, 0, NULL); |
|
4898
285e9ff6eeb8
[gaim-migrate @ 5230]
Mark Doliner <markdoliner@pidgin.im>
parents:
4889
diff
changeset
|
3395 | if (args->proxyip) |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3396 | oft_info->proxyip = g_strdup(args->proxyip); |
|
4898
285e9ff6eeb8
[gaim-migrate @ 5230]
Mark Doliner <markdoliner@pidgin.im>
parents:
4889
diff
changeset
|
3397 | if (args->verifiedip) |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3398 | oft_info->verifiedip = g_strdup(args->verifiedip); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
3399 | xfer->data = oft_info; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3400 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3401 | /* Setup our I/O op functions */ |
| 8446 | 3402 | gaim_xfer_set_init_fnc(xfer, oscar_xfer_init_recv); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3403 | gaim_xfer_set_end_fnc(xfer, oscar_xfer_end); |
| 8446 | 3404 | gaim_xfer_set_request_denied_fnc(xfer, oscar_xfer_cancel_recv); |
|
4675
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
3405 | gaim_xfer_set_cancel_recv_fnc(xfer, oscar_xfer_cancel_recv); |
| 8446 | 3406 | gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack_recv); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3407 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3408 | /* Keep track of this transfer for later */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3409 | od->file_transfers = g_slist_append(od->file_transfers, xfer); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3410 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3411 | /* Now perform the request */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3412 | gaim_xfer_request(xfer); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3413 | } else if (args->status == AIM_RENDEZVOUS_CANCEL) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3414 | /* The other user wants to cancel a file transfer */ |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
3415 | GaimXfer *xfer; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3416 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3417 | "AAA - File transfer canceled by remote user\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3418 | if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, args->cookie))) |
|
4675
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
3419 | gaim_xfer_cancel_remote(xfer); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3420 | } else if (args->status == AIM_RENDEZVOUS_ACCEPT) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3421 | /* |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3422 | * This gets sent by the receiver of a file |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3423 | * as they connect directly to us. If we don't |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3424 | * get this, then maybe a third party connected |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3425 | * to us, and we shouldn't send them anything. |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3426 | */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3427 | } else { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3428 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3429 | "unknown rendezvous status!\n"); |
| 3630 | 3430 | } |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3431 | } else if (args->reqclass & AIM_CAPS_GETFILE) { |
|
8092
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
3432 | } else if (args->reqclass & AIM_CAPS_TALK) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3433 | } else if (args->reqclass & AIM_CAPS_BUDDYICON) { |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3434 | gaim_buddy_icons_set_for_user(account, userinfo->sn, |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3435 | args->info.icon.icon, |
|
6846
f814f02dca87
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
3436 | args->info.icon.length); |
|
6871
ff864e84ca84
[gaim-migrate @ 7417]
Mark Doliner <markdoliner@pidgin.im>
parents:
6857
diff
changeset
|
3437 | } else if (args->reqclass & AIM_CAPS_DIRECTIM) { |
| 8971 | 3438 | /* Consider moving all this into a helper func in the direct im block way up there */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3439 | struct ask_direct *d = g_new0(struct ask_direct, 1); |
| 8971 | 3440 | struct oscar_direct_im *dim = oscar_direct_im_find(od, userinfo->sn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3441 | char buf[256]; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3442 | |
| 4212 | 3443 | if (!args->verifiedip) { |
| 8983 | 3444 | /* TODO: do something about this, after figuring out what it means */ |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3445 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3446 | "directim kill blocked (%s)\n", userinfo->sn); |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3447 | g_free(message); |
|
4650
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4649
diff
changeset
|
3448 | return 1; |
| 4212 | 3449 | } |
| 3450 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3451 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3452 | "%s received direct im request from %s (%s)\n", |
| 8983 | 3453 | username, userinfo->sn, args->clientip); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3454 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3455 | d->gc = gc; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3456 | d->sn = g_strdup(userinfo->sn); |
| 8983 | 3457 | /* Let's use the clientip here, because I think that's what AIM does. |
| 3458 | * Besides, if the clientip is wrong, we'll probably timeout faster, | |
| 3459 | * and then ask them to connect to us. */ | |
| 3460 | snprintf(d->ip, sizeof(d->ip), "%s:%d", args->clientip, args->port?args->port:5190); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3461 | memcpy(d->cookie, args->cookie, 8); |
| 9070 | 3462 | if (dim && !dim->connected && aim_odc_getcookie(dim->conn) && args->cookie && |
| 3463 | (!memcmp(aim_odc_getcookie(dim->conn), args->cookie, 8))) { | |
| 3464 | ||
| 8971 | 3465 | oscar_direct_im_destroy(od, dim); |
| 8984 | 3466 | d->donttryagain = TRUE; |
| 8971 | 3467 | accept_direct_im_request(d); |
| 3468 | } else { | |
| 8983 | 3469 | if (dim && !dim->connected) |
| 8971 | 3470 | gaim_debug_warning("oscar", "DirectIM: received direct im request while " |
| 3471 | "already connected to that buddy!"); | |
| 5575 | 3472 | g_snprintf(buf, sizeof buf, _("%s has just asked to directly connect to %s"), userinfo->sn, username); |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3473 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3474 | gaim_request_action(gc, NULL, buf, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3475 | _("This requires a direct connection between " |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3476 | "the two computers and is necessary for IM " |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3477 | "Images. Because your IP address will be " |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3478 | "revealed, this may be considered a privacy " |
|
9972
f39adb92a177
[gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents:
9971
diff
changeset
|
3479 | "risk."), |
|
f39adb92a177
[gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents:
9971
diff
changeset
|
3480 | GAIM_DEFAULT_ACTION_NONE, d, 2, |
| 8971 | 3481 | _("Connect"), G_CALLBACK(accept_direct_im_request), |
| 3482 | _("Cancel"), G_CALLBACK(destroy_direct_im_request)); | |
| 3483 | /* FIXME: we should actually send a packet on cancel */ | |
| 3484 | } | |
|
8708
31a7bd5a32f4
[gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents:
8701
diff
changeset
|
3485 | } else if (args->reqclass & AIM_CAPS_ICQSERVERRELAY) { |
|
31a7bd5a32f4
[gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents:
8701
diff
changeset
|
3486 | gaim_debug_error("oscar", "Got an ICQ Server Relay message of type %d\n", args->info.rtfmsg.msgtype); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3487 | } else { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3488 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3489 | "Unknown reqclass %hu\n", args->reqclass); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3490 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3491 | |
|
9933
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3492 | g_free(message); |
|
61bd3fadbfe6
[gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents:
9927
diff
changeset
|
3493 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3494 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3495 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3496 | |
| 3453 | 3497 | /* |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3498 | * Authorization Functions |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3499 | * Most of these are callbacks from dialogs. They're used by both |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3500 | * methods of authorization (SSI and old-school channel 4 ICBM) |
| 3453 | 3501 | */ |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
3502 | /* When you ask other people for authorization */ |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3503 | static void gaim_auth_request(struct name_data *data, char *msg) { |
| 5575 | 3504 | GaimConnection *gc = data->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
3505 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
3506 | if (g_list_find(gaim_connections_get_all(), gc)) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3507 | OscarData *od = gc->proto_data; |
| 6695 | 3508 | GaimBuddy *buddy = gaim_find_buddy(gc->account, data->name); |
| 3509 | GaimGroup *group = gaim_find_buddys_group(buddy); | |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
3510 | if (buddy && group) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3511 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3512 | "ssi: adding buddy %s to group %s\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3513 | buddy->name, group->name); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
3514 | aim_ssi_sendauthrequest(od->sess, data->name, msg ? msg : _("Please authorize me so I can add you to my buddy list.")); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
3515 | if (!aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY)) |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
3516 | aim_ssi_addbuddy(od->sess, buddy->name, group->name, gaim_buddy_get_alias_only(buddy), NULL, NULL, 1); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
3517 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3518 | } |
|
4337
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
3519 | } |
|
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
3520 | |
|
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
3521 | static void gaim_auth_request_msgprompt(struct name_data *data) { |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
3522 | gaim_request_input(data->gc, NULL, _("Authorization Request Message:"), |
| 8697 | 3523 | NULL, _("Please authorize me!"), TRUE, FALSE, NULL, |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
3524 | _("OK"), G_CALLBACK(gaim_auth_request), |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
3525 | _("Cancel"), G_CALLBACK(oscar_free_name_data), |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
3526 | data); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3527 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3528 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3529 | static void gaim_auth_dontrequest(struct name_data *data) { |
| 5575 | 3530 | GaimConnection *gc = data->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
3531 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
3532 | if (g_list_find(gaim_connections_get_all(), gc)) { |
|
8151
195a587b6c32
[gaim-migrate @ 8863]
Mark Doliner <markdoliner@pidgin.im>
parents:
8150
diff
changeset
|
3533 | /* Remove from local list */ |
|
195a587b6c32
[gaim-migrate @ 8863]
Mark Doliner <markdoliner@pidgin.im>
parents:
8150
diff
changeset
|
3534 | GaimBuddy *b = gaim_find_buddy(gaim_connection_get_account(gc), data->name); |
|
195a587b6c32
[gaim-migrate @ 8863]
Mark Doliner <markdoliner@pidgin.im>
parents:
8150
diff
changeset
|
3535 | gaim_blist_remove_buddy(b); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
3536 | } |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
3537 | |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
3538 | oscar_free_name_data(data); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3539 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3540 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
3541 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
3542 | static void gaim_auth_sendrequest(GaimConnection *gc, char *name) { |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
3543 | struct name_data *data = g_new(struct name_data, 1); |
| 6695 | 3544 | GaimBuddy *buddy; |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
3545 | gchar *dialog_msg, *nombre; |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
3546 | |
| 4687 | 3547 | buddy = gaim_find_buddy(gc->account, name); |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
3548 | if (buddy && (gaim_buddy_get_alias_only(buddy))) |
|
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
3549 | nombre = g_strdup_printf("%s (%s)", name, gaim_buddy_get_alias_only(buddy)); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
3550 | else |
|
4830
d0f1945b27b7
[gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents:
4829
diff
changeset
|
3551 | nombre = NULL; |
|
d0f1945b27b7
[gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents:
4829
diff
changeset
|
3552 | |
|
d0f1945b27b7
[gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents:
4829
diff
changeset
|
3553 | dialog_msg = g_strdup_printf(_("The user %s requires authorization before being added to a buddy list. Do you want to send an authorization request?"), (nombre ? nombre : name)); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
3554 | data->gc = gc; |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
3555 | data->name = g_strdup(name); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
3556 | data->nick = NULL; |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3557 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3558 | gaim_request_action(gc, NULL, _("Request Authorization"), dialog_msg, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3559 | 0, data, 2, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3560 | _("Request Authorization"), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3561 | G_CALLBACK(gaim_auth_request_msgprompt), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3562 | _("Cancel"), G_CALLBACK(gaim_auth_dontrequest)); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
3563 | |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
3564 | g_free(dialog_msg); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
3565 | g_free(nombre); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
3566 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
3567 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
3568 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
3569 | static void gaim_auth_sendrequest_menu(GaimBlistNode *node, gpointer ignored) { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
3570 | GaimBuddy *buddy; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
3571 | GaimConnection *gc; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
3572 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
3573 | g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node)); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
3574 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
3575 | buddy = (GaimBuddy *) node; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
3576 | gc = gaim_account_get_connection(buddy->account); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
3577 | gaim_auth_sendrequest(gc, buddy->name); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
3578 | } |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
3579 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3580 | /* When other people ask you for authorization */ |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3581 | static void gaim_auth_grant(struct name_data *data) { |
| 5575 | 3582 | GaimConnection *gc = data->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
3583 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
3584 | if (g_list_find(gaim_connections_get_all(), gc)) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3585 | OscarData *od = gc->proto_data; |
| 4236 | 3586 | #ifdef NOSSI |
| 6695 | 3587 | GaimBuddy *buddy; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
3588 | gchar message; |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
3589 | message = 0; |
| 4687 | 3590 | buddy = gaim_find_buddy(gc->account, data->name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3591 | aim_im_sendch4(od->sess, data->name, AIM_ICQMSG_AUTHGRANTED, &message); |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
3592 | gaim_account_notify_added(gc->account, NULL, data->name, (buddy ? gaim_buddy_get_alias_only(buddy) : NULL), NULL); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3593 | #else |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
3594 | aim_ssi_sendauthreply(od->sess, data->name, 0x01, NULL); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3595 | #endif |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
3596 | } |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
3597 | |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
3598 | oscar_free_name_data(data); |
| 3141 | 3599 | } |
| 3600 | ||
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3601 | /* When other people ask you for authorization */ |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3602 | static void gaim_auth_dontgrant(struct name_data *data, char *msg) { |
| 5575 | 3603 | GaimConnection *gc = data->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
3604 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
3605 | if (g_list_find(gaim_connections_get_all(), gc)) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3606 | OscarData *od = gc->proto_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3607 | #ifdef NOSSI |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3608 | aim_im_sendch4(od->sess, data->name, AIM_ICQMSG_AUTHDENIED, msg ? msg : _("No reason given.")); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3609 | #else |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
3610 | aim_ssi_sendauthreply(od->sess, data->name, 0x00, msg ? msg : _("No reason given.")); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3611 | #endif |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
3612 | } |
|
4337
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
3613 | } |
|
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
3614 | |
|
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
3615 | static void gaim_auth_dontgrant_msgprompt(struct name_data *data) { |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
3616 | gaim_request_input(data->gc, NULL, _("Authorization Denied Message:"), |
| 8697 | 3617 | NULL, _("No reason given."), TRUE, FALSE, NULL, |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
3618 | _("OK"), G_CALLBACK(gaim_auth_dontgrant), |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
3619 | _("Cancel"), G_CALLBACK(oscar_free_name_data), |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
3620 | data); |
| 3141 | 3621 | } |
| 3622 | ||
| 7023 | 3623 | /* When someone sends you buddies */ |
| 3624 | static void gaim_icq_buddyadd(struct name_data *data) { | |
| 5575 | 3625 | GaimConnection *gc = data->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
3626 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
3627 | if (g_list_find(gaim_connections_get_all(), gc)) { |
|
7060
717cbeb22b6d
[gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents:
7054
diff
changeset
|
3628 | gaim_blist_request_add_buddy(gaim_connection_get_account(gc), data->name, NULL, data->nick); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
3629 | } |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
3630 | |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
3631 | oscar_free_name_data(data); |
| 3453 | 3632 | } |
| 3633 | ||
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3634 | static int incomingim_chan4(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch4_args *args, time_t t) { |
| 5575 | 3635 | GaimConnection *gc = sess->aux_data; |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
3636 | GaimAccount *account = gaim_connection_get_account(gc); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3637 | gchar **msg1, **msg2; |
|
6051
6d481c30603c
[gaim-migrate @ 6501]
Mark Doliner <markdoliner@pidgin.im>
parents:
6040
diff
changeset
|
3638 | int i, numtoks; |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3639 | |
| 4121 | 3640 | if (!args->type || !args->msg || !args->uin) |
| 3641 | return 1; | |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3642 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3643 | gaim_debug_info("oscar", |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
3644 | "Received a channel 4 message of type 0x%02hhx.\n", |
|
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
3645 | args->type); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3646 | |
|
9919
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
3647 | /* |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
3648 | * Split up the message at the delimeter character, then convert each |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
3649 | * 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
|
3650 | * 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
|
3651 | * character in whatever encoding the message was sent in. Type 1 |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
3652 | * 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
|
3653 | * 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
|
3654 | * most 1 baby string. |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
3655 | */ |
|
938f9e7a4db9
[gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents:
9917
diff
changeset
|
3656 | 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
|
3657 | for (numtoks=0; msg1[numtoks]; numtoks++); |
|
6d481c30603c
[gaim-migrate @ 6501]
Mark Doliner <markdoliner@pidgin.im>
parents:
6040
diff
changeset
|
3658 | msg2 = (gchar **)g_malloc((numtoks+1)*sizeof(gchar *)); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3659 | for (i=0; msg1[i]; i++) { |
|
7478
a7df4df98778
[gaim-migrate @ 8091]
Herman Bloggs <herman@bluedigits.com>
parents:
7475
diff
changeset
|
3660 | gaim_str_strip_cr(msg1[i]); |
|
9908
e9b6e5a8bf00
[gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents:
9879
diff
changeset
|
3661 | msg2[i] = gaim_plugin_oscar_decode_im_part(account, "1", AIM_CHARSET_ASCII, 0x0000, msg1[i], strlen(msg1[i])); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3662 | } |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3663 | msg2[i] = NULL; |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3664 | |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
3665 | switch (args->type) { |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
3666 | case 0x01: { /* MacICQ message or basic offline message */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3667 | if (i >= 1) { |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
3668 | gchar *uin = g_strdup_printf("%u", args->uin); |
|
8493
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
3669 | gchar *tmp; |
|
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
3670 | |
|
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
3671 | /* If the message came from an ICQ user then escape any HTML */ |
|
8501
e23ebaeeb113
[gaim-migrate @ 9237]
Mark Doliner <markdoliner@pidgin.im>
parents:
8493
diff
changeset
|
3672 | tmp = gaim_escape_html(msg2[0]); |
|
8493
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
3673 | |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3674 | if (t) { /* This is an offline message */ |
|
9680
170d9c1ab218
[gaim-migrate @ 10532]
Dave West <kat@users.sourceforge.net>
parents:
9661
diff
changeset
|
3675 | /* 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
|
3676 | #ifdef HAVE_TM_GMTOFF |
|
9724
7e977ad7ccef
[gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents:
9713
diff
changeset
|
3677 | time_t now; |
|
7e977ad7ccef
[gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents:
9713
diff
changeset
|
3678 | struct tm *tm; |
|
7e977ad7ccef
[gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents:
9713
diff
changeset
|
3679 | now = time(NULL); |
|
7e977ad7ccef
[gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents:
9713
diff
changeset
|
3680 | tm = localtime(&now); |
|
7e977ad7ccef
[gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents:
9713
diff
changeset
|
3681 | t += tm->tm_gmtoff; |
|
9698
d83c7c4b0ccc
[gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents:
9680
diff
changeset
|
3682 | #else |
|
d83c7c4b0ccc
[gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents:
9680
diff
changeset
|
3683 | # ifdef HAVE_TIMEZONE |
|
9680
170d9c1ab218
[gaim-migrate @ 10532]
Dave West <kat@users.sourceforge.net>
parents:
9661
diff
changeset
|
3684 | tzset(); |
|
170d9c1ab218
[gaim-migrate @ 10532]
Dave West <kat@users.sourceforge.net>
parents:
9661
diff
changeset
|
3685 | t -= timezone; |
|
9698
d83c7c4b0ccc
[gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents:
9680
diff
changeset
|
3686 | # endif |
|
d83c7c4b0ccc
[gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents:
9680
diff
changeset
|
3687 | #endif |
| 8514 | 3688 | serv_got_im(gc, uin, tmp, 0, t); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3689 | } else { /* This is a message from MacICQ/Miranda */ |
| 8514 | 3690 | serv_got_im(gc, uin, tmp, 0, time(NULL)); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3691 | } |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3692 | g_free(uin); |
|
8493
9a0f65deacb2
[gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents:
8476
diff
changeset
|
3693 | g_free(tmp); |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3694 | } |
|
3316
43bb95f6167a
[gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents:
3279
diff
changeset
|
3695 | } break; |
|
43bb95f6167a
[gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents:
3279
diff
changeset
|
3696 | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
3697 | case 0x04: { /* Someone sent you a URL */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3698 | if (i >= 2) { |
|
7385
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
3699 | if (msg2[1] != NULL) { |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
3700 | gchar *uin = g_strdup_printf("%u", args->uin); |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
3701 | gchar *message = g_strdup_printf("<A HREF=\"%s\">%s</A>", |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
3702 | msg2[1], |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
3703 | (msg2[0] && msg2[0][0]) ? msg2[0] : msg2[1]); |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
3704 | serv_got_im(gc, uin, message, 0, time(NULL)); |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
3705 | g_free(uin); |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
3706 | g_free(message); |
|
000d887035a2
[gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents:
7376
diff
changeset
|
3707 | } |
| 3453 | 3708 | } |
| 3709 | } break; | |
| 3710 | ||
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
3711 | case 0x06: { /* Someone requested authorization */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3712 | if (i >= 6) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3713 | struct name_data *data = g_new(struct name_data, 1); |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
3714 | gchar *dialog_msg = g_strdup_printf(_("The user %u wants to add you to their buddy list for the following reason:\n%s"), args->uin, msg2[5] ? msg2[5] : _("No reason given.")); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3715 | gaim_debug_info("oscar", |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
3716 | "Received an authorization request from UIN %u\n", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3717 | args->uin); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3718 | data->gc = gc; |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
3719 | data->name = g_strdup_printf("%u", args->uin); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3720 | data->nick = NULL; |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3721 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3722 | gaim_request_action(gc, NULL, _("Authorization Request"), |
|
9948
2642975ffb85
[gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents:
9944
diff
changeset
|
3723 | dialog_msg, GAIM_DEFAULT_ACTION_NONE, data, |
|
2642975ffb85
[gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents:
9944
diff
changeset
|
3724 | 2, _("Authorize"), |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3725 | G_CALLBACK(gaim_auth_grant), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3726 | _("Deny"), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3727 | G_CALLBACK(gaim_auth_dontgrant_msgprompt)); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3728 | g_free(dialog_msg); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3729 | } |
| 3141 | 3730 | } break; |
| 3731 | ||
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
3732 | case 0x07: { /* Someone has denied you authorization */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3733 | if (i >= 1) { |
| 7023 | 3734 | gchar *dialog_msg = g_strdup_printf(_("The user %u has denied your request to add them to your buddy list for the following reason:\n%s"), args->uin, msg2[0] ? msg2[0] : _("No reason given.")); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3735 | gaim_notify_info(gc, NULL, _("ICQ authorization denied."), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3736 | dialog_msg); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3737 | g_free(dialog_msg); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3738 | } |
| 3141 | 3739 | } break; |
| 3740 | ||
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
3741 | case 0x08: { /* Someone has granted you authorization */ |
| 7023 | 3742 | gchar *dialog_msg = g_strdup_printf(_("The user %u has granted your request to add them to your buddy list."), args->uin); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3743 | gaim_notify_info(gc, NULL, "ICQ authorization accepted.", |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3744 | dialog_msg); |
| 3141 | 3745 | g_free(dialog_msg); |
| 3746 | } break; | |
| 3747 | ||
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
3748 | case 0x09: { /* Message from the Godly ICQ server itself, I think */ |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
3749 | if (i >= 5) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
3750 | gchar *dialog_msg = g_strdup_printf(_("You have received a special message\n\nFrom: %s [%s]\n%s"), msg2[0], msg2[3], msg2[5]); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3751 | gaim_notify_info(gc, NULL, "ICQ Server Message", dialog_msg); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
3752 | g_free(dialog_msg); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
3753 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
3754 | } break; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
3755 | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
3756 | 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
|
3757 | if (i >= 6) { |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3758 | gchar *dialog_msg = g_strdup_printf(_("You have received an ICQ page\n\nFrom: %s [%s]\n%s"), msg2[0], msg2[3], msg2[5]); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3759 | gaim_notify_info(gc, NULL, "ICQ Page", dialog_msg); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3760 | g_free(dialog_msg); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3761 | } |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3762 | } break; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3763 | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
3764 | 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
|
3765 | if (i >= 6) { |
|
4308
8eefe9f67895
[gaim-migrate @ 4562]
Mark Doliner <markdoliner@pidgin.im>
parents:
4303
diff
changeset
|
3766 | gchar *dialog_msg = g_strdup_printf(_("You have received an ICQ email from %s [%s]\n\nMessage is:\n%s"), msg2[0], msg2[3], msg2[5]); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3767 | gaim_notify_info(gc, NULL, "ICQ Email", dialog_msg); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3768 | g_free(dialog_msg); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3769 | } |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3770 | } break; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3771 | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
3772 | case 0x12: { |
| 3141 | 3773 | /* Ack for authorizing/denying someone. Or possibly an ack for sending any system notice */ |
| 7023 | 3774 | /* Someone added you to their buddy list? */ |
| 3141 | 3775 | } break; |
| 3776 | ||
| 7023 | 3777 | case 0x13: { /* Someone has sent you some ICQ buddies */ |
| 7631 | 3778 | guint i, num; |
| 3453 | 3779 | gchar **text; |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
3780 | text = g_strsplit(args->msg, "\376", 0); |
| 3453 | 3781 | if (text) { |
| 3782 | num = 0; | |
| 3783 | for (i=0; i<strlen(text[0]); i++) | |
| 3784 | num = num*10 + text[0][i]-48; | |
| 3785 | for (i=0; i<num; i++) { | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3786 | struct name_data *data = g_new(struct name_data, 1); |
| 7023 | 3787 | 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 | 3788 | data->gc = gc; |
|
4790
765a98790ede
[gaim-migrate @ 5110]
Mark Doliner <markdoliner@pidgin.im>
parents:
4785
diff
changeset
|
3789 | data->name = g_strdup(text[i*2+1]); |
|
765a98790ede
[gaim-migrate @ 5110]
Mark Doliner <markdoliner@pidgin.im>
parents:
4785
diff
changeset
|
3790 | data->nick = g_strdup(text[i*2+2]); |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3791 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
3792 | gaim_request_action(gc, NULL, message, |
| 7023 | 3793 | _("Do you want to add this buddy " |
| 3794 | "to your buddy list?"), | |
|
9972
f39adb92a177
[gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents:
9971
diff
changeset
|
3795 | GAIM_DEFAULT_ACTION_NONE, data, 2, |
| 7023 | 3796 | _("Add"), G_CALLBACK(gaim_icq_buddyadd), |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
3797 | _("Decline"), G_CALLBACK(oscar_free_name_data)); |
| 3453 | 3798 | g_free(message); |
| 3799 | } | |
| 3800 | g_strfreev(text); | |
| 3801 | } | |
| 3802 | } break; | |
| 3803 | ||
| 7023 | 3804 | case 0x1a: { /* Someone has sent you a greeting card or requested buddies? */ |
| 3453 | 3805 | /* This is boring and silly. */ |
| 3806 | } break; | |
| 3807 | ||
| 3141 | 3808 | default: { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3809 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3810 | "Received a channel 4 message of unknown type " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3811 | "(type 0x%02hhx).\n", args->type); |
| 3141 | 3812 | } break; |
| 3813 | } | |
| 3814 | ||
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3815 | g_strfreev(msg1); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3816 | g_strfreev(msg2); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3817 | |
| 3141 | 3818 | return 1; |
| 3819 | } | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3820 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3821 | static int gaim_parse_incoming_im(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3822 | fu16_t channel; |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3823 | int ret = 0; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3824 | aim_userinfo_t *userinfo; |
| 2086 | 3825 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3826 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3827 | va_start(ap, fr); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3828 | channel = (fu16_t)va_arg(ap, unsigned int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3829 | userinfo = va_arg(ap, aim_userinfo_t *); |
| 2086 | 3830 | |
| 3141 | 3831 | switch (channel) { |
| 3832 | case 1: { /* standard message */ | |
| 3833 | struct aim_incomingim_ch1_args *args; | |
| 3834 | args = va_arg(ap, struct aim_incomingim_ch1_args *); | |
| 3835 | ret = incomingim_chan1(sess, fr->conn, userinfo, args); | |
| 3836 | } break; | |
| 3837 | ||
|
8735
01248ea222d3
[gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents:
8733
diff
changeset
|
3838 | case 2: { /* rendezvous */ |
| 3141 | 3839 | struct aim_incomingim_ch2_args *args; |
| 3840 | args = va_arg(ap, struct aim_incomingim_ch2_args *); | |
| 3841 | ret = incomingim_chan2(sess, fr->conn, userinfo, args); | |
| 3842 | } break; | |
| 3843 | ||
| 3844 | case 4: { /* ICQ */ | |
| 3845 | struct aim_incomingim_ch4_args *args; | |
| 3846 | args = va_arg(ap, struct aim_incomingim_ch4_args *); | |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3847 | ret = incomingim_chan4(sess, fr->conn, userinfo, args, 0); |
| 3141 | 3848 | } break; |
| 3849 | ||
| 3850 | default: { | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3851 | gaim_debug_warning("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3852 | "ICBM received on unsupported channel (channel " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3853 | "0x%04hx).", channel); |
| 3141 | 3854 | } break; |
| 2086 | 3855 | } |
| 3856 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3857 | va_end(ap); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3858 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3859 | return ret; |
| 2086 | 3860 | } |
| 3861 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3862 | static int gaim_parse_misses(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
3863 | GaimConnection *gc = sess->aux_data; |
|
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
3864 | GaimAccount *account = gaim_connection_get_account(gc); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3865 | char *buf; |
| 2086 | 3866 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3867 | fu16_t chan, nummissed, reason; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3868 | aim_userinfo_t *userinfo; |
| 2086 | 3869 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3870 | va_start(ap, fr); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3871 | chan = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3872 | userinfo = va_arg(ap, aim_userinfo_t *); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3873 | nummissed = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3874 | reason = (fu16_t)va_arg(ap, unsigned int); |
| 2086 | 3875 | va_end(ap); |
| 3876 | ||
| 3877 | switch(reason) { | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3878 | case 0: /* Invalid (0) */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3879 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3880 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
3881 | "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
|
3882 | "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
|
3883 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
3884 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
3885 | userinfo->sn); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3886 | break; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3887 | case 1: /* Message too large */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3888 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3889 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
3890 | "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
|
3891 | "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
|
3892 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
3893 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
3894 | userinfo->sn); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3895 | break; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3896 | case 2: /* Rate exceeded */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3897 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3898 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
3899 | "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
|
3900 | "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
|
3901 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
3902 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
3903 | userinfo->sn); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3904 | break; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3905 | case 3: /* Evil Sender */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3906 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3907 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
3908 | "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
|
3909 | "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
|
3910 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
3911 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
3912 | userinfo->sn); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3913 | break; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3914 | case 4: /* Evil Receiver */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3915 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3916 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
3917 | "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
|
3918 | "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
|
3919 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
3920 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
3921 | userinfo->sn); |
| 2086 | 3922 | break; |
| 3923 | default: | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3924 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3925 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
3926 | "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
|
3927 | "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
|
3928 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
3929 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
3930 | userinfo->sn); |
| 2086 | 3931 | break; |
| 3932 | } | |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
3933 | |
| 9627 | 3934 | if (!gaim_conv_present_error(userinfo->sn, account, buf)) |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
3935 | gaim_notify_error(sess->aux_data, NULL, buf, NULL); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3936 | g_free(buf); |
| 2086 | 3937 | |
| 3938 | return 1; | |
| 3939 | } | |
| 3940 | ||
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3941 | static int gaim_parse_clientauto_ch2(aim_session_t *sess, const char *who, fu16_t reason, const char *cookie) { |
| 5575 | 3942 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
3943 | OscarData *od = gc->proto_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3944 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3945 | /* BBB */ |
| 3630 | 3946 | switch (reason) { |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3947 | case 3: { /* Decline sendfile. */ |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
3948 | GaimXfer *xfer; |
| 8971 | 3949 | struct oscar_direct_im *dim; |
| 3950 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3951 | gaim_debug_info("oscar", |
| 9070 | 3952 | "AAA - Other user declined some sort of direct " |
| 8971 | 3953 | "connect attempt (automaticly?)\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3954 | if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, cookie))) |
|
4675
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
3955 | gaim_xfer_cancel_remote(xfer); |
| 8971 | 3956 | else if ((dim = oscar_direct_im_find(od, who))) { |
| 3957 | /* AAA should use find by cookie or something here */ | |
| 3958 | oscar_direct_im_disconnect(od, dim); | |
| 3959 | } | |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3960 | } break; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3961 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3962 | default: { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3963 | gaim_debug_warning("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3964 | "Received an unknown rendezvous client auto-response " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3965 | "from %s. Type 0x%04hx\n", who, reason); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3966 | } |
| 3630 | 3967 | |
| 3968 | } | |
| 3969 | ||
| 3970 | return 0; | |
| 3971 | } | |
| 3972 | ||
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3973 | static int gaim_parse_clientauto_ch4(aim_session_t *sess, char *who, fu16_t reason, fu32_t state, char *msg) { |
| 5575 | 3974 | GaimConnection *gc = sess->aux_data; |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3975 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3976 | switch(reason) { |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3977 | case 0x0003: { /* Reply from an ICQ status message request */ |
| 9244 | 3978 | char *title, *statusmsg, **splitmsg, *dialogmsg; |
| 3979 | ||
| 3980 | title = g_strdup_printf(_("Info for %s"), who); | |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3981 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3982 | /* Split at (carriage return/newline)'s, then rejoin later with BRs between. */ |
| 9244 | 3983 | statusmsg = oscar_icqstatus(state); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3984 | splitmsg = g_strsplit(msg, "\r\n", 0); |
| 9244 | 3985 | dialogmsg = g_strdup_printf(_("<B>UIN:</B> %s<BR><B>Status:</B> %s<HR>%s"), who, statusmsg, g_strjoinv("<BR>", splitmsg)); |
| 3986 | g_free(statusmsg); | |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3987 | g_strfreev(splitmsg); |
| 9244 | 3988 | |
| 9797 | 3989 | gaim_notify_userinfo(gc, who, title, _("Buddy Information"), NULL, dialogmsg, NULL, NULL); |
| 9244 | 3990 | |
| 3991 | g_free(title); | |
| 3992 | g_free(dialogmsg); | |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3993 | } break; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3994 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3995 | default: { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
3996 | gaim_debug_warning("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3997 | "Received an unknown client auto-response from %s. " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3998 | "Type 0x%04hx\n", who, reason); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3999 | } break; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4000 | } /* end of switch */ |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4001 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4002 | return 0; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4003 | } |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4004 | |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4005 | static int gaim_parse_clientauto(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4006 | va_list ap; |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4007 | fu16_t chan, reason; |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4008 | char *who; |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4009 | |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4010 | va_start(ap, fr); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4011 | chan = (fu16_t)va_arg(ap, unsigned int); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4012 | who = va_arg(ap, char *); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4013 | reason = (fu16_t)va_arg(ap, unsigned int); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4014 | |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
4015 | if (chan == 0x0002) { /* File transfer declined */ |
| 3630 | 4016 | char *cookie = va_arg(ap, char *); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4017 | return gaim_parse_clientauto_ch2(sess, who, reason, cookie); |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
4018 | } else if (chan == 0x0004) { /* ICQ message */ |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4019 | fu32_t state = 0; |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4020 | char *msg = NULL; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4021 | if (reason == 0x0003) { |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4022 | state = va_arg(ap, fu32_t); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4023 | msg = va_arg(ap, char *); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4024 | } |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4025 | return gaim_parse_clientauto_ch4(sess, who, reason, state, msg); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4026 | } |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
4027 | |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4028 | va_end(ap); |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4029 | |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4030 | return 1; |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4031 | } |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4032 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4033 | static int gaim_parse_genericerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 4034 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4035 | fu16_t reason; |
|
2865
fbc616afa491
[gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2864
diff
changeset
|
4036 | char *m; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4037 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4038 | va_start(ap, fr); |
| 4199 | 4039 | reason = (fu16_t) va_arg(ap, unsigned int); |
| 2086 | 4040 | va_end(ap); |
| 4041 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4042 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4043 | "snac threw error (reason 0x%04hx: %s)\n", reason, |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4044 | (reason < msgerrreasonlen) ? msgerrreason[reason] : "unknown"); |
| 2086 | 4045 | |
|
2865
fbc616afa491
[gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2864
diff
changeset
|
4046 | m = g_strdup_printf(_("SNAC threw error: %s\n"), |
|
5411
b3683d2acbb4
[gaim-migrate @ 5787]
Mark Doliner <markdoliner@pidgin.im>
parents:
5402
diff
changeset
|
4047 | reason < msgerrreasonlen ? _(msgerrreason[reason]) : _("Unknown error")); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4048 | gaim_notify_error(sess->aux_data, NULL, m, NULL); |
|
2865
fbc616afa491
[gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2864
diff
changeset
|
4049 | g_free(m); |
|
fbc616afa491
[gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2864
diff
changeset
|
4050 | |
| 2086 | 4051 | return 1; |
| 4052 | } | |
| 4053 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4054 | static int gaim_parse_msgerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 9627 | 4055 | GaimConnection *gc = sess->aux_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4056 | #if 0 |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4057 | OscarData *od = gc->proto_data; |
|
6240
0390b27fe09d
[gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents:
6173
diff
changeset
|
4058 | GaimXfer *xfer; |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
4059 | #endif |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4060 | va_list ap; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4061 | fu16_t reason; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4062 | char *data, *buf; |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
4063 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4064 | va_start(ap, fr); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4065 | reason = (fu16_t)va_arg(ap, unsigned int); |
| 3752 | 4066 | data = va_arg(ap, char *); |
| 2086 | 4067 | va_end(ap); |
| 4068 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4069 | gaim_debug_error("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4070 | "Message error with data %s and reason %hu\n", data, reason); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4071 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4072 | /* BBB */ |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
4073 | #if 0 |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4074 | /* If this was a file transfer request, data is a cookie */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4075 | if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, data))) { |
|
4675
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
4076 | gaim_xfer_cancel_remote(xfer); |
| 3630 | 4077 | return 1; |
| 4078 | } | |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
4079 | #endif |
| 3630 | 4080 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4081 | /* Data is assumed to be the destination sn */ |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4082 | buf = g_strdup_printf(_("Unable to send message: %s"), (reason < msgerrreasonlen) ? msgerrreason[reason] : _("Unknown reason.")); |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4083 | if (!gaim_conv_present_error(data, gaim_connection_get_account(gc), buf)) { |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4084 | g_free(buf); |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4085 | buf = g_strdup_printf(_("Unable to send message to %s:"), data ? data : "(unknown)"); |
| 9627 | 4086 | gaim_notify_error(sess->aux_data, NULL, buf, |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4087 | (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason.")); |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4088 | } |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4089 | g_free(buf); |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4090 | |
| 2086 | 4091 | return 1; |
| 4092 | } | |
| 4093 | ||
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4094 | static int gaim_parse_mtn(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 4095 | GaimConnection *gc = sess->aux_data; |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4096 | va_list ap; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4097 | fu16_t type1, type2; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4098 | char *sn; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4099 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4100 | va_start(ap, fr); |
| 4199 | 4101 | type1 = (fu16_t) va_arg(ap, unsigned int); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4102 | sn = va_arg(ap, char *); |
| 4199 | 4103 | type2 = (fu16_t) va_arg(ap, unsigned int); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4104 | va_end(ap); |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4105 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4106 | switch (type2) { |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4107 | case 0x0000: { /* Text has been cleared */ |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4108 | serv_got_typing_stopped(gc, sn); |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4109 | } break; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4110 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4111 | case 0x0001: { /* Paused typing */ |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
4112 | serv_got_typing(gc, sn, 0, GAIM_TYPED); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4113 | } break; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4114 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4115 | case 0x0002: { /* Typing */ |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
4116 | serv_got_typing(gc, sn, 0, GAIM_TYPING); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4117 | } break; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4118 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4119 | default: { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4120 | gaim_debug_error("oscar", "Received unknown typing notification message from %s. Type1 is 0x%04x and type2 is 0x%04hx.\n", sn, type1, type2); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4121 | } break; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4122 | } |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4123 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4124 | return 1; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4125 | } |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4126 | |
|
7141
431a007467e8
[gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents:
7129
diff
changeset
|
4127 | /* |
|
431a007467e8
[gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents:
7129
diff
changeset
|
4128 | * 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
|
4129 | * happens when you request info of someone who is offline. |
|
7141
431a007467e8
[gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents:
7129
diff
changeset
|
4130 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4131 | static int gaim_parse_locerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4132 | gchar *buf; |
| 2086 | 4133 | va_list ap; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4134 | fu16_t reason; |
| 2086 | 4135 | char *destn; |
| 4136 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4137 | va_start(ap, fr); |
| 4199 | 4138 | reason = (fu16_t) va_arg(ap, unsigned int); |
| 2086 | 4139 | destn = va_arg(ap, char *); |
| 4140 | va_end(ap); | |
| 4141 | ||
|
7781
db624418e528
[gaim-migrate @ 8426]
Mark Doliner <markdoliner@pidgin.im>
parents:
7693
diff
changeset
|
4142 | if (destn == NULL) |
|
7793
9d6043375b81
[gaim-migrate @ 8439]
Mark Doliner <markdoliner@pidgin.im>
parents:
7781
diff
changeset
|
4143 | return 1; |
| 9627 | 4144 | |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4145 | buf = g_strdup_printf(_("User information not available: %s"), (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason.")); |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4146 | if (!gaim_conv_present_error(destn, gaim_connection_get_account((GaimConnection*)sess->aux_data), buf)) { |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4147 | g_free(buf); |
| 9627 | 4148 | buf = g_strdup_printf(_("User information for %s unavailable:"), destn); |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4149 | gaim_notify_error(sess->aux_data, NULL, buf, (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason.")); |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4150 | } |
|
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
4151 | g_free(buf); |
| 2086 | 4152 | |
| 4153 | return 1; | |
| 4154 | } | |
| 4155 | ||
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4156 | static int gaim_parse_userinfo(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 4157 | GaimConnection *gc = sess->aux_data; |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4158 | GaimAccount *account = gaim_connection_get_account(gc); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4159 | GString *str; |
| 9244 | 4160 | gchar *tmp = NULL, *info_utf8 = NULL, *away_utf8 = NULL, *title = NULL; |
|
4791
b35003e42654
[gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents:
4790
diff
changeset
|
4161 | va_list ap; |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4162 | aim_userinfo_t *userinfo; |
| 2086 | 4163 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4164 | va_start(ap, fr); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4165 | userinfo = va_arg(ap, aim_userinfo_t *); |
| 2086 | 4166 | va_end(ap); |
| 4167 | ||
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4168 | str = g_string_new(""); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4169 | g_string_append_printf(str, "<b>%s:</b> %s", _("Screen Name"), userinfo->sn); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4170 | g_string_append_printf(str, "\n<br><b>%s</b>: %d%%", _("Warning Level"), (int)((userinfo->warnlevel/10.0) + 0.5)); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4171 | |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4172 | if (userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
4173 | oscar_string_append(str, "\n<br>", _("Online Since"), |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4174 | asctime(localtime((time_t *)&userinfo->onlinesince))); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4175 | |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4176 | if (userinfo->present & AIM_USERINFO_PRESENT_MEMBERSINCE) |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
4177 | oscar_string_append(str, "\n<br>", _("Member Since"), |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4178 | asctime(localtime((time_t *)&userinfo->membersince))); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4179 | |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4180 | if (userinfo->present & AIM_USERINFO_PRESENT_IDLE) { |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4181 | tmp = gaim_str_seconds_to_string(userinfo->idletime*60); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
4182 | oscar_string_append(str, "\n<br>", _("Idle"), tmp); |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4183 | g_free(tmp); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4184 | } |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4185 | |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
4186 | oscar_string_append_info(gc, str, "\n<br>", NULL, userinfo); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4187 | |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4188 | 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
|
4189 | tmp = oscar_encoding_extract(userinfo->away_encoding); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4190 | away_utf8 = oscar_encoding_to_utf8(tmp, userinfo->away, userinfo->away_len); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4191 | g_free(tmp); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4192 | if (away_utf8 != NULL) { |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4193 | g_string_append_printf(str, "\n<hr>%s", away_utf8); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4194 | g_free(away_utf8); |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
4195 | } |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4196 | } |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4197 | |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4198 | 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
|
4199 | tmp = oscar_encoding_extract(userinfo->info_encoding); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4200 | info_utf8 = oscar_encoding_to_utf8(tmp, userinfo->info, userinfo->info_len); |
|
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4201 | g_free(tmp); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4202 | if (info_utf8 != NULL) { |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4203 | g_string_append_printf(str, "\n<hr>%s", info_utf8); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4204 | g_free(info_utf8); |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
4205 | } |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4206 | } |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4207 | |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
4208 | tmp = gaim_str_sub_away_formatters(str->str, gaim_account_get_username(account)); |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4209 | g_string_free(str, TRUE); |
| 9244 | 4210 | title = g_strdup_printf(_("Info for %s"), userinfo->sn); |
| 9797 | 4211 | gaim_notify_userinfo(gc, userinfo->sn, title, _("Buddy Information"), NULL, tmp, NULL, NULL); |
| 9244 | 4212 | g_free(title); |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
4213 | g_free(tmp); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4214 | |
| 2086 | 4215 | return 1; |
| 4216 | } | |
| 4217 | ||
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4218 | static gboolean gaim_reqinfo_timeout_cb(void *data) |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4219 | { |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4220 | aim_session_t *sess = data; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4221 | GaimConnection *gc = sess->aux_data; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4222 | OscarData *od = (OscarData *)gc->proto_data; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4223 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4224 | aim_locate_dorequest(data); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4225 | od->getinfotimer = 0; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4226 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4227 | return FALSE; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4228 | } |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4229 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4230 | static int gaim_reqinfo_timeout(aim_session_t *sess, aim_frame_t *fr, ...) |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4231 | { |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4232 | GaimConnection *gc = sess->aux_data; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4233 | OscarData *od = (OscarData *)gc->proto_data; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4234 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4235 | /* |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4236 | * Wait a little while then call aim_locate_dorequest(sess). This keeps |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4237 | * us from hitting the rate limit due to request away messages and info |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4238 | * too quickly. |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4239 | */ |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4240 | if (od->getinfotimer == 0) |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4241 | od->getinfotimer = gaim_timeout_add(1200, gaim_reqinfo_timeout_cb, sess); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4242 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4243 | return 1; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4244 | } |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4245 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4246 | static int gaim_parse_motd(aim_session_t *sess, aim_frame_t *fr, ...) |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
4247 | { |
| 2086 | 4248 | char *msg; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4249 | fu16_t id; |
| 2086 | 4250 | va_list ap; |
| 4251 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4252 | va_start(ap, fr); |
| 4199 | 4253 | id = (fu16_t) va_arg(ap, unsigned int); |
| 2086 | 4254 | msg = va_arg(ap, char *); |
| 4255 | va_end(ap); | |
| 4256 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4257 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4258 | "MOTD: %s (%hu)\n", msg ? msg : "Unknown", id); |
|
2092
f56061012e3c
[gaim-migrate @ 2102]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2090
diff
changeset
|
4259 | if (id < 4) |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4260 | gaim_notify_warning(sess->aux_data, NULL, |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4261 | _("Your AIM connection may be lost."), NULL); |
| 2086 | 4262 | |
| 4263 | return 1; | |
| 4264 | } | |
| 4265 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4266 | static int gaim_chatnav_info(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 4267 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4268 | fu16_t type; |
| 5575 | 4269 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4270 | OscarData *od = (OscarData *)gc->proto_data; |
| 2086 | 4271 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4272 | va_start(ap, fr); |
| 4199 | 4273 | type = (fu16_t) va_arg(ap, unsigned int); |
| 2086 | 4274 | |
| 4275 | switch(type) { | |
| 4276 | case 0x0002: { | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4277 | fu8_t maxrooms; |
| 2086 | 4278 | struct aim_chat_exchangeinfo *exchanges; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4279 | int exchangecount, i; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4280 | |
| 4199 | 4281 | maxrooms = (fu8_t) va_arg(ap, unsigned int); |
| 2086 | 4282 | exchangecount = va_arg(ap, int); |
| 4283 | exchanges = va_arg(ap, struct aim_chat_exchangeinfo *); | |
| 4284 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4285 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4286 | "chat info: Chat Rights:\n"); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4287 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4288 | "chat info: \tMax Concurrent Rooms: %hhd\n", maxrooms); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4289 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4290 | "chat info: \tExchange List: (%d total)\n", exchangecount); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4291 | for (i = 0; i < exchangecount; i++) |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4292 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4293 | "chat info: \t\t%hu %s\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4294 | exchanges[i].number, exchanges[i].name ? exchanges[i].name : ""); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4295 | while (od->create_rooms) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4296 | struct create_room *cr = od->create_rooms->data; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4297 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4298 | "creating room %s\n", cr->name); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
4299 | aim_chatnav_createroom(sess, fr->conn, cr->name, cr->exchange); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
4300 | g_free(cr->name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4301 | od->create_rooms = g_slist_remove(od->create_rooms, cr); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
4302 | g_free(cr); |
| 2086 | 4303 | } |
| 4304 | } | |
| 4305 | break; | |
| 4306 | case 0x0008: { | |
| 4307 | char *fqcn, *name, *ck; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4308 | fu16_t instance, flags, maxmsglen, maxoccupancy, unknown, exchange; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4309 | fu8_t createperms; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4310 | fu32_t createtime; |
| 2086 | 4311 | |
| 4312 | fqcn = va_arg(ap, char *); | |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4313 | instance = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4314 | exchange = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4315 | flags = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4316 | createtime = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4317 | maxmsglen = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4318 | maxoccupancy = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4319 | createperms = (fu8_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4320 | unknown = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4321 | name = va_arg(ap, char *); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4322 | ck = va_arg(ap, char *); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
4323 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4324 | gaim_debug_misc("oscar", |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
4325 | "created room: %s %hu %hu %hu %u %hu %hu %hhu %hu %s %s\n", |
| 2086 | 4326 | fqcn, |
| 4327 | exchange, instance, flags, | |
| 4328 | createtime, | |
| 4329 | maxmsglen, maxoccupancy, createperms, unknown, | |
| 4330 | name, ck); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4331 | aim_chat_join(od->sess, od->conn, exchange, ck, instance); |
| 2086 | 4332 | } |
| 4333 | break; | |
| 4334 | default: | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4335 | gaim_debug_warning("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4336 | "chatnav info: unknown type (%04hx)\n", type); |
| 2086 | 4337 | break; |
| 4338 | } | |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
4339 | |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
4340 | va_end(ap); |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
4341 | |
| 2086 | 4342 | return 1; |
| 4343 | } | |
| 4344 | ||
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
4345 | static int gaim_conv_chat_join(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 4346 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4347 | int count, i; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
4348 | aim_userinfo_t *info; |
| 5575 | 4349 | GaimConnection *g = sess->aux_data; |
| 2086 | 4350 | |
| 4351 | struct chat_connection *c = NULL; | |
| 4352 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4353 | va_start(ap, fr); |
| 2086 | 4354 | count = va_arg(ap, int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
4355 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 4356 | va_end(ap); |
| 4357 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4358 | c = find_oscar_chat_by_conn(g, fr->conn); |
| 2086 | 4359 | if (!c) |
| 4360 | return 1; | |
| 4361 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4362 | for (i = 0; i < count; i++) |
|
9846
61f7349c153a
[gaim-migrate @ 10724]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9831
diff
changeset
|
4363 | gaim_conv_chat_add_user(GAIM_CONV_CHAT(c->conv), info[i].sn, NULL, GAIM_CBFLAGS_NONE, TRUE); |
| 2086 | 4364 | |
| 4365 | return 1; | |
| 4366 | } | |
| 4367 | ||
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
4368 | static int gaim_conv_chat_leave(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 4369 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4370 | int count, i; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
4371 | aim_userinfo_t *info; |
| 5575 | 4372 | GaimConnection *g = sess->aux_data; |
| 2086 | 4373 | |
| 4374 | struct chat_connection *c = NULL; | |
| 4375 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4376 | va_start(ap, fr); |
| 2086 | 4377 | count = va_arg(ap, int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
4378 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 4379 | va_end(ap); |
| 4380 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4381 | c = find_oscar_chat_by_conn(g, fr->conn); |
| 2086 | 4382 | if (!c) |
| 4383 | return 1; | |
| 4384 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4385 | for (i = 0; i < count; i++) |
|
8733
f6d36eff3b49
[gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents:
8713
diff
changeset
|
4386 | gaim_conv_chat_remove_user(GAIM_CONV_CHAT(c->conv), info[i].sn, NULL); |
| 2086 | 4387 | |
| 4388 | return 1; | |
| 4389 | } | |
| 4390 | ||
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
4391 | static int gaim_conv_chat_info_update(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4392 | va_list ap; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
4393 | aim_userinfo_t *userinfo; |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4394 | struct aim_chat_roominfo *roominfo; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4395 | char *roomname; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4396 | int usercount; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4397 | char *roomdesc; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4398 | fu16_t unknown_c9, unknown_d2, unknown_d5, maxmsglen, maxvisiblemsglen; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4399 | fu32_t creationtime; |
| 5575 | 4400 | GaimConnection *gc = sess->aux_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4401 | struct chat_connection *ccon = find_oscar_chat_by_conn(gc, fr->conn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4402 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4403 | va_start(ap, fr); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4404 | roominfo = va_arg(ap, struct aim_chat_roominfo *); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4405 | roomname = va_arg(ap, char *); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4406 | usercount= va_arg(ap, int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
4407 | userinfo = va_arg(ap, aim_userinfo_t *); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4408 | roomdesc = va_arg(ap, char *); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4409 | unknown_c9 = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4410 | creationtime = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4411 | maxmsglen = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4412 | unknown_d2 = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4413 | unknown_d5 = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4414 | maxvisiblemsglen = (fu16_t)va_arg(ap, unsigned int); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4415 | va_end(ap); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4416 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4417 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4418 | "inside chat_info_update (maxmsglen = %hu, maxvislen = %hu)\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4419 | maxmsglen, maxvisiblemsglen); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4420 | |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4421 | ccon->maxlen = maxmsglen; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4422 | ccon->maxvis = maxvisiblemsglen; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4423 | |
| 2086 | 4424 | return 1; |
| 4425 | } | |
| 4426 | ||
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
4427 | static int gaim_conv_chat_incoming_msg(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 4428 | GaimConnection *gc = sess->aux_data; |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
4429 | struct chat_connection *ccon = find_oscar_chat_by_conn(gc, fr->conn); |
|
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
4430 | gchar *utf8; |
| 2086 | 4431 | va_list ap; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
4432 | aim_userinfo_t *info; |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
4433 | int len; |
| 2086 | 4434 | char *msg; |
| 8219 | 4435 | char *charset; |
| 2086 | 4436 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4437 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
4438 | info = va_arg(ap, aim_userinfo_t *); |
| 8219 | 4439 | len = va_arg(ap, int); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
4440 | msg = va_arg(ap, char *); |
| 8219 | 4441 | charset = va_arg(ap, char *); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
4442 | va_end(ap); |
| 2086 | 4443 | |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
4444 | utf8 = oscar_encoding_to_utf8(charset, msg, len); |
|
8667
534bd4c4fb38
[gaim-migrate @ 9419]
Mark Doliner <markdoliner@pidgin.im>
parents:
8666
diff
changeset
|
4445 | if (utf8 == NULL) |
|
534bd4c4fb38
[gaim-migrate @ 9419]
Mark Doliner <markdoliner@pidgin.im>
parents:
8666
diff
changeset
|
4446 | /* The conversion failed! */ |
|
8668
c72a49a7c46a
[gaim-migrate @ 9420]
Mark Doliner <markdoliner@pidgin.im>
parents:
8667
diff
changeset
|
4447 | 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
|
4448 | 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
|
4449 | g_free(utf8); |
| 2086 | 4450 | |
| 4451 | return 1; | |
| 4452 | } | |
| 4453 | ||
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
4454 | static int gaim_email_parseupdate(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
4455 | va_list ap; |
| 5575 | 4456 | GaimConnection *gc = sess->aux_data; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
4457 | struct aim_emailinfo *emailinfo; |
| 3725 | 4458 | int havenewmail; |
| 7297 | 4459 | char *alertitle, *alerturl; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
4460 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
4461 | va_start(ap, fr); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
4462 | emailinfo = va_arg(ap, struct aim_emailinfo *); |
| 3725 | 4463 | havenewmail = va_arg(ap, int); |
|
7301
f6a3a23fa2fc
[gaim-migrate @ 7885]
Mark Doliner <markdoliner@pidgin.im>
parents:
7297
diff
changeset
|
4464 | alertitle = va_arg(ap, char *); |
|
f6a3a23fa2fc
[gaim-migrate @ 7885]
Mark Doliner <markdoliner@pidgin.im>
parents:
7297
diff
changeset
|
4465 | alerturl = va_arg(ap, char *); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
4466 | va_end(ap); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
4467 | |
|
9661
a9895242a351
[gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents:
9659
diff
changeset
|
4468 | if ((emailinfo != NULL) && gaim_account_get_check_mail(gc->account)) { |
|
a9895242a351
[gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents:
9659
diff
changeset
|
4469 | gchar *to = g_strdup_printf("%s%s%s", gaim_account_get_username(gaim_connection_get_account(gc)), |
|
a9895242a351
[gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents:
9659
diff
changeset
|
4470 | emailinfo->domain ? "@" : "", |
|
a9895242a351
[gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents:
9659
diff
changeset
|
4471 | emailinfo->domain ? emailinfo->domain : ""); |
|
5542
0f02c413c862
[gaim-migrate @ 5942]
Mark Doliner <markdoliner@pidgin.im>
parents:
5540
diff
changeset
|
4472 | if (emailinfo->unread && havenewmail) |
|
0f02c413c862
[gaim-migrate @ 5942]
Mark Doliner <markdoliner@pidgin.im>
parents:
5540
diff
changeset
|
4473 | gaim_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
|
4474 | g_free(to); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
4475 | } |
| 7297 | 4476 | |
|
7301
f6a3a23fa2fc
[gaim-migrate @ 7885]
Mark Doliner <markdoliner@pidgin.im>
parents:
7297
diff
changeset
|
4477 | if (alertitle) |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4478 | gaim_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
|
4479 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
4480 | return 1; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
4481 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
4482 | |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4483 | static int gaim_icon_error(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 4484 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4485 | OscarData *od = gc->proto_data; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4486 | char *sn; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4487 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4488 | sn = od->requesticon->data; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4489 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4490 | "removing %s from hash table\n", sn); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4491 | od->requesticon = g_slist_remove(od->requesticon, sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4492 | free(sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4493 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4494 | if (od->icontimer) |
| 8287 | 4495 | gaim_timeout_remove(od->icontimer); |
| 8273 | 4496 | od->icontimer = gaim_timeout_add(500, gaim_icon_timerfunc, gc); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4497 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4498 | return 1; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4499 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4500 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4501 | static int gaim_icon_parseicon(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 4502 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4503 | OscarData *od = gc->proto_data; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4504 | GSList *cur; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4505 | va_list ap; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4506 | char *sn; |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
4507 | fu8_t *iconcsum, *icon; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
4508 | fu16_t iconcsumlen, iconlen; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4509 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4510 | va_start(ap, fr); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4511 | sn = va_arg(ap, char *); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
4512 | iconcsum = va_arg(ap, fu8_t *); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
4513 | iconcsumlen = va_arg(ap, int); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4514 | icon = va_arg(ap, fu8_t *); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4515 | iconlen = va_arg(ap, int); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4516 | va_end(ap); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4517 | |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
4518 | if (iconlen > 0) { |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
4519 | char *b16; |
| 6695 | 4520 | GaimBuddy *b = gaim_find_buddy(gc->account, sn); |
|
6846
f814f02dca87
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
4521 | gaim_buddy_icons_set_for_user(gaim_connection_get_account(gc), |
|
f814f02dca87
[gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents:
6787
diff
changeset
|
4522 | sn, icon, iconlen); |
|
7106
eaeff5775818
[gaim-migrate @ 7671]
Christian Hammond <chipx86@chipx86.com>
parents:
7098
diff
changeset
|
4523 | b16 = gaim_base16_encode(iconcsum, iconcsumlen); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4524 | if (b16) { |
| 7693 | 4525 | gaim_blist_node_set_string((GaimBlistNode*)b, "icon_checksum", b16); |
| 7162 | 4526 | g_free(b16); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4527 | } |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
4528 | } |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4529 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4530 | cur = od->requesticon; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4531 | while (cur) { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4532 | char *cursn = cur->data; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4533 | if (!aim_sncmp(cursn, sn)) { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4534 | od->requesticon = g_slist_remove(od->requesticon, cursn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4535 | free(cursn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4536 | cur = od->requesticon; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4537 | } else |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4538 | cur = cur->next; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4539 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4540 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4541 | if (od->icontimer) |
| 8287 | 4542 | gaim_timeout_remove(od->icontimer); |
| 8273 | 4543 | od->icontimer = gaim_timeout_add(250, gaim_icon_timerfunc, gc); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4544 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4545 | return 1; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4546 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4547 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4548 | static gboolean gaim_icon_timerfunc(gpointer data) { |
| 5575 | 4549 | GaimConnection *gc = data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4550 | OscarData *od = gc->proto_data; |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4551 | aim_userinfo_t *userinfo; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4552 | aim_conn_t *conn; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4553 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4554 | conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_ICON); |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
4555 | if (!conn) { |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
4556 | if (!od->iconconnecting) { |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
4557 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON); |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
4558 | od->iconconnecting = TRUE; |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
4559 | } |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4560 | return FALSE; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4561 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4562 | |
| 5842 | 4563 | if (od->set_icon) { |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
4564 | struct stat st; |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
4565 | const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc)); |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
4566 | if (iconfile == NULL) { |
| 8363 | 4567 | aim_ssi_delicon(od->sess); |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
4568 | } else if (!stat(iconfile, &st)) { |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
4569 | char *buf = g_malloc(st.st_size); |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
4570 | FILE *file = fopen(iconfile, "rb"); |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
4571 | if (file) { |
|
9532
32470c5a1d58
[gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
9481
diff
changeset
|
4572 | /* XXX - Use g_file_get_contents()? */ |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
4573 | fread(buf, 1, st.st_size, file); |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
4574 | fclose(file); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4575 | gaim_debug_info("oscar", |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
4576 | "Uploading icon to icon server\n"); |
|
6879
cc7abcef355c
[gaim-migrate @ 7425]
Mark Doliner <markdoliner@pidgin.im>
parents:
6873
diff
changeset
|
4577 | aim_bart_upload(od->sess, buf, st.st_size); |
| 5842 | 4578 | } else |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4579 | gaim_debug_error("oscar", |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
4580 | "Can't open buddy icon file!\n"); |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
4581 | g_free(buf); |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
4582 | } else { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4583 | gaim_debug_error("oscar", |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
4584 | "Can't stat buddy icon file!\n"); |
| 5842 | 4585 | } |
| 4586 | od->set_icon = FALSE; | |
| 4587 | } | |
| 4588 | ||
| 4589 | if (!od->requesticon) { | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4590 | gaim_debug_misc("oscar", |
| 5842 | 4591 | "no more icons to request\n"); |
| 4592 | return FALSE; | |
| 4593 | } | |
| 4594 | ||
|
7045
458b55091f8b
[gaim-migrate @ 7608]
Mark Doliner <markdoliner@pidgin.im>
parents:
7038
diff
changeset
|
4595 | userinfo = aim_locate_finduserinfo(od->sess, (char *)od->requesticon->data); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4596 | if ((userinfo != NULL) && (userinfo->iconcsumlen > 0)) { |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4597 | aim_bart_request(od->sess, od->requesticon->data, userinfo->iconcsum, userinfo->iconcsumlen); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4598 | return FALSE; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4599 | } else { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4600 | char *sn = od->requesticon->data; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4601 | od->requesticon = g_slist_remove(od->requesticon, sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4602 | free(sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4603 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4604 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4605 | return TRUE; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4606 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
4607 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4608 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4609 | * Recieved in response to an IM sent with the AIM_IMFLAGS_ACK option. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4610 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4611 | static int gaim_parse_msgack(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 4612 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4613 | fu16_t type; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4614 | char *sn; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4615 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4616 | va_start(ap, fr); |
| 4199 | 4617 | type = (fu16_t) va_arg(ap, unsigned int); |
| 2086 | 4618 | sn = va_arg(ap, char *); |
| 4619 | va_end(ap); | |
| 4620 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4621 | gaim_debug_info("oscar", "Sent message to %s.\n", sn); |
| 2086 | 4622 | |
| 4623 | return 1; | |
| 4624 | } | |
| 4625 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4626 | static int gaim_parse_ratechange(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4627 | static const char *codes[5] = { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4628 | "invalid", |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
4629 | "change", |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
4630 | "warning", |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
4631 | "limit", |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
4632 | "limit cleared", |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4633 | }; |
| 2086 | 4634 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4635 | fu16_t code, rateclass; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4636 | fu32_t windowsize, clear, alert, limit, disconnect, currentavg, maxavg; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4637 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4638 | va_start(ap, fr); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4639 | code = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4640 | rateclass= (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4641 | windowsize = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4642 | clear = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4643 | alert = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4644 | limit = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4645 | disconnect = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4646 | currentavg = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
4647 | maxavg = va_arg(ap, fu32_t); |
| 2086 | 4648 | va_end(ap); |
| 4649 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4650 | gaim_debug_misc("oscar", |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
4651 | "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
|
4652 | "clear warning at %u, limit at %u, disconnect at %u (window size = %u)\n", |
| 2086 | 4653 | (code < 5) ? codes[code] : codes[0], |
| 4654 | rateclass, | |
| 4655 | currentavg, maxavg, | |
| 4656 | alert, clear, | |
| 4657 | limit, disconnect, | |
| 4658 | windowsize); | |
| 4659 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4660 | /* XXX fix these values */ |
| 2086 | 4661 | if (code == AIM_RATE_CODE_CHANGE) { |
| 4662 | if (currentavg >= clear) | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4663 | aim_conn_setlatency(fr->conn, 0); |
| 2086 | 4664 | } else if (code == AIM_RATE_CODE_WARNING) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4665 | aim_conn_setlatency(fr->conn, windowsize/4); |
|
2909
2935ea93dfe7
[gaim-migrate @ 2922]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2906
diff
changeset
|
4666 | } else if (code == AIM_RATE_CODE_LIMIT) { |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4667 | gaim_notify_error(sess->aux_data, NULL, _("Rate limiting error."), |
|
6040
ab00305db747
[gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents:
6039
diff
changeset
|
4668 | _("The last action you attempted could not be " |
|
ab00305db747
[gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents:
6039
diff
changeset
|
4669 | "performed because you are over the rate limit. " |
|
ab00305db747
[gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents:
6039
diff
changeset
|
4670 | "Please wait 10 seconds and try again.")); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4671 | aim_conn_setlatency(fr->conn, windowsize/2); |
| 2086 | 4672 | } else if (code == AIM_RATE_CODE_CLEARLIMIT) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4673 | aim_conn_setlatency(fr->conn, 0); |
| 2086 | 4674 | } |
| 4675 | ||
| 4676 | return 1; | |
| 4677 | } | |
| 4678 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4679 | static int gaim_parse_evilnotify(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4680 | GaimConnection *gc = sess->aux_data; |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4681 | GaimAccount *account = gaim_connection_get_account(gc); |
| 2086 | 4682 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4683 | fu16_t newevil; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
4684 | aim_userinfo_t *userinfo; |
| 2086 | 4685 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4686 | va_start(ap, fr); |
| 4199 | 4687 | newevil = (fu16_t) va_arg(ap, unsigned int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
4688 | userinfo = va_arg(ap, aim_userinfo_t *); |
| 2086 | 4689 | va_end(ap); |
| 4690 | ||
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4691 | /* XXX - What's with the + 0.5? */ |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4692 | gaim_prpl_got_account_warning_level(account, (userinfo && userinfo->sn) ? userinfo->sn : NULL, (newevil/10.0) + 0.5); |
| 2086 | 4693 | |
| 4694 | return 1; | |
| 4695 | } | |
| 4696 | ||
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
4697 | static int gaim_selfinfo(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4698 | GaimConnection *gc = sess->aux_data; |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4699 | GaimAccount *account = gaim_connection_get_account(gc); |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4700 | int warning_level; |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
4701 | va_list ap; |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
4702 | aim_userinfo_t *info; |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
4703 | |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
4704 | va_start(ap, fr); |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
4705 | info = va_arg(ap, aim_userinfo_t *); |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
4706 | va_end(ap); |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
4707 | |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4708 | warning_level = info->warnlevel/10.0 + 0.5; |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4709 | |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4710 | /* |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4711 | * XXX - Calling this is probably not good. We just want to set the |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4712 | * warning level for our account, not tell the user that we were just |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4713 | * warned. |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4714 | */ |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
4715 | gaim_prpl_got_account_warning_level(account, NULL, warning_level); |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
4716 | |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
4717 | return 1; |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
4718 | } |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
4719 | |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
4720 | static int gaim_connerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 4721 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4722 | OscarData *od = gc->proto_data; |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
4723 | va_list ap; |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
4724 | fu16_t code; |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
4725 | char *msg; |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
4726 | |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
4727 | va_start(ap, fr); |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
4728 | code = (fu16_t)va_arg(ap, int); |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
4729 | msg = va_arg(ap, char *); |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
4730 | va_end(ap); |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
4731 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4732 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4733 | "Disconnected. Code is 0x%04x and msg is %s\n", code, msg); |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
4734 | if ((fr) && (fr->conn) && (fr->conn->type == AIM_CONN_TYPE_BOS)) { |
| 4651 | 4735 | if (code == 0x0001) { |
|
6113
5bc7394e69ea
[gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents:
6066
diff
changeset
|
4736 | gc->wants_to_die = TRUE; |
| 5579 | 4737 | gaim_connection_error(gc, _("You have been disconnected because you have signed on with this screen name at another location.")); |
| 4651 | 4738 | } else { |
| 5579 | 4739 | gaim_connection_error(gc, _("You have been signed off for an unknown reason.")); |
| 4651 | 4740 | } |
|
4666
fd74a2faaf94
[gaim-migrate @ 4977]
Mark Doliner <markdoliner@pidgin.im>
parents:
4665
diff
changeset
|
4741 | od->killme = TRUE; |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
4742 | } |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
4743 | |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
4744 | return 1; |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
4745 | } |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
4746 | |
| 2675 | 4747 | static int conninitdone_bos(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4748 | GaimConnection *gc = sess->aux_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4749 | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
4750 | aim_reqpersonalinfo(sess, fr->conn); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4751 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4752 | #ifndef NOSSI |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4753 | gaim_debug_info("oscar", "ssi: requesting rights and list\n"); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4754 | aim_ssi_reqrights(sess); |
| 6350 | 4755 | aim_ssi_reqdata(sess); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4756 | #endif |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4757 | |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
4758 | aim_locate_reqrights(sess); |
|
7285
b9d07d0c9bc2
[gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents:
7283
diff
changeset
|
4759 | aim_buddylist_reqrights(sess, fr->conn); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4760 | aim_im_reqparams(sess); |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
4761 | aim_bos_reqrights(sess, fr->conn); /* XXX - Don't call this with ssi */ |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4762 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4763 | #ifdef NOSSI |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4764 | gaim_debug_info("oscar", "bos: requesting rights\n"); |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
4765 | aim_bos_reqrights(sess, fr->conn); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4766 | aim_bos_setgroupperm(sess, fr->conn, AIM_FLAG_ALLUSERS); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4767 | aim_bos_setprivacyflags(sess, fr->conn, AIM_PRIVFLAGS_ALLOWIDLE | AIM_PRIVFLAGS_ALLOWMEMBERSINCE); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4768 | #endif |
| 2086 | 4769 | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4770 | gaim_connection_update_progress(gc, _("Finalizing connection"), 5, OSCAR_CONNECT_STEPS); |
|
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4771 | |
| 2086 | 4772 | return 1; |
| 4773 | } | |
| 4774 | ||
| 2675 | 4775 | static int conninitdone_admin(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 4776 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4777 | OscarData *od = gc->proto_data; |
| 2647 | 4778 | |
|
6905
dd40a6134713
[gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents:
6879
diff
changeset
|
4779 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ADM, 0x0003, gaim_info_change, 0); |
|
dd40a6134713
[gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents:
6879
diff
changeset
|
4780 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ADM, 0x0005, gaim_info_change, 0); |
|
dd40a6134713
[gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents:
6879
diff
changeset
|
4781 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ADM, 0x0007, gaim_account_confirm, 0); |
|
dd40a6134713
[gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents:
6879
diff
changeset
|
4782 | |
| 2672 | 4783 | aim_clientready(sess, fr->conn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4784 | gaim_debug_info("oscar", "connected to admin\n"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4785 | |
| 2647 | 4786 | if (od->chpass) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4787 | gaim_debug_info("oscar", "changing password\n"); |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
4788 | aim_admin_changepasswd(sess, fr->conn, od->newp, od->oldp); |
| 2647 | 4789 | g_free(od->oldp); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4790 | od->oldp = NULL; |
| 2647 | 4791 | g_free(od->newp); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4792 | od->newp = NULL; |
| 2647 | 4793 | od->chpass = FALSE; |
| 4794 | } | |
| 2979 | 4795 | if (od->setnick) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4796 | gaim_debug_info("oscar", "formatting screen name\n"); |
| 2979 | 4797 | aim_admin_setnick(sess, fr->conn, od->newsn); |
| 4798 | g_free(od->newsn); | |
| 4799 | od->newsn = NULL; | |
| 4800 | od->setnick = FALSE; | |
| 4801 | } | |
| 2647 | 4802 | if (od->conf) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4803 | gaim_debug_info("oscar", "confirming account\n"); |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
4804 | aim_admin_reqconfirm(sess, fr->conn); |
| 2647 | 4805 | od->conf = FALSE; |
| 4806 | } | |
| 4807 | if (od->reqemail) { | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4808 | gaim_debug_info("oscar", "requesting email\n"); |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
4809 | aim_admin_getinfo(sess, fr->conn, 0x0011); |
| 2647 | 4810 | od->reqemail = FALSE; |
| 4811 | } | |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4812 | if (od->setemail) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4813 | gaim_debug_info("oscar", "setting email\n"); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4814 | aim_admin_setemail(sess, fr->conn, od->email); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4815 | g_free(od->email); |
|
5497
da3c08f3af25
[gaim-migrate @ 5893]
Mark Doliner <markdoliner@pidgin.im>
parents:
5493
diff
changeset
|
4816 | od->email = NULL; |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4817 | od->setemail = FALSE; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4818 | } |
| 2647 | 4819 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4820 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4821 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4822 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4823 | static int gaim_icbm_param_info(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4824 | struct aim_icbmparameters *params; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4825 | va_list ap; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4826 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4827 | va_start(ap, fr); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4828 | params = va_arg(ap, struct aim_icbmparameters *); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4829 | va_end(ap); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4830 | |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
4831 | /* XXX - evidently this crashes on solaris. i have no clue why |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4832 | gaim_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
|
4833 | "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
|
4834 | params->maxchan, params->flags, params->maxmsglen, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4835 | ((float)params->maxsenderwarn)/10.0, ((float)params->maxrecverwarn)/10.0, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4836 | params->minmsginterval); |
|
2427
761801814c88
[gaim-migrate @ 2440]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2421
diff
changeset
|
4837 | */ |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4838 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4839 | /* Maybe senderwarn and recverwarn should be user preferences... */ |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4840 | params->flags = 0x0000000b; |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4841 | params->maxmsglen = 8000; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4842 | params->minmsginterval = 0; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4843 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4844 | aim_im_setparams(sess, params); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4845 | |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4846 | return 1; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4847 | } |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4848 | |
| 2993 | 4849 | static int gaim_parse_locaterights(aim_session_t *sess, aim_frame_t *fr, ...) |
| 4850 | { | |
| 5575 | 4851 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4852 | OscarData *od = (OscarData *)gc->proto_data; |
|
5306
1707fdf8c530
[gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
4853 | va_list ap; |
|
1707fdf8c530
[gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
4854 | fu16_t maxsiglen; |
| 2993 | 4855 | |
| 4856 | va_start(ap, fr); | |
| 4199 | 4857 | maxsiglen = (fu16_t) va_arg(ap, int); |
| 2993 | 4858 | va_end(ap); |
| 4859 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4860 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4861 | "locate rights: max sig len = %d\n", maxsiglen); |
| 2993 | 4862 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4863 | od->rights.maxsiglen = od->rights.maxawaymsglen = (guint)maxsiglen; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4864 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4865 | if (od->icq) |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
4866 | aim_locate_setcaps(od->sess, caps_icq); |
|
5301
38f02eecad54
[gaim-migrate @ 5673]
Mark Doliner <markdoliner@pidgin.im>
parents:
5300
diff
changeset
|
4867 | else |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
4868 | aim_locate_setcaps(od->sess, caps_aim); |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
4869 | oscar_set_info(gc, gc->account->user_info); |
| 2993 | 4870 | |
| 4871 | return 1; | |
| 4872 | } | |
| 4873 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4874 | static int gaim_parse_buddyrights(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
4875 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4876 | fu16_t maxbuddies, maxwatchers; |
| 5575 | 4877 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4878 | OscarData *od = (OscarData *)gc->proto_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4879 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4880 | va_start(ap, fr); |
| 4199 | 4881 | maxbuddies = (fu16_t) va_arg(ap, unsigned int); |
| 4882 | maxwatchers = (fu16_t) va_arg(ap, unsigned int); | |
| 2086 | 4883 | va_end(ap); |
| 4884 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4885 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4886 | "buddy list rights: Max buddies = %hu / Max watchers = %hu\n", maxbuddies, maxwatchers); |
| 2086 | 4887 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4888 | od->rights.maxbuddies = (guint)maxbuddies; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4889 | od->rights.maxwatchers = (guint)maxwatchers; |
| 2993 | 4890 | |
| 2086 | 4891 | return 1; |
| 4892 | } | |
| 4893 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4894 | static int gaim_bosrights(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 4895 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
4896 | OscarData *od = (OscarData *)gc->proto_data; |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
4897 | va_list ap; |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
4898 | fu16_t maxpermits, maxdenies; |
| 2086 | 4899 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4900 | va_start(ap, fr); |
| 4199 | 4901 | maxpermits = (fu16_t) va_arg(ap, unsigned int); |
| 4902 | maxdenies = (fu16_t) va_arg(ap, unsigned int); | |
| 2086 | 4903 | va_end(ap); |
| 4904 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4905 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4906 | "BOS rights: Max permit = %hu / Max deny = %hu\n", maxpermits, maxdenies); |
| 2086 | 4907 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4908 | od->rights.maxpermits = (guint)maxpermits; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4909 | od->rights.maxdenies = (guint)maxdenies; |
| 2993 | 4910 | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
4911 | gaim_connection_set_state(gc, GAIM_CONNECTED); |
| 2993 | 4912 | serv_finish_login(gc); |
| 4913 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4914 | gaim_debug_info("oscar", "buddy list loaded\n"); |
| 2993 | 4915 | |
| 2672 | 4916 | aim_clientready(sess, fr->conn); |
|
5948
2527d515c3b8
[gaim-migrate @ 6392]
Mark Doliner <markdoliner@pidgin.im>
parents:
5920
diff
changeset
|
4917 | aim_srv_setavailmsg(sess, NULL); |
|
7474
757569d68123
[gaim-migrate @ 8087]
Mark Doliner <markdoliner@pidgin.im>
parents:
7465
diff
changeset
|
4918 | aim_srv_setidle(sess, 0); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4919 | |
|
4664
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
4920 | if (od->icq) { |
|
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
4921 | aim_icq_reqofflinemsgs(sess); |
|
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
4922 | aim_icq_hideip(sess); |
|
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
4923 | } |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4924 | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
4925 | aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_CHATNAV); |
|
4102
06290da3f88d
[gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents:
4076
diff
changeset
|
4926 | if (sess->authinfo->email) |
|
06290da3f88d
[gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents:
4076
diff
changeset
|
4927 | aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_EMAIL); |
| 2086 | 4928 | |
| 4929 | return 1; | |
| 4930 | } | |
| 4931 | ||
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4932 | static int gaim_offlinemsg(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4933 | va_list ap; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4934 | struct aim_icq_offlinemsg *msg; |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
4935 | struct aim_incomingim_ch4_args args; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
4936 | time_t t; |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4937 | |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4938 | va_start(ap, fr); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4939 | msg = va_arg(ap, struct aim_icq_offlinemsg *); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4940 | va_end(ap); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4941 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
4942 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4943 | "Received offline message. Converting to channel 4 ICBM...\n"); |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
4944 | args.uin = msg->sender; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
4945 | args.type = msg->type; |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
4946 | args.flags = msg->flags; |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
4947 | args.msglen = msg->msglen; |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
4948 | args.msg = msg->msg; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
4949 | t = gaim_time_build(msg->year, msg->month, msg->day, msg->hour, msg->minute, 0); |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
4950 | incomingim_chan4(sess, fr->conn, NULL, &args, t); |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4951 | |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4952 | return 1; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4953 | } |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4954 | |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4955 | static int gaim_offlinemsgdone(aim_session_t *sess, aim_frame_t *fr, ...) |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4956 | { |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4957 | aim_icq_ackofflinemsgs(sess); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4958 | return 1; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4959 | } |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
4960 | |
|
7388
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4961 | #if 0 |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4962 | /* |
|
7465
17e1e9e996ad
[gaim-migrate @ 8078]
Mark Doliner <markdoliner@pidgin.im>
parents:
7422
diff
changeset
|
4963 | * Update, 2003-11-09: |
|
17e1e9e996ad
[gaim-migrate @ 8078]
Mark Doliner <markdoliner@pidgin.im>
parents:
7422
diff
changeset
|
4964 | * Joseph S. Myers, a gcc dude, fixed this for gcc 3.4! Rock on! |
|
17e1e9e996ad
[gaim-migrate @ 8078]
Mark Doliner <markdoliner@pidgin.im>
parents:
7422
diff
changeset
|
4965 | * |
|
7388
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4966 | * It may not be my place to do this, but... |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4967 | * I feel pretty strongly that the "last 2 digits" warning is ridiculously |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4968 | * stupid, and should not exist for % switches (%x in our case) that request |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4969 | * a year in the preferred representation for the current locale. For that |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4970 | * reason I've chosen to not use this workaround (n., see kluge). |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4971 | * |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4972 | * I have a date. I want to show it to the user in the "preferred" way. |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4973 | * Whether that displays a 2 digit year is perfectly fine--after all, it's |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4974 | * what the locale wanted. |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4975 | * |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4976 | * If I have a necessity for a full representation of the year in the current |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4977 | * locale, then I'll use a switch that returns a full representation of the |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4978 | * year. |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4979 | * |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4980 | * If you think the preferred locale should show 4 digits instead of 2 digits |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4981 | * (because you're anal, or whatever), then change the f***ing locale. |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4982 | * |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4983 | * I guess the bottom line is--I'm trying to show a date to the user how they |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4984 | * prefer to see it, why the hell does gcc want me to change that? |
|
7389
56f574d188b3
[gaim-migrate @ 7984]
Mark Doliner <markdoliner@pidgin.im>
parents:
7388
diff
changeset
|
4985 | * |
|
56f574d188b3
[gaim-migrate @ 7984]
Mark Doliner <markdoliner@pidgin.im>
parents:
7388
diff
changeset
|
4986 | * See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=3190 |
|
56f574d188b3
[gaim-migrate @ 7984]
Mark Doliner <markdoliner@pidgin.im>
parents:
7388
diff
changeset
|
4987 | * See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8714 |
|
7388
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4988 | */ |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4989 | |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4990 | /* |
|
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4991 | * This function was recommended by the STRFTIME(3) man page to remove the |
| 7386 | 4992 | * "last 2 digits" warning. |
| 4993 | */ | |
| 4994 | static size_t my_strftime(char *s, size_t max, const char *fmt, | |
| 4995 | const struct tm *tm) | |
| 4996 | { | |
| 4997 | return strftime(s, max, fmt, tm); | |
| 4998 | } | |
|
7388
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
4999 | #endif |
| 7386 | 5000 | |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
5001 | static int gaim_icqinfo(aim_session_t *sess, aim_frame_t *fr, ...) |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
5002 | { |
| 5575 | 5003 | GaimConnection *gc = sess->aux_data; |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5004 | OscarData *od = (OscarData *)gc->proto_data; |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5005 | GaimBuddy *buddy; |
| 8853 | 5006 | struct buddyinfo *bi = NULL; |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
5007 | gchar who[16]; |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5008 | GString *str; |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5009 | gchar *primary, *utf8; |
|
9634
166f3ac40f4a
[gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents:
9631
diff
changeset
|
5010 | const gchar *alias; |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
5011 | va_list ap; |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
5012 | struct aim_icq_info *info; |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
5013 | |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
5014 | va_start(ap, fr); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
5015 | info = va_arg(ap, struct aim_icq_info *); |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
5016 | va_end(ap); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
5017 | |
|
4664
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
5018 | if (!info->uin) |
|
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
5019 | return 0; |
|
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
5020 | |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5021 | str = g_string_sized_new(100); |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
5022 | g_snprintf(who, sizeof(who), "%u", info->uin); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5023 | buddy = gaim_find_buddy(gaim_connection_get_account(gc), who); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5024 | if (buddy != NULL) |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5025 | bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(buddy->account, buddy->name)); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5026 | |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5027 | g_string_append_printf(str, "<b>%s:</b> %s", _("UIN"), who); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5028 | oscar_string_append(str, "\n<br>", _("Nick"), info->nick); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5029 | if ((bi != NULL) && (bi->ipaddr != 0)) { |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5030 | char *tstr = g_strdup_printf("%hhu.%hhu.%hhu.%hhu", |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5031 | (bi->ipaddr & 0xff000000) >> 24, |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5032 | (bi->ipaddr & 0x00ff0000) >> 16, |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5033 | (bi->ipaddr & 0x0000ff00) >> 8, |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5034 | (bi->ipaddr & 0x000000ff)); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5035 | oscar_string_append(str, "\n<br>", _("IP Address"), tstr); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5036 | g_free(tstr); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5037 | } |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5038 | oscar_string_append(str, "\n<br>", _("First Name"), info->first); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5039 | oscar_string_append(str, "\n<br>", _("Last Name"), info->last); |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
5040 | if (info->email && info->email[0] && (utf8 = gaim_utf8_try_convert(info->email))) { |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5041 | g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"mailto:%s\">%s</a>", _("Email Address"), utf8, utf8); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5042 | g_free(utf8); |
|
4625
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
5043 | } |
|
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
5044 | if (info->numaddresses && info->email2) { |
|
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
5045 | int i; |
|
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
5046 | for (i = 0; i < info->numaddresses; i++) { |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
5047 | if (info->email2[i] && info->email2[i][0] && (utf8 = gaim_utf8_try_convert(info->email2[i]))) { |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5048 | g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"mailto%s\">%s</a>", _("Email Address"), utf8, utf8); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5049 | g_free(utf8); |
| 4643 | 5050 | } |
|
4625
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
5051 | } |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
5052 | } |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5053 | oscar_string_append(str, "\n<br>", _("Mobile Phone"), info->mobile); |
|
10022
b5bb3bdd4d1a
[gaim-migrate @ 10954]
Mark Doliner <markdoliner@pidgin.im>
parents:
10009
diff
changeset
|
5054 | if (info->gender != 0) |
|
b5bb3bdd4d1a
[gaim-migrate @ 10954]
Mark Doliner <markdoliner@pidgin.im>
parents:
10009
diff
changeset
|
5055 | oscar_string_append(str, "\n<br>", _("Gender"), info->gender == 1 ? _("Female") : _("Male")); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
5056 | if (info->birthyear || info->birthmonth || info->birthday) { |
|
4627
4895653771a7
[gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents:
4625
diff
changeset
|
5057 | char date[30]; |
|
4895653771a7
[gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents:
4625
diff
changeset
|
5058 | struct tm tm; |
|
4895653771a7
[gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents:
4625
diff
changeset
|
5059 | tm.tm_mday = (int)info->birthday; |
|
4895653771a7
[gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents:
4625
diff
changeset
|
5060 | tm.tm_mon = (int)info->birthmonth-1; |
|
4895653771a7
[gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents:
4625
diff
changeset
|
5061 | tm.tm_year = (int)info->birthyear-1900; |
|
7388
3cdfcc098741
[gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents:
7386
diff
changeset
|
5062 | strftime(date, sizeof(date), "%x", &tm); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5063 | oscar_string_append(str, "\n<br>", _("Birthday"), date); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
5064 | } |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
5065 | if (info->age) { |
|
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
5066 | char age[5]; |
|
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
5067 | snprintf(age, sizeof(age), "%hhd", info->age); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5068 | oscar_string_append(str, "\n<br>", _("Age"), age); |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
5069 | } |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
5070 | if (info->personalwebpage && info->personalwebpage[0] && (utf8 = gaim_utf8_try_convert(info->personalwebpage))) { |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5071 | g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"%s\">%s</a>", _("Personal Web Page"), utf8, utf8); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5072 | g_free(utf8); |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
5073 | } |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
5074 | if (info->info && info->info[0] && (utf8 = gaim_utf8_try_convert(info->info))) { |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5075 | g_string_append_printf(str, "<hr><b>%s:</b><br>%s", _("Additional Information"), utf8); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5076 | g_free(utf8); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5077 | } |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5078 | g_string_append_printf(str, "<hr>\n"); |
|
4641
bcc6f5e3018a
[gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents:
4634
diff
changeset
|
5079 | if ((info->homeaddr && (info->homeaddr[0])) || (info->homecity && info->homecity[0]) || (info->homestate && info->homestate[0]) || (info->homezip && info->homezip[0])) { |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5080 | g_string_append_printf(str, "<b>%s:</b>", _("Home Address")); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5081 | oscar_string_append(str, "\n<br>", _("Address"), info->homeaddr); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5082 | oscar_string_append(str, "\n<br>", _("City"), info->homecity); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5083 | oscar_string_append(str, "\n<br>", _("State"), info->homestate); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5084 | oscar_string_append(str, "\n<br>", _("Zip Code"), info->homezip); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5085 | g_string_append_printf(str, "\n<hr>\n"); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
5086 | } |
|
4641
bcc6f5e3018a
[gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents:
4634
diff
changeset
|
5087 | if ((info->workaddr && info->workaddr[0]) || (info->workcity && info->workcity[0]) || (info->workstate && info->workstate[0]) || (info->workzip && info->workzip[0])) { |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5088 | g_string_append_printf(str, "<b>%s:</b>", _("Work Address")); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5089 | oscar_string_append(str, "\n<br>", _("Address"), info->workaddr); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5090 | oscar_string_append(str, "\n<br>", _("City"), info->workcity); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5091 | oscar_string_append(str, "\n<br>", _("State"), info->workstate); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5092 | oscar_string_append(str, "\n<br>", _("Zip Code"), info->workzip); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5093 | g_string_append_printf(str, "\n<hr>\n"); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
5094 | } |
|
4641
bcc6f5e3018a
[gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents:
4634
diff
changeset
|
5095 | if ((info->workcompany && info->workcompany[0]) || (info->workdivision && info->workdivision[0]) || (info->workposition && info->workposition[0]) || (info->workwebpage && info->workwebpage[0])) { |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5096 | g_string_append_printf(str, "<b>%s:</b>", _("Work Information")); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5097 | oscar_string_append(str, "\n<br>", _("Company"), info->workcompany); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5098 | oscar_string_append(str, "\n<br>", _("Division"), info->workdivision); |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
5099 | oscar_string_append(str, "\n<br>", _("Position"), info->workposition); |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
5100 | if (info->workwebpage && info->workwebpage[0] && (utf8 = gaim_utf8_try_convert(info->workwebpage))) { |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5101 | g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"%s\">%s</a>", _("Web Page"), utf8, utf8); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5102 | g_free(utf8); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
5103 | } |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5104 | g_string_append_printf(str, "\n<hr>\n"); |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5105 | } |
|
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5106 | |
|
9634
166f3ac40f4a
[gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents:
9631
diff
changeset
|
5107 | if (buddy != NULL) |
|
166f3ac40f4a
[gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents:
9631
diff
changeset
|
5108 | alias = gaim_buddy_get_alias(buddy); |
|
166f3ac40f4a
[gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents:
9631
diff
changeset
|
5109 | else |
|
166f3ac40f4a
[gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents:
9631
diff
changeset
|
5110 | alias = who; |
|
166f3ac40f4a
[gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents:
9631
diff
changeset
|
5111 | primary = g_strdup_printf(_("ICQ Info for %s"), alias); |
|
9810
fedd23e2134d
[gaim-migrate @ 10681]
Mark Doliner <markdoliner@pidgin.im>
parents:
9809
diff
changeset
|
5112 | gaim_notify_userinfo(gc, who, NULL, primary, NULL, str->str, NULL, NULL); |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5113 | g_free(primary); |
|
8670
a3d5260f1d8f
[gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents:
8668
diff
changeset
|
5114 | g_string_free(str, TRUE); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
5115 | |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
5116 | return 1; |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
5117 | } |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
5118 | |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5119 | static int gaim_icqalias(aim_session_t *sess, aim_frame_t *fr, ...) |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5120 | { |
| 5575 | 5121 | GaimConnection *gc = sess->aux_data; |
|
4820
1e869f00810b
[gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents:
4819
diff
changeset
|
5122 | gchar who[16], *utf8; |
| 6695 | 5123 | GaimBuddy *b; |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5124 | va_list ap; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5125 | struct aim_icq_info *info; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5126 | |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5127 | va_start(ap, fr); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5128 | info = va_arg(ap, struct aim_icq_info *); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5129 | va_end(ap); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5130 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
5131 | if (info->uin && info->nick && info->nick[0] && (utf8 = gaim_utf8_try_convert(info->nick))) { |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
5132 | g_snprintf(who, sizeof(who), "%u", info->uin); |
|
4820
1e869f00810b
[gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents:
4819
diff
changeset
|
5133 | serv_got_alias(gc, who, utf8); |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5134 | if ((b = gaim_find_buddy(gc->account, who))) { |
| 7693 | 5135 | gaim_blist_node_set_string((GaimBlistNode*)b, "servernick", utf8); |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5136 | } |
|
4820
1e869f00810b
[gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents:
4819
diff
changeset
|
5137 | g_free(utf8); |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5138 | } |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5139 | |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5140 | return 1; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5141 | } |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5142 | |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5143 | static int gaim_popup(aim_session_t *sess, aim_frame_t *fr, ...) |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5144 | { |
|
7032
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
5145 | GaimConnection *gc = sess->aux_data; |
|
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
5146 | gchar *text; |
|
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
5147 | va_list ap; |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5148 | char *msg, *url; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5149 | fu16_t wid, hei, delay; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5150 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5151 | va_start(ap, fr); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5152 | msg = va_arg(ap, char *); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5153 | url = va_arg(ap, char *); |
| 4199 | 5154 | wid = (fu16_t) va_arg(ap, int); |
| 5155 | hei = (fu16_t) va_arg(ap, int); | |
| 5156 | delay = (fu16_t) va_arg(ap, int); | |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5157 | va_end(ap); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5158 | |
|
7032
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
5159 | text = g_strdup_printf("%s<br><a href=\"%s\">%s</a>", msg, url, url); |
|
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
5160 | gaim_notify_formatted(gc, NULL, _("Pop-Up Message"), NULL, text, NULL, NULL); |
|
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
5161 | g_free(text); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5162 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5163 | return 1; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5164 | } |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5165 | |
|
7032
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
5166 | static int gaim_parse_searchreply(aim_session_t *sess, aim_frame_t *fr, ...) |
|
a6587d42db0c
[gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents:
7026
diff
changeset
|
5167 | { |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5168 | GaimConnection *gc = sess->aux_data; |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5169 | gchar *secondary; |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5170 | GString *text; |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5171 | int i, num; |
| 2086 | 5172 | va_list ap; |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5173 | char *email, *SNs; |
| 2086 | 5174 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5175 | va_start(ap, fr); |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5176 | email = va_arg(ap, char *); |
| 2086 | 5177 | num = va_arg(ap, int); |
| 5178 | SNs = va_arg(ap, char *); | |
| 5179 | va_end(ap); | |
| 5180 | ||
|
8152
f26c9406b4b3
[gaim-migrate @ 8864]
Mark Doliner <markdoliner@pidgin.im>
parents:
8151
diff
changeset
|
5181 | secondary = g_strdup_printf(_("The following screen names are associated with %s"), email); |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5182 | text = g_string_new(""); |
| 2086 | 5183 | for (i = 0; i < num; i++) |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5184 | g_string_append_printf(text, "%s<br>", &SNs[i * (MAXSNLEN + 1)]); |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5185 | gaim_notify_formatted(gc, NULL, _("Search Results"), secondary, text->str, NULL, NULL); |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5186 | |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5187 | g_free(secondary); |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5188 | g_string_free(text, TRUE); |
| 2086 | 5189 | |
| 5190 | return 1; | |
| 5191 | } | |
| 5192 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5193 | static int gaim_parse_searcherror(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 5194 | va_list ap; |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5195 | char *email; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
5196 | char *buf; |
| 2086 | 5197 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5198 | va_start(ap, fr); |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5199 | email = va_arg(ap, char *); |
| 2086 | 5200 | va_end(ap); |
| 5201 | ||
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5202 | buf = g_strdup_printf(_("No results found for email address %s"), email); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5203 | gaim_notify_error(sess->aux_data, NULL, buf, NULL); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
5204 | g_free(buf); |
| 2086 | 5205 | |
| 5206 | return 1; | |
| 5207 | } | |
| 5208 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5209 | static int gaim_account_confirm(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
5210 | GaimConnection *gc = sess->aux_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5211 | fu16_t status; |
| 2086 | 5212 | va_list ap; |
| 5213 | char msg[256]; | |
| 5214 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5215 | va_start(ap, fr); |
| 4199 | 5216 | status = (fu16_t) va_arg(ap, unsigned int); /* status code of confirmation request */ |
| 2086 | 5217 | va_end(ap); |
| 5218 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5219 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5220 | "account confirmation returned status 0x%04x (%s)\n", status, |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5221 | status ? "unknown" : "email sent"); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5222 | if (!status) { |
|
5302
48db3c9dc259
[gaim-migrate @ 5674]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
5301
diff
changeset
|
5223 | g_snprintf(msg, sizeof(msg), _("You should receive an email asking to confirm %s."), |
| 5575 | 5224 | gaim_account_get_username(gaim_connection_get_account(gc))); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5225 | gaim_notify_info(gc, NULL, _("Account Confirmation Requested"), msg); |
| 2086 | 5226 | } |
| 5227 | ||
| 5228 | return 1; | |
| 5229 | } | |
| 5230 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5231 | static int gaim_info_change(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 5232 | GaimConnection *gc = sess->aux_data; |
| 2086 | 5233 | va_list ap; |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5234 | fu16_t perms, err; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5235 | char *url, *sn, *email; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5236 | int change; |
| 2086 | 5237 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5238 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5239 | change = va_arg(ap, int); |
| 4199 | 5240 | perms = (fu16_t) va_arg(ap, unsigned int); |
| 5241 | err = (fu16_t) va_arg(ap, unsigned int); | |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5242 | url = va_arg(ap, char *); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5243 | sn = va_arg(ap, char *); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5244 | email = va_arg(ap, char *); |
| 2086 | 5245 | va_end(ap); |
| 5246 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5247 | gaim_debug_misc("oscar", |
|
9626
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
5248 | "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
|
5249 | change ? "change" : "request", perms, err, |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
5250 | (url != NULL) ? url : "(null)", |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
5251 | (sn != NULL) ? sn : "(null)", |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
5252 | (email != NULL) ? email : "(null)"); |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
5253 | |
|
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
5254 | if ((err > 0) && (url != NULL)) { |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5255 | char *dialog_msg; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5256 | char *dialog_top = g_strdup_printf(_("Error Changing Account Info")); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5257 | switch (err) { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5258 | case 0x0001: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5259 | 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
|
5260 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5261 | case 0x0006: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5262 | dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format screen name because the requested screen name ends in a space."), err); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5263 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5264 | case 0x000b: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5265 | 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
|
5266 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5267 | case 0x001d: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5268 | dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change email address because there is already a request pending for this screen name."), err); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5269 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5270 | case 0x0021: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5271 | dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change email address because the given address has too many screen names associated with it."), err); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5272 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5273 | case 0x0023: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5274 | dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change email address because the given address is invalid."), err); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5275 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5276 | default: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5277 | dialog_msg = g_strdup_printf(_("Error 0x%04x: Unknown error."), err); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5278 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5279 | } |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5280 | gaim_notify_error(gc, NULL, dialog_top, dialog_msg); |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5281 | g_free(dialog_top); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5282 | g_free(dialog_msg); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5283 | return 1; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5284 | } |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5285 | |
|
9626
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
5286 | if (sn != NULL) { |
| 4585 | 5287 | char *dialog_msg = g_strdup_printf(_("Your screen name is currently formatted as follows:\n%s"), sn); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5288 | gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg); |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5289 | g_free(dialog_msg); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5290 | } |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5291 | |
|
9626
0bf7f913c6ca
[gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents:
9625
diff
changeset
|
5292 | if (email != NULL) { |
| 5575 | 5293 | char *dialog_msg = g_strdup_printf(_("The email address for %s is %s"), |
| 5294 | gaim_account_get_username(gaim_connection_get_account(gc)), email); | |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5295 | gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg); |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
5296 | g_free(dialog_msg); |
| 2086 | 5297 | } |
| 5298 | ||
| 5299 | return 1; | |
| 5300 | } | |
| 5301 | ||
| 5575 | 5302 | static void oscar_keepalive(GaimConnection *gc) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5303 | OscarData *od = (OscarData *)gc->proto_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5304 | aim_flap_nop(od->sess, od->conn); |
| 2086 | 5305 | } |
| 5306 | ||
|
6059
9934c862ca14
[gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents:
6053
diff
changeset
|
5307 | static int oscar_send_typing(GaimConnection *gc, const char *name, int typing) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5308 | OscarData *od = (OscarData *)gc->proto_data; |
| 8971 | 5309 | struct oscar_direct_im *dim = oscar_direct_im_find(od, name); |
| 5310 | if (dim && dim->connected) | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
5311 | if (typing == GAIM_TYPING) |
|
4870
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
5312 | aim_odc_send_typing(od->sess, dim->conn, 0x0002); |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
5313 | else if (typing == GAIM_TYPED) |
|
4870
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
5314 | aim_odc_send_typing(od->sess, dim->conn, 0x0001); |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
5315 | else |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
5316 | aim_odc_send_typing(od->sess, dim->conn, 0x0000); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
5317 | else { |
|
5300
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
5318 | /* Don't send if this turkey is in our deny list */ |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
5319 | GSList *list; |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
5320 | 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
|
5321 | if (!list) { |
| 7261 | 5322 | struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(gc->account, name)); |
|
5300
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
5323 | if (bi && bi->typingnot) { |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
5324 | if (typing == GAIM_TYPING) |
|
5300
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
5325 | aim_im_sendmtn(od->sess, 0x0001, name, 0x0002); |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5868
diff
changeset
|
5326 | else if (typing == GAIM_TYPED) |
|
5300
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
5327 | aim_im_sendmtn(od->sess, 0x0001, name, 0x0001); |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
5328 | else |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
5329 | aim_im_sendmtn(od->sess, 0x0001, name, 0x0000); |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
5330 | } |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
5331 | } |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
5332 | } |
| 2993 | 5333 | return 0; |
| 5334 | } | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
5335 | |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
5336 | static int gaim_odc_send_im(aim_session_t *, aim_conn_t *, const char *, GaimConvImFlags); |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
5337 | |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
5338 | static int oscar_send_im(GaimConnection *gc, const char *name, const char *message, GaimConvImFlags imflags) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5339 | OscarData *od = (OscarData *)gc->proto_data; |
| 8971 | 5340 | struct oscar_direct_im *dim = oscar_direct_im_find(od, name); |
|
2303
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
5341 | int ret = 0; |
| 5575 | 5342 | const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc)); |
|
8800
e9b59ded8f27
[gaim-migrate @ 9562]
Mark Doliner <markdoliner@pidgin.im>
parents:
8749
diff
changeset
|
5343 | char *tmpmsg = NULL, *tmpmsg2 = NULL; |
|
3458
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
5344 | |
|
4838
653f06ff2acf
[gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
5345 | if (dim && dim->connected) { |
|
653f06ff2acf
[gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
5346 | /* If we're directly connected, send a direct IM */ |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6907
diff
changeset
|
5347 | ret = gaim_odc_send_im(od->sess, dim->conn, message, imflags); |
| 2086 | 5348 | } else { |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5349 | struct buddyinfo *bi; |
| 3008 | 5350 | struct aim_sendimext_args args; |
| 5351 | struct stat st; | |
|
6478
2c3fe7c8659b
[gaim-migrate @ 6991]
Robert McQueen <robot101@debian.org>
parents:
6465
diff
changeset
|
5352 | gsize len; |
| 8962 | 5353 | GaimConversation *conv = gaim_find_conversation_with_account(name, gaim_connection_get_account(gc)); |
| 5354 | ||
| 5355 | if (strstr(message, "<IMG ")) | |
| 5356 | gaim_conversation_write(conv, "", | |
| 5357 | _("Your IM Image was not sent. " | |
| 5358 | "You must be Direct Connected to send IM Images."), | |
| 5359 | GAIM_MESSAGE_ERROR, time(NULL)); | |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5360 | |
| 7261 | 5361 | bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(gc->account, name)); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5362 | if (!bi) { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5363 | bi = g_new0(struct buddyinfo, 1); |
| 7261 | 5364 | g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(gc->account, name)), bi); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5365 | } |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5366 | |
| 3008 | 5367 | args.flags = AIM_IMFLAGS_ACK | AIM_IMFLAGS_CUSTOMFEATURES; |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
5368 | if (od->icq) { |
|
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
5369 | args.features = features_icq; |
|
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
5370 | args.featureslen = sizeof(features_icq); |
| 3008 | 5371 | args.flags |= AIM_IMFLAGS_OFFLINE; |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
5372 | } else { |
|
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
5373 | args.features = features_aim; |
|
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
5374 | args.featureslen = sizeof(features_aim); |
|
4972
3dd342b21444
[gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents:
4969
diff
changeset
|
5375 | |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
5376 | if (imflags & GAIM_CONV_IM_AUTO_RESP) |
|
4972
3dd342b21444
[gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents:
4969
diff
changeset
|
5377 | args.flags |= AIM_IMFLAGS_AWAY; |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
5378 | } |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5379 | |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5380 | if (bi->ico_need) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5381 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5382 | "Sending buddy icon request with message\n"); |
| 3008 | 5383 | args.flags |= AIM_IMFLAGS_BUDDYREQ; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5384 | bi->ico_need = FALSE; |
| 3008 | 5385 | } |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5386 | |
| 5575 | 5387 | if (iconfile && !stat(iconfile, &st)) { |
|
8361
5418fa8917c4
[gaim-migrate @ 9086]
Mark Doliner <markdoliner@pidgin.im>
parents:
8359
diff
changeset
|
5388 | FILE *file = fopen(iconfile, "rb"); |
| 3008 | 5389 | if (file) { |
| 5390 | char *buf = g_malloc(st.st_size); | |
|
9532
32470c5a1d58
[gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
9481
diff
changeset
|
5391 | /* XXX - Use g_file_get_contents()? */ |
| 3008 | 5392 | fread(buf, 1, st.st_size, file); |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
5393 | fclose(file); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5394 | |
| 3008 | 5395 | args.iconlen = st.st_size; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5396 | args.iconsum = aimutil_iconsum(buf, st.st_size); |
| 3008 | 5397 | args.iconstamp = st.st_mtime; |
| 5398 | ||
| 7406 | 5399 | if ((args.iconlen != bi->ico_me_len) || (args.iconsum != bi->ico_me_csum) || (args.iconstamp != bi->ico_me_time)) { |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5400 | bi->ico_informed = FALSE; |
| 7406 | 5401 | bi->ico_sent = FALSE; |
| 5402 | } | |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5403 | |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5404 | if (!bi->ico_informed) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5405 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5406 | "Claiming to have a buddy icon\n"); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5407 | args.flags |= AIM_IMFLAGS_HASICON; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5408 | bi->ico_me_len = args.iconlen; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5409 | bi->ico_me_csum = args.iconsum; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5410 | bi->ico_me_time = args.iconstamp; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5411 | bi->ico_informed = TRUE; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5412 | } |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
5413 | |
| 3008 | 5414 | g_free(buf); |
| 2086 | 5415 | } |
| 5416 | } | |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5417 | |
| 3008 | 5418 | args.destsn = name; |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5419 | |
|
8985
5045635e6d86
[gaim-migrate @ 9760]
Mark Doliner <markdoliner@pidgin.im>
parents:
8984
diff
changeset
|
5420 | /* |
|
5045635e6d86
[gaim-migrate @ 9760]
Mark Doliner <markdoliner@pidgin.im>
parents:
8984
diff
changeset
|
5421 | * If we're IMing an ICQ user then send newlines as CR/LF and |
|
5045635e6d86
[gaim-migrate @ 9760]
Mark Doliner <markdoliner@pidgin.im>
parents:
8984
diff
changeset
|
5422 | * strip all HTML |
|
5045635e6d86
[gaim-migrate @ 9760]
Mark Doliner <markdoliner@pidgin.im>
parents:
8984
diff
changeset
|
5423 | */ |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
5424 | if (aim_sn_is_icq(name) ) { |
| 8995 | 5425 | /* being sent to an ICQ user */ |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
5426 | if (!aim_sn_is_icq(gaim_account_get_username(gc->account))) { |
| 8995 | 5427 | /* from an AIM user - ICQ receiving from AIM *expects the messsage to be HTML formatted* */ |
| 5428 | tmpmsg = gaim_str_add_cr(message); | |
| 5429 | } else { | |
| 5430 | /* from an ICQ user - do nothing */ | |
| 5431 | tmpmsg = g_strdup(message); | |
| 5432 | } | |
| 5433 | } else { | |
| 5434 | /* being sent to an AIM user */ | |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
5435 | if (aim_sn_is_icq(gaim_account_get_username(gc->account))) { |
| 8995 | 5436 | /* from an ICQ user */ |
| 5437 | tmpmsg2 = gaim_strdup_withhtml(message); | |
| 5438 | tmpmsg = gaim_escape_html(tmpmsg2); | |
| 5439 | g_free(tmpmsg2); | |
| 5440 | } else | |
| 5441 | tmpmsg = gaim_strdup_withhtml(message); | |
| 5442 | } | |
|
6310
efd8a4cbff53
[gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents:
6308
diff
changeset
|
5443 | len = strlen(tmpmsg); |
|
efd8a4cbff53
[gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents:
6308
diff
changeset
|
5444 | |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
5445 | gaim_plugin_oscar_convert_to_best_encoding(gc, name, tmpmsg, (char **)&args.msg, &args.msglen, &args.charset, &args.charsubset); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
5446 | gaim_debug_info("oscar", "Sending IM, charset=0x%04hx, charsubset=0x%04hx, length=%d\n", |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
5447 | args.charset, args.charsubset, args.msglen); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5448 | ret = aim_im_sendch1_ext(od->sess, &args); |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
5449 | g_free((char *)args.msg); |
| 2086 | 5450 | } |
|
4838
653f06ff2acf
[gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
5451 | |
|
6310
efd8a4cbff53
[gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents:
6308
diff
changeset
|
5452 | g_free(tmpmsg); |
|
efd8a4cbff53
[gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents:
6308
diff
changeset
|
5453 | |
|
2303
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
5454 | if (ret >= 0) |
|
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
5455 | return 1; |
|
6310
efd8a4cbff53
[gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents:
6308
diff
changeset
|
5456 | |
|
2303
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
5457 | return ret; |
| 2086 | 5458 | } |
| 5459 | ||
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5460 | static void oscar_get_info(GaimConnection *gc, const char *name) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5461 | OscarData *od = (OscarData *)gc->proto_data; |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5462 | |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
5463 | if (od->icq && aim_sn_is_icq(name)) |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
5464 | aim_icq_getallinfo(od->sess, name); |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
5465 | else |
| 7235 | 5466 | aim_locate_getinfoshort(od->sess, name, 0x00000003); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5467 | } |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5468 | |
|
8950
1b90ece5fb4f
[gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents:
8907
diff
changeset
|
5469 | #if 0 |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5470 | static void oscar_set_dir(GaimConnection *gc, const char *first, const char *middle, const char *last, |
| 3466 | 5471 | 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
|
5472 | /* 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
|
5473 | OscarData *od = (OscarData *)gc->proto_data; |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5474 | aim_locate_setdirinfo(od->sess, first, middle, last, |
| 2086 | 5475 | maiden, NULL, NULL, city, state, NULL, 0, web); |
| 5476 | } | |
|
8950
1b90ece5fb4f
[gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents:
8907
diff
changeset
|
5477 | #endif |
| 2086 | 5478 | |
| 5575 | 5479 | static void oscar_set_idle(GaimConnection *gc, int time) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5480 | OscarData *od = (OscarData *)gc->proto_data; |
|
7474
757569d68123
[gaim-migrate @ 8087]
Mark Doliner <markdoliner@pidgin.im>
parents:
7465
diff
changeset
|
5481 | aim_srv_setidle(od->sess, time); |
| 2086 | 5482 | } |
| 5483 | ||
|
5954
58e43cf2dc1f
[gaim-migrate @ 6398]
Mark Doliner <markdoliner@pidgin.im>
parents:
5948
diff
changeset
|
5484 | static void oscar_set_info(GaimConnection *gc, const char *text) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5485 | OscarData *od = (OscarData *)gc->proto_data; |
|
9807
ff713acc7204
[gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents:
9806
diff
changeset
|
5486 | int charset = 0; |
|
6019
5be866245659
[gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents:
5975
diff
changeset
|
5487 | char *text_html = NULL; |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
5488 | char *msg = NULL; |
|
6478
2c3fe7c8659b
[gaim-migrate @ 6991]
Robert McQueen <robot101@debian.org>
parents:
6465
diff
changeset
|
5489 | gsize msglen = 0; |
| 2993 | 5490 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5491 | if (od->rights.maxsiglen == 0) |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5492 | gaim_notify_warning(gc, NULL, _("Unable to set AIM profile."), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5493 | _("You have probably requested to set your " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5494 | "profile before the login procedure completed. " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5495 | "Your profile remains unset; try setting it " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5496 | "again when you are fully connected.")); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5497 | |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5498 | if (!text) { |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5499 | aim_locate_setprofile(od->sess, NULL, "", 0, NULL, NULL, 0); |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5500 | return; |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5501 | } |
|
6019
5be866245659
[gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents:
5975
diff
changeset
|
5502 | |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5503 | text_html = gaim_strdup_withhtml(text); |
|
9807
ff713acc7204
[gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents:
9806
diff
changeset
|
5504 | charset = oscar_charset_check(text_html); |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
5505 | if (charset == AIM_CHARSET_UNICODE) { |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5506 | msg = g_convert(text_html, strlen(text_html), "UCS-2BE", "UTF-8", NULL, &msglen, NULL); |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5507 | aim_locate_setprofile(od->sess, "unicode-2-0", msg, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0); |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5508 | g_free(msg); |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
5509 | } else if (charset == AIM_CHARSET_CUSTOM) { |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5510 | msg = g_convert(text_html, strlen(text_html), "ISO-8859-1", "UTF-8", NULL, &msglen, NULL); |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5511 | aim_locate_setprofile(od->sess, "iso-8859-1", msg, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0); |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5512 | g_free(msg); |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5513 | } else { |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5514 | msglen = strlen(text_html); |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5515 | aim_locate_setprofile(od->sess, "us-ascii", text_html, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0); |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5516 | } |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5517 | |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5518 | if (msglen > od->rights.maxsiglen) { |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5519 | gchar *errstr; |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5520 | errstr = g_strdup_printf(ngettext("The maximum profile length of %d byte " |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5521 | "has been exceeded. Gaim has truncated it for you.", |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5522 | "The maximum profile length of %d bytes " |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5523 | "has been exceeded. Gaim has truncated it for you.", |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5524 | od->rights.maxsiglen), od->rights.maxsiglen); |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5525 | gaim_notify_warning(gc, NULL, _("Profile too long."), errstr); |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5526 | g_free(errstr); |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5527 | } |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5528 | |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5529 | g_free(text_html); |
| 2993 | 5530 | |
| 5531 | return; | |
| 2086 | 5532 | } |
| 5533 | ||
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5534 | static void |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5535 | oscar_set_status_aim(GaimAccount *account, GaimStatus *status) |
| 2993 | 5536 | { |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5537 | GaimConnection *gc = gaim_account_get_connection(account); |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5538 | OscarData *od = (OscarData *)gc->proto_data; |
|
9992
d733f96bfc7b
[gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents:
9991
diff
changeset
|
5539 | GaimStatusType *status_type; |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5540 | GaimStatusPrimitive primitive; |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5541 | GaimPresence *presence; |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5542 | const gchar *status_id; |
|
9807
ff713acc7204
[gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents:
9806
diff
changeset
|
5543 | int charset = 0; |
|
6019
5be866245659
[gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents:
5975
diff
changeset
|
5544 | gchar *text_html = NULL; |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
5545 | char *msg = NULL; |
|
6478
2c3fe7c8659b
[gaim-migrate @ 6991]
Robert McQueen <robot101@debian.org>
parents:
6465
diff
changeset
|
5546 | gsize msglen = 0; |
| 2993 | 5547 | |
|
9992
d733f96bfc7b
[gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents:
9991
diff
changeset
|
5548 | status_type = gaim_status_get_type(status); |
|
d733f96bfc7b
[gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents:
9991
diff
changeset
|
5549 | primitive = gaim_status_type_get_primitive(status_type); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5550 | status_id = gaim_status_get_id(status); |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5551 | presence = gaim_account_get_presence(account); |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5552 | |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5553 | if (primitive == GAIM_STATUS_HIDDEN) |
|
8257
49f32fa28ca7
[gaim-migrate @ 8980]
Mark Doliner <markdoliner@pidgin.im>
parents:
8250
diff
changeset
|
5554 | aim_setextstatus(od->sess, AIM_ICQ_STATE_INVISIBLE); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5555 | else |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5556 | aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL); |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5557 | |
|
8476
45ab15a421d8
[gaim-migrate @ 9209]
Mark Doliner <markdoliner@pidgin.im>
parents:
8461
diff
changeset
|
5558 | |
|
8257
49f32fa28ca7
[gaim-migrate @ 8980]
Mark Doliner <markdoliner@pidgin.im>
parents:
8250
diff
changeset
|
5559 | aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL); |
|
49f32fa28ca7
[gaim-migrate @ 8980]
Mark Doliner <markdoliner@pidgin.im>
parents:
8250
diff
changeset
|
5560 | |
| 2993 | 5561 | if (od->rights.maxawaymsglen == 0) |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5562 | gaim_notify_warning(gc, NULL, _("Unable to set AIM away message."), |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5563 | _("You have probably requested to set your " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5564 | "away message before the login procedure " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5565 | "completed. You remain in a \"present\" " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5566 | "state; try setting it again when you are " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5567 | "fully connected.")); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
5568 | |
|
9992
d733f96bfc7b
[gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents:
9991
diff
changeset
|
5569 | if (primitive == GAIM_STATUS_AVAILABLE) { |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5570 | aim_locate_setprofile(od->sess, NULL, NULL, 0, NULL, "", 0); |
|
9995
df30c5175fd7
[gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents:
9992
diff
changeset
|
5571 | #if 0 |
|
df30c5175fd7
[gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents:
9992
diff
changeset
|
5572 | /* Set an available message */ |
|
df30c5175fd7
[gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents:
9992
diff
changeset
|
5573 | aim_locate_setprofile(od->sess, NULL, NULL, 0, NULL, "", 0); |
|
df30c5175fd7
[gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents:
9992
diff
changeset
|
5574 | aim_srv_setavailmsg(od->sess, text); |
|
df30c5175fd7
[gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents:
9992
diff
changeset
|
5575 | #endif |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
5576 | return; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
5577 | } |
|
9995
df30c5175fd7
[gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents:
9992
diff
changeset
|
5578 | |
|
df30c5175fd7
[gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents:
9992
diff
changeset
|
5579 | /* |
|
df30c5175fd7
[gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents:
9992
diff
changeset
|
5580 | * XXX - Using status_id below is definitely wrong. We want to get |
|
df30c5175fd7
[gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents:
9992
diff
changeset
|
5581 | * the away message that the Gaim user just set. We probably want |
|
df30c5175fd7
[gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents:
9992
diff
changeset
|
5582 | * to get a certain attribute from status->attr_values, but I don't |
|
df30c5175fd7
[gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents:
9992
diff
changeset
|
5583 | * think any of that is implemented yet. |
|
df30c5175fd7
[gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents:
9992
diff
changeset
|
5584 | * |
|
df30c5175fd7
[gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents:
9992
diff
changeset
|
5585 | * Something like |
|
df30c5175fd7
[gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents:
9992
diff
changeset
|
5586 | * text_html = gaim_status_get_attr_string(status, "message"); |
|
df30c5175fd7
[gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents:
9992
diff
changeset
|
5587 | */ |
|
df30c5175fd7
[gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents:
9992
diff
changeset
|
5588 | status_id = gaim_status_get_name(status); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5589 | text_html = gaim_strdup_withhtml(status_id); |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5590 | |
|
9807
ff713acc7204
[gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents:
9806
diff
changeset
|
5591 | charset = oscar_charset_check(text_html); |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
5592 | if (charset == AIM_CHARSET_UNICODE) { |
|
6019
5be866245659
[gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents:
5975
diff
changeset
|
5593 | msg = g_convert(text_html, strlen(text_html), "UCS-2BE", "UTF-8", NULL, &msglen, NULL); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5594 | aim_locate_setprofile(od->sess, NULL, NULL, 0, "unicode-2-0", msg, |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5595 | (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen)); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
5596 | g_free(msg); |
|
9826
8fd989d134e0
[gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents:
9810
diff
changeset
|
5597 | } else if (charset == AIM_CHARSET_CUSTOM) { |
|
6019
5be866245659
[gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents:
5975
diff
changeset
|
5598 | msg = g_convert(text_html, strlen(text_html), "ISO-8859-1", "UTF-8", NULL, &msglen, NULL); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5599 | aim_locate_setprofile(od->sess, NULL, NULL, 0, "iso-8859-1", msg, |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5600 | (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen)); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
5601 | g_free(msg); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
5602 | } else { |
|
6019
5be866245659
[gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents:
5975
diff
changeset
|
5603 | msglen = strlen(text_html); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
5604 | aim_locate_setprofile(od->sess, NULL, NULL, 0, "us-ascii", text_html, |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
5605 | (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen)); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
5606 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
5607 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
5608 | if (msglen > od->rights.maxawaymsglen) { |
| 2993 | 5609 | gchar *errstr; |
| 5610 | ||
|
6308
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
6302
diff
changeset
|
5611 | errstr = g_strdup_printf(ngettext("The maximum away message length of %d byte " |
|
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
6302
diff
changeset
|
5612 | "has been exceeded. Gaim has truncated it for you.", |
|
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
6302
diff
changeset
|
5613 | "The maximum away message length of %d bytes " |
|
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
6302
diff
changeset
|
5614 | "has been exceeded. Gaim has truncated it for you.", |
|
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
6302
diff
changeset
|
5615 | od->rights.maxawaymsglen), od->rights.maxawaymsglen); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5616 | gaim_notify_warning(gc, NULL, _("Away message too long."), errstr); |
| 2993 | 5617 | g_free(errstr); |
| 5618 | } | |
|
6019
5be866245659
[gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents:
5975
diff
changeset
|
5619 | |
|
5be866245659
[gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents:
5975
diff
changeset
|
5620 | g_free(text_html); |
|
8257
49f32fa28ca7
[gaim-migrate @ 8980]
Mark Doliner <markdoliner@pidgin.im>
parents:
8250
diff
changeset
|
5621 | |
| 2993 | 5622 | return; |
| 5623 | } | |
| 5624 | ||
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5625 | static void |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5626 | oscar_set_status_icq(GaimAccount *account, GaimStatus *status) |
| 2993 | 5627 | { |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5628 | GaimConnection *gc = gaim_account_get_connection(account); |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5629 | OscarData *od = (OscarData *)gc->proto_data; |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5630 | const gchar *status_id = gaim_status_get_id(status); |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5631 | |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5632 | if (gaim_status_type_get_primitive(gaim_status_get_type(status)) == GAIM_STATUS_HIDDEN) |
| 5575 | 5633 | account->perm_deny = 4; |
|
8265
ff840ad070be
[gaim-migrate @ 8988]
Mark Doliner <markdoliner@pidgin.im>
parents:
8257
diff
changeset
|
5634 | else |
| 5575 | 5635 | account->perm_deny = 3; |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5636 | |
|
8265
ff840ad070be
[gaim-migrate @ 8988]
Mark Doliner <markdoliner@pidgin.im>
parents:
8257
diff
changeset
|
5637 | if ((od->sess->ssi.received_data) && (aim_ssi_getpermdeny(od->sess->ssi.local) != account->perm_deny)) |
|
ff840ad070be
[gaim-migrate @ 8988]
Mark Doliner <markdoliner@pidgin.im>
parents:
8257
diff
changeset
|
5638 | aim_ssi_setpermdeny(od->sess, account->perm_deny, 0xffffffff); |
| 4342 | 5639 | |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5640 | if (!strcmp(status_id, OSCAR_STATUS_ID_ONLINE)) |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
5641 | aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5642 | |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5643 | else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY)) |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
5644 | aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5645 | |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5646 | else if (!strcmp(status_id, OSCAR_STATUS_ID_DND)) |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
5647 | aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_DND | AIM_ICQ_STATE_BUSY); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5648 | |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5649 | else if (!strcmp(status_id, OSCAR_STATUS_ID_NA)) |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
5650 | aim_setextstatus(od->sess, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5651 | |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5652 | else if (!strcmp(status_id, OSCAR_STATUS_ID_OCCUPIED)) |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
5653 | aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_BUSY); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5654 | |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5655 | else if (!strcmp(status_id, OSCAR_STATUS_ID_FREE4CHAT)) |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
5656 | aim_setextstatus(od->sess, AIM_ICQ_STATE_CHAT); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5657 | |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5658 | else if (!strcmp(status_id, OSCAR_STATUS_ID_INVISIBLE)) |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
5659 | aim_setextstatus(od->sess, AIM_ICQ_STATE_INVISIBLE); |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5660 | |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5661 | else if (!strcmp(status_id, OSCAR_STATUS_ID_CUSTOM)) |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5662 | aim_setextstatus(od->sess, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY); |
| 2993 | 5663 | |
| 5664 | return; | |
| 5665 | } | |
| 5666 | ||
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5667 | static void |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5668 | oscar_set_status(GaimAccount *account, GaimStatus *status) |
| 2993 | 5669 | { |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5670 | GaimConnection *gc = gaim_account_get_connection(account); |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5671 | OscarData *od = (OscarData *)gc->proto_data; |
| 2993 | 5672 | |
| 5673 | if (od->icq) | |
| 9988 | 5674 | oscar_set_status_icq(account, status); |
| 2993 | 5675 | else |
| 9988 | 5676 | oscar_set_status_aim(account, status); |
| 2993 | 5677 | |
| 5678 | return; | |
| 2086 | 5679 | } |
| 5680 | ||
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5681 | static void |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
5682 | oscar_warn(GaimConnection *gc, const char *name, gboolean anonymous) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5683 | OscarData *od = (OscarData *)gc->proto_data; |
|
9753
5951fd24250e
[gaim-migrate @ 10620]
Mark Doliner <markdoliner@pidgin.im>
parents:
9730
diff
changeset
|
5684 | aim_im_warn(od->sess, od->conn, name, anonymous ? AIM_WARN_ANON : 0); |
| 2086 | 5685 | } |
| 5686 | ||
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5687 | static void oscar_add_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5688 | OscarData *od = (OscarData *)gc->proto_data; |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5689 | |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5690 | if (!aim_snvalid(buddy->name)) { |
|
8092
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
5691 | gchar *buf; |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5692 | buf = g_strdup_printf(_("Could not add the buddy %s because the screen name is invalid. Screen names must either start with a letter and contain only letters, numbers and spaces, or contain only numbers."), buddy->name); |
| 9627 | 5693 | if (!gaim_conv_present_error(buddy->name, gaim_connection_get_account(gc), buf)) |
| 5694 | gaim_notify_error(gc, NULL, _("Unable To Add"), buf); | |
|
8092
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
5695 | g_free(buf); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5696 | |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5697 | /* Remove from local list */ |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5698 | gaim_blist_remove_buddy(buddy); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5699 | |
|
8092
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
5700 | return; |
|
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
5701 | } |
|
ba92ce841814
[gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents:
8077
diff
changeset
|
5702 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5703 | #ifdef NOSSI |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5704 | aim_buddylist_addbuddy(od->sess, od->conn, buddy->name); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5705 | #else |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5706 | if ((od->sess->ssi.received_data) && !(aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))) { |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5707 | if (buddy && group) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5708 | gaim_debug_info("oscar", |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5709 | "ssi: adding buddy %s to group %s\n", buddy->name, group->name); |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
5710 | aim_ssi_addbuddy(od->sess, buddy->name, group->name, gaim_buddy_get_alias_only(buddy), NULL, NULL, 0); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5711 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5712 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5713 | #endif |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5714 | |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
5715 | if (od->icq) |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5716 | aim_icq_getalias(od->sess, buddy->name); |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5717 | } |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5718 | |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5719 | static void oscar_add_buddies(GaimConnection *gc, GList *buddies, GList *groups) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5720 | OscarData *od = (OscarData *)gc->proto_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5721 | #ifdef NOSSI |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5722 | char buf[MSG_LEN]; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5723 | int n=0; |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5724 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5725 | while (buddies) { |
|
9381
a075315bedbf
[gaim-migrate @ 10189]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9318
diff
changeset
|
5726 | GaimBuddy *buddy = buddies->data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5727 | if (n > MSG_LEN - 18) { |
|
7285
b9d07d0c9bc2
[gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents:
7283
diff
changeset
|
5728 | aim_buddylist_set(od->sess, od->conn, buf); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5729 | n = 0; |
| 3092 | 5730 | } |
|
9381
a075315bedbf
[gaim-migrate @ 10189]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9318
diff
changeset
|
5731 | n += g_snprintf(buf + n, sizeof(buf) - n, "%s&", buddy->name); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5732 | buddies = buddies->next; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5733 | } |
|
7285
b9d07d0c9bc2
[gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents:
7283
diff
changeset
|
5734 | aim_buddylist_set(od->sess, od->conn, buf); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5735 | #else |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5736 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5737 | if (od->sess->ssi.received_data) { |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5738 | GList *curb = buddies; |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5739 | GList *curg = groups; |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5740 | while ((curb != NULL) && (curg != NULL)) { |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5741 | GaimBuddy *buddy = curb->data; |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5742 | GaimGroup *group = curg->data; |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5743 | oscar_add_buddy(gc, buddy, group); |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5744 | curb = curb->next; |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5745 | curg = curg->next; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5746 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5747 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5748 | #endif |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5749 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5750 | |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5751 | static void oscar_remove_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5752 | OscarData *od = (OscarData *)gc->proto_data; |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5753 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5754 | #ifdef NOSSI |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5755 | aim_buddylist_removebuddy(od->sess, od->conn, buddy->name); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5756 | #else |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5757 | if (od->sess->ssi.received_data) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5758 | gaim_debug_info("oscar", |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5759 | "ssi: deleting buddy %s from group %s\n", buddy->name, group->name); |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5760 | aim_ssi_delbuddy(od->sess, buddy->name, group->name); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5761 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5762 | #endif |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5763 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5764 | |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5765 | static void oscar_remove_buddies(GaimConnection *gc, GList *buddies, GList *groups) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5766 | OscarData *od = (OscarData *)gc->proto_data; |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5767 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5768 | #ifdef NOSSI |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5769 | for (cur = buddies; cur != NULL; cur = cur->next) { |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5770 | GaimBuddy *buddy = cur->data; |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5771 | aim_buddylist_removebuddy(od->sess, od->conn, buddy->name); |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5772 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5773 | #else |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5774 | if (od->sess->ssi.received_data) { |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5775 | GList *curb = buddies; |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5776 | GList *curg = groups; |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5777 | while ((curb != NULL) && (curg != NULL)) { |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5778 | GaimBuddy *buddy = curb->data; |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5779 | GaimGroup *group = curg->data; |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5780 | oscar_remove_buddy(gc, buddy, group); |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5781 | curb = curb->next; |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5782 | curg = curg->next; |
| 3092 | 5783 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5784 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5785 | #endif |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5786 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5787 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5788 | #ifndef NOSSI |
| 5575 | 5789 | static void oscar_move_buddy(GaimConnection *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
|
5790 | OscarData *od = (OscarData *)gc->proto_data; |
|
4303
121490448a58
[gaim-migrate @ 4557]
Mark Doliner <markdoliner@pidgin.im>
parents:
4299
diff
changeset
|
5791 | if (od->sess->ssi.received_data && strcmp(old_group, new_group)) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5792 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5793 | "ssi: moving buddy %s from group %s to group %s\n", name, old_group, new_group); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
5794 | aim_ssi_movebuddy(od->sess, old_group, new_group, name); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5795 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5796 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5797 | |
| 5575 | 5798 | static void oscar_alias_buddy(GaimConnection *gc, const char *name, const char *alias) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5799 | OscarData *od = (OscarData *)gc->proto_data; |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5800 | if (od->sess->ssi.received_data) { |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5801 | char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, name); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5802 | if (gname) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5803 | gaim_debug_info("oscar", |
|
9586
cb4e6ae1f4b1
[gaim-migrate @ 10429]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9554
diff
changeset
|
5804 | "ssi: changing the alias for buddy %s to %s\n", name, alias ? alias : "(none)"); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
5805 | aim_ssi_aliasbuddy(od->sess, gname, name, alias); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5806 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5807 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5808 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5809 | |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5810 | static void oscar_rename_group(GaimConnection *gc, const char *old_name, GaimGroup *group, GList *moved_buddies) { |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
5811 | OscarData *od = (OscarData *)gc->proto_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5812 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5813 | if (od->sess->ssi.received_data) { |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5814 | if (aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, NULL, AIM_SSI_TYPE_GROUP)) { |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5815 | GList *cur, *groups = NULL; |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5816 | |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5817 | /* Make a list of what the groups each buddy is in */ |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5818 | for (cur = moved_buddies; cur != NULL; cur = cur->next) { |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5819 | GaimBlistNode *node = cur->data; |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5820 | groups = g_list_append(groups, node->parent); |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5821 | } |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5822 | |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5823 | oscar_remove_buddies(gc, moved_buddies, groups); |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5824 | oscar_add_buddies(gc, moved_buddies, groups); |
|
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5825 | g_list_free(groups); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5826 | gaim_debug_info("oscar", |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5827 | "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
|
5828 | } else { |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5829 | aim_ssi_rename_group(od->sess, old_name, group->name); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5830 | gaim_debug_info("oscar", |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
5831 | "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
|
5832 | } |
|
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
5833 | } |
|
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
5834 | } |
|
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
5835 | |
|
5968
f3e4bc7bd718
[gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents:
5954
diff
changeset
|
5836 | static gboolean gaim_ssi_rerequestdata(gpointer data) { |
|
f3e4bc7bd718
[gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents:
5954
diff
changeset
|
5837 | aim_session_t *sess = data; |
| 6350 | 5838 | aim_ssi_reqdata(sess); |
|
5968
f3e4bc7bd718
[gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents:
5954
diff
changeset
|
5839 | return FALSE; |
|
f3e4bc7bd718
[gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents:
5954
diff
changeset
|
5840 | } |
|
f3e4bc7bd718
[gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents:
5954
diff
changeset
|
5841 | |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5842 | static int gaim_ssi_parseerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 5843 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5844 | OscarData *od = gc->proto_data; |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5845 | va_list ap; |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5846 | fu16_t reason; |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5847 | |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5848 | va_start(ap, fr); |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5849 | reason = (fu16_t)va_arg(ap, unsigned int); |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5850 | va_end(ap); |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5851 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5852 | gaim_debug_error("oscar", "ssi: SNAC error %hu\n", reason); |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5853 | |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5854 | if (reason == 0x0005) { |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
5855 | gaim_notify_error(gc, NULL, _("Unable To Retrieve Buddy List"), |
| 5828 | 5856 | _("Gaim was temporarily unable to retrieve your buddy list from the AIM servers. Your buddy list is not lost, and will probably become available in a few hours.")); |
| 8273 | 5857 | od->getblisttimer = gaim_timeout_add(300000, gaim_ssi_rerequestdata, od->sess); |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5858 | } |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5859 | |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5860 | /* Activate SSI */ |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5861 | /* 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
|
5862 | /* Make sure your privacy setting/invisibility is set how you want it before this! */ |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5863 | gaim_debug_info("oscar", "ssi: activating server-stored buddy list\n"); |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5864 | aim_ssi_enable(od->sess); |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5865 | |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5866 | return 1; |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5867 | } |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
5868 | |
| 2991 | 5869 | static int gaim_ssi_parserights(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 5870 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5871 | OscarData *od = (OscarData *)gc->proto_data; |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
5872 | int i; |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
5873 | va_list ap; |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
5874 | int numtypes; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5875 | fu16_t *maxitems; |
| 2991 | 5876 | |
| 5877 | va_start(ap, fr); | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5878 | numtypes = va_arg(ap, int); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5879 | maxitems = va_arg(ap, fu16_t *); |
| 2991 | 5880 | va_end(ap); |
| 5881 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5882 | gaim_debug_misc("oscar", "ssi rights:"); |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5208
diff
changeset
|
5883 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5884 | for (i=0; i<numtypes; i++) |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5885 | gaim_debug_misc(NULL, " max type 0x%04x=%hd,", |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5208
diff
changeset
|
5886 | i, maxitems[i]); |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5208
diff
changeset
|
5887 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5888 | gaim_debug_misc(NULL, "\n"); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5889 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5890 | if (numtypes >= 0) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5891 | od->rights.maxbuddies = maxitems[0]; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5892 | if (numtypes >= 1) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5893 | od->rights.maxgroups = maxitems[1]; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5894 | if (numtypes >= 2) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5895 | od->rights.maxpermits = maxitems[2]; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5896 | if (numtypes >= 3) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5897 | od->rights.maxdenies = maxitems[3]; |
| 2991 | 5898 | |
| 5899 | return 1; | |
| 5900 | } | |
| 5901 | ||
| 5902 | static int gaim_ssi_parselist(aim_session_t *sess, aim_frame_t *fr, ...) { | |
| 5575 | 5903 | GaimConnection *gc = sess->aux_data; |
| 5904 | GaimAccount *account = gaim_connection_get_account(gc); | |
| 9988 | 5905 | GaimStatus *status; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
5906 | OscarData *od = (OscarData *)gc->proto_data; |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5907 | GaimGroup *g; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5908 | GaimBuddy *b; |
|
2995
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
5909 | struct aim_ssi_item *curitem; |
| 2991 | 5910 | int tmp; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5911 | va_list ap; |
| 8219 | 5912 | fu16_t fmtver, numitems; |
| 5913 | struct aim_ssi_item *items; | |
| 5914 | fu32_t timestamp; | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5915 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5916 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5917 | fmtver = (fu16_t)va_arg(ap, int); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5918 | numitems = (fu16_t)va_arg(ap, int); |
| 8219 | 5919 | items = va_arg(ap, struct aim_ssi_item *); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5920 | timestamp = va_arg(ap, fu32_t); |
| 8219 | 5921 | va_end(ap); |
| 2991 | 5922 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5923 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5924 | "ssi: syncing local list and server list\n"); |
| 2991 | 5925 | |
| 8219 | 5926 | if ((timestamp == 0) || (numitems == 0)) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5927 | gaim_debug_info("oscar", "Got AIM SSI with a 0 timestamp or 0 numitems--not syncing. This probably means your buddy list is empty.", NULL); |
| 8219 | 5928 | return 1; |
| 5929 | } | |
| 5930 | ||
| 2991 | 5931 | /* Clean the buddy list */ |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
5932 | aim_ssi_cleanlist(sess); |
| 2991 | 5933 | |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5934 | { /* If not in server list then prune from local list */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5935 | GaimBlistNode *gnode, *cnode, *bnode; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5936 | GaimBuddyList *blist; |
|
9539
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
5937 | GSList *cur, *next; |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5938 | |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5939 | /* Buddies */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5940 | cur = NULL; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5941 | if ((blist = gaim_get_blist()) != NULL) { |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5942 | for (gnode = blist->root; gnode; gnode = gnode->next) { |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5943 | if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5944 | continue; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5945 | g = (GaimGroup *)gnode; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5946 | for (cnode = gnode->child; cnode; cnode = cnode->next) { |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5947 | if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5948 | continue; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5949 | for (bnode = cnode->child; bnode; bnode = bnode->next) { |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5950 | if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5951 | continue; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5952 | b = (GaimBuddy *)bnode; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5953 | if (b->account == gc->account) { |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5954 | if (aim_ssi_itemlist_exists(sess->ssi.local, b->name)) { |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5955 | /* If the buddy is an ICQ user then load his nickname */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5956 | const char *servernick = gaim_blist_node_get_string((GaimBlistNode*)b, "servernick"); |
| 8214 | 5957 | char *alias; |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5958 | if (servernick) |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5959 | serv_got_alias(gc, b->name, servernick); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5960 | |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5961 | /* Store local alias on server */ |
| 8214 | 5962 | alias = aim_ssi_getalias(sess->ssi.local, g->name, b->name); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5963 | if (!alias && b->alias && strlen(b->alias)) |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5964 | aim_ssi_aliasbuddy(sess, g->name, b->name, b->alias); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5965 | free(alias); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5966 | } else { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5967 | gaim_debug_info("oscar", |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5968 | "ssi: removing buddy %s from local list\n", b->name); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5969 | /* 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
|
5970 | cur = g_slist_prepend(cur, b); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5971 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5972 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5973 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5974 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5975 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5976 | } |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
5977 | |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5978 | while (cur != NULL) { |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5979 | b = cur->data; |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5980 | cur = g_slist_remove(cur, b); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5981 | gaim_blist_remove_buddy(b); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5982 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5983 | |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5984 | /* Permit list */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5985 | if (gc->account->permit) { |
|
9539
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
5986 | next = gc->account->permit; |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
5987 | while (next != NULL) { |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
5988 | cur = next; |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
5989 | next = next->next; |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5990 | if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_PERMIT)) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
5991 | gaim_debug_info("oscar", |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5992 | "ssi: removing permit %s from local list\n", (const char *)cur->data); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5993 | gaim_privacy_permit_remove(account, cur->data, TRUE); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5994 | } |
|
9539
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
5995 | } |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5996 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5997 | |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5998 | /* Deny list */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
5999 | if (gc->account->deny) { |
|
9539
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
6000 | next = gc->account->deny; |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
6001 | while (next != NULL) { |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
6002 | cur = next; |
|
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
6003 | next = next->next; |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6004 | if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_DENY)) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6005 | gaim_debug_info("oscar", |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6006 | "ssi: removing deny %s from local list\n", (const char *)cur->data); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6007 | gaim_privacy_deny_remove(account, cur->data, TRUE); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6008 | } |
|
9539
5528f58dea4d
[gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents:
9532
diff
changeset
|
6009 | } |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6010 | } |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6011 | /* Presence settings (idle time visibility) */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6012 | if ((tmp = aim_ssi_getpresence(sess->ssi.local)) != 0xFFFFFFFF) |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6013 | if (!(tmp & 0x400)) |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6014 | aim_ssi_setpresence(sess, tmp | 0x400); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6015 | } /* end pruning buddies from local list */ |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6016 | |
| 2991 | 6017 | /* Add from server list to local list */ |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6018 | for (curitem=sess->ssi.local; curitem; curitem=curitem->next) { |
|
7328
978db7a49075
[gaim-migrate @ 7914]
Mark Doliner <markdoliner@pidgin.im>
parents:
7313
diff
changeset
|
6019 | if ((curitem->name == NULL) || (g_utf8_validate(curitem->name, -1, NULL))) |
| 2991 | 6020 | switch (curitem->type) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6021 | case 0x0000: { /* Buddy */ |
|
4251
7d62db57d86a
[gaim-migrate @ 4501]
Mark Doliner <markdoliner@pidgin.im>
parents:
4249
diff
changeset
|
6022 | if (curitem->name) { |
|
4292
249d89e1b14c
[gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents:
4282
diff
changeset
|
6023 | char *gname = aim_ssi_itemlist_findparentname(sess->ssi.local, curitem->name); |
|
7166
70825074f830
[gaim-migrate @ 7733]
Mark Doliner <markdoliner@pidgin.im>
parents:
7164
diff
changeset
|
6024 | char *gname_utf8 = gname ? gaim_utf8_try_convert(gname) : NULL; |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
6025 | char *alias = aim_ssi_getalias(sess->ssi.local, gname, curitem->name); |
|
7166
70825074f830
[gaim-migrate @ 7733]
Mark Doliner <markdoliner@pidgin.im>
parents:
7164
diff
changeset
|
6026 | char *alias_utf8 = alias ? gaim_utf8_try_convert(alias) : NULL; |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6027 | b = gaim_find_buddy(gc->account, curitem->name); |
| 4458 | 6028 | /* Should gname be freed here? -- elb */ |
|
4754
216cd548ad68
[gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents:
4744
diff
changeset
|
6029 | /* Not with the current code, but that might be cleaner -- med */ |
| 4458 | 6030 | free(alias); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6031 | if (b) { |
|
4292
249d89e1b14c
[gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents:
4282
diff
changeset
|
6032 | /* Get server stored alias */ |
| 4705 | 6033 | if (alias_utf8) { |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6034 | g_free(b->alias); |
|
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6035 | b->alias = g_strdup(alias_utf8); |
| 4705 | 6036 | } |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
6037 | } else { |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6038 | b = gaim_buddy_new(gc->account, curitem->name, alias_utf8); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
6039 | |
|
4754
216cd548ad68
[gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents:
4744
diff
changeset
|
6040 | if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) { |
| 4687 | 6041 | g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans")); |
|
4754
216cd548ad68
[gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents:
4744
diff
changeset
|
6042 | gaim_blist_add_group(g, NULL); |
|
216cd548ad68
[gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents:
4744
diff
changeset
|
6043 | } |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
6044 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6045 | gaim_debug_info("oscar", |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6046 | "ssi: adding buddy %s to group %s to local list\n", curitem->name, gname_utf8 ? gname_utf8 : _("Orphans")); |
|
8150
1b48c11a456e
[gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents:
8143
diff
changeset
|
6047 | gaim_blist_add_buddy(b, NULL, g, NULL); |
|
4251
7d62db57d86a
[gaim-migrate @ 4501]
Mark Doliner <markdoliner@pidgin.im>
parents:
4249
diff
changeset
|
6048 | } |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
6049 | if (!aim_sncmp(curitem->name, account->username)) { |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
6050 | char *comment = aim_ssi_getcomment(sess->ssi.local, gname, curitem->name); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
6051 | gaim_check_comment(od, comment); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
6052 | free(comment); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
6053 | } |
| 7162 | 6054 | g_free(gname_utf8); |
| 6055 | g_free(alias_utf8); | |
| 2991 | 6056 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6057 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6058 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6059 | case 0x0001: { /* Group */ |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
6060 | /* Shouldn't add empty groups */ |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6061 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6062 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6063 | case 0x0002: { /* Permit buddy */ |
| 2991 | 6064 | if (curitem->name) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6065 | /* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */ |
| 2991 | 6066 | GSList *list; |
| 5575 | 6067 | for (list=account->permit; (list && aim_sncmp(curitem->name, list->data)); list=list->next); |
| 2991 | 6068 | if (!list) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6069 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6070 | "ssi: adding permit buddy %s to local list\n", curitem->name); |
|
6400
fc73d6446a5b
[gaim-migrate @ 6905]
Christian Hammond <chipx86@chipx86.com>
parents:
6378
diff
changeset
|
6071 | gaim_privacy_permit_add(account, curitem->name, TRUE); |
| 2991 | 6072 | } |
| 6073 | } | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6074 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6075 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6076 | case 0x0003: { /* Deny buddy */ |
| 2991 | 6077 | if (curitem->name) { |
| 6078 | GSList *list; | |
| 5575 | 6079 | for (list=account->deny; (list && aim_sncmp(curitem->name, list->data)); list=list->next); |
| 2991 | 6080 | if (!list) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6081 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6082 | "ssi: adding deny buddy %s to local list\n", curitem->name); |
|
6400
fc73d6446a5b
[gaim-migrate @ 6905]
Christian Hammond <chipx86@chipx86.com>
parents:
6378
diff
changeset
|
6083 | gaim_privacy_deny_add(account, curitem->name, TRUE); |
| 2991 | 6084 | } |
| 6085 | } | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6086 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6087 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6088 | case 0x0004: { /* Permit/deny setting */ |
| 2991 | 6089 | if (curitem->data) { |
| 6090 | fu8_t permdeny; | |
| 5575 | 6091 | if ((permdeny = aim_ssi_getpermdeny(sess->ssi.local)) && (permdeny != account->perm_deny)) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6092 | gaim_debug_info("oscar", |
| 5575 | 6093 | "ssi: changing permdeny from %d to %hhu\n", account->perm_deny, permdeny); |
| 6094 | account->perm_deny = permdeny; | |
| 6095 | if (od->icq && account->perm_deny == 0x03) { | |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6096 | gaim_presence_switch_status(account->presence, OSCAR_STATUS_ID_INVISIBLE); |
| 4342 | 6097 | } |
| 2991 | 6098 | } |
| 6099 | } | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6100 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6101 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6102 | case 0x0005: { /* Presence setting */ |
|
3109
c193eb9c1c30
[gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents:
3106
diff
changeset
|
6103 | /* We don't want to change Gaim's setting because it applies to all accounts */ |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6104 | } break; |
| 2991 | 6105 | } /* End of switch on curitem->type */ |
| 6106 | } /* End of for loop */ | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6107 | |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6108 | /* |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6109 | * XXX - STATUS - Set our ICQ status. We probably don't want to do |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6110 | * this. We probably want the SSI status setting to override the local |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6111 | * setting. |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6112 | */ |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
6113 | status = gaim_presence_get_active_status(account->presence); |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
6114 | if (gaim_status_is_available(status)) |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
6115 | aim_setextstatus(sess, AIM_ICQ_STATE_NORMAL); |
|
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
6116 | |
| 4342 | 6117 | /* Activate SSI */ |
| 6118 | /* Sending the enable causes other people to be able to see you, and you to see them */ | |
| 6119 | /* Make sure your privacy setting/invisibility is set how you want it before this! */ | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6120 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6121 | "ssi: activating server-stored buddy list\n"); |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
6122 | aim_ssi_enable(sess); |
| 4342 | 6123 | |
| 2991 | 6124 | return 1; |
| 2086 | 6125 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6126 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6127 | static int gaim_ssi_parseack(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 6128 | GaimConnection *gc = sess->aux_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6129 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6130 | struct aim_ssi_tmp *retval; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6131 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6132 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6133 | retval = va_arg(ap, struct aim_ssi_tmp *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6134 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6135 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6136 | while (retval) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6137 | gaim_debug_misc("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6138 | "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
|
6139 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6140 | if (retval->ack != 0xffff) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6141 | switch (retval->ack) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6142 | case 0x0000: { /* added successfully */ |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6143 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6144 | |
|
4829
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
6145 | 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
|
6146 | gchar *buf; |
|
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
6147 | buf = g_strdup_printf(_("Could not add the buddy %s because you have too many buddies in your buddy list. Please remove one and try again."), (retval->name ? retval->name : _("(no name)"))); |
|
9758
bad4efbbfbf5
[gaim-migrate @ 10625]
Mark Doliner <markdoliner@pidgin.im>
parents:
9754
diff
changeset
|
6148 | if ((retval->name != NULL) && !gaim_conv_present_error(retval->name, gaim_connection_get_account(gc), buf)) |
| 9627 | 6149 | gaim_notify_error(gc, NULL, _("Unable To Add"), buf); |
|
4829
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
6150 | g_free(buf); |
|
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
6151 | } |
|
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
6152 | |
| 7023 | 6153 | case 0x000e: { /* buddy requires authorization */ |
|
4828
a7a331159e7d
[gaim-migrate @ 5153]
Mark Doliner <markdoliner@pidgin.im>
parents:
4827
diff
changeset
|
6154 | if ((retval->action == AIM_CB_SSI_ADD) && (retval->name)) |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6155 | gaim_auth_sendrequest(gc, retval->name); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6156 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6157 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6158 | default: { /* La la la */ |
|
5197
ab4d919050d7
[gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents:
5167
diff
changeset
|
6159 | gchar *buf; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6160 | gaim_debug_error("oscar", "ssi: Action 0x%04hx was unsuccessful with error 0x%04hx\n", retval->action, retval->ack); |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
6161 | buf = g_strdup_printf(_("Could not add the buddy %s for an unknown reason. The most common reason for this is that you have the maximum number of allowed buddies in your buddy list."), (retval->name ? retval->name : _("(no name)"))); |
|
9758
bad4efbbfbf5
[gaim-migrate @ 10625]
Mark Doliner <markdoliner@pidgin.im>
parents:
9754
diff
changeset
|
6162 | if ((retval->name != NULL) && !gaim_conv_present_error(retval->name, gaim_connection_get_account(gc), buf)) |
| 9627 | 6163 | gaim_notify_error(gc, NULL, _("Unable To Add"), buf); |
|
5197
ab4d919050d7
[gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents:
5167
diff
changeset
|
6164 | g_free(buf); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6165 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6166 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6167 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6168 | retval = retval->next; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6169 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6170 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6171 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6172 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6173 | |
|
8227
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6174 | static int gaim_ssi_parseadd(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6175 | GaimConnection *gc = sess->aux_data; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6176 | char *gname, *gname_utf8, *alias, *alias_utf8; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6177 | GaimBuddy *b; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6178 | GaimGroup *g; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6179 | va_list ap; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6180 | fu16_t type; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6181 | const char *name; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6182 | |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6183 | va_start(ap, fr); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6184 | type = (fu16_t)va_arg(ap, int); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6185 | name = va_arg(ap, char *); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6186 | va_end(ap); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6187 | |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6188 | if ((type != 0x0000) || (name == NULL)) |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6189 | return 1; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6190 | |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6191 | gname = aim_ssi_itemlist_findparentname(sess->ssi.local, name); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6192 | gname_utf8 = gname ? gaim_utf8_try_convert(gname) : NULL; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6193 | alias = aim_ssi_getalias(sess->ssi.local, gname, name); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6194 | alias_utf8 = alias ? gaim_utf8_try_convert(alias) : NULL; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6195 | b = gaim_find_buddy(gc->account, name); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6196 | free(alias); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6197 | |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6198 | if (b) { |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6199 | /* Get server stored alias */ |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6200 | if (alias_utf8) { |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6201 | g_free(b->alias); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6202 | b->alias = g_strdup(alias_utf8); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6203 | } |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6204 | } else { |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6205 | b = gaim_buddy_new(gc->account, name, alias_utf8); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6206 | |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6207 | if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) { |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6208 | g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans")); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6209 | gaim_blist_add_group(g, NULL); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6210 | } |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6211 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6212 | gaim_debug_info("oscar", |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9244
diff
changeset
|
6213 | "ssi: adding buddy %s to group %s to local list\n", name, gname_utf8 ? gname_utf8 : _("Orphans")); |
|
8227
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6214 | gaim_blist_add_buddy(b, NULL, g, NULL); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6215 | } |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6216 | g_free(gname_utf8); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6217 | g_free(alias_utf8); |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6218 | |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6219 | return 1; |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6220 | } |
|
07e453e04577
[gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents:
8225
diff
changeset
|
6221 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6222 | static int gaim_ssi_authgiven(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 6223 | GaimConnection *gc = sess->aux_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6224 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6225 | char *sn, *msg; |
| 4236 | 6226 | gchar *dialog_msg, *nombre; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6227 | struct name_data *data; |
| 6695 | 6228 | GaimBuddy *buddy; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6229 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6230 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6231 | sn = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6232 | msg = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6233 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6234 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6235 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6236 | "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
|
6237 | |
| 4687 | 6238 | buddy = gaim_find_buddy(gc->account, sn); |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
6239 | if (buddy && (gaim_buddy_get_alias_only(buddy))) |
|
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
6240 | nombre = g_strdup_printf("%s (%s)", sn, gaim_buddy_get_alias_only(buddy)); |
| 4236 | 6241 | else |
| 6242 | nombre = g_strdup(sn); | |
| 6243 | ||
| 6244 | dialog_msg = g_strdup_printf(_("The user %s has given you permission to add you to their buddy list. Do you want to add them?"), nombre); | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6245 | data = g_new(struct name_data, 1); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6246 | data->gc = gc; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6247 | data->name = g_strdup(sn); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6248 | data->nick = NULL; |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
6249 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
6250 | gaim_request_yes_no(gc, NULL, _("Authorization Given"), dialog_msg, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
6251 | 0, data, |
| 7023 | 6252 | G_CALLBACK(gaim_icq_buddyadd), |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
6253 | G_CALLBACK(oscar_free_name_data)); |
| 4236 | 6254 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6255 | g_free(dialog_msg); |
| 4236 | 6256 | g_free(nombre); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6257 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6258 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6259 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6260 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6261 | static int gaim_ssi_authrequest(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 6262 | GaimConnection *gc = sess->aux_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6263 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6264 | char *sn, *msg; |
| 4236 | 6265 | gchar *dialog_msg, *nombre; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6266 | struct name_data *data; |
| 6695 | 6267 | GaimBuddy *buddy; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6268 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6269 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6270 | sn = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6271 | msg = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6272 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6273 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6274 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6275 | "ssi: received authorization request from %s\n", sn); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6276 | |
| 4687 | 6277 | buddy = gaim_find_buddy(gc->account, sn); |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
6278 | if (buddy && (gaim_buddy_get_alias_only(buddy))) |
|
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
6279 | nombre = g_strdup_printf("%s (%s)", sn, gaim_buddy_get_alias_only(buddy)); |
| 4236 | 6280 | else |
| 6281 | nombre = g_strdup(sn); | |
| 6282 | ||
|
4337
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
6283 | dialog_msg = g_strdup_printf(_("The user %s wants to add you to their buddy list for the following reason:\n%s"), nombre, msg ? msg : _("No reason given.")); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6284 | data = g_new(struct name_data, 1); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6285 | data->gc = gc; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6286 | data->name = g_strdup(sn); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6287 | data->nick = NULL; |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
6288 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
6289 | gaim_request_action(gc, NULL, _("Authorization Request"), dialog_msg, |
|
9972
f39adb92a177
[gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents:
9971
diff
changeset
|
6290 | GAIM_DEFAULT_ACTION_NONE, data, 2, |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
6291 | _("Authorize"), G_CALLBACK(gaim_auth_grant), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
6292 | _("Deny"), G_CALLBACK(gaim_auth_dontgrant_msgprompt)); |
| 4236 | 6293 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6294 | g_free(dialog_msg); |
| 4236 | 6295 | g_free(nombre); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6296 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6297 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6298 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6299 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6300 | static int gaim_ssi_authreply(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 6301 | GaimConnection *gc = sess->aux_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6302 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6303 | char *sn, *msg; |
| 4236 | 6304 | gchar *dialog_msg, *nombre; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6305 | fu8_t reply; |
| 6695 | 6306 | GaimBuddy *buddy; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6307 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6308 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6309 | sn = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6310 | reply = (fu8_t)va_arg(ap, int); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6311 | msg = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6312 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6313 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6314 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6315 | "ssi: received authorization reply from %s. Reply is 0x%04hhx\n", sn, reply); |
| 4236 | 6316 | |
| 4687 | 6317 | buddy = gaim_find_buddy(gc->account, sn); |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
6318 | if (buddy && (gaim_buddy_get_alias_only(buddy))) |
|
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
6319 | nombre = g_strdup_printf("%s (%s)", sn, gaim_buddy_get_alias_only(buddy)); |
| 4236 | 6320 | else |
| 6321 | nombre = g_strdup(sn); | |
| 6322 | ||
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6323 | if (reply) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6324 | /* Granted */ |
| 7023 | 6325 | dialog_msg = g_strdup_printf(_("The user %s has granted your request to add them to your buddy list."), nombre); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
6326 | gaim_notify_info(gc, NULL, _("Authorization Granted"), dialog_msg); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6327 | } else { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6328 | /* Denied */ |
| 7023 | 6329 | dialog_msg = g_strdup_printf(_("The user %s has denied your request to add them to your buddy list for the following reason:\n%s"), nombre, msg ? msg : _("No reason given.")); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
6330 | gaim_notify_info(gc, NULL, _("Authorization Denied"), dialog_msg); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6331 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6332 | g_free(dialog_msg); |
| 4236 | 6333 | g_free(nombre); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6334 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6335 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6336 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6337 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6338 | static int gaim_ssi_gotadded(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 6339 | GaimConnection *gc = sess->aux_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6340 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6341 | char *sn; |
| 6695 | 6342 | GaimBuddy *buddy; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6343 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6344 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6345 | sn = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6346 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6347 | |
| 4687 | 6348 | buddy = gaim_find_buddy(gc->account, sn); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6349 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6350 | "ssi: %s added you to their buddy list\n", sn); |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
6351 | gaim_account_notify_added(gc->account, NULL, sn, (buddy ? gaim_buddy_get_alias_only(buddy) : NULL), NULL); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6352 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6353 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6354 | } |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6355 | #endif |
| 2086 | 6356 | |
| 5575 | 6357 | static GList *oscar_chat_info(GaimConnection *gc) { |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
6358 | GList *m = NULL; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
6359 | struct proto_chat_entry *pce; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
6360 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
6361 | pce = g_new0(struct proto_chat_entry, 1); |
|
9770
d61fe8dcb6d9
[gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9758
diff
changeset
|
6362 | pce->label = _("_Room:"); |
| 5234 | 6363 | pce->identifier = "room"; |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
6364 | m = g_list_append(m, pce); |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
6365 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
6366 | pce = g_new0(struct proto_chat_entry, 1); |
|
7841
0000a4c68bf8
[gaim-migrate @ 8494]
Mark Doliner <markdoliner@pidgin.im>
parents:
7805
diff
changeset
|
6367 | pce->label = _("_Exchange:"); |
| 5234 | 6368 | pce->identifier = "exchange"; |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
6369 | pce->is_int = TRUE; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
6370 | pce->min = 4; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
6371 | pce->max = 20; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
6372 | m = g_list_append(m, pce); |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
6373 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
6374 | return m; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
6375 | } |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
6376 | |
|
9754
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
6377 | GHashTable *oscar_chat_info_defaults(GaimConnection *gc, const char *chat_name) |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
6378 | { |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
6379 | GHashTable *defaults; |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
6380 | |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
6381 | 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
|
6382 | |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
6383 | if (chat_name != NULL) |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
6384 | g_hash_table_insert(defaults, "room", g_strdup(chat_name)); |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
6385 | |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
6386 | return defaults; |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
6387 | } |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
6388 | |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9914
diff
changeset
|
6389 | static char *oscar_get_chat_name(GHashTable *data) { |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9914
diff
changeset
|
6390 | return g_strdup(g_hash_table_lookup(data, "room")); |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9914
diff
changeset
|
6391 | } |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9914
diff
changeset
|
6392 | |
|
8308
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6393 | static void oscar_join_chat(GaimConnection *gc, GHashTable *data) { |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6394 | OscarData *od = (OscarData *)gc->proto_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6395 | aim_conn_t *cur; |
| 5234 | 6396 | char *name, *exchange; |
| 6397 | ||
| 6398 | name = g_hash_table_lookup(data, "room"); | |
| 6399 | exchange = g_hash_table_lookup(data, "exchange"); | |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
6400 | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6401 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6402 | "Attempting to join chat room %s.\n", name); |
|
8308
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6403 | |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6404 | if ((name == NULL) || (*name == '\0')) { |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6405 | gaim_notify_error(gc, NULL, _("Invalid chat name specified."), NULL); |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6406 | return; |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6407 | } |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6408 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6409 | if ((cur = aim_getconn_type(od->sess, AIM_CONN_TYPE_CHATNAV))) { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6410 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6411 | "chatnav exists, creating room\n"); |
| 5234 | 6412 | aim_chatnav_createroom(od->sess, cur, name, atoi(exchange)); |
| 2086 | 6413 | } else { |
| 6414 | /* this gets tricky */ | |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
6415 | struct create_room *cr = g_new0(struct create_room, 1); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6416 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6417 | "chatnav does not exist, opening chatnav\n"); |
| 5234 | 6418 | cr->exchange = atoi(exchange); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
6419 | cr->name = g_strdup(name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6420 | od->create_rooms = g_slist_append(od->create_rooms, cr); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6421 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_CHATNAV); |
| 2086 | 6422 | } |
| 6423 | } | |
| 6424 | ||
|
8308
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6425 | static void oscar_chat_invite(GaimConnection *gc, int id, const char *message, const char *name) { |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6426 | OscarData *od = (OscarData *)gc->proto_data; |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6427 | struct chat_connection *ccon = find_oscar_chat(gc, id); |
| 2086 | 6428 | |
| 6429 | if (!ccon) | |
| 6430 | return; | |
| 6431 | ||
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
6432 | aim_im_sendch2_chatinvite(od->sess, name, message ? message : "", |
| 2086 | 6433 | ccon->exchange, ccon->name, 0x0); |
| 6434 | } | |
| 6435 | ||
|
8308
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6436 | static void oscar_chat_leave(GaimConnection *gc, int id) { |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6437 | OscarData *od = gc ? (OscarData *)gc->proto_data : NULL; |
|
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6438 | GSList *bcs = gc->buddy_chats; |
| 5679 | 6439 | GaimConversation *b = NULL; |
| 2086 | 6440 | struct chat_connection *c = NULL; |
| 6441 | int count = 0; | |
| 6442 | ||
| 6443 | while (bcs) { | |
| 6444 | count++; | |
| 5679 | 6445 | b = (GaimConversation *)bcs->data; |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7111
diff
changeset
|
6446 | if (id == gaim_conv_chat_get_id(GAIM_CONV_CHAT(b))) |
| 2086 | 6447 | break; |
| 6448 | bcs = bcs->next; | |
| 6449 | b = NULL; | |
| 6450 | } | |
| 6451 | ||
| 6452 | if (!b) | |
| 6453 | return; | |
| 6454 | ||
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6455 | gaim_debug_info("oscar", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
6456 | "Attempting to leave room %s (currently in %d rooms)\n", b->name, count); |
| 2086 | 6457 | |
|
8308
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6458 | c = find_oscar_chat(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(b))); |
| 2086 | 6459 | if (c != NULL) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6460 | if (od) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6461 | od->oscar_chats = g_slist_remove(od->oscar_chats, c); |
| 2086 | 6462 | if (c->inpa > 0) |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
6463 | gaim_input_remove(c->inpa); |
|
8308
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6464 | if (gc && od->sess) |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
6465 | aim_conn_kill(od->sess, &c->conn); |
| 2086 | 6466 | g_free(c->name); |
| 6467 | g_free(c->show); | |
| 6468 | g_free(c); | |
| 6469 | } | |
| 6470 | /* we do this because with Oscar it doesn't tell us we left */ | |
|
8308
88f1dc8588a8
[gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents:
8287
diff
changeset
|
6471 | serv_got_chat_left(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(b))); |
| 2086 | 6472 | } |
| 6473 | ||
| 8219 | 6474 | static int oscar_send_chat(GaimConnection *gc, int id, const char *message) { |
| 6475 | OscarData *od = (OscarData *)gc->proto_data; | |
| 6476 | GaimConversation *conv = NULL; | |
| 2086 | 6477 | struct chat_connection *c = NULL; |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
6478 | char *buf, *buf2; |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
6479 | fu16_t charset, charsubset; |
|
9807
ff713acc7204
[gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents:
9806
diff
changeset
|
6480 | char *charsetstr = NULL; |
| 8907 | 6481 | gsize len; |
| 8219 | 6482 | |
| 6483 | if (!(conv = gaim_find_chat(gc, id))) | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
6484 | return -EINVAL; |
| 2086 | 6485 | |
| 8219 | 6486 | if (!(c = find_oscar_chat_by_conv(gc, conv))) |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
6487 | return -EINVAL; |
| 2086 | 6488 | |
| 8219 | 6489 | buf = gaim_strdup_withhtml(message); |
| 6490 | len = strlen(buf); | |
| 6491 | ||
| 8962 | 6492 | if (strstr(buf, "<IMG ")) |
| 6493 | gaim_conversation_write(conv, "", | |
| 6494 | _("Your IM Image was not sent. " | |
| 6495 | "You cannot send IM Images in AIM chats."), | |
| 6496 | GAIM_MESSAGE_ERROR, time(NULL)); | |
| 6497 | ||
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
6498 | gaim_plugin_oscar_convert_to_best_encoding(gc, NULL, buf, &buf2, &len, &charset, &charsubset); |
|
8359
3c62ea91eba8
[gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents:
8353
diff
changeset
|
6499 | if ((len > c->maxlen) || (len > c->maxvis)) { |
|
3c62ea91eba8
[gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents:
8353
diff
changeset
|
6500 | g_free(buf2); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
6501 | return -E2BIG; |
|
8359
3c62ea91eba8
[gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents:
8353
diff
changeset
|
6502 | } |
|
3c62ea91eba8
[gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents:
8353
diff
changeset
|
6503 | |
|
9831
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
6504 | if (charset == AIM_CHARSET_ASCII) |
|
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
6505 | charsetstr = "us-ascii"; |
|
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
6506 | else if (charset == AIM_CHARSET_UNICODE) |
|
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
6507 | charsetstr = "unicode-2-0"; |
|
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
6508 | else if (charset == AIM_CHARSET_CUSTOM) |
|
dfebe1c6bffe
[gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents:
9830
diff
changeset
|
6509 | charsetstr = "iso-8859-1"; |
|
9807
ff713acc7204
[gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents:
9806
diff
changeset
|
6510 | aim_chat_send_im(od->sess, c->conn, 0, buf2, len, charsetstr, "en"); |
| 8219 | 6511 | g_free(buf2); |
|
8359
3c62ea91eba8
[gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents:
8353
diff
changeset
|
6512 | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
6513 | return 0; |
| 2086 | 6514 | } |
| 6515 | ||
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6516 | static const char *oscar_list_icon(GaimAccount *a, GaimBuddy *b) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6517 | { |
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
6518 | if (!b || (b && b->name && b->name[0] == '+')) { |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
6519 | if (a != NULL && aim_sn_is_icq(gaim_account_get_username(a))) |
| 4687 | 6520 | return "icq"; |
| 6521 | else | |
| 6522 | return "aim"; | |
| 6523 | } | |
|
5646
0aa637549d87
[gaim-migrate @ 6060]
Christian Hammond <chipx86@chipx86.com>
parents:
5638
diff
changeset
|
6524 | |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
6525 | if (b != NULL && aim_sn_is_icq(b->name)) |
| 4687 | 6526 | return "icq"; |
| 6527 | return "aim"; | |
| 6528 | } | |
| 6529 | ||
|
9972
f39adb92a177
[gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents:
9971
diff
changeset
|
6530 | static void oscar_list_emblems(GaimBuddy *b, const char **se, const char **sw, const char **nw, const char **ne) |
| 4687 | 6531 | { |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
6532 | GaimConnection *gc = NULL; |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
6533 | OscarData *od = NULL; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6534 | GaimAccount *account = NULL; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6535 | GaimPresence *presence; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6536 | GaimStatus *status; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6537 | const char *status_id; |
| 4687 | 6538 | char *emblems[4] = {NULL,NULL,NULL,NULL}; |
| 6539 | int i = 0; | |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
6540 | aim_userinfo_t *userinfo = NULL; |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
6541 | |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
6542 | if (b != NULL) |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
6543 | account = b->account; |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
6544 | if (account != NULL) |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
6545 | gc = account->gc; |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
6546 | if (gc != NULL) |
|
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
6547 | od = gc->proto_data; |
|
7945
7270cd25f841
[gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents:
7880
diff
changeset
|
6548 | if (od != NULL) |
|
7270cd25f841
[gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents:
7880
diff
changeset
|
6549 | userinfo = aim_locate_finduserinfo(od->sess, b->name); |
| 4687 | 6550 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6551 | presence = gaim_buddy_get_presence(b); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6552 | status = gaim_presence_get_active_status(presence); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6553 | status_id = gaim_status_get_id(status); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6554 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6555 | if (gaim_presence_is_online(presence) == FALSE) { |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
6556 | char *gname; |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
6557 | if ((b->name) && (od) && (od->sess->ssi.received_data) && |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
6558 | (gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name)) && |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
6559 | (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))) { |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
6560 | emblems[i++] = "notauthorized"; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
6561 | } else { |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
6562 | emblems[i++] = "offline"; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
6563 | } |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
6564 | } |
| 4916 | 6565 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6566 | if (b->name && aim_sn_is_icq(b->name)) { |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6567 | if (!strcmp(status_id, OSCAR_STATUS_ID_INVISIBLE)) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6568 | emblems[i++] = "invisible"; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6569 | else if (!strcmp(status_id, OSCAR_STATUS_ID_FREE4CHAT)) |
|
4960
65bf67b7600f
[gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents:
4959
diff
changeset
|
6570 | emblems[i++] = "freeforchat"; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6571 | else if (!strcmp(status_id, OSCAR_STATUS_ID_DND)) |
|
4960
65bf67b7600f
[gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents:
4959
diff
changeset
|
6572 | emblems[i++] = "dnd"; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6573 | else if (!strcmp(status_id, OSCAR_STATUS_ID_NA)) |
|
4960
65bf67b7600f
[gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents:
4959
diff
changeset
|
6574 | emblems[i++] = "na"; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6575 | else if (!strcmp(status_id, OSCAR_STATUS_ID_OCCUPIED)) |
|
4960
65bf67b7600f
[gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents:
4959
diff
changeset
|
6576 | emblems[i++] = "occupied"; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6577 | else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY)) |
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
6578 | emblems[i++] = "away"; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6579 | } else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY)) { |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6580 | emblems[i++] = "away"; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6581 | } |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6582 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6583 | if (userinfo != NULL ) { |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6584 | /* if (userinfo->flags & AIM_FLAG_UNCONFIRMED) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6585 | emblems[i++] = "unconfirmed"; */ |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6586 | if (userinfo->flags & AIM_FLAG_ADMINISTRATOR) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6587 | emblems[i++] = "admin"; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6588 | if (userinfo->flags & AIM_FLAG_AOL) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6589 | emblems[i++] = "aol"; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6590 | if (userinfo->flags & AIM_FLAG_WIRELESS) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6591 | emblems[i++] = "wireless"; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6592 | if (userinfo->flags & AIM_FLAG_ACTIVEBUDDY) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6593 | emblems[i++] = "activebuddy"; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6594 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6595 | if ((i < 4) && (userinfo->capabilities & AIM_CAPS_HIPTOP)) |
|
7945
7270cd25f841
[gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents:
7880
diff
changeset
|
6596 | emblems[i++] = "hiptop"; |
|
7270cd25f841
[gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents:
7880
diff
changeset
|
6597 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6598 | if ((i < 4) && (userinfo->capabilities & AIM_CAPS_SECUREIM)) |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
6599 | emblems[i++] = "secure"; |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6600 | } |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
6601 | |
| 4687 | 6602 | *se = emblems[0]; |
| 6603 | *sw = emblems[1]; | |
| 6604 | *nw = emblems[2]; | |
| 6605 | *ne = emblems[3]; | |
| 6606 | } | |
| 6607 | ||
| 6695 | 6608 | static char *oscar_tooltip_text(GaimBuddy *b) { |
| 5575 | 6609 | GaimConnection *gc = b->account->gc; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6610 | OscarData *od = gc->proto_data; |
|
7045
458b55091f8b
[gaim-migrate @ 7608]
Mark Doliner <markdoliner@pidgin.im>
parents:
7038
diff
changeset
|
6611 | aim_userinfo_t *userinfo = aim_locate_finduserinfo(od->sess, b->name); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6612 | GString *str = g_string_new(""); |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
6613 | |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
6614 | if (GAIM_BUDDY_IS_ONLINE(b)) { |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6615 | oscar_string_append_info(gc, str, "\n", b, userinfo); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
6616 | |
|
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
6617 | if ((userinfo != NULL) && (userinfo->flags & AIM_FLAG_AWAY) && (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) { |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
6618 | gchar *charset = oscar_encoding_extract(userinfo->away_encoding); |
|
8392
6e8d04bc180d
[gaim-migrate @ 9121]
Mark Doliner <markdoliner@pidgin.im>
parents:
8363
diff
changeset
|
6619 | gchar *away_utf8 = oscar_encoding_to_utf8(charset, userinfo->away, userinfo->away_len); |
|
8225
4ef47db8c9bc
[gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents:
8219
diff
changeset
|
6620 | g_free(charset); |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
6621 | if (away_utf8 != NULL) { |
|
7091
4430f44e86ad
[gaim-migrate @ 7656]
Mark Doliner <markdoliner@pidgin.im>
parents:
7083
diff
changeset
|
6622 | gchar *tmp1, *tmp2; |
| 9627 | 6623 | tmp2 = gaim_markup_strip_html(away_utf8); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
6624 | g_free(away_utf8); |
|
8571
2e789c27f81e
[gaim-migrate @ 9319]
Mark Doliner <markdoliner@pidgin.im>
parents:
8568
diff
changeset
|
6625 | tmp1 = gaim_escape_html(tmp2); |
|
7091
4430f44e86ad
[gaim-migrate @ 7656]
Mark Doliner <markdoliner@pidgin.im>
parents:
7083
diff
changeset
|
6626 | g_free(tmp2); |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
6627 | tmp2 = gaim_str_sub_away_formatters(tmp1, gaim_account_get_username(gaim_connection_get_account(gc))); |
|
8461
920171a59e45
[gaim-migrate @ 9191]
Mark Doliner <markdoliner@pidgin.im>
parents:
8446
diff
changeset
|
6628 | g_free(tmp1); |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6629 | g_string_append_printf(str, "\n<b>%s:</b> %s", _("Away Message"), tmp2); |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8697
diff
changeset
|
6630 | g_free(tmp2); |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
6631 | } |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
6632 | } |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6633 | } |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6634 | |
|
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6635 | return g_string_free(str, FALSE); |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
6636 | } |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
6637 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6638 | static char *oscar_status_text(GaimBuddy *b) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6639 | { |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6640 | GaimConnection *gc; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6641 | OscarData *od; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6642 | GaimStatus *status; |
|
5167
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
6643 | gchar *ret = NULL; |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
6644 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6645 | gc = gaim_account_get_connection(gaim_buddy_get_account(b)); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6646 | od = gc->proto_data; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6647 | status = gaim_presence_get_active_status(gaim_buddy_get_presence(b)); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6648 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6649 | if (gaim_status_is_available(status) == FALSE || (((b->uc & 0xffff0000) >> 16) & AIM_ICQ_STATE_CHAT)) { |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
6650 | if (aim_sn_is_icq(b->name)) |
|
8701
333da120f414
[gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents:
8700
diff
changeset
|
6651 | ret = oscar_icqstatus((b->uc & 0xffff0000) >> 16); |
|
7038
59ed07d7f73a
[gaim-migrate @ 7601]
Mark Doliner <markdoliner@pidgin.im>
parents:
7037
diff
changeset
|
6652 | else |
|
59ed07d7f73a
[gaim-migrate @ 7601]
Mark Doliner <markdoliner@pidgin.im>
parents:
7037
diff
changeset
|
6653 | ret = g_strdup(_("Away")); |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
6654 | } else if (GAIM_BUDDY_IS_ONLINE(b)) { |
| 7261 | 6655 | struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(b->account, b->name)); |
|
6292
ec8a58bc2b87
[gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents:
6281
diff
changeset
|
6656 | if (bi->availmsg) |
|
ec8a58bc2b87
[gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents:
6281
diff
changeset
|
6657 | ret = g_markup_escape_text(bi->availmsg, strlen(bi->availmsg)); |
|
5836
88819e4cc840
[gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents:
5828
diff
changeset
|
6658 | } else { |
|
5167
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
6659 | char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name); |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
6660 | if (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name)) |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
6661 | ret = g_strdup(_("Not Authorized")); |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
6662 | else |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
6663 | ret = g_strdup(_("Offline")); |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
6664 | } |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
6665 | |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
6666 | return ret; |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
6667 | } |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
6668 | |
| 5842 | 6669 | |
|
5844
a0f8b06669e7
[gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents:
5842
diff
changeset
|
6670 | static int oscar_icon_req(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5842 | 6671 | GaimConnection *gc = sess->aux_data; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6672 | OscarData *od = gc->proto_data; |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6673 | va_list ap; |
| 5842 | 6674 | fu16_t type; |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6675 | fu8_t flags = 0, length = 0; |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6676 | char *md5 = NULL; |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6677 | |
|
7334
4d1a7f313b70
[gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents:
7328
diff
changeset
|
6678 | |
| 5842 | 6679 | va_start(ap, fr); |
| 6680 | type = va_arg(ap, int); | |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6681 | |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6682 | switch(type) { |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6683 | case 0x0000: |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6684 | case 0x0001: { |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6685 | flags = va_arg(ap, int); |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6686 | length = va_arg(ap, int); |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6687 | md5 = va_arg(ap, char *); |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6688 | |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6689 | if (flags == 0x41) { |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6690 | if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_ICON) && !od->iconconnecting) { |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6691 | od->iconconnecting = TRUE; |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6692 | od->set_icon = TRUE; |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6693 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON); |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6694 | } else { |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
6695 | struct stat st; |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
6696 | const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc)); |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
6697 | if (iconfile == NULL) { |
| 8363 | 6698 | aim_ssi_delicon(od->sess); |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
6699 | } else if (!stat(iconfile, &st)) { |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
6700 | char *buf = g_malloc(st.st_size); |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
6701 | FILE *file = fopen(iconfile, "rb"); |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
6702 | if (file) { |
|
9532
32470c5a1d58
[gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
9481
diff
changeset
|
6703 | /* XXX - Use g_file_get_contents()? */ |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
6704 | fread(buf, 1, st.st_size, file); |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
6705 | fclose(file); |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6706 | gaim_debug_info("oscar", |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6707 | "Uploading icon to icon server\n"); |
|
6879
cc7abcef355c
[gaim-migrate @ 7425]
Mark Doliner <markdoliner@pidgin.im>
parents:
6873
diff
changeset
|
6708 | aim_bart_upload(od->sess, buf, st.st_size); |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6709 | } else |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6710 | gaim_debug_error("oscar", |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6711 | "Can't open buddy icon file!\n"); |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
6712 | g_free(buf); |
|
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
6713 | } else { |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6714 | gaim_debug_error("oscar", |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6715 | "Can't stat buddy icon file!\n"); |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6716 | } |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6717 | } |
| 8363 | 6718 | } else if (flags == 0x81) { |
| 6719 | const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc)); | |
| 6720 | if (iconfile == NULL) | |
| 6721 | aim_ssi_delicon(od->sess); | |
| 6722 | else | |
| 6723 | aim_ssi_seticon(od->sess, md5, length); | |
| 6724 | } | |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6725 | } break; |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6726 | |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6727 | case 0x0002: { /* We just set an "available" message? */ |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6728 | } break; |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6729 | } |
|
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6730 | |
| 5842 | 6731 | va_end(ap); |
|
5844
a0f8b06669e7
[gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents:
5842
diff
changeset
|
6732 | |
|
a0f8b06669e7
[gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents:
5842
diff
changeset
|
6733 | return 0; |
| 5842 | 6734 | } |
|
5892
fe6738e57d73
[gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents:
5872
diff
changeset
|
6735 | |
| 5575 | 6736 | static void oscar_set_permit_deny(GaimConnection *gc) { |
| 6737 | GaimAccount *account = gaim_connection_get_account(gc); | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6738 | OscarData *od = (OscarData *)gc->proto_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6739 | #ifdef NOSSI |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8092
diff
changeset
|
6740 | GSList *list; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6741 | char buf[MAXMSGLEN]; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6742 | int at; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6743 | |
| 5575 | 6744 | switch(account->perm_deny) { |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6745 | case GAIM_PRIVACY_ALLOW_ALL: |
| 5575 | 6746 | aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, gaim_account_get_username(account)); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6747 | break; |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6748 | case GAIM_PRIVACY_DENY_ALL: |
| 5575 | 6749 | aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, gaim_account_get_username(account)); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6750 | break; |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6751 | case GAIM_PRIVACY_ALLOW_USERS: |
| 5575 | 6752 | list = account->permit; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6753 | at = 0; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6754 | while (list) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6755 | at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6756 | list = list->next; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6757 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6758 | aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6759 | break; |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6760 | case GAIM_PRIVACY_DENY_USERS: |
| 5575 | 6761 | list = account->deny; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6762 | at = 0; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6763 | while (list) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6764 | at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6765 | list = list->next; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6766 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6767 | aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, buf); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6768 | break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6769 | default: |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6770 | break; |
| 2086 | 6771 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6772 | #else |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6773 | if (od->sess->ssi.received_data) { |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6774 | switch (account->perm_deny) { |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6775 | case GAIM_PRIVACY_ALLOW_ALL: |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6776 | aim_ssi_setpermdeny(od->sess, 0x01, 0xffffffff); |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6777 | break; |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6778 | case GAIM_PRIVACY_ALLOW_BUDDYLIST: |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6779 | aim_ssi_setpermdeny(od->sess, 0x05, 0xffffffff); |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6780 | break; |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6781 | case GAIM_PRIVACY_ALLOW_USERS: |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6782 | aim_ssi_setpermdeny(od->sess, 0x03, 0xffffffff); |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6783 | break; |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6784 | case GAIM_PRIVACY_DENY_ALL: |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6785 | aim_ssi_setpermdeny(od->sess, 0x02, 0xffffffff); |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6786 | break; |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6787 | case GAIM_PRIVACY_DENY_USERS: |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6788 | aim_ssi_setpermdeny(od->sess, 0x04, 0xffffffff); |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6789 | break; |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6790 | default: |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6791 | aim_ssi_setpermdeny(od->sess, 0x01, 0xffffffff); |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6792 | break; |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6793 | } |
|
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
6794 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6795 | #endif |
| 2086 | 6796 | } |
| 6797 | ||
| 5575 | 6798 | static void oscar_add_permit(GaimConnection *gc, const char *who) { |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6799 | #ifdef NOSSI |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8092
diff
changeset
|
6800 | if (gc->account->perm_deny == 3) |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6801 | oscar_set_permit_deny(gc); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6802 | #else |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6803 | OscarData *od = (OscarData *)gc->proto_data; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6804 | gaim_debug_info("oscar", "ssi: About to add a permit\n"); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6805 | if (od->sess->ssi.received_data) |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
6806 | aim_ssi_addpermit(od->sess, who); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6807 | #endif |
| 2086 | 6808 | } |
| 6809 | ||
| 5575 | 6810 | static void oscar_add_deny(GaimConnection *gc, const char *who) { |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6811 | #ifdef NOSSI |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8092
diff
changeset
|
6812 | if (gc->account->perm_deny == 4) |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6813 | oscar_set_permit_deny(gc); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6814 | #else |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6815 | OscarData *od = (OscarData *)gc->proto_data; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6816 | gaim_debug_info("oscar", "ssi: About to add a deny\n"); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6817 | if (od->sess->ssi.received_data) |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
6818 | aim_ssi_adddeny(od->sess, who); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6819 | #endif |
| 2086 | 6820 | } |
| 6821 | ||
| 5575 | 6822 | static void oscar_rem_permit(GaimConnection *gc, const char *who) { |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6823 | #ifdef NOSSI |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8092
diff
changeset
|
6824 | if (gc->account->perm_deny == 3) |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6825 | oscar_set_permit_deny(gc); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6826 | #else |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6827 | OscarData *od = (OscarData *)gc->proto_data; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6828 | gaim_debug_info("oscar", "ssi: About to delete a permit\n"); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6829 | if (od->sess->ssi.received_data) |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
6830 | aim_ssi_delpermit(od->sess, who); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6831 | #endif |
| 2086 | 6832 | } |
| 6833 | ||
| 5575 | 6834 | static void oscar_rem_deny(GaimConnection *gc, const char *who) { |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6835 | #ifdef NOSSI |
|
8143
ce4b6383777b
[gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents:
8092
diff
changeset
|
6836 | if (gc->account->perm_deny == 4) |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6837 | oscar_set_permit_deny(gc); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
6838 | #else |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6839 | OscarData *od = (OscarData *)gc->proto_data; |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
6840 | gaim_debug_info("oscar", "ssi: About to delete a deny\n"); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6841 | if (od->sess->ssi.received_data) |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
6842 | aim_ssi_deldeny(od->sess, who); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
6843 | #endif |
| 2086 | 6844 | } |
| 6845 | ||
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
6846 | static GList * |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
6847 | oscar_status_types(GaimAccount *account) |
| 2086 | 6848 | { |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
6849 | GList *status_types = NULL; |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
6850 | GaimStatusType *type; |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
6851 | |
|
9973
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
6852 | g_return_val_if_fail(account != NULL, NULL); |
|
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
6853 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6854 | /* Oscar-common status types */ |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6855 | type = gaim_status_type_new_full(GAIM_STATUS_OFFLINE, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6856 | OSCAR_STATUS_ID_OFFLINE, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6857 | _("Offline"), FALSE, FALSE, FALSE); |
|
9976
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
6858 | status_types = g_list_append(status_types, type); |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
6859 | |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6860 | type = gaim_status_type_new_full(GAIM_STATUS_ONLINE, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6861 | OSCAR_STATUS_ID_ONLINE, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6862 | _("Online"), FALSE, FALSE, FALSE); |
|
9976
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
6863 | status_types = g_list_append(status_types, type); |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
6864 | |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6865 | type = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6866 | OSCAR_STATUS_ID_AVAILABLE, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6867 | _("Available"), TRUE, TRUE, FALSE); |
|
9976
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
6868 | status_types = g_list_append(status_types, type); |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
6869 | |
|
10042
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6870 | type = gaim_status_type_new_full(GAIM_STATUS_AWAY, |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6871 | OSCAR_STATUS_ID_AWAY, |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6872 | _("Away"), TRUE, TRUE, FALSE); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6873 | status_types = g_list_append(status_types, type); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6874 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6875 | type = gaim_status_type_new_full(GAIM_STATUS_HIDDEN, |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6876 | OSCAR_STATUS_ID_INVISIBLE, |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6877 | _("Invisible"), TRUE, TRUE, TRUE); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6878 | status_types = g_list_append(status_types, type); |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6879 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6880 | if (aim_sn_is_icq(gaim_account_get_username(account)) == FALSE ) |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6881 | return status_types; |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6882 | |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6883 | /* ICQ-specific status types */ |
|
b9091ec2b708
[gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents:
10039
diff
changeset
|
6884 | |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6885 | type = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6886 | OSCAR_STATUS_ID_FREE4CHAT, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6887 | _("Free For Chat"), TRUE, TRUE, FALSE); |
|
9982
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
6888 | status_types = g_list_append(status_types, type); |
|
4f35c5d13c8c
[gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents:
9976
diff
changeset
|
6889 | |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6890 | type = gaim_status_type_new_full(GAIM_STATUS_UNAVAILABLE, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6891 | OSCAR_STATUS_ID_OCCUPIED, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6892 | _("Occupied"), TRUE, TRUE, FALSE); |
|
9976
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
6893 | status_types = g_list_append(status_types, type); |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
6894 | |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6895 | type = gaim_status_type_new_full(GAIM_STATUS_EXTENDED_AWAY, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6896 | OSCAR_STATUS_ID_DND, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6897 | _("Do Not Disturb"), TRUE, TRUE, FALSE); |
|
9976
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
6898 | status_types = g_list_append(status_types, type); |
|
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
6899 | |
|
9991
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6900 | type = gaim_status_type_new_full(GAIM_STATUS_EXTENDED_AWAY, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6901 | OSCAR_STATUS_ID_NA, |
|
a02e6b4e0959
[gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents:
9988
diff
changeset
|
6902 | _("Not Available"), TRUE, TRUE, FALSE); |
|
9976
5fceb5de48b8
[gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents:
9975
diff
changeset
|
6903 | status_types = g_list_append(status_types, type); |
|
9975
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
6904 | |
|
ea6d503b89cb
[gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents:
9973
diff
changeset
|
6905 | return status_types; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6906 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6907 | |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6908 | static void oscar_ssi_editcomment(struct name_data *data, const char *text) { |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
6909 | GaimConnection *gc = data->gc; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
6910 | OscarData *od = gc->proto_data; |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6911 | GaimBuddy *b; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6912 | GaimGroup *g; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6913 | |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6914 | if (!(b = gaim_find_buddy(gaim_connection_get_account(data->gc), data->name))) { |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6915 | oscar_free_name_data(data); |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6916 | return; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6917 | } |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6918 | |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6919 | if (!(g = gaim_find_buddys_group(b))) { |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6920 | oscar_free_name_data(data); |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6921 | return; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6922 | } |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6923 | |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6924 | aim_ssi_editcomment(od->sess, g->name, data->name, text); |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
6925 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
6926 | if (!aim_sncmp(data->name, gc->account->username)) |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
6927 | gaim_check_comment(od, text); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8308
diff
changeset
|
6928 | |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6929 | oscar_free_name_data(data); |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6930 | } |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6931 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6932 | static void oscar_buddycb_edit_comment(GaimBlistNode *node, gpointer ignore) { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6933 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6934 | GaimBuddy *buddy; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6935 | GaimConnection *gc; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6936 | OscarData *od; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6937 | struct name_data *data; |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6938 | GaimGroup *g; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6939 | char *comment; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6940 | gchar *comment_utf8; |
| 9631 | 6941 | gchar *title; |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6942 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6943 | g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node)); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6944 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6945 | buddy = (GaimBuddy *) node; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6946 | gc = gaim_account_get_connection(buddy->account); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6947 | od = gc->proto_data; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6948 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6949 | data = g_new(struct name_data, 1); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6950 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6951 | if (!(g = gaim_find_buddys_group(buddy))) |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6952 | return; |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6953 | comment = aim_ssi_getcomment(od->sess->ssi.local, g->name, buddy->name); |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6954 | comment_utf8 = comment ? gaim_utf8_try_convert(comment) : NULL; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6955 | |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6956 | data->gc = gc; |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6957 | data->name = g_strdup(buddy->name); |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6958 | data->nick = NULL; |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6959 | |
| 9631 | 6960 | title = g_strdup_printf(_("Buddy Comment for %s"), data->name); |
| 6961 | gaim_request_input(gc, title, _("Buddy Comment:"), NULL, | |
| 8697 | 6962 | comment_utf8, TRUE, FALSE, NULL, |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6963 | _("OK"), G_CALLBACK(oscar_ssi_editcomment), |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6964 | _("Cancel"), G_CALLBACK(oscar_free_name_data), |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6965 | data); |
| 9631 | 6966 | g_free(title); |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6967 | |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6968 | free(comment); |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6969 | g_free(comment_utf8); |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6970 | } |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6971 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6972 | static GList *oscar_buddy_menu(GaimBuddy *buddy) { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6973 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6974 | GaimConnection *gc = gaim_account_get_connection(buddy->account); |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
6975 | OscarData *od = gc->proto_data; |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6976 | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6977 | GList *m = NULL; |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6978 | GaimBlistNodeAction *act; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6979 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6980 | act = gaim_blist_node_action_new(_("Edit Buddy Comment"), |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6981 | oscar_buddycb_edit_comment, NULL); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6982 | m = g_list_append(m, act); |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7166
diff
changeset
|
6983 | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6984 | if (od->icq) { |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
6985 | #if 0 |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6986 | act = gaim_blist_node_action_new(_("Get Status Msg"), |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6987 | oscar_get_icqstatusmsg, NULL); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6988 | m = g_list_append(m, act); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
6989 | #endif |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
6990 | } else { |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
6991 | aim_userinfo_t *userinfo; |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6992 | userinfo = aim_locate_finduserinfo(od->sess, buddy->name); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6993 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6994 | if (userinfo && aim_sncmp(gaim_account_get_username(buddy->account), buddy->name) && |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6995 | GAIM_BUDDY_IS_ONLINE(buddy)) { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6996 | |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
6997 | if (userinfo->capabilities & AIM_CAPS_DIRECTIM) { |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6998 | act = gaim_blist_node_action_new(_("Direct IM"), |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
6999 | oscar_ask_direct_im, NULL); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7000 | m = g_list_append(m, act); |
|
5917
a79e79eca294
[gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents:
5904
diff
changeset
|
7001 | } |
|
9466
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9463
diff
changeset
|
7002 | #if 0 |
|
7011
00f405d9922b
[gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents:
6982
diff
changeset
|
7003 | if (userinfo->capabilities & AIM_CAPS_GETFILE) { |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7004 | act = gaim_blist_node_action_new(_("Get File"), |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7005 | oscar_ask_getfile, NULL); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7006 | m = g_list_append(m, act); |
|
5917
a79e79eca294
[gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents:
5904
diff
changeset
|
7007 | } |
|
4826
ce211ce6a336
[gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents:
4825
diff
changeset
|
7008 | #endif |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7009 | } |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7010 | } |
|
5197
ab4d919050d7
[gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents:
5167
diff
changeset
|
7011 | |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
7012 | if (od->sess->ssi.received_data) { |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7013 | char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, buddy->name); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7014 | if (gname && aim_ssi_waitingforauth(od->sess->ssi.local, gname, buddy->name)) { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7015 | act = gaim_blist_node_action_new(_("Re-request Authorization"), |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7016 | gaim_auth_sendrequest_menu, NULL); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7017 | m = g_list_append(m, act); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7018 | } |
| 4916 | 7019 | } |
| 7020 | ||
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7021 | return m; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7022 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7023 | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7024 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7025 | static GList *oscar_blist_node_menu(GaimBlistNode *node) { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7026 | if(GAIM_BLIST_NODE_IS_BUDDY(node)) { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7027 | return oscar_buddy_menu((GaimBuddy *) node); |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7028 | } else { |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7029 | return NULL; |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7030 | } |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7031 | } |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7032 | |
|
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9016
diff
changeset
|
7033 | |
| 5575 | 7034 | static void oscar_format_screenname(GaimConnection *gc, const char *nick) { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7035 | OscarData *od = gc->proto_data; |
| 5575 | 7036 | if (!aim_sncmp(gaim_account_get_username(gaim_connection_get_account(gc)), nick)) { |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7037 | if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH)) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7038 | od->setnick = TRUE; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7039 | od->newsn = g_strdup(nick); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7040 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7041 | } else { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7042 | aim_admin_setnick(od->sess, aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH), nick); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7043 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7044 | } else { |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
7045 | gaim_notify_error(gc, NULL, _("The new formatting is invalid."), |
|
8152
f26c9406b4b3
[gaim-migrate @ 8864]
Mark Doliner <markdoliner@pidgin.im>
parents:
8151
diff
changeset
|
7046 | _("Screen name formatting can change only capitalization and whitespace.")); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7047 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7048 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7049 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7050 | static void oscar_show_format_screenname(GaimPluginAction *action) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7051 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7052 | GaimConnection *gc = (GaimConnection *) action->context; |
|
8152
f26c9406b4b3
[gaim-migrate @ 8864]
Mark Doliner <markdoliner@pidgin.im>
parents:
8151
diff
changeset
|
7053 | gaim_request_input(gc, NULL, _("New screen name formatting:"), NULL, |
| 8697 | 7054 | gaim_connection_get_display_name(gc), FALSE, FALSE, NULL, |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
7055 | _("OK"), G_CALLBACK(oscar_format_screenname), |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
7056 | _("Cancel"), NULL, |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
7057 | gc); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7058 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7059 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7060 | static void oscar_confirm_account(GaimPluginAction *action) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7061 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7062 | GaimConnection *gc = (GaimConnection *) action->context; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7063 | OscarData *od = gc->proto_data; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7064 | aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7065 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7066 | if (conn) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7067 | aim_admin_reqconfirm(od->sess, conn); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7068 | } else { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7069 | od->conf = TRUE; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7070 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7071 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7072 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7073 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7074 | static void oscar_show_email(GaimPluginAction *action) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7075 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7076 | GaimConnection *gc = (GaimConnection *) action->context; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7077 | OscarData *od = gc->proto_data; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7078 | aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7079 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7080 | if (conn) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7081 | aim_admin_getinfo(od->sess, conn, 0x11); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7082 | } else { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7083 | od->reqemail = TRUE; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7084 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7085 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7086 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7087 | |
| 5575 | 7088 | static void oscar_change_email(GaimConnection *gc, const char *email) |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
7089 | { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7090 | OscarData *od = gc->proto_data; |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
7091 | aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
7092 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
7093 | if (conn) { |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
7094 | aim_admin_setemail(od->sess, conn, email); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
7095 | } else { |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
7096 | od->setemail = TRUE; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
7097 | od->email = g_strdup(email); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
7098 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
7099 | } |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
7100 | } |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
7101 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7102 | static void oscar_show_change_email(GaimPluginAction *action) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7103 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7104 | GaimConnection *gc = (GaimConnection *) action->context; |
|
6035
b245be9cbe3b
[gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents:
6029
diff
changeset
|
7105 | gaim_request_input(gc, NULL, _("Change Address To:"), NULL, NULL, |
| 8697 | 7106 | FALSE, FALSE, NULL, |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
7107 | _("OK"), G_CALLBACK(oscar_change_email), |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
7108 | _("Cancel"), NULL, |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
7109 | gc); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7110 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7111 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7112 | static void oscar_show_awaitingauth(GaimPluginAction *action) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7113 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7114 | GaimConnection *gc = (GaimConnection *) action->context; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7115 | OscarData *od = gc->proto_data; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7116 | gchar *nombre, *text, *tmp; |
| 6695 | 7117 | GaimBlistNode *gnode, *cnode, *bnode; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7118 | int num=0; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7119 | |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
7120 | text = g_strdup(""); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7121 | |
| 4785 | 7122 | for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) { |
| 6695 | 7123 | GaimGroup *group = (GaimGroup *)gnode; |
| 4785 | 7124 | if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) |
| 7125 | continue; | |
| 6695 | 7126 | for (cnode = gnode->child; cnode; cnode = cnode->next) { |
| 7127 | if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) | |
| 4785 | 7128 | continue; |
| 6695 | 7129 | for (bnode = cnode->child; bnode; bnode = bnode->next) { |
| 7130 | GaimBuddy *buddy = (GaimBuddy *)bnode; | |
| 7131 | if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
| 7132 | continue; | |
| 7133 | if (buddy->account == gc->account && aim_ssi_waitingforauth(od->sess->ssi.local, group->name, buddy->name)) { | |
|
9620
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
7134 | if (gaim_buddy_get_alias_only(buddy)) |
|
fe99fcea5c1c
[gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents:
9595
diff
changeset
|
7135 | nombre = g_strdup_printf(" %s (%s)", buddy->name, gaim_buddy_get_alias_only(buddy)); |
| 6695 | 7136 | else |
| 7137 | nombre = g_strdup_printf(" %s", buddy->name); | |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
7138 | tmp = g_strdup_printf("%s%s<br>", text, nombre); |
| 6695 | 7139 | g_free(text); |
| 7140 | text = tmp; | |
| 7141 | g_free(nombre); | |
| 7142 | num++; | |
| 7143 | } | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7144 | } |
| 2979 | 7145 | } |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7146 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7147 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7148 | if (!num) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7149 | g_free(text); |
|
6873
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
7150 | text = g_strdup(_("<i>you are not waiting for authorization</i>")); |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
7151 | } |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
7152 | |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
7153 | gaim_notify_formatted(gc, NULL, _("You are awaiting authorization from " |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
7154 | "the following buddies"), _("You can re-request " |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
7155 | "authorization from these buddies by " |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
7156 | "right-clicking on them and selecting " |
|
70cc4cd04196
[gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents:
6871
diff
changeset
|
7157 | "\"Re-request Authorization.\""), text, NULL, NULL); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7158 | g_free(text); |
| 2979 | 7159 | } |
| 7160 | ||
|
7080
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
7161 | static void search_by_email_cb(GaimConnection *gc, const char *email) |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
7162 | { |
|
8950
1b90ece5fb4f
[gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents:
8907
diff
changeset
|
7163 | OscarData *od = (OscarData *)gc->proto_data; |
|
1b90ece5fb4f
[gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents:
8907
diff
changeset
|
7164 | |
|
1b90ece5fb4f
[gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents:
8907
diff
changeset
|
7165 | aim_search_address(od->sess, od->conn, email); |
|
7080
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
7166 | } |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
7167 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7168 | static void oscar_show_find_email(GaimPluginAction *action) |
|
7080
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
7169 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7170 | GaimConnection *gc = (GaimConnection *) action->context; |
|
7080
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
7171 | gaim_request_input(gc, _("Find Buddy by E-mail"), |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
7172 | _("Search for a buddy by e-mail address"), |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
7173 | _("Type the e-mail address of the buddy you are " |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
7174 | "searching for."), |
| 8697 | 7175 | NULL, FALSE, FALSE, NULL, |
|
7080
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
7176 | _("Search"), G_CALLBACK(search_by_email_cb), |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
7177 | _("Cancel"), NULL, gc); |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
7178 | } |
|
a443c1992270
[gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents:
7067
diff
changeset
|
7179 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7180 | static void oscar_show_set_info(GaimPluginAction *action) |
|
7067
c57295414efa
[gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents:
7063
diff
changeset
|
7181 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7182 | GaimConnection *gc = (GaimConnection *) action->context; |
|
7067
c57295414efa
[gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents:
7063
diff
changeset
|
7183 | gaim_account_request_change_user_info(gaim_connection_get_account(gc)); |
|
c57295414efa
[gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents:
7063
diff
changeset
|
7184 | } |
|
c57295414efa
[gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents:
7063
diff
changeset
|
7185 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7186 | static void oscar_show_set_info_icqurl(GaimPluginAction *action) |
| 8576 | 7187 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7188 | GaimConnection *gc = (GaimConnection *) action->context; |
| 9809 | 7189 | gaim_notify_uri(gc, "http://www.icq.com/whitepages/user_details.php"); |
| 8576 | 7190 | } |
| 7191 | ||
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7192 | static void oscar_change_pass(GaimPluginAction *action) |
|
7063
4bfe512a4b8c
[gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents:
7060
diff
changeset
|
7193 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7194 | GaimConnection *gc = (GaimConnection *) action->context; |
|
7063
4bfe512a4b8c
[gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents:
7060
diff
changeset
|
7195 | gaim_account_request_change_password(gaim_connection_get_account(gc)); |
|
4bfe512a4b8c
[gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents:
7060
diff
changeset
|
7196 | } |
|
4bfe512a4b8c
[gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents:
7060
diff
changeset
|
7197 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7198 | static void oscar_show_chpassurl(GaimPluginAction *action) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7199 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7200 | GaimConnection *gc = (GaimConnection *) action->context; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7201 | OscarData *od = gc->proto_data; |
| 5575 | 7202 | gchar *substituted = gaim_strreplace(od->sess->authinfo->chpassurl, "%s", gaim_account_get_username(gaim_connection_get_account(gc))); |
|
6465
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6400
diff
changeset
|
7203 | gaim_notify_uri(gc, substituted); |
|
5517
1d7b99ac846c
[gaim-migrate @ 5916]
Mark Doliner <markdoliner@pidgin.im>
parents:
5498
diff
changeset
|
7204 | g_free(substituted); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7205 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7206 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7207 | static void oscar_show_imforwardingurl(GaimPluginAction *action) |
|
7026
7828abff32da
[gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents:
7023
diff
changeset
|
7208 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7209 | GaimConnection *gc = (GaimConnection *) action->context; |
|
7026
7828abff32da
[gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents:
7023
diff
changeset
|
7210 | gaim_notify_uri(gc, "http://mymobile.aol.com/dbreg/register?action=imf&clientID=1"); |
|
7828abff32da
[gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents:
7023
diff
changeset
|
7211 | } |
|
7828abff32da
[gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents:
7023
diff
changeset
|
7212 | |
| 5842 | 7213 | static void oscar_set_icon(GaimConnection *gc, const char *iconfile) |
| 7214 | { | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7215 | OscarData *od = gc->proto_data; |
|
5844
a0f8b06669e7
[gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents:
5842
diff
changeset
|
7216 | aim_session_t *sess = od->sess; |
| 5842 | 7217 | FILE *file; |
| 7218 | struct stat st; | |
|
5844
a0f8b06669e7
[gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents:
5842
diff
changeset
|
7219 | |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
7220 | if (iconfile == NULL) { |
| 8363 | 7221 | aim_ssi_delicon(od->sess); |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
7222 | } else if (!stat(iconfile, &st)) { |
| 5842 | 7223 | char *buf = g_malloc(st.st_size); |
| 7224 | file = fopen(iconfile, "rb"); | |
| 7225 | if (file) { | |
|
6052
61348856ae28
[gaim-migrate @ 6502]
Mark Doliner <markdoliner@pidgin.im>
parents:
6051
diff
changeset
|
7226 | md5_state_t *state; |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
7227 | char md5[16]; |
|
9532
32470c5a1d58
[gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
9481
diff
changeset
|
7228 | /* XXX - Use g_file_get_contents()? */ |
| 5842 | 7229 | int len = fread(buf, 1, st.st_size, file); |
|
6039
0d9378194f65
[gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents:
6037
diff
changeset
|
7230 | fclose(file); |
|
6052
61348856ae28
[gaim-migrate @ 6502]
Mark Doliner <markdoliner@pidgin.im>
parents:
6051
diff
changeset
|
7231 | state = g_malloc(sizeof(md5_state_t)); |
| 5842 | 7232 | md5_init(state); |
| 7233 | md5_append(state, buf, len); | |
| 7234 | md5_finish(state, md5); | |
| 7235 | g_free(state); | |
| 7236 | aim_ssi_seticon(sess, md5, 16); | |
| 7237 | } else | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7238 | gaim_debug_error("oscar", |
| 5842 | 7239 | "Can't open buddy icon file!\n"); |
| 7240 | g_free(buf); | |
| 7241 | } else | |
|
8660
db1625f0f9d1
[gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents:
8623
diff
changeset
|
7242 | gaim_debug_error("oscar", |
| 5842 | 7243 | "Can't stat buddy icon file!\n"); |
| 7244 | } | |
| 7245 | ||
| 7246 | ||
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7247 | static GList *oscar_actions(GaimPlugin *plugin, gpointer context) |
| 2086 | 7248 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7249 | GaimConnection *gc = (GaimConnection *) context; |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7250 | OscarData *od = gc->proto_data; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7251 | GList *m = NULL; |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7252 | GaimPluginAction *act; |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7253 | |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7254 | act = gaim_plugin_action_new(_("Set User Info..."), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7255 | oscar_show_set_info); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7256 | m = g_list_append(m, act); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7257 | |
| 8576 | 7258 | if (od->icq) { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7259 | act = gaim_plugin_action_new(_("Set User Info (URL)..."), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7260 | oscar_show_set_info_icqurl); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7261 | m = g_list_append(m, act); |
| 8576 | 7262 | } |
| 7263 | ||
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7264 | act = gaim_plugin_action_new(_("Change Password..."), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7265 | oscar_change_pass); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7266 | m = g_list_append(m, act); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7267 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7268 | if (od->sess->authinfo->chpassurl) { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7269 | act = gaim_plugin_action_new(_("Change Password (URL)"), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7270 | oscar_show_chpassurl); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7271 | m = g_list_append(m, act); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7272 | |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7273 | act = gaim_plugin_action_new(_("Configure IM Forwarding (URL)"), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7274 | oscar_show_imforwardingurl); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7275 | m = g_list_append(m, act); |
|
7026
7828abff32da
[gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents:
7023
diff
changeset
|
7276 | } |
|
7828abff32da
[gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents:
7023
diff
changeset
|
7277 | |
|
5238
b2c65d7392e0
[gaim-migrate @ 5608]
Mark Doliner <markdoliner@pidgin.im>
parents:
5234
diff
changeset
|
7278 | if (!od->icq) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7279 | /* AIM actions */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7280 | m = g_list_append(m, NULL); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7281 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7282 | act = gaim_plugin_action_new(_("Format Screen Name..."), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7283 | oscar_show_format_screenname); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7284 | m = g_list_append(m, act); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7285 | |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7286 | act = gaim_plugin_action_new(_("Confirm Account"), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7287 | oscar_confirm_account); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7288 | m = g_list_append(m, act); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7289 | |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7290 | act = gaim_plugin_action_new(_("Display Currently Registered Address"), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7291 | oscar_show_email); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7292 | m = g_list_append(m, act); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7293 | |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7294 | act = gaim_plugin_action_new(_("Change Currently Registered Address..."), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7295 | oscar_show_change_email); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7296 | m = g_list_append(m, act); |
| 2086 | 7297 | } |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7298 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7299 | m = g_list_append(m, NULL); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7300 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7301 | act = gaim_plugin_action_new(_("Show Buddies Awaiting Authorization"), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7302 | oscar_show_awaitingauth); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7303 | m = g_list_append(m, act); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7304 | |
| 2086 | 7305 | m = g_list_append(m, NULL); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7306 | |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7307 | act = gaim_plugin_action_new(_("Search for Buddy by Email..."), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7308 | oscar_show_find_email); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7309 | m = g_list_append(m, act); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
7310 | |
|
8591
ae42ad1cd127
[gaim-migrate @ 9342]
Mark Doliner <markdoliner@pidgin.im>
parents:
8590
diff
changeset
|
7311 | #if 0 |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7312 | act = gaim_plugin_action_new(_("Search for Buddy by Information"), |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7313 | show_find_info); |
|
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7314 | m = g_list_append(m, act); |
|
8591
ae42ad1cd127
[gaim-migrate @ 9342]
Mark Doliner <markdoliner@pidgin.im>
parents:
8590
diff
changeset
|
7315 | #endif |
| 2086 | 7316 | |
| 7317 | return m; | |
| 7318 | } | |
| 7319 | ||
| 5575 | 7320 | static void oscar_change_passwd(GaimConnection *gc, const char *old, const char *new) |
| 2086 | 7321 | { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7322 | OscarData *od = gc->proto_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7323 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7324 | if (od->icq) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7325 | aim_icq_changepasswd(od->sess, new); |
| 2086 | 7326 | } else { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7327 | aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7328 | if (conn) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7329 | aim_admin_changepasswd(od->sess, conn, new, old); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7330 | } else { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7331 | od->chpass = TRUE; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7332 | od->oldp = g_strdup(old); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7333 | od->newp = g_strdup(new); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7334 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
7335 | } |
| 2086 | 7336 | } |
| 7337 | } | |
| 7338 | ||
|
6059
9934c862ca14
[gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents:
6053
diff
changeset
|
7339 | static void oscar_convo_closed(GaimConnection *gc, const char *who) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
7340 | { |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
7341 | OscarData *od = gc->proto_data; |
| 8971 | 7342 | struct oscar_direct_im *dim = oscar_direct_im_find(od, who); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
7343 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
7344 | if (!dim) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
7345 | return; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
7346 | |
| 8971 | 7347 | oscar_direct_im_destroy(od, dim); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
7348 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
7349 | |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7350 | static void |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7351 | recent_buddies_cb(const char *name, GaimPrefType type, gpointer value, gpointer data) |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7352 | { |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7353 | GaimConnection *gc = data; |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7354 | OscarData *od = gc->proto_data; |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7355 | aim_session_t *sess = od->sess; |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7356 | fu32_t presence; |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7357 | |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7358 | presence = aim_ssi_getpresence(sess->ssi.local); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7359 | |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7360 | if (value) { |
|
9992
d733f96bfc7b
[gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents:
9991
diff
changeset
|
7361 | /* Based on the packet capture I thought it was the first one */ |
|
d733f96bfc7b
[gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents:
9991
diff
changeset
|
7362 | /* Stu thinks it's the second one. */ |
|
d733f96bfc7b
[gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents:
9991
diff
changeset
|
7363 | /* presence |= 0x00400000; */ |
|
9971
8291bafb0025
[gaim-migrate @ 10882]
Daniel Atallah <datallah@pidgin.im>
parents:
9948
diff
changeset
|
7364 | presence &= ~0x00020000; |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7365 | aim_ssi_setpresence(sess, presence); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7366 | } else { |
|
9992
d733f96bfc7b
[gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents:
9991
diff
changeset
|
7367 | /* presence &= ~0x00400000; */ |
|
9971
8291bafb0025
[gaim-migrate @ 10882]
Daniel Atallah <datallah@pidgin.im>
parents:
9948
diff
changeset
|
7368 | presence |= 0x00020000; |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7369 | aim_ssi_setpresence(sess, presence); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7370 | } |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7371 | } |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7372 | |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7373 | static GaimPluginPrefFrame * |
|
9936
7cfb397cc0d9
[gaim-migrate @ 10828]
Mark Doliner <markdoliner@pidgin.im>
parents:
9935
diff
changeset
|
7374 | get_plugin_pref_frame(GaimPlugin *plugin) |
|
7cfb397cc0d9
[gaim-migrate @ 10828]
Mark Doliner <markdoliner@pidgin.im>
parents:
9935
diff
changeset
|
7375 | { |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7376 | GaimPluginPrefFrame *frame; |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7377 | GaimPluginPref *ppref; |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7378 | |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7379 | frame = gaim_plugin_pref_frame_new(); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7380 | |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7381 | ppref = gaim_plugin_pref_new_with_name_and_label("/plugins/prpl/oscar/recent_buddies", _("Use recent buddies group")); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7382 | gaim_plugin_pref_frame_add(frame, ppref); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7383 | |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7384 | ppref = gaim_plugin_pref_new_with_name_and_label("/plugins/prpl/oscar/show_idle", _("Show how long you have been idle")); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7385 | gaim_plugin_pref_frame_add(frame, ppref); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7386 | |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7387 | return frame; |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7388 | } |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7389 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7390 | static GaimPluginProtocolInfo prpl_info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7391 | { |
| 9308 | 7392 | OPT_PROTO_MAIL_CHECK | OPT_PROTO_IM_IMAGE, |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7393 | NULL, /* user_splits */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7394 | NULL, /* protocol_options */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7395 | {"jpeg,gif,bmp,ico", 48, 48, 50, 50, GAIM_ICON_SCALE_DISPLAY}, /* icon_spec */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7396 | oscar_list_icon, /* list_icon */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7397 | oscar_list_emblems, /* list_emblems */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7398 | oscar_status_text, /* status_text */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7399 | oscar_tooltip_text, /* tooltip_text */ |
|
9973
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
7400 | oscar_status_types, /* status_types */ |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7401 | oscar_blist_node_menu, /* blist_node_menu */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7402 | oscar_chat_info, /* chat_info */ |
|
9754
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9753
diff
changeset
|
7403 | oscar_chat_info_defaults, /* chat_info_defaults */ |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7404 | oscar_login, /* login */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7405 | oscar_close, /* close */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7406 | oscar_send_im, /* send_im */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7407 | oscar_set_info, /* set_info */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7408 | oscar_send_typing, /* send_typing */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7409 | oscar_get_info, /* get_info */ |
|
9973
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
7410 | oscar_set_status, /* set_status */ |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7411 | oscar_set_idle, /* set_idle */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7412 | oscar_change_passwd, /* change_passwd */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7413 | oscar_add_buddy, /* add_buddy */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7414 | oscar_add_buddies, /* add_buddies */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7415 | oscar_remove_buddy, /* remove_buddy */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7416 | oscar_remove_buddies, /* remove_buddies */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7417 | oscar_add_permit, /* add_permit */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7418 | oscar_add_deny, /* add_deny */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7419 | oscar_rem_permit, /* rem_permit */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7420 | oscar_rem_deny, /* rem_deny */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7421 | oscar_set_permit_deny, /* set_permit_deny */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7422 | oscar_warn, /* warn */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7423 | oscar_join_chat, /* join_chat */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7424 | NULL, /* reject_chat */ |
|
9973
e163f8e7e8a4
[gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents:
9972
diff
changeset
|
7425 | oscar_get_chat_name, /* get_chat_name */ |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7426 | oscar_chat_invite, /* chat_invite */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7427 | oscar_chat_leave, /* chat_leave */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7428 | NULL, /* chat_whisper */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7429 | oscar_send_chat, /* chat_send */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7430 | oscar_keepalive, /* keepalive */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7431 | NULL, /* register_user */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7432 | NULL, /* get_cb_info */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7433 | NULL, /* get_cb_away */ |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7434 | #ifndef NOSSI |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7435 | oscar_alias_buddy, /* alias_buddy */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7436 | oscar_move_buddy, /* group_buddy */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7437 | oscar_rename_group, /* rename_group */ |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7438 | #else |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7439 | NULL, /* alias_buddy */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7440 | NULL, /* group_buddy */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7441 | NULL, /* rename_group */ |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7442 | #endif |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7443 | NULL, /* buddy_free */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7444 | oscar_convo_closed, /* convo_closed */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7445 | NULL, /* normalize */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7446 | oscar_set_icon, /* set_buddy_icon */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7447 | NULL, /* remove_group */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7448 | NULL, /* get_cb_real_name */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7449 | NULL, /* set_chat_topic */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7450 | NULL, /* find_blist_chat */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7451 | NULL, /* roomlist_get_list */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7452 | NULL, /* roomlist_cancel */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7453 | NULL, /* roomlist_expand_category */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7454 | oscar_can_receive_file, /* can_receive_file */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9466
diff
changeset
|
7455 | oscar_send_file /* send_file */ |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7456 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7457 | |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7458 | static GaimPluginUiInfo prefs_info = { |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7459 | get_plugin_pref_frame |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7460 | }; |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7461 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7462 | static GaimPluginInfo info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7463 | { |
| 9943 | 7464 | GAIM_PLUGIN_MAGIC, |
| 7465 | GAIM_MAJOR_VERSION, | |
| 7466 | GAIM_MINOR_VERSION, | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7467 | GAIM_PLUGIN_PROTOCOL, /**< type */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7468 | NULL, /**< ui_requirement */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7469 | 0, /**< flags */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7470 | NULL, /**< dependencies */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7471 | GAIM_PRIORITY_DEFAULT, /**< priority */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7472 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7473 | "prpl-oscar", /**< id */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7474 | "AIM/ICQ", /**< name */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7475 | VERSION, /**< version */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7476 | /** summary */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7477 | N_("AIM/ICQ Protocol Plugin"), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7478 | /** description */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7479 | N_("AIM/ICQ Protocol Plugin"), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7480 | NULL, /**< author */ |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6350
diff
changeset
|
7481 | GAIM_WEBSITE, /**< homepage */ |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7482 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7483 | NULL, /**< load */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7484 | NULL, /**< unload */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7485 | NULL, /**< destroy */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7486 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7487 | NULL, /**< ui_info */ |
| 8993 | 7488 | &prpl_info, /**< extra_info */ |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7489 | &prefs_info, /**< prefs_info */ |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8995
diff
changeset
|
7490 | oscar_actions |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7491 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7492 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7493 | static void |
|
5920
963bfdefee02
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5917
diff
changeset
|
7494 | init_plugin(GaimPlugin *plugin) |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7495 | { |
|
5638
53e752c88ea1
[gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents:
5631
diff
changeset
|
7496 | GaimAccountOption *option; |
|
53e752c88ea1
[gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents:
5631
diff
changeset
|
7497 | |
|
9830
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
7498 | option = gaim_account_option_string_new(_("Auth host"), "server", FAIM_LOGIN_SERVER); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
7499 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
7500 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
7501 | option = gaim_account_option_int_new(_("Auth port"), "port", FAIM_LOGIN_PORT); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
7502 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
7503 | |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
7504 | option = gaim_account_option_string_new(_("Encoding"), "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING); |
|
a4c47fa6b462
[gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents:
9826
diff
changeset
|
7505 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7506 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
7507 | my_protocol = plugin; |
|
9935
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7508 | |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7509 | gaim_prefs_add_none("/plugins/prpl/oscar"); |
|
45473da3a39b
[gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents:
9933
diff
changeset
|
7510 | gaim_prefs_add_bool("/plugins/prpl/oscar/recent_buddies", FALSE); |
|
9942
6cba898c9db1
[gaim-migrate @ 10834]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9936
diff
changeset
|
7511 | gaim_prefs_add_bool("/plugins/prpl/oscar/show_idle", FALSE); |
| 2086 | 7512 | } |
| 7513 | ||
|
5920
963bfdefee02
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5917
diff
changeset
|
7514 | GAIM_INIT_PLUGIN(oscar, init_plugin, info); |