aboutsummaryrefslogtreecommitdiffstats
path: root/main/app.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/app.c')
-rw-r--r--main/app.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/main/app.c b/main/app.c
index a171f2611..050c4e238 100644
--- a/main/app.c
+++ b/main/app.c
@@ -1190,7 +1190,7 @@ unsigned int __ast_app_separate_args(char *buf, char delim, int remove_chars, ch
{
int argc;
char *scan, *wasdelim = NULL;
- int paren = 0, quote = 0;
+ int paren = 0, quote = 0, bracket = 0;
if (!array || !arraylen) {
return 0;
@@ -1213,6 +1213,12 @@ unsigned int __ast_app_separate_args(char *buf, char delim, int remove_chars, ch
if (paren) {
paren--;
}
+ } else if (*scan == '[') {
+ bracket++;
+ } else if (*scan == ']') {
+ if (bracket) {
+ bracket--;
+ }
} else if (*scan == '"' && delim != '"') {
quote = quote ? 0 : 1;
if (remove_chars) {
@@ -1227,7 +1233,7 @@ unsigned int __ast_app_separate_args(char *buf, char delim, int remove_chars, ch
} else {
scan++;
}
- } else if ((*scan == delim) && !paren && !quote) {
+ } else if ((*scan == delim) && !paren && !quote && !bracket) {
wasdelim = scan;
*scan++ = '\0';
break;