From 48f8b7d7ca1342bbf83e058d27a1ad6157c60802 Mon Sep 17 00:00:00 2001 From: kpfleming Date: Wed, 14 Sep 2005 17:19:55 +0000 Subject: slightly clear argument processing git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6592 f38db490-d61c-443f-a65b-d21fe96a405b --- pbx.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'pbx.c') diff --git a/pbx.c b/pbx.c index 6bae090ac..d6d1c47e1 100755 --- a/pbx.c +++ b/pbx.c @@ -5574,7 +5574,7 @@ static int pbx_builtin_background(struct ast_channel *chan, void *data) { int res = 0; int argc; - char *args; + char *parse; char *argv[4]; char *options = NULL; char *filename = NULL; @@ -5583,19 +5583,22 @@ static int pbx_builtin_background(struct ast_channel *chan, void *data) char *context = NULL; struct ast_flags flags = {0}; - args = ast_strdupa(data); - - if ((argc = ast_separate_app_args(args, '|', argv, sizeof(argv) / sizeof(argv[0])))) { - if (argc > 0) { + parse = ast_strdupa(data); + + if ((argc = ast_separate_app_args(parse, '|', argv, sizeof(argv) / sizeof(argv[0])))) { + switch (argc) { + case 4: + context = argv[3]; + case 3: + lang = argv[2]; + case 2: + options = argv[1]; + case 1: filename = argv[0]; - if (argc > 1) - options = argv[1]; - if (argc > 2) - lang = argv[2]; - if (argc > 3) - context = argv[3]; - } else { + break; + default: ast_log(LOG_WARNING, "Background requires an argument (filename)\n"); + break; } } -- cgit v1.2.3