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