aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/yahoo
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/yahoo')
-rw-r--r--protocols/yahoo/libyahoo2.c30
-rw-r--r--protocols/yahoo/yahoo.c11
2 files changed, 10 insertions, 31 deletions
diff --git a/protocols/yahoo/libyahoo2.c b/protocols/yahoo/libyahoo2.c
index c691f18b..69b63baa 100644
--- a/protocols/yahoo/libyahoo2.c
+++ b/protocols/yahoo/libyahoo2.c
@@ -89,6 +89,8 @@ char *strchr (), *strrchr ();
#define vsnprintf _vsnprintf
#endif
+#include "base64.h"
+
#ifdef USE_STRUCT_CALLBACKS
struct yahoo_callbacks *yc=NULL;
@@ -694,34 +696,10 @@ static void yahoo_packet_dump(unsigned char *data, int len)
}
}
-static char base64digits[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "abcdefghijklmnopqrstuvwxyz"
- "0123456789._";
-static void to_y64(unsigned char *out, const unsigned char *in, int inlen)
/* raw bytes in quasi-big-endian order to base 64 string (NUL-terminated) */
+static void to_y64(unsigned char *out, const unsigned char *in, int inlen)
{
- for (; inlen >= 3; inlen -= 3)
- {
- *out++ = base64digits[in[0] >> 2];
- *out++ = base64digits[((in[0]<<4) & 0x30) | (in[1]>>4)];
- *out++ = base64digits[((in[1]<<2) & 0x3c) | (in[2]>>6)];
- *out++ = base64digits[in[2] & 0x3f];
- in += 3;
- }
- if (inlen > 0)
- {
- unsigned char fragment;
-
- *out++ = base64digits[in[0] >> 2];
- fragment = (in[0] << 4) & 0x30;
- if (inlen > 1)
- fragment |= in[1] >> 4;
- *out++ = base64digits[fragment];
- *out++ = (inlen < 2) ? '-'
- : base64digits[(in[1] << 2) & 0x3c];
- *out++ = '-';
- }
- *out = '\0';
+ base64_encode_real(in, inlen, out, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._-");
}
static void yahoo_add_to_send_queue(struct yahoo_input_data *yid, void *data, int length)
diff --git a/protocols/yahoo/yahoo.c b/protocols/yahoo/yahoo.c
index 28735432..6f286196 100644
--- a/protocols/yahoo/yahoo.c
+++ b/protocols/yahoo/yahoo.c
@@ -120,16 +120,16 @@ static char *byahoo_strip( char *in )
return( g_strndup( in, len ) );
}
-static void byahoo_login( struct aim_user *user )
+static void byahoo_login( account_t *acc )
{
- struct gaim_connection *gc = new_gaim_conn( user );
+ struct gaim_connection *gc = new_gaim_conn( acc );
struct byahoo_data *yd = gc->proto_data = g_new0( struct byahoo_data, 1 );
yd->logged_in = FALSE;
yd->current_status = YAHOO_STATUS_AVAILABLE;
set_login_progress( gc, 1, "Connecting" );
- yd->y2_id = yahoo_init( user->username, user->password );
+ yd->y2_id = yahoo_init( acc->user, acc->pass );
yahoo_login( yd->y2_id, yd->current_status );
}
@@ -410,7 +410,8 @@ void byahoo_init( )
ret->chat_invite = byahoo_chat_invite;
ret->chat_leave = byahoo_chat_leave;
ret->chat_open = byahoo_chat_open;
- ret->cmp_buddynames = g_strcasecmp;
+
+ ret->handle_cmp = g_strcasecmp;
register_protocol(ret);
}
@@ -426,7 +427,7 @@ static struct gaim_connection *byahoo_get_gc_by_id( int id )
gc = l->data;
yd = gc->proto_data;
- if( !strcmp(gc->prpl->name, "yahoo") && yd->y2_id == id )
+ if( strcmp( gc->acc->prpl->name, "yahoo" ) == 0 && yd->y2_id == id )
return( gc );
}