view libfaim/aim_buddylist.c @ 305:77404a4692b1

[gaim-migrate @ 315] 12:10:45 EWarmenhoven: ok, the new method for chosing a font: it tries the requested font at the requested size. if it can't do that, it tries the requested font at any size. if it can't do that, it tries courier at any size, then helvetica at any size. if it can't do *that*, it tries the person's default outgoing font, if they have one. if it can't do that, it tries courier, helvetica, then times, all in their most boring form (no bold, italics, etc) at any size. if it *still* can't do that, then there's just no hope, and it segfaults. but at least there's a few more layers of protection and probability that you're going to get *something* right 12:11:43 EWarmenhoven: i don't even know that it'll segfault, but i'm pretty sure it will, since by the time you get down there, it returns NULL :-P committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Thu, 01 Jun 2000 19:13:00 +0000
parents 0f14e6d8a51b
children e4c34ca88d9b
line wrap: on
line source


#include <faim/aim.h>

/*
 * aim_add_buddy()
 *
 * Adds a single buddy to your buddy list after login.
 *
 */
u_long aim_add_buddy(struct aim_session_t *sess,
		     struct aim_conn_t *conn, 
		     char *sn )
{
   struct command_tx_struct *newpacket;
   int i;

   if(!sn)
     return -1;

   if (!(newpacket = aim_tx_new(0x0002, conn, 10+1+strlen(sn))))
     return -1;

   newpacket->lock = 1;

   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));

   aim_tx_enqueue(sess, newpacket );

   {
      struct aim_snac_t snac;
    
      snac.id = sess->snac_nextid;
      snac.family = 0x0003;
      snac.type = 0x0004;
      snac.flags = 0x0000;

      snac.data = malloc( strlen( sn ) + 1 );
      memcpy( snac.data, sn, strlen( sn ) + 1 );

      aim_newsnac(sess, &snac);
   }

   return( sess->snac_nextid++ );
}

u_long aim_remove_buddy(struct aim_session_t *sess,
			struct aim_conn_t *conn, 
			char *sn )
{
   struct command_tx_struct *newpacket;
   int i;

   if(!sn)
     return -1;

   if (!(newpacket = aim_tx_new(0x0002, conn, 10+1+strlen(sn))))
     return -1;

   newpacket->lock = 1;

   i = aim_putsnac(newpacket->data, 0x0003, 0x0005, 0x0000, sess->snac_nextid);

   i += aimutil_put8(newpacket->data+i, strlen(sn));
   i += aimutil_putstr(newpacket->data+i, sn, strlen(sn));

   aim_tx_enqueue(sess, newpacket);

   {
      struct aim_snac_t snac;
    
      snac.id = sess->snac_nextid;
      snac.family = 0x0003;
      snac.type = 0x0005;
      snac.flags = 0x0000;

      snac.data = malloc( strlen( sn ) + 1 );
      memcpy( snac.data, sn, strlen( sn ) + 1 );

      aim_newsnac(sess, &snac );
   }

   return( sess->snac_nextid++ );
}