summaryrefslogtreecommitdiff
path: root/app.c
diff options
context:
space:
mode:
Diffstat (limited to 'app.c')
-rwxr-xr-xapp.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/app.c b/app.c
index 5251c3a48..5621773dd 100755
--- a/app.c
+++ b/app.c
@@ -1455,3 +1455,38 @@ char *ast_read_textfile(const char *filename)
return output;
}
+int ast_parseoptions(const struct ast_option *options, struct ast_flags *flags, char **args, char *optstr)
+{
+ char *s;
+ int curarg;
+ int argloc;
+ char *arg;
+ int res = 0;
+ flags->flags = 0;
+ if (!optstr)
+ return 0;
+ s = optstr;
+ while(*s) {
+ curarg = *s & 0x7f;
+ flags->flags |= options[curarg].flag;
+ argloc = options[curarg].argoption;
+ s++;
+ if (*s == '(') {
+ /* Has argument */
+ s++;
+ arg = 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);
+ res = -1;
+ }
+ }
+ }
+ return res;
+}
+