Beispiel #1
0
int session_send_notify(Session *s){
GList *it;
uin_t *userlist;
char *types;
int userlist_len;
int i;

	g_assert(s!=NULL);
	userlist_len=g_list_length(s->user->contacts);
	userlist=g_new(uin_t,userlist_len+1);
	types=g_new(char,userlist_len+1);

	i=0;
	for(it=g_list_first(s->user->contacts);it;it=g_list_next(it)){
		Contact *c=(Contact *)it->data;
		c->gg_notify_type=compute_notify_type(c);
		if(c->gg_notify_type){
			userlist[i]=c->uin;
			types[i]=c->gg_notify_type;
			i++;
		}
	}

	userlist[i]=0;
	types[i]=0;

	debug("gg_notify_ex(%p,%p,%p,%i)",s->ggs,userlist,types,userlist_len);
	gg_notify_ex(s->ggs,userlist,types,userlist_len);

	g_free(userlist);
	g_free(types);
	return 0;
}
Beispiel #2
0
/* this is for for notify purposes, not synchronizing buddy list */
void ggp_buddylist_send(PurpleConnection *gc)
{
	GGPInfo *info = purple_connection_get_protocol_data(gc);
	PurpleAccount *account = purple_connection_get_account(gc);
	GSList *buddies;
	uin_t *userlist;
	gchar *types;
	int i = 0, ret = 0;
	int size;

	buddies = purple_blist_find_buddies(account, NULL);

	size = g_slist_length(buddies);
	userlist = g_new(uin_t, size);
	types    = g_new(gchar, size);

	for (buddies = purple_blist_find_buddies(account, NULL); buddies;
			buddies = g_slist_delete_link(buddies, buddies), ++i)
	{
		PurpleBuddy *buddy = buddies->data;
		const gchar *name = purple_buddy_get_name(buddy);

		userlist[i] = ggp_str_to_uin(name);
		types[i]    = GG_USER_NORMAL;
		purple_debug_info("gg", "ggp_buddylist_send: adding %d\n",
			userlist[i]);
	}

	ret = gg_notify_ex(info->session, userlist, types, size);
	purple_debug_info("gg", "send: ret=%d; size=%d\n", ret, size);

	if (userlist) {
		g_free(userlist);
		g_free(types);
	}
}