@ -29,7 +29,7 @@
# include "util.h"
static int
int
nick_cmp_az_ops ( server * serv , struct User * user1 , struct User * user2 )
{
unsigned int access1 = user1 - > access ;
@ -52,30 +52,12 @@ nick_cmp_az_ops (server *serv, struct User *user1, struct User *user2)
return serv - > p_cmp ( user1 - > nick , user2 - > nick ) ;
}
static int
int
nick_cmp_alpha ( struct User * user1 , struct User * user2 , server * serv )
{
return serv - > p_cmp ( user1 - > nick , user2 - > nick ) ;
}
static int
nick_cmp ( struct User * user1 , struct User * user2 , server * serv )
{
switch ( prefs . hex_gui_ulist_sort )
{
case 0 :
return nick_cmp_az_ops ( serv , user1 , user2 ) ;
case 1 :
return serv - > p_cmp ( user1 - > nick , user2 - > nick ) ;
case 2 :
return - 1 * nick_cmp_az_ops ( serv , user1 , user2 ) ;
case 3 :
return - 1 * serv - > p_cmp ( user1 - > nick , user2 - > nick ) ;
default :
return - 1 ;
}
}
/*
insert name in appropriate place in linked list . Returns row number or :
- 1 : duplicate
@ -86,11 +68,9 @@ userlist_insertname (session *sess, struct User *newuser)
{
if ( ! sess - > usertree )
{
sess - > usertree = tree_new ( ( tree_cmp_func * ) nick_cmp , sess - > server ) ;
sess - > usertree_alpha = tree_new ( ( tree_cmp_func * ) nick_cmp_alpha , sess - > server ) ;
sess - > usertree = tree_new ( ( tree_cmp_func * ) nick_cmp_alpha , sess - > server ) ;
}
tree_insert ( sess - > usertree_alpha , newuser ) ;
return tree_insert ( sess - > usertree , newuser ) ;
}
@ -188,10 +168,8 @@ userlist_free (session *sess)
{
tree_foreach ( sess - > usertree , ( tree_traverse_func * ) free_user , NULL ) ;
tree_destroy ( sess - > usertree ) ;
tree_destroy ( sess - > usertree_alpha ) ;
sess - > usertree = NULL ;
sess - > usertree_alpha = NULL ;
sess - > me = NULL ;
sess - > ops = 0 ;
@ -219,8 +197,8 @@ userlist_find (struct session *sess, const char *name)
{
int pos ;
if ( sess - > usertree _alpha )
return tree_find ( sess - > usertree _alpha , name ,
if ( sess - > usertree )
return tree_find ( sess - > usertree , name ,
( tree_cmp_func * ) find_cmp , sess - > server , & pos ) ;
return NULL ;
@ -283,7 +261,7 @@ userlist_update_mode (session *sess, char *name, char mode, char sign)
/* remove from binary trees, before we loose track of it */
tree_remove ( sess - > usertree , user , & pos ) ;
tree_remove ( sess - > usertree_alpha , user , & pos ) ;
fe_userlist_remove ( sess , user ) ;
/* which bit number is affected? */
access = mode_access ( sess - > server , mode , & prefix ) ;
@ -313,11 +291,8 @@ userlist_update_mode (session *sess, char *name, char mode, char sign)
update_counts ( sess , user , prefix , level , offset ) ;
/* insert it back into its new place */
tree_insert ( sess - > usertree_alpha , user ) ;
pos = tree_insert ( sess - > usertree , user ) ;
/* let GTK move it too */
fe_userlist_move ( sess , user , pos ) ;
tree_insert ( sess - > usertree , user ) ;
fe_userlist_insert ( sess , user , FALSE ) ;
fe_userlist_numbers ( sess ) ;
}
@ -330,14 +305,12 @@ userlist_change (struct session *sess, char *oldname, char *newname)
if ( user )
{
tree_remove ( sess - > usertree , user , & pos ) ;
tree_remove ( sess - > usertree_alpha , user , & pos ) ;
fe_userlist_remove ( sess , user ) ;
safe_strcpy ( user - > nick , newname , NICKLEN ) ;
tree_insert ( sess - > usertree_alpha , user ) ;
fe_userlist_move ( sess , user , tree_insert ( sess - > usertree , user ) ) ;
fe_userlist_numbers ( sess ) ;
tree_insert ( sess - > usertree , user ) ;
fe_userlist_insert ( sess , user , FALSE ) ;
return 1 ;
}
@ -376,7 +349,6 @@ userlist_remove_user (struct session *sess, struct User *user)
sess - > me = NULL ;
tree_remove ( sess - > usertree , user , & pos ) ;
tree_remove ( sess - > usertree_alpha , user , & pos ) ;
free_user ( user , NULL ) ;
}
@ -442,7 +414,7 @@ userlist_add (struct session *sess, char *name, char *hostname,
if ( user - > me )
sess - > me = user ;
fe_userlist_insert ( sess , user , row, FALSE) ;
fe_userlist_insert ( sess , user , FALSE) ;
fe_userlist_numbers ( sess ) ;
}
@ -456,7 +428,7 @@ rehash_cb (struct User *user, session *sess)
void
userlist_rehash ( session * sess )
{
tree_foreach ( sess - > usertree _alpha , ( tree_traverse_func * ) rehash_cb , sess ) ;
tree_foreach ( sess - > usertree , ( tree_traverse_func * ) rehash_cb , sess ) ;
}
static int
@ -471,7 +443,7 @@ userlist_flat_list (session *sess)
{
GSList * list = NULL ;
tree_foreach ( sess - > usertree _alpha , ( tree_traverse_func * ) flat_cb , & list ) ;
tree_foreach ( sess - > usertree , ( tree_traverse_func * ) flat_cb , & list ) ;
return g_slist_reverse ( list ) ;
}
@ -487,6 +459,6 @@ userlist_double_list(session *sess)
{
GList * list = NULL ;
tree_foreach ( sess - > usertree _alpha , ( tree_traverse_func * ) double_cb , & list ) ;
tree_foreach ( sess - > usertree , ( tree_traverse_func * ) double_cb , & list ) ;
return list ;
}