[Gaim-bnetg-commits] gaim-bnetg/src buddy.c,1.5,1.6 msgs.c,1.8,1.9
Status: Pre-Alpha
Brought to you by:
evew
|
From: Dario Z. <ev...@us...> - 2005-03-02 23:00:56
|
Update of /cvsroot/gaim-bnetg/gaim-bnetg/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25183/src Modified Files: buddy.c msgs.c Log Message: Just make sure buddy aren't added twice. Index: msgs.c =================================================================== RCS file: /cvsroot/gaim-bnetg/gaim-bnetg/src/msgs.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** msgs.c 23 Feb 2005 01:02:56 -0000 1.8 --- msgs.c 2 Mar 2005 23:00:46 -0000 1.9 *************** *** 60,80 **** } - static void - bnetg_hash_check_buddy(gpointer key, gpointer value, gpointer user_data) { - BNetGConn *conn = BNETG_CONN(user_data); - BNetGBuddy *buddy = BNETG_BUDDY(value); - - if (buddy->fl_position == -1) { - /* Consider server list authoritative... if buddy was added by - * local list and don't exist on server, then delete it - */ - GaimBuddy *gb = gaim_find_buddy(conn->account, buddy->name); - g_return_if_fail(gb); - - gaim_blist_remove_buddy(gb); - bnetg_buddies_remove(conn->buddies, buddy); - } - } - /****************************************************************************** * Messages Callbacks --- 60,63 ---- *************** *** 388,393 **** serv_got_update(gc, nick, location != 0, 0, 0, 0, 0); } - - g_hash_table_foreach(conn->buddies, bnetg_hash_check_buddy, conn); } --- 371,374 ---- Index: buddy.c =================================================================== RCS file: /cvsroot/gaim-bnetg/gaim-bnetg/src/buddy.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** buddy.c 2 Mar 2005 21:26:27 -0000 1.5 --- buddy.c 2 Mar 2005 23:00:45 -0000 1.6 *************** *** 165,182 **** bnetg_buddy_add(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) { BNetGConn *conn = BNETG_CONN(gc->proto_data); ! const gchar *norm; gaim_debug_info("bnetg", "bnetg_buddy_add\n"); ! norm = gaim_normalize(gc->account, buddy->name); ! if (!g_hash_table_lookup(conn->buddies, norm)) { ! if (conn->welcome) { ! /* Manually added */ ! bnetg_conn_add_friend(conn, buddy->name); ! } ! } else { ! /* Buddy already exists, remove it */ gaim_blist_remove_buddy(buddy); } } --- 165,190 ---- bnetg_buddy_add(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) { BNetGConn *conn = BNETG_CONN(gc->proto_data); ! GSList *buddies; ! const gchar *name = buddy->name; ! guint len; gaim_debug_info("bnetg", "bnetg_buddy_add\n"); ! buddies = gaim_find_buddies(conn->account, name); ! g_return_if_fail((len = g_slist_length(buddies)) > 0); ! if (len > 1) { ! /* Buddy already exists (local), remove it */ gaim_blist_remove_buddy(buddy); + } else { + if (!bnetg_buddy_lookup(conn, name)) { + if (conn->welcome) { + /* Manually added */ + bnetg_conn_add_friend(conn, name); + } + } else { + /* Buddy already exists (remote), remove it */ + gaim_blist_remove_buddy(buddy); + } } } |