aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xapp.c12
-rwxr-xr-xinclude/asterisk/app.h2
2 files changed, 8 insertions, 6 deletions
diff --git a/app.c b/app.c
index 40bc06e29..a96acd373 100755
--- a/app.c
+++ b/app.c
@@ -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);