diff --git a/include/util.h b/include/util.h index 86d19ce..fe54f98 100644 --- a/include/util.h +++ b/include/util.h @@ -9,7 +9,6 @@ #define __UTIL_H__ void remove_last_part_of_path(char *fullpath); -int replace_blanks_with_single_space(char *s, size_t len); char *kind_as_string(char *s, int kind, int n); char *version_as_string(char *s, long v, int n); diff --git a/src/util.c b/src/util.c index 4bddd5f..4a269b8 100644 --- a/src/util.c +++ b/src/util.c @@ -31,47 +31,6 @@ void remove_last_part_of_path(char *fullpath) } } -/** - * @brief Replaces multiple spaces and tabs with single spaces - * - * @param s The string to be reduced - * @param len Current length of the string - * @return int New length of the string - */ -int replace_blanks_with_single_space(char *s, size_t len) -{ - int j = 0; - int count = 0; - - if (len == 1 && isblank(s[0])) - { - s[0] = '\0'; - return len; - } - - if (len < 2) - return len; - - for (int i = 0; s[i] != '\0'; i++) - { - if (isblank(s[i])) - { - count++; - } - else - { - if (count >= 1) - { - count = 0; - s[j++] = ' '; - } - s[j++] = s[i]; - } - } - s[j] = '\0'; - return j; -} - /** * @brief Converts Voicemeeter's kind into a string. * diff --git a/src/vmrcli.c b/src/vmrcli.c index b22cb23..6fc5998 100644 --- a/src/vmrcli.c +++ b/src/vmrcli.c @@ -50,7 +50,7 @@ static bool vflag = false; void help(void); enum kind set_kind(char *kval); void interactive(PT_VMR vmr); -void parse_input(PT_VMR vmr, char *input, int len); +void parse_input(PT_VMR vmr, char *input); void parse_command(PT_VMR vmr, char *command); void get(PT_VMR vmr, char *command, struct result *res); @@ -160,7 +160,7 @@ int main(int argc, char *argv[]) { for (int i = optind; i < argc; i++) { - parse_input(vmr, argv[i], strlen(argv[i])); + parse_input(vmr, argv[i]); } } @@ -240,16 +240,15 @@ enum kind set_kind(char *kval) void interactive(PT_VMR vmr) { char input[MAX_LINE]; - size_t len; printf(">> "); while (fgets(input, MAX_LINE, stdin) != NULL) { input[strcspn(input, "\n")] = 0; - if ((len = strlen(input)) == 1 && toupper(input[0]) == 'Q') + if (strlen(input) == 1 && toupper(input[0]) == 'Q') break; - parse_input(vmr, input, len); + parse_input(vmr, input); memset(input, 0, MAX_LINE); /* reset input buffer */ printf(">> "); @@ -262,18 +261,16 @@ void interactive(PT_VMR vmr) * * @param vmr Pointer to the iVMR interface * @param input Each input line, from stdin or CLI args - * @param len The length of the input line */ -void parse_input(PT_VMR vmr, char *input, int len) +void parse_input(PT_VMR vmr, char *input) { - char *token; + char *token, *p; - replace_blanks_with_single_space(input, len); - token = strtok(input, " "); + token = strtok_r(input, " \t;,", &p); while (token != NULL) { parse_command(vmr, token); - token = strtok(NULL, " "); + token = strtok_r(NULL, " \t;,", &p); } }