libfaim/aim_buddylist.c

Fri, 19 Jan 2001 09:11:16 +0000

author
Eric Warmenhoven <warmenhoven@yahoo.com>
date
Fri, 19 Jan 2001 09:11:16 +0000
changeset 1415
e851476edab1
parent 1248
d98eb324cffe
permissions
-rw-r--r--

[gaim-migrate @ 1425]
woo hoo

2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1
283
dbf3342692e9 [gaim-migrate @ 293]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 237
diff changeset
2 #include <faim/aim.h>
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
3
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
4 /*
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
5 * aim_add_buddy()
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
6 *
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
7 * Adds a single buddy to your buddy list after login.
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
8 *
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
9 */
840
b80a628d935f [gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 835
diff changeset
10 faim_export unsigned long aim_add_buddy(struct aim_session_t *sess,
b80a628d935f [gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 835
diff changeset
11 struct aim_conn_t *conn,
b80a628d935f [gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 835
diff changeset
12 char *sn )
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
13 {
237
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
14 struct command_tx_struct *newpacket;
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
15 int i;
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
16
237
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
17 if(!sn)
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
18 return -1;
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
19
445
f7ef3b61a842 [gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 283
diff changeset
20 if (!(newpacket = aim_tx_new(AIM_FRAMETYPE_OSCAR, 0x0002, conn, 10+1+strlen(sn))))
237
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
21 return -1;
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
22
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
23 newpacket->lock = 1;
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
24
237
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
25 i = aim_putsnac(newpacket->data, 0x0003, 0x0004, 0x0000, sess->snac_nextid);
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
26 i += aimutil_put8(newpacket->data+i, strlen(sn));
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
27 i += aimutil_putstr(newpacket->data+i, sn, strlen(sn));
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
28
237
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
29 aim_tx_enqueue(sess, newpacket );
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
30
1248
d98eb324cffe [gaim-migrate @ 1258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 840
diff changeset
31 aim_cachesnac(sess, 0x0003, 0x0004, 0x0000, sn, strlen(sn)+1);
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
32
1248
d98eb324cffe [gaim-migrate @ 1258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 840
diff changeset
33 return sess->snac_nextid;
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
34 }
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
35
840
b80a628d935f [gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 835
diff changeset
36 faim_export unsigned long aim_remove_buddy(struct aim_session_t *sess,
b80a628d935f [gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 835
diff changeset
37 struct aim_conn_t *conn,
b80a628d935f [gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 835
diff changeset
38 char *sn )
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
39 {
237
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
40 struct command_tx_struct *newpacket;
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
41 int i;
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
42
237
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
43 if(!sn)
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
44 return -1;
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
45
445
f7ef3b61a842 [gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 283
diff changeset
46 if (!(newpacket = aim_tx_new(AIM_FRAMETYPE_OSCAR, 0x0002, conn, 10+1+strlen(sn))))
237
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
47 return -1;
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
48
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
49 newpacket->lock = 1;
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
50
237
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
51 i = aim_putsnac(newpacket->data, 0x0003, 0x0005, 0x0000, sess->snac_nextid);
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
52
237
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
53 i += aimutil_put8(newpacket->data+i, strlen(sn));
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
54 i += aimutil_putstr(newpacket->data+i, sn, strlen(sn));
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
55
237
83ff5f92ee7e [gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2
diff changeset
56 aim_tx_enqueue(sess, newpacket);
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
57
1248
d98eb324cffe [gaim-migrate @ 1258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 840
diff changeset
58 aim_cachesnac(sess, 0x0003, 0x0005, 0x0000, sn, strlen(sn)+1);
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
59
1248
d98eb324cffe [gaim-migrate @ 1258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 840
diff changeset
60 return sess->snac_nextid;
2
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
61 }
62fbb00c531a [gaim-migrate @ 11]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
62
840
b80a628d935f [gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 835
diff changeset
63 faim_internal int aim_parse_buddyrights(struct aim_session_t *sess,
b80a628d935f [gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 835
diff changeset
64 struct command_rx_struct *command, ...)
835
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
65 {
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
66 rxcallback_t userfunc = NULL;
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
67 int ret=1;
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
68 struct aim_tlvlist_t *tlvlist;
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
69 unsigned short maxbuddies = 0, maxwatchers = 0;
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
70
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
71 /*
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
72 * TLVs follow
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
73 */
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
74 if (!(tlvlist = aim_readtlvchain(command->data+10, command->commandlen-10)))
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
75 return ret;
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
76
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
77 /*
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
78 * TLV type 0x0001: Maximum number of buddies.
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
79 */
1248
d98eb324cffe [gaim-migrate @ 1258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 840
diff changeset
80 if (aim_gettlv(tlvlist, 0x0001, 1))
d98eb324cffe [gaim-migrate @ 1258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 840
diff changeset
81 maxbuddies = aim_gettlv16(tlvlist, 0x0001, 1);
835
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
82
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
83 /*
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
84 * TLV type 0x0002: Maximum number of watchers.
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
85 *
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
86 * XXX: what the hell is a watcher?
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
87 *
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
88 */
1248
d98eb324cffe [gaim-migrate @ 1258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 840
diff changeset
89 if (aim_gettlv(tlvlist, 0x0002, 1))
d98eb324cffe [gaim-migrate @ 1258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 840
diff changeset
90 maxwatchers = aim_gettlv16(tlvlist, 0x0002, 1);
835
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
91
1248
d98eb324cffe [gaim-migrate @ 1258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 840
diff changeset
92 if ((userfunc = aim_callhandler(command->conn, 0x0003, 0x0003)))
835
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
93 ret = userfunc(sess, command, maxbuddies, maxwatchers);
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
94
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
95 aim_freetlvchain(&tlvlist);
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
96
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
97 return ret;
ae8ae0549dd5 [gaim-migrate @ 845]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 715
diff changeset
98 }

mercurial