diff options
-rwxr-xr-x | app.c | 12 | ||||
-rwxr-xr-x | include/asterisk/app.h | 2 |
2 files changed, 8 insertions, 6 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; } - diff --git a/include/asterisk/app.h b/include/asterisk/app.h index 6f0f0d955..706871f8d 100755 --- a/include/asterisk/app.h +++ b/include/asterisk/app.h @@ -75,7 +75,7 @@ struct ast_ivr_menu { struct ast_option { unsigned int flag; - int argoption; + int arg_index; }; extern int ast_parseoptions(const struct ast_option *options, struct ast_flags *flags, char **args, char *optstr); |