diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-01-08 00:08:49 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-01-08 00:08:49 +0000 |
commit | 03b916a8964047182426f5ac6a099ad408aca6d4 (patch) | |
tree | a86f11b3a1e36e8a6a519d1c015d8f30739aea5d /apps/app_playback.c | |
parent | dd039e5ddb01ceaa220538e47eda6a887ac7664f (diff) |
Merge playback cleanups (bug #6163)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@7864 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps/app_playback.c')
-rw-r--r-- | apps/app_playback.c | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/apps/app_playback.c b/apps/app_playback.c index 8f36fc707..653d95467 100644 --- a/apps/app_playback.c +++ b/apps/app_playback.c @@ -72,13 +72,13 @@ LOCAL_USER_DECL; static int playback_exec(struct ast_channel *chan, void *data) { - int res = 0, mres = 0; + int res = 0; struct localuser *u; - char *tmp = NULL; + char *tmp; int option_skip=0; int option_noanswer = 0; - char *front = NULL, *back = NULL; int priority_jump = 0; + AST_DECLARE_APP_ARGS(args, AST_APP_ARG(filenames); AST_APP_ARG(options); @@ -89,15 +89,13 @@ static int playback_exec(struct ast_channel *chan, void *data) return -1; } - LOCAL_USER_ADD(u); - tmp = ast_strdupa(data); if (!tmp) { ast_log(LOG_ERROR, "Out of memory!\n"); - LOCAL_USER_REMOVE(u); return -1; } + LOCAL_USER_ADD(u); AST_STANDARD_APP_ARGS(args, tmp); if (args.options) { @@ -119,13 +117,11 @@ static int playback_exec(struct ast_channel *chan, void *data) res = ast_answer(chan); } if (!res) { + int mres = 0; + char *front; + ast_stopstream(chan); - front = tmp; - while (!res && front) { - if ((back = strchr(front, '&'))) { - *back = '\0'; - back++; - } + while (!res && (front = strsep(&tmp, "&"))) { res = ast_streamfile(chan, front, chan->language); if (!res) { res = ast_waitstream(chan, ""); @@ -137,12 +133,8 @@ static int playback_exec(struct ast_channel *chan, void *data) res = 0; mres = 1; } - front = back; } - if (mres) - pbx_builtin_setvar_helper(chan, "PLAYBACKSTATUS", "FAILED"); - else - pbx_builtin_setvar_helper(chan, "PLAYBACKSTATUS", "SUCCESS"); + pbx_builtin_setvar_helper(chan, "PLAYBACKSTATUS", mres ? "FAILED" : "SUCCESS"); } LOCAL_USER_REMOVE(u); return res; |