Moved quote stripper to common, added tests

This commit is contained in:
James Booth
2015-02-08 20:59:51 +00:00
parent 236e508cd8
commit 44c5b34a71
6 changed files with 79 additions and 27 deletions

View File

@@ -76,8 +76,6 @@ static gboolean _cmd_execute_alias(const char * const inp, gboolean *ran);
static char * _cmd_complete_parameters(const char * const input);
static char * _strip_quotes_from_names(const char * const input);
static char * _sub_autocomplete(const char * const input);
static char * _notify_autocomplete(const char * const input);
static char * _theme_autocomplete(const char * const input);
@@ -1970,7 +1968,7 @@ _cmd_complete_parameters(const char * const input)
gchar *nick_choices[] = { "/msg", "/info", "/caps", "/status", "/software" } ;
// Remove quote character before and after names when doing autocomplete
char *unquoted = _strip_quotes_from_names(input);
char *unquoted = strip_arg_quotes(input);
for (i = 0; i < ARRAY_SIZE(nick_choices); i++) {
result = autocomplete_param_with_ac(unquoted, nick_choices[i], nick_ac, TRUE);
if (result) {
@@ -1985,7 +1983,7 @@ _cmd_complete_parameters(const char * const input)
} else {
gchar *contact_choices[] = { "/msg", "/info", "/status" };
// Remove quote character before and after names when doing autocomplete
char *unquoted = _strip_quotes_from_names(input);
char *unquoted = strip_arg_quotes(input);
for (i = 0; i < ARRAY_SIZE(contact_choices); i++) {
result = autocomplete_param_with_func(unquoted, contact_choices[i], roster_contact_autocomplete);
if (result) {
@@ -3052,25 +3050,4 @@ command_docgen(void)
fclose(toc_fragment);
fclose(main_fragment);
g_list_free(cmds);
}
static char *
_strip_quotes_from_names(const char * const input) {
char *unquoted = strdup(input);
// Remove starting quote if it exists
if(strchr(unquoted, '"') != NULL) {
if(strchr(unquoted, ' ') + 1 == strchr(unquoted, '"')) {
memmove(strchr(unquoted, '"'), strchr(unquoted, '"')+1, strchr(unquoted, '\0') - strchr(unquoted, '"'));
}
}
// Remove ending quote if it exists
if(strchr(unquoted, '"') != NULL) {
if(strchr(unquoted, '\0') - 1 == strchr(unquoted, '"')) {
memmove(strchr(unquoted, '"'), strchr(unquoted, '"')+1, strchr(unquoted, '\0') - strchr(unquoted, '"'));
}
}
return unquoted;
}
}