diff --git a/src/expand.c b/src/expand.c index 5f8b9674..80b4250e 100644 --- a/src/expand.c +++ b/src/expand.c @@ -1428,13 +1428,27 @@ void expand_alternative_phrase_option(cstring_array *strings, khash_t(str_set) * char_array_terminate(temp_string); token = char_array_get_string(temp_string); + + size_t token_len = strlen(token); + + if (token_len == 0) continue; + + size_t left_spaces = string_left_spaces_len(token, token_len); + size_t right_spaces = string_right_spaces_len(token, token_len); + + if (left_spaces + right_spaces == token_len) { + continue; + } + log_debug("full string=%s\n", token); khiter_t k = kh_get(str_set, unique_strings, token); if (k == kh_end(unique_strings)) { + char *dupe_token = strndup(str + left_spaces, len - left_spaces - right_spaces); + log_debug("doing postprocessing\n"); add_postprocessed_string(strings, token, options); - k = kh_put(str_set, unique_strings, strdup(token), &ret); + k = kh_put(str_set, unique_strings, dupe_token, &ret); } log_debug("iter->remaining = %d\n", iter->remaining); diff --git a/src/string_utils.h b/src/string_utils.h index a94f1d93..873a670a 100644 --- a/src/string_utils.h +++ b/src/string_utils.h @@ -119,6 +119,8 @@ ssize_t string_next_period(char *str); bool string_contains_period_len(char *str, size_t len); bool string_contains_period(char *str); +size_t string_left_spaces_len(char *str, size_t len); +size_t string_right_spaces_len(char *str, size_t len); char *string_trim(char *str); size_t string_hyphen_prefix_len(char *str, size_t len);