Fix /correct quotation marks usage
Add new `parse_args_as_one()` function to just use everything after the command as the argument. Fix https://github.com/profanity-im/profanity/issues/1404
This commit is contained in:
@@ -222,6 +222,33 @@ parse_args_with_freetext(const char* const inp, int min, int max, gboolean* resu
|
||||
return _parse_args_helper(inp, min, max, result, TRUE);
|
||||
}
|
||||
|
||||
/*
|
||||
* Will just take everything after the first space as the argument.
|
||||
* Used for `/correct` so that we also include quotation marks.
|
||||
*/
|
||||
gchar**
|
||||
parse_args_as_one(const char* const inp, int min, int max, gboolean* result)
|
||||
{
|
||||
gchar** args = g_malloc0(2 * sizeof(*args));
|
||||
int length = g_utf8_strlen(inp, -1);
|
||||
gchar* space = g_utf8_strchr(inp, length, ' ');
|
||||
if (space) {
|
||||
int sub_length = g_utf8_strlen(space, -1);
|
||||
if (sub_length > 1) {
|
||||
args[0] = g_strdup(space + 1);
|
||||
*result = TRUE;
|
||||
return args;
|
||||
} else {
|
||||
g_free(args);
|
||||
}
|
||||
} else {
|
||||
g_free(args);
|
||||
}
|
||||
|
||||
*result = FALSE;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int
|
||||
count_tokens(const char* const string)
|
||||
{
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
|
||||
gchar** parse_args(const char* const inp, int min, int max, gboolean* result);
|
||||
gchar** parse_args_with_freetext(const char* const inp, int min, int max, gboolean* result);
|
||||
gchar** parse_args_as_one(const char* const inp, int min, int max, gboolean* result);
|
||||
int count_tokens(const char* const string);
|
||||
char* get_start(const char* const string, int tokens);
|
||||
GHashTable* parse_options(gchar** args, gchar** keys, gboolean* res);
|
||||
|
||||
Reference in New Issue
Block a user