diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2006-03-21 09:12:22 +0100 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2006-03-21 09:12:22 +0100 | 
| commit | aefa533eb48587d9f509a8dcab358061b72c7b3b (patch) | |
| tree | 269b4625750f1ae7b366085e8487906fd2096d8a /root_commands.c | |
| parent | 1ad104ab06fe3f7db1b55cc178e92e43cbda9d95 (diff) | |
Added a special +b usermode for easier parseability of some things.
(For now blist and qlist, but more should come)
Diffstat (limited to 'root_commands.c')
| -rw-r--r-- | root_commands.c | 41 | 
1 files changed, 29 insertions, 12 deletions
| diff --git a/root_commands.c b/root_commands.c index f69442d3..34445b9e 100644 --- a/root_commands.c +++ b/root_commands.c @@ -634,7 +634,8 @@ static void cmd_blist( irc_t *irc, char **cmd )  {  	int online = 0, away = 0, offline = 0;  	user_t *u; -	char s[64]; +	char s[256]; +	char *format;  	int n_online = 0, n_away = 0, n_offline = 0;  	if( cmd[1] && g_strcasecmp( cmd[1], "all" ) == 0 ) @@ -648,30 +649,46 @@ static void cmd_blist( irc_t *irc, char **cmd )  	else  		online =  away = 1; -	irc_usermsg( irc, "%-16.16s  %-40.40s  %s", "Nick", "User/Host/Network", "Status" ); +	if( strchr( irc->umode, 'b' ) != NULL ) +		format = "%s\t%s\t%s"; +	else +		format = "%-16.16s  %-40.40s  %s"; +	 +	irc_usermsg( irc, format, "Nick", "User/Host/Network", "Status" ); -	if( online == 1 ) for( u = irc->users; u; u = u->next ) if( u->gc && u->online && !u->away ) +	for( u = irc->users; u; u = u->next ) if( u->gc && u->online && !u->away )  	{ -		g_snprintf( s, 63, "%s@%s (%s)", u->user, u->host, u->gc->user->prpl->name ); -		irc_usermsg( irc, "%-16.16s  %-40.40s  %s", u->nick, s, "Online" ); +		if( online == 1 ) +		{ +			g_snprintf( s, sizeof( s ) - 1, "%s@%s (%s)", u->user, u->host, u->gc->user->prpl->name ); +			irc_usermsg( irc, format, u->nick, s, "Online" ); +		} +		  		n_online ++;  	} -	if( away == 1 ) for( u = irc->users; u; u = u->next ) if( u->gc && u->online && u->away ) +	for( u = irc->users; u; u = u->next ) if( u->gc && u->online && u->away )  	{ -		g_snprintf( s, 63, "%s@%s (%s)", u->user, u->host, u->gc->user->prpl->name ); -		irc_usermsg( irc, "%-16.16s  %-40.40s  %s", u->nick, s, u->away ); +		if( away == 1 ) +		{ +			g_snprintf( s, sizeof( s ) - 1, "%s@%s (%s)", u->user, u->host, u->gc->user->prpl->name ); +			irc_usermsg( irc, format, u->nick, s, u->away ); +		}  		n_away ++;  	} -	if( offline == 1 ) for( u = irc->users; u; u = u->next ) if( u->gc && !u->online ) +	for( u = irc->users; u; u = u->next ) if( u->gc && !u->online )  	{ -		g_snprintf( s, 63, "%s@%s (%s)", u->user, u->host, u->gc->user->prpl->name ); -		irc_usermsg( irc, "%-16.16s  %-40.40s  %s", u->nick, s, "Offline" ); +		if( offline == 1 ) +		{ +			g_snprintf( s, sizeof( s ) - 1, "%s@%s (%s)", u->user, u->host, u->gc->user->prpl->name ); +			irc_usermsg( irc, format, u->nick, s, "Offline" ); +		}  		n_offline ++;  	} -	irc_usermsg( irc, "%d buddies (%d available, %d away, %d offline)", n_online + n_away + n_offline, n_online, n_away, n_offline ); +	if( strchr( irc->umode, 'b' ) == NULL ) +		irc_usermsg( irc, "%d buddies (%d available, %d away, %d offline)", n_online + n_away + n_offline, n_online, n_away, n_offline );  }  static void cmd_nick( irc_t *irc, char **cmd )  | 
