diff options
author | Dave Davenport <qball@gmpclient.org> | 2015-10-04 16:37:07 +0200 |
---|---|---|
committer | Dave Davenport <qball@gmpclient.org> | 2015-10-04 16:37:07 +0200 |
commit | 6b039ac524e4569533b153d7a9276a82583e0ffe (patch) | |
tree | 6276dfc798250cea3d17b917a0ce8ed40eff10fb /source/helper.c | |
parent | 1369c162fefbde596b7e3592d4b1f14c9a20ce49 (diff) |
Add tokenize option and append * to glob.
Diffstat (limited to 'source/helper.c')
-rw-r--r-- | source/helper.c | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/source/helper.c b/source/helper.c index 18270e9c..76055c12 100644 --- a/source/helper.c +++ b/source/helper.c @@ -176,8 +176,21 @@ char **tokenize ( const char *input, int case_sensitive ) char *saveptr = NULL, *token; char **retv = NULL; + if ( !config.tokenize ) { + retv = g_malloc0 ( sizeof ( char* ) * 2 ); + if ( config.glob ) { + token = g_strconcat ( input, "*", NULL ); + retv[0] = token_collate_key ( token, case_sensitive ); + g_free ( token ); token = NULL; + } + else{ + token = token_collate_key ( input, case_sensitive ); + } + return retv; + } + // First entry is always full (modified) stringtext. - int num_tokens = 0; + int num_tokens = 0; // Copy the string, 'strtok_r' modifies it. char *str = g_strdup ( input ); @@ -185,8 +198,15 @@ char **tokenize ( const char *input, int case_sensitive ) // Iterate over tokens. // strtok should still be valid for utf8. for ( token = strtok_r ( str, " ", &saveptr ); token != NULL; token = strtok_r ( NULL, " ", &saveptr ) ) { - retv = g_realloc ( retv, sizeof ( char* ) * ( num_tokens + 2 ) ); - retv[num_tokens] = token_collate_key ( token, case_sensitive ); + retv = g_realloc ( retv, sizeof ( char* ) * ( num_tokens + 2 ) ); + if ( config.glob ) { + char *t = token_collate_key ( token, case_sensitive ); + retv[num_tokens] = g_strconcat ( t, "*", NULL ); + g_free ( t ); + } + else { + retv[num_tokens] = token_collate_key ( token, case_sensitive ); + } retv[num_tokens + 1] = NULL; num_tokens++; } |