diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-07-17 15:37:33 +0100 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-07-17 15:37:33 +0100 | 
| commit | 6f0ea5781ea4bd50324ee81758a9fd72ef780fcd (patch) | |
| tree | 1560eecb16d736e701a4c6daecc99d29c2e87dff /nick.c | |
| parent | 5e98ff07af5a8d89b7c813f55dfd0972fca11297 (diff) | |
Making nick_format a tiny bit more complicated: Allow truncating a variable
to a certain length.
Diffstat (limited to 'nick.c')
| -rw-r--r-- | nick.c | 11 | 
1 files changed, 10 insertions, 1 deletions
| @@ -116,6 +116,7 @@ char *nick_gen( bee_user_t *bu )  	while( fmt && *fmt && ret->len < MAX_NICK_LENGTH )  	{  		char *part, chop = '\0', *asc = NULL; +		int len = MAX_NICK_LENGTH;  		if( *fmt != '%' )  		{ @@ -135,6 +136,13 @@ char *nick_gen( bee_user_t *bu )  					return NULL;  				fmt += 2;  			} +			else if( isdigit( *fmt ) ) +			{ +				len = 0; +				/* Grab a number. */ +				while( isdigit( *fmt ) ) +					len = len * 10 + ( *(fmt++) - '0' ); +			}  			else if( g_strncasecmp( fmt, "nick", 4 ) == 0 )  			{  				part = bu->nick ? : bu->handle; @@ -187,13 +195,14 @@ char *nick_gen( bee_user_t *bu )  		if( ret->len == 0 && part && isdigit( *part ) )  			g_string_append_c( ret, '_' ); -		while( part && *part && *part != chop ) +		while( part && *part && *part != chop && len > 0 )  		{  			if( strchr( nick_lc_chars, *part ) ||  			    strchr( nick_uc_chars, *part ) )  				g_string_append_c( ret, *part );  			part ++; +			len --;  		}  		g_free( asc );  	} | 
