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 ); } |