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