Mercurial > pidgin
comparison libfaim/aim_buddylist.c @ 237:6ced2f1c8b24
[gaim-migrate @ 247]
How cool is this, libfaim is making a comeback. I completely redid everything,
as was necessary because of the updates to libfaim since gaim 0.9.7. You can
sign on and send/recv IMs, but there's a bad lag between display updates that
I haven't figured out how to fix yet.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Sat, 20 May 2000 00:30:53 +0000 |
parents | 68b230f8da5f |
children | 0f14e6d8a51b |
comparison
equal
deleted
inserted
replaced
236:62d470738cc7 | 237:6ced2f1c8b24 |
---|---|
5 * aim_add_buddy() | 5 * aim_add_buddy() |
6 * | 6 * |
7 * Adds a single buddy to your buddy list after login. | 7 * Adds a single buddy to your buddy list after login. |
8 * | 8 * |
9 */ | 9 */ |
10 u_long aim_add_buddy(struct aim_conn_t *conn, char *sn ) | 10 u_long aim_add_buddy(struct aim_session_t *sess, |
11 struct aim_conn_t *conn, | |
12 char *sn ) | |
11 { | 13 { |
12 struct command_tx_struct newpacket; | 14 struct command_tx_struct *newpacket; |
15 int i; | |
13 | 16 |
14 if( !sn ) | 17 if(!sn) |
15 return -1; | 18 return -1; |
16 | 19 |
17 if (conn) | 20 if (!(newpacket = aim_tx_new(0x0002, conn, 10+1+strlen(sn)))) |
18 newpacket.conn = conn; | 21 return -1; |
19 else | |
20 newpacket.conn = aim_getconn_type(AIM_CONN_TYPE_BOS); | |
21 | 22 |
22 newpacket.lock = 1; | 23 newpacket->lock = 1; |
23 newpacket.type = 0x0002; | |
24 newpacket.commandlen = 11 + strlen( sn ); | |
25 newpacket.data = (char *)malloc( newpacket.commandlen ); | |
26 | 24 |
27 newpacket.data[0] = 0x00; | 25 i = aim_putsnac(newpacket->data, 0x0003, 0x0004, 0x0000, sess->snac_nextid); |
28 newpacket.data[1] = 0x03; | 26 i += aimutil_put8(newpacket->data+i, strlen(sn)); |
29 newpacket.data[2] = 0x00; | 27 i += aimutil_putstr(newpacket->data+i, sn, strlen(sn)); |
30 newpacket.data[3] = 0x04; | |
31 newpacket.data[4] = 0x00; | |
32 newpacket.data[5] = 0x00; | |
33 | 28 |
34 /* SNAC reqid */ | 29 aim_tx_enqueue(sess, newpacket ); |
35 newpacket.data[6] = (aim_snac_nextid >> 24) & 0xFF; | |
36 newpacket.data[7] = (aim_snac_nextid >> 16) & 0xFF; | |
37 newpacket.data[8] = (aim_snac_nextid >> 8) & 0xFF; | |
38 newpacket.data[9] = (aim_snac_nextid) & 0xFF; | |
39 | |
40 /* length of screenname */ | |
41 newpacket.data[10] = strlen( sn ); | |
42 | |
43 memcpy( &(newpacket.data[11]), sn, strlen( sn ) ); | |
44 | |
45 aim_tx_enqueue( &newpacket ); | |
46 | 30 |
47 { | 31 { |
48 struct aim_snac_t snac; | 32 struct aim_snac_t snac; |
49 | 33 |
50 snac.id = aim_snac_nextid; | 34 snac.id = sess->snac_nextid; |
51 snac.family = 0x0003; | 35 snac.family = 0x0003; |
52 snac.type = 0x0004; | 36 snac.type = 0x0004; |
53 snac.flags = 0x0000; | 37 snac.flags = 0x0000; |
54 | 38 |
55 snac.data = malloc( strlen( sn ) + 1 ); | 39 snac.data = malloc( strlen( sn ) + 1 ); |
56 memcpy( snac.data, sn, strlen( sn ) + 1 ); | 40 memcpy( snac.data, sn, strlen( sn ) + 1 ); |
57 | 41 |
58 aim_newsnac( &snac ); | 42 aim_newsnac(sess, &snac); |
59 } | 43 } |
60 | 44 |
61 return( aim_snac_nextid++ ); | 45 return( sess->snac_nextid++ ); |
62 } | 46 } |
63 | 47 |
64 u_long aim_remove_buddy(struct aim_conn_t *conn, char *sn ) | 48 u_long aim_remove_buddy(struct aim_session_t *sess, |
49 struct aim_conn_t *conn, | |
50 char *sn ) | |
65 { | 51 { |
66 struct command_tx_struct newpacket; | 52 struct command_tx_struct *newpacket; |
53 int i; | |
67 | 54 |
68 if( !sn ) | 55 if(!sn) |
69 return -1; | 56 return -1; |
70 | 57 |
71 if (conn) | 58 if (!(newpacket = aim_tx_new(0x0002, conn, 10+1+strlen(sn)))) |
72 newpacket.conn = conn; | 59 return -1; |
73 else | |
74 newpacket.conn = aim_getconn_type(AIM_CONN_TYPE_BOS); | |
75 | 60 |
76 newpacket.lock = 1; | 61 newpacket->lock = 1; |
77 newpacket.type = 0x0002; | |
78 newpacket.commandlen = 11 + strlen(sn); | |
79 newpacket.data = (char *)malloc( newpacket.commandlen ); | |
80 | 62 |
81 newpacket.data[0] = 0x00; | 63 i = aim_putsnac(newpacket->data, 0x0003, 0x0005, 0x0000, sess->snac_nextid); |
82 newpacket.data[1] = 0x03; | |
83 newpacket.data[2] = 0x00; | |
84 newpacket.data[3] = 0x05; | |
85 newpacket.data[4] = 0x00; | |
86 newpacket.data[5] = 0x00; | |
87 | 64 |
88 /* SNAC reqid */ | 65 i += aimutil_put8(newpacket->data+i, strlen(sn)); |
89 newpacket.data[6] = (aim_snac_nextid >> 24) & 0xFF; | 66 i += aimutil_putstr(newpacket->data+i, sn, strlen(sn)); |
90 newpacket.data[7] = (aim_snac_nextid >> 16) & 0xFF; | |
91 newpacket.data[8] = (aim_snac_nextid >> 8) & 0xFF; | |
92 newpacket.data[9] = (aim_snac_nextid) & 0xFF; | |
93 | 67 |
94 /* length of screenname */ | 68 aim_tx_enqueue(sess, newpacket); |
95 newpacket.data[10] = strlen( sn ); | |
96 | |
97 memcpy( &(newpacket.data[11]), sn, strlen( sn ) ); | |
98 | |
99 aim_tx_enqueue( &newpacket ); | |
100 | 69 |
101 { | 70 { |
102 struct aim_snac_t snac; | 71 struct aim_snac_t snac; |
103 | 72 |
104 snac.id = aim_snac_nextid; | 73 snac.id = sess->snac_nextid; |
105 snac.family = 0x0003; | 74 snac.family = 0x0003; |
106 snac.type = 0x0005; | 75 snac.type = 0x0005; |
107 snac.flags = 0x0000; | 76 snac.flags = 0x0000; |
108 | 77 |
109 snac.data = malloc( strlen( sn ) + 1 ); | 78 snac.data = malloc( strlen( sn ) + 1 ); |
110 memcpy( snac.data, sn, strlen( sn ) + 1 ); | 79 memcpy( snac.data, sn, strlen( sn ) + 1 ); |
111 | 80 |
112 aim_newsnac( &snac ); | 81 aim_newsnac(sess, &snac ); |
113 } | 82 } |
114 | 83 |
115 return( aim_snac_nextid++ ); | 84 return( sess->snac_nextid++ ); |
116 } | 85 } |
117 | 86 |