Wed, 13 May 2009 20:29:03 +0000
Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
1 | /* |
| 15884 | 2 | * Purple's oscar protocol plugin |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
3 | * This file is the legal property of its developers. |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
4 | * Please see the AUTHORS file distributed alongside this file. |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
5 | * |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
6 | * This library is free software; you can redistribute it and/or |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
7 | * modify it under the terms of the GNU Lesser General Public |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
8 | * License as published by the Free Software Foundation; either |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
9 | * version 2 of the License, or (at your option) any later version. |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
10 | * |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
11 | * This library is distributed in the hope that it will be useful, |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
14 | * Lesser General Public License for more details. |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
15 | * |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
16 | * You should have received a copy of the GNU Lesser General Public |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
17 | * License along with this library; if not, write to the Free Software |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
17443
diff
changeset
|
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
19 | */ |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
20 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
21 | /* |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
22 | * Family 0x0009 - Basic Oscar Service. |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
23 | * |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
24 | * The functionality of this family has been replaced by SSI. |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
25 | */ |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
26 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
27 | #include "oscar.h" |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
28 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
29 | #include <string.h> |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
30 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
31 | /* Subtype 0x0002 - Request BOS rights. */ |
|
13610
b2c15a312144
[gaim-migrate @ 15995]
Mark Doliner <markdoliner@pidgin.im>
parents:
13593
diff
changeset
|
32 | void |
|
b2c15a312144
[gaim-migrate @ 15995]
Mark Doliner <markdoliner@pidgin.im>
parents:
13593
diff
changeset
|
33 | aim_bos_reqrights(OscarData *od, FlapConnection *conn) |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
34 | { |
|
23456
66ab07770438
Replaced family_*'s magic numbers of FLAP families with the constants
Evan Schoenberg <evands@pidgin.im>
parents:
22860
diff
changeset
|
35 | aim_genericreq_n_snacid(od, conn, SNAC_FAMILY_BOS, 0x0002); |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
36 | } |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
37 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
38 | /* Subtype 0x0003 - BOS Rights. */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13259
diff
changeset
|
39 | static int rights(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame, aim_modsnac_t *snac, ByteStream *bs) |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
40 | { |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
41 | aim_rxcallback_t userfunc; |
|
17443
bae8548d98b3
Cleanup and simplification of some tlvlist stuff in the oscar protocol.
Mark Doliner <markdoliner@pidgin.im>
parents:
17280
diff
changeset
|
42 | GSList *tlvlist; |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
43 | guint16 maxpermits = 0, maxdenies = 0; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
44 | int ret = 0; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
45 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
46 | /* |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
47 | * TLVs follow |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
48 | */ |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
49 | tlvlist = aim_tlvlist_read(bs); |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
50 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
51 | /* |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
52 | * TLV type 0x0001: Maximum number of buddies on permit list. |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
53 | */ |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
54 | if (aim_tlv_gettlv(tlvlist, 0x0001, 1)) |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
55 | maxpermits = aim_tlv_get16(tlvlist, 0x0001, 1); |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
56 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
57 | /* |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
58 | * TLV type 0x0002: Maximum number of buddies on deny list. |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
59 | */ |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
60 | if (aim_tlv_gettlv(tlvlist, 0x0002, 1)) |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
61 | maxdenies = aim_tlv_get16(tlvlist, 0x0002, 1); |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
62 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13259
diff
changeset
|
63 | if ((userfunc = aim_callhandler(od, snac->family, snac->subtype))) |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13259
diff
changeset
|
64 | ret = userfunc(od, conn, frame, maxpermits, maxdenies); |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
65 | |
|
17443
bae8548d98b3
Cleanup and simplification of some tlvlist stuff in the oscar protocol.
Mark Doliner <markdoliner@pidgin.im>
parents:
17280
diff
changeset
|
66 | aim_tlvlist_free(tlvlist); |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
67 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
68 | return ret; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
69 | } |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
70 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
71 | /* |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
72 | * Subtype 0x0004 - Set group permission mask. |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
73 | * |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
74 | * Normally 0x1f (all classes). |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
75 | * |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
76 | * The group permission mask allows you to keep users of a certain |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
77 | * class or classes from talking to you. The mask should be |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
78 | * a bitwise OR of all the user classes you want to see you. |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
79 | * |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
80 | */ |
|
15147
101192282f5d
[gaim-migrate @ 17871]
Mark Doliner <markdoliner@pidgin.im>
parents:
14254
diff
changeset
|
81 | void |
|
101192282f5d
[gaim-migrate @ 17871]
Mark Doliner <markdoliner@pidgin.im>
parents:
14254
diff
changeset
|
82 | aim_bos_setgroupperm(OscarData *od, FlapConnection *conn, guint32 mask) |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
83 | { |
|
23456
66ab07770438
Replaced family_*'s magic numbers of FLAP families with the constants
Evan Schoenberg <evands@pidgin.im>
parents:
22860
diff
changeset
|
84 | aim_genericreq_l(od, conn, SNAC_FAMILY_BOS, 0x0004, &mask); |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
85 | } |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
86 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
87 | /* |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
88 | * Stubtypes 0x0005, 0x0006, 0x0007, and 0x0008 - Modify permit/deny lists. |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
89 | * |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
90 | * Changes your visibility depending on changetype: |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
91 | * |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
92 | * AIM_VISIBILITYCHANGE_PERMITADD: Lets provided list of names see you |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
93 | * AIM_VISIBILITYCHANGE_PERMIDREMOVE: Removes listed names from permit list |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
94 | * AIM_VISIBILITYCHANGE_DENYADD: Hides you from provided list of names |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
95 | * AIM_VISIBILITYCHANGE_DENYREMOVE: Lets list see you again |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
96 | * |
|
25889
26d9ca30335c
Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents:
23456
diff
changeset
|
97 | * list should be a list of "Buddy Name One&BuddyNameTwo&" etc. |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
98 | * |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
99 | * Equivelents to options in WinAIM: |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
100 | * - Allow all users to contact me: Send an AIM_VISIBILITYCHANGE_DENYADD |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
101 | * with only your name on it. |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
102 | * - Allow only users on my Buddy List: Send an |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
103 | * AIM_VISIBILITYCHANGE_PERMITADD with the list the same as your |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
104 | * buddy list |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
105 | * - Allow only the uesrs below: Send an AIM_VISIBILITYCHANGE_PERMITADD |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
106 | * with everyone listed that you want to see you. |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
107 | * - Block all users: Send an AIM_VISIBILITYCHANGE_PERMITADD with only |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
108 | * yourself in the list |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
109 | * - Block the users below: Send an AIM_VISIBILITYCHANGE_DENYADD with |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
110 | * the list of users to be blocked |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
111 | * |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
112 | * XXX ye gods. |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
113 | */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13259
diff
changeset
|
114 | int aim_bos_changevisibility(OscarData *od, FlapConnection *conn, int changetype, const char *denylist) |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
115 | { |
|
22860
2b0e247173b2
All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents:
19859
diff
changeset
|
116 | ByteStream bs; |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
117 | int packlen = 0; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
118 | guint16 subtype; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
119 | char *localcpy = NULL, *tmpptr = NULL; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
120 | int i; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
121 | int listcount; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
122 | aim_snacid_t snacid; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
123 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
124 | if (!denylist) |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
125 | return -EINVAL; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
126 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
127 | if (changetype == AIM_VISIBILITYCHANGE_PERMITADD) |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
128 | subtype = 0x05; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
129 | else if (changetype == AIM_VISIBILITYCHANGE_PERMITREMOVE) |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
130 | subtype = 0x06; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
131 | else if (changetype == AIM_VISIBILITYCHANGE_DENYADD) |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
132 | subtype = 0x07; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
133 | else if (changetype == AIM_VISIBILITYCHANGE_DENYREMOVE) |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
134 | subtype = 0x08; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
135 | else |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
136 | return -EINVAL; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
137 | |
|
17280
7c0472208173
Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents:
15884
diff
changeset
|
138 | localcpy = g_strdup(denylist); |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
139 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
140 | listcount = aimutil_itemcnt(localcpy, '&'); |
|
22860
2b0e247173b2
All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents:
19859
diff
changeset
|
141 | packlen = aimutil_tokslen(localcpy, 99, '&') + listcount-1; |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
142 | |
|
22860
2b0e247173b2
All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents:
19859
diff
changeset
|
143 | byte_stream_new(&bs, packlen); |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
144 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
145 | for (i = 0; (i < (listcount - 1)) && (i < 99); i++) { |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
146 | tmpptr = aimutil_itemindex(localcpy, i, '&'); |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
147 | |
|
22860
2b0e247173b2
All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents:
19859
diff
changeset
|
148 | byte_stream_put8(&bs, strlen(tmpptr)); |
|
2b0e247173b2
All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents:
19859
diff
changeset
|
149 | byte_stream_putstr(&bs, tmpptr); |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
150 | |
|
17280
7c0472208173
Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents:
15884
diff
changeset
|
151 | g_free(tmpptr); |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
152 | } |
|
17280
7c0472208173
Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents:
15884
diff
changeset
|
153 | g_free(localcpy); |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
154 | |
|
23456
66ab07770438
Replaced family_*'s magic numbers of FLAP families with the constants
Evan Schoenberg <evands@pidgin.im>
parents:
22860
diff
changeset
|
155 | snacid = aim_cachesnac(od, SNAC_FAMILY_BOS, subtype, 0x0000, NULL, 0); |
|
66ab07770438
Replaced family_*'s magic numbers of FLAP families with the constants
Evan Schoenberg <evands@pidgin.im>
parents:
22860
diff
changeset
|
156 | flap_connection_send_snac(od, conn, SNAC_FAMILY_BOS, subtype, 0x0000, snacid, &bs); |
|
22860
2b0e247173b2
All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents:
19859
diff
changeset
|
157 | |
|
2b0e247173b2
All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents:
19859
diff
changeset
|
158 | byte_stream_destroy(&bs); |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
159 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
160 | return 0; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
161 | } |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
162 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13259
diff
changeset
|
163 | static int |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13259
diff
changeset
|
164 | snachandler(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame, aim_modsnac_t *snac, ByteStream *bs) |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
165 | { |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
166 | if (snac->subtype == 0x0003) |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13259
diff
changeset
|
167 | return rights(od, conn, mod, frame, snac, bs); |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
168 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
169 | return 0; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
170 | } |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
171 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13259
diff
changeset
|
172 | int |
|
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13259
diff
changeset
|
173 | bos_modfirst(OscarData *od, aim_module_t *mod) |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
174 | { |
|
23456
66ab07770438
Replaced family_*'s magic numbers of FLAP families with the constants
Evan Schoenberg <evands@pidgin.im>
parents:
22860
diff
changeset
|
175 | mod->family = SNAC_FAMILY_BOS; |
|
13259
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
176 | mod->version = 0x0001; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
177 | mod->toolid = 0x0110; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
178 | mod->toolversion = 0x0629; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
179 | mod->flags = 0; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
180 | strncpy(mod->name, "bos", sizeof(mod->name)); |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
181 | mod->snachandler = snachandler; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
182 | |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
183 | return 0; |
|
9c64f67cbc05
[gaim-migrate @ 15624]
Mark Doliner <markdoliner@pidgin.im>
parents:
13255
diff
changeset
|
184 | } |