summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBJ Weschke <bweschke@btwtech.com>2006-01-12 15:28:01 +0000
committerBJ Weschke <bweschke@btwtech.com>2006-01-12 15:28:01 +0000
commit0c41704c68638c03d45139921fb0c1a5daffa21e (patch)
tree5ee370ffc385ef5bfcce02a2a64dd5b36d07d18c
parent5f542e14cc3fc23bd90ea32a2a1f9597a0fe00e9 (diff)
Use argument macro in app_voicemail #6221
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@8008 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--apps/app_voicemail.c75
1 files changed, 41 insertions, 34 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 4950e3608..106766d34 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -5039,15 +5039,24 @@ static int vm_execmain(struct ast_channel *chan, void *data)
ast_answer(chan);
if (!ast_strlen_zero(data)) {
- char *tmp;
- int argc;
- char *argv[2];
char *opts[OPT_ARG_ARRAY_SIZE];
+ char *parse;
+ AST_DECLARE_APP_ARGS(args,
+ AST_APP_ARG(argv0);
+ AST_APP_ARG(argv1);
+ );
+
+ parse = ast_strdupa(data);
+ if (!parse) {
+ ast_log(LOG_ERROR, "Out of memory!\n");
+ LOCAL_USER_REMOVE(u);
+ return -1;
+ }
- tmp = ast_strdupa(data);
- argc = ast_app_separate_args(tmp, '|', argv, sizeof(argv) / sizeof(argv[0]));
- if (argc == 2) {
- if (ast_app_parse_options(vm_app_options, &flags, opts, argv[1])) {
+ AST_STANDARD_APP_ARGS(args, parse);
+
+ if (args.argc == 2) {
+ if (ast_app_parse_options(vm_app_options, &flags, opts, args.argv1)) {
LOCAL_USER_REMOVE(u);
return -1;
}
@@ -5077,28 +5086,27 @@ static int vm_execmain(struct ast_channel *chan, void *data)
}
} else {
/* old style options parsing */
- while (*argv[0]) {
- if (*argv[0] == 's') {
+ while (*(args.argv0)) {
+ if (*(args.argv0) == 's')
ast_set_flag(&flags, OPT_SILENT);
- argv[0]++;
- } else if (*argv[0] == 'p') {
+ else if (*(args.argv0) == 'p')
ast_set_flag(&flags, OPT_PREPEND_MAILBOX);
- argv[0]++;
- } else
+ else
break;
+ (args.argv0)++;
}
}
valid = ast_test_flag(&flags, OPT_SILENT);
- if ((context = strchr(argv[0], '@')))
+ if ((context = strchr(args.argv0, '@')))
*context++ = '\0';
if (ast_test_flag(&flags, OPT_PREPEND_MAILBOX))
- ast_copy_string(prefixstr, argv[0], sizeof(prefixstr));
+ ast_copy_string(prefixstr, args.argv0, sizeof(prefixstr));
else
- ast_copy_string(vms.username, argv[0], sizeof(vms.username));
+ ast_copy_string(vms.username, args.argv0, sizeof(vms.username));
if (!ast_strlen_zero(vms.username) && (vmu = find_user(&vmus, context ,vms.username)))
skipuser++;
@@ -5488,11 +5496,13 @@ static int vm_exec(struct ast_channel *chan, void *data)
struct localuser *u;
char tmp[256];
struct leave_vm_options leave_options;
- int argc;
- char *argv[2];
struct ast_flags flags = { 0 };
char *opts[OPT_ARG_ARRAY_SIZE];
-
+ AST_DECLARE_APP_ARGS(args,
+ AST_APP_ARG(argv0);
+ AST_APP_ARG(argv1);
+ );
+
LOCAL_USER_ADD(u);
memset(&leave_options, 0, sizeof(leave_options));
@@ -5502,9 +5512,9 @@ static int vm_exec(struct ast_channel *chan, void *data)
if (!ast_strlen_zero(data)) {
ast_copy_string(tmp, data, sizeof(tmp));
- argc = ast_app_separate_args(tmp, '|', argv, sizeof(argv) / sizeof(argv[0]));
- if (argc == 2) {
- if (ast_app_parse_options(vm_app_options, &flags, opts, argv[1])) {
+ AST_STANDARD_APP_ARGS(args, tmp);
+ if (args.argc == 2) {
+ if (ast_app_parse_options(vm_app_options, &flags, opts, args.argv1)) {
LOCAL_USER_REMOVE(u);
return -1;
}
@@ -5522,21 +5532,18 @@ static int vm_exec(struct ast_channel *chan, void *data)
}
} else {
/* old style options parsing */
- while (*argv[0]) {
- if (*argv[0] == 's') {
+ while (*(args.argv0)) {
+ if (*(args.argv0) == 's')
ast_set_flag(&leave_options, OPT_SILENT);
- argv[0]++;
- } else if (*argv[0] == 'b') {
+ else if (*(args.argv0) == 'b')
ast_set_flag(&leave_options, OPT_BUSY_GREETING);
- argv[0]++;
- } else if (*argv[0] == 'u') {
+ else if (*(args.argv0) == 'u')
ast_set_flag(&leave_options, OPT_UNAVAIL_GREETING);
- argv[0]++;
- } else if (*argv[0] == 'j') {
+ else if (*(args.argv0) == 'j')
ast_set_flag(&leave_options, OPT_PRIORITY_JUMP);
- argv[0]++;
- } else
+ else
break;
+ (args.argv0)++;
}
}
} else {
@@ -5549,10 +5556,10 @@ static int vm_exec(struct ast_channel *chan, void *data)
LOCAL_USER_REMOVE(u);
return 0;
}
- argv[0] = ast_strdupa(tmp);
+ args.argv0 = ast_strdupa(tmp);
}
- res = leave_voicemail(chan, argv[0], &leave_options);
+ res = leave_voicemail(chan, args.argv0, &leave_options);
if (res == ERROR_LOCK_PATH) {
ast_log(LOG_ERROR, "Could not leave voicemail. The path is already locked.\n");