diff options
Diffstat (limited to 'skype/skype.c')
-rw-r--r-- | skype/skype.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/skype/skype.c b/skype/skype.c index e0c3f22e..e0e5901a 100644 --- a/skype/skype.c +++ b/skype/skype.c @@ -108,7 +108,8 @@ static gboolean skype_read_callback( gpointer data, gint fd, b_input_condition c status++; ptr = strchr(++user, ' '); *ptr = '\0'; - if(strcmp(user, sd->username) != 0 && strcmp(user, "echo123") != 0) + ptr++; + if(!strncmp(ptr, "ONLINESTATUS ", 13) && strcmp(user, sd->username) != 0 && strcmp(user, "echo123") != 0) { ptr = g_strdup_printf("%s@skype.com", user); imcb_add_buddy(ic, ptr, NULL); @@ -274,10 +275,30 @@ static GList *skype_away_states( struct im_connection *ic ) static void skype_add_buddy( struct im_connection *ic, char *who, char *group ) { + char *buf, *nick, *ptr; + + nick = g_strdup_printf("%s", who); + ptr = strchr(nick, '@'); + if(ptr) + *ptr = '\0'; + buf = g_strdup_printf("SET USER %s BUDDYSTATUS 2 Please authorize me\n", nick); + skype_write( ic, buf, strlen( buf ) ); + printf("add '%s'\n", nick); + g_free(nick); } static void skype_remove_buddy( struct im_connection *ic, char *who, char *group ) { + char *buf, *nick, *ptr; + + nick = g_strdup_printf("%s", who); + ptr = strchr(nick, '@'); + if(ptr) + *ptr = '\0'; + buf = g_strdup_printf("SET USER %s BUDDYSTATUS 1\n", nick); + skype_write( ic, buf, strlen( buf ) ); + printf("remove '%s'\n", nick); + g_free(nick); } void init_plugin(void) |