diff options
author | Mark Spencer <markster@digium.com> | 2006-01-08 00:08:49 +0000 |
---|---|---|
committer | Mark Spencer <markster@digium.com> | 2006-01-08 00:08:49 +0000 |
commit | 50ab29b64ba0fa0321a8ce0f5e25055b6837e676 (patch) | |
tree | a86f11b3a1e36e8a6a519d1c015d8f30739aea5d /apps/app_playback.c | |
parent | f5678d89d429293333ab836738ada333e4c77a57 (diff) |
Merge playback cleanups (bug #6163)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7864 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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; |