diff options
Diffstat (limited to 'app.c')
-rwxr-xr-x | app.c | 12 |
1 files changed, 7 insertions, 5 deletions
@@ -1506,27 +1506,30 @@ int ast_parseoptions(const struct ast_option *options, struct ast_flags *flags, int argloc; char *arg; int res = 0; + flags->flags = 0; + if (!optstr) return 0; + s = optstr; - while(*s) { + while (*s) { curarg = *s & 0x7f; flags->flags |= options[curarg].flag; - argloc = options[curarg].argoption; + argloc = options[curarg].arg_index; s++; if (*s == '(') { /* Has argument */ s++; arg = s; - while(*s && (*s != ')')) s++; + while (*s && (*s != ')')) s++; if (*s) { if (argloc) args[argloc - 1] = arg; *s = '\0'; s++; } else { - ast_log(LOG_WARNING, "Missing closing parenthesis for argument '%c'\n", curarg); + ast_log(LOG_WARNING, "Missing closing parenthesis for argument '%c' in string '%s'\n", curarg, arg); res = -1; } } else if (argloc) @@ -1534,4 +1537,3 @@ int ast_parseoptions(const struct ast_option *options, struct ast_flags *flags, } return res; } - |