diff 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
line wrap: on
line diff
--- a/libfaim/aim_buddylist.c	Thu May 18 18:20:18 2000 +0000
+++ b/libfaim/aim_buddylist.c	Sat May 20 00:30:53 2000 +0000
@@ -7,47 +7,31 @@
  * Adds a single buddy to your buddy list after login.
  *
  */
-u_long aim_add_buddy(struct aim_conn_t *conn, char *sn )
+u_long aim_add_buddy(struct aim_session_t *sess,
+		     struct aim_conn_t *conn, 
+		     char *sn )
 {
-   struct command_tx_struct newpacket;
-
-   if( !sn )
-      return -1;
+   struct command_tx_struct *newpacket;
+   int i;
 
-   if (conn)
-     newpacket.conn = conn;
-   else
-     newpacket.conn = aim_getconn_type(AIM_CONN_TYPE_BOS);
-
-   newpacket.lock = 1;
-   newpacket.type = 0x0002;
-   newpacket.commandlen = 11 + strlen( sn );
-   newpacket.data = (char *)malloc( newpacket.commandlen );
+   if(!sn)
+     return -1;
 
-   newpacket.data[0] = 0x00;
-   newpacket.data[1] = 0x03;
-   newpacket.data[2] = 0x00;
-   newpacket.data[3] = 0x04;
-   newpacket.data[4] = 0x00;
-   newpacket.data[5] = 0x00;
+   if (!(newpacket = aim_tx_new(0x0002, conn, 10+1+strlen(sn))))
+     return -1;
+
+   newpacket->lock = 1;
 
-   /* SNAC reqid */
-   newpacket.data[6] = (aim_snac_nextid >> 24) & 0xFF;
-   newpacket.data[7] = (aim_snac_nextid >> 16) & 0xFF;
-   newpacket.data[8] = (aim_snac_nextid >>  8) & 0xFF;
-   newpacket.data[9] = (aim_snac_nextid) & 0xFF;
+   i = aim_putsnac(newpacket->data, 0x0003, 0x0004, 0x0000, sess->snac_nextid);
+   i += aimutil_put8(newpacket->data+i, strlen(sn));
+   i += aimutil_putstr(newpacket->data+i, sn, strlen(sn));
 
-   /* length of screenname */ 
-   newpacket.data[10] = strlen( sn );
-
-   memcpy( &(newpacket.data[11]), sn, strlen( sn ) );
-
-   aim_tx_enqueue( &newpacket );
+   aim_tx_enqueue(sess, newpacket );
 
    {
       struct aim_snac_t snac;
     
-      snac.id = aim_snac_nextid;
+      snac.id = sess->snac_nextid;
       snac.family = 0x0003;
       snac.type = 0x0004;
       snac.flags = 0x0000;
@@ -55,53 +39,38 @@
       snac.data = malloc( strlen( sn ) + 1 );
       memcpy( snac.data, sn, strlen( sn ) + 1 );
 
-      aim_newsnac( &snac );
+      aim_newsnac(sess, &snac);
    }
 
-   return( aim_snac_nextid++ );
+   return( sess->snac_nextid++ );
 }
 
-u_long aim_remove_buddy(struct aim_conn_t *conn, char *sn )
+u_long aim_remove_buddy(struct aim_session_t *sess,
+			struct aim_conn_t *conn, 
+			char *sn )
 {
-   struct command_tx_struct newpacket;
-
-   if( !sn )
-      return -1;
+   struct command_tx_struct *newpacket;
+   int i;
 
-   if (conn)
-     newpacket.conn = conn;
-   else
-     newpacket.conn = aim_getconn_type(AIM_CONN_TYPE_BOS);
-
-   newpacket.lock = 1;
-   newpacket.type = 0x0002;
-   newpacket.commandlen = 11 + strlen(sn);
-   newpacket.data = (char *)malloc( newpacket.commandlen );
+   if(!sn)
+     return -1;
 
-   newpacket.data[0] = 0x00;
-   newpacket.data[1] = 0x03;
-   newpacket.data[2] = 0x00;
-   newpacket.data[3] = 0x05;
-   newpacket.data[4] = 0x00;
-   newpacket.data[5] = 0x00;
+   if (!(newpacket = aim_tx_new(0x0002, conn, 10+1+strlen(sn))))
+     return -1;
+
+   newpacket->lock = 1;
 
-   /* SNAC reqid */
-   newpacket.data[6] = (aim_snac_nextid >> 24) & 0xFF;
-   newpacket.data[7] = (aim_snac_nextid >> 16) & 0xFF;
-   newpacket.data[8] = (aim_snac_nextid >>  8) & 0xFF;
-   newpacket.data[9] = (aim_snac_nextid) & 0xFF;
+   i = aim_putsnac(newpacket->data, 0x0003, 0x0005, 0x0000, sess->snac_nextid);
 
-   /* length of screenname */ 
-   newpacket.data[10] = strlen( sn );
+   i += aimutil_put8(newpacket->data+i, strlen(sn));
+   i += aimutil_putstr(newpacket->data+i, sn, strlen(sn));
 
-   memcpy( &(newpacket.data[11]), sn, strlen( sn ) );
-
-   aim_tx_enqueue( &newpacket );
+   aim_tx_enqueue(sess, newpacket);
 
    {
       struct aim_snac_t snac;
     
-      snac.id = aim_snac_nextid;
+      snac.id = sess->snac_nextid;
       snac.family = 0x0003;
       snac.type = 0x0005;
       snac.flags = 0x0000;
@@ -109,9 +78,9 @@
       snac.data = malloc( strlen( sn ) + 1 );
       memcpy( snac.data, sn, strlen( sn ) + 1 );
 
-      aim_newsnac( &snac );
+      aim_newsnac(sess, &snac );
    }
 
-   return( aim_snac_nextid++ );
+   return( sess->snac_nextid++ );
 }