diff options
| -rw-r--r-- | irc_user.c | 13 | ||||
| -rw-r--r-- | root_commands.c | 49 | 
2 files changed, 44 insertions, 18 deletions
| @@ -144,8 +144,17 @@ const char *irc_user_get_away( irc_user_t *iu )  		if( !bu->flags & BEE_USER_ONLINE )  			return "Offline";  		else if( bu->flags & BEE_USER_AWAY ) -			/* TODO: status msgs, etc. */ -			return bu->status; +		{ +			if( bu->status_msg ) +			{ +				static char ret[MAX_STRING]; +				g_snprintf( ret, MAX_STRING - 1, "%s (%s)", +				            bu->status ? : "Away", bu->status_msg ); +				return ret; +			} +			else +				return bu->status ? : "Away"; +		}  	}  	return NULL; diff --git a/root_commands.c b/root_commands.c index 7a4c021e..3dbf8bcd 100644 --- a/root_commands.c +++ b/root_commands.c @@ -880,11 +880,10 @@ static void cmd_set( irc_t *irc, char **cmd )  	cmd_set_real( irc, cmd, NULL, NULL );  } -#if 0  static void cmd_blist( irc_t *irc, char **cmd )  {  	int online = 0, away = 0, offline = 0; -	user_t *u; +	GSList *l;  	char s[256];  	char *format;  	int n_online = 0, n_away = 0, n_offline = 0; @@ -905,40 +904,58 @@ static void cmd_blist( irc_t *irc, char **cmd )  	else  		format = "%-16.16s  %-40.40s  %s"; -	irc_usermsg( irc, format, "Nick", "User/Host/Network", "Status" ); +	irc_usermsg( irc, format, "Nick", "Handle/Account", "Status" ); -	for( u = irc->users; u; u = u->next ) if( u->ic && u->online && !u->away ) +	for( l = irc->users; l; l = l->next )  	{ +		irc_user_t *iu = l->data; +		bee_user_t *bu = iu->bu; +		 +		if( !bu || ( bu->flags & ( BEE_USER_ONLINE | BEE_USER_AWAY ) ) != BEE_USER_ONLINE ) +			continue; +		  		if( online == 1 )  		{  			char st[256] = "Online"; -			if( u->status_msg ) -				g_snprintf( st, sizeof( st ) - 1, "Online (%s)", u->status_msg ); +			if( bu->status_msg ) +				g_snprintf( st, sizeof( st ) - 1, "Online (%s)", bu->status_msg ); -			g_snprintf( s, sizeof( s ) - 1, "%s@%s %s(%s)", u->user, u->host, u->ic->acc->prpl->name, u->ic->acc->user ); -			irc_usermsg( irc, format, u->nick, s, st ); +			g_snprintf( s, sizeof( s ) - 1, "%s %s(%s)", bu->handle, bu->ic->acc->prpl->name, bu->ic->acc->user ); +			irc_usermsg( irc, format, iu->nick, s, st );  		}  		n_online ++;  	} -	for( u = irc->users; u; u = u->next ) if( u->ic && u->online && u->away ) +	for( l = irc->users; l; l = l->next )  	{ +		irc_user_t *iu = l->data; +		bee_user_t *bu = iu->bu; +		 +		if( !bu || !( bu->flags & BEE_USER_ONLINE ) || !( bu->flags & BEE_USER_AWAY ) ) +			continue; +		  		if( away == 1 )  		{ -			g_snprintf( s, sizeof( s ) - 1, "%s@%s %s(%s)", u->user, u->host, u->ic->acc->prpl->name, u->ic->acc->user ); -			irc_usermsg( irc, format, u->nick, s, u->away ); +			g_snprintf( s, sizeof( s ) - 1, "%s %s(%s)", bu->handle, bu->ic->acc->prpl->name, bu->ic->acc->user ); +			irc_usermsg( irc, format, iu->nick, s, irc_user_get_away( iu ) );  		}  		n_away ++;  	} -	for( u = irc->users; u; u = u->next ) if( u->ic && !u->online ) +	for( l = irc->users; l; l = l->next )  	{ +		irc_user_t *iu = l->data; +		bee_user_t *bu = iu->bu; +		 +		if( !bu || bu->flags & BEE_USER_ONLINE ) +			continue; +		  		if( offline == 1 )  		{ -			g_snprintf( s, sizeof( s ) - 1, "%s@%s %s(%s)", u->user, u->host, u->ic->acc->prpl->name, u->ic->acc->user ); -			irc_usermsg( irc, format, u->nick, s, "Offline" ); +			g_snprintf( s, sizeof( s ) - 1, "%s %s(%s)", bu->handle, bu->ic->acc->prpl->name, bu->ic->acc->user ); +			irc_usermsg( irc, format, iu->nick, s, "Offline" );  		}  		n_offline ++;  	} @@ -946,6 +963,7 @@ static void cmd_blist( irc_t *irc, char **cmd )  	irc_usermsg( irc, "%d buddies (%d available, %d away, %d offline)", n_online + n_away + n_offline, n_online, n_away, n_offline );  } +#if 0  static void cmd_qlist( irc_t *irc, char **cmd )  {  	query_t *q = irc->queries; @@ -1145,6 +1163,7 @@ static void cmd_transfer( irc_t *irc, char **cmd )  const command_t commands[] = {  	{ "account",        1, cmd_account,        0 },  	{ "add",            2, cmd_add,            0 }, +	{ "blist",          0, cmd_blist,          0 },  	{ "drop",           1, cmd_drop,           0 },  	{ "help",           0, cmd_help,           0 },   	{ "identify",       1, cmd_identify,       0 }, @@ -1158,11 +1177,9 @@ const command_t commands[] = {  	{ "yes",            0, cmd_yesno,          0 },  #if 0  	{ "allow",          1, cmd_allow,          0 }, -	{ "blist",          0, cmd_blist,          0 },  	{ "block",          1, cmd_block,          0 },  	{ "chat",           1, cmd_chat,           0 },  	{ "ft",             0, cmd_transfer,       0 }, -	{ "join_chat",      2, cmd_join_chat,      0 },  	{ "qlist",          0, cmd_qlist,          0 },  	{ "transfer",       0, cmd_transfer,       0 },  #endif | 
