From fe1cf1071cbce2f4de81bb6630aa272cbadcef47 Mon Sep 17 00:00:00 2001 From: jeremy Date: Thu, 6 May 2004 03:20:05 +0000 Subject: fix formatting, from bkw git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2902 f38db490-d61c-443f-a65b-d21fe96a405b --- apps/app_parkandannounce.c | 328 ++++++++++++++++++++++----------------------- 1 file changed, 162 insertions(+), 166 deletions(-) (limited to 'apps/app_parkandannounce.c') diff --git a/apps/app_parkandannounce.c b/apps/app_parkandannounce.c index 93cc6bc83..59492887a 100755 --- a/apps/app_parkandannounce.c +++ b/apps/app_parkandannounce.c @@ -55,175 +55,171 @@ LOCAL_USER_DECL; static int parkandannounce_exec(struct ast_channel *chan, void *data) { - int res=0; - char *return_context; - int l, lot, timeout = 0, dres; - char *working, *context, *exten, *priority, *dial, *dialtech, *dialstr; - char *template, *tpl_working, *tpl_current; - char *tmp[100]; - int looptemp=0,i=0; - char *s,*orig_s; - - struct ast_channel *dchan; - int outstate; - - struct localuser *u; - if (!data || (data && !strlen(data))) { - ast_log(LOG_WARNING, "ParkAndAnnounce requires arguments: (announce:template|timeout|dial|[return_context])\n"); - return -1; - } + int res=0; + char *return_context; + int l, lot, timeout = 0, dres; + char *working, *context, *exten, *priority, *dial, *dialtech, *dialstr; + char *template, *tpl_working, *tpl_current; + char *tmp[100]; + int looptemp=0,i=0; + char *s,*orig_s; + + struct ast_channel *dchan; + int outstate; + + struct localuser *u; + if(!data || (data && !strlen(data))) { + ast_log(LOG_WARNING, "ParkAndAnnounce requires arguments: (announce:template|timeout|dial|[return_context])\n"); + return -1; + } - l=strlen(data)+2; - orig_s=malloc(l); - if (!orig_s) { - ast_log(LOG_WARNING, "Out of memory\n"); - return -1; - } - s=orig_s; - strncpy(s,data,l); - - template=strsep(&s,"|"); - if (! template) { - ast_log(LOG_WARNING, "PARK: An announce template must be defined\n"); - free(orig_s); - return -1; - } + l=strlen(data)+2; + orig_s=malloc(l); + if(!orig_s) { + ast_log(LOG_WARNING, "Out of memory\n"); + return -1; + } + s=orig_s; + strncpy(s,data,l); + + template=strsep(&s,"|"); + if(! template) { + ast_log(LOG_WARNING, "PARK: An announce template must be defined\n"); + free(orig_s); + return -1; + } - if (s) { - timeout = atoi(strsep(&s, "|")); - timeout *= 1000; - } - dial=strsep(&s, "|"); - if (! dial) { - ast_log(LOG_WARNING, "PARK: A dial resouce must be specified i.e: Console/dsp or Zap/g1/5551212\n"); - free(orig_s); - return -1; - } - else { - dialtech=strsep(&dial, "/"); - dialstr=dial; - ast_verbose( VERBOSE_PREFIX_3 "Dial Tech,String: (%s,%s)\n", dialtech,dialstr); - } - - return_context = s; + if(s) { + timeout = atoi(strsep(&s, "|")); + timeout *= 1000; + } + dial=strsep(&s, "|"); + if(!dial) { + ast_log(LOG_WARNING, "PARK: A dial resouce must be specified i.e: Console/dsp or Zap/g1/5551212\n"); + free(orig_s); + return -1; + } else { + dialtech=strsep(&dial, "/"); + dialstr=dial; + ast_verbose( VERBOSE_PREFIX_3 "Dial Tech,String: (%s,%s)\n", dialtech,dialstr); + } + + return_context = s; - if (return_context != NULL) { - /* set the return context. Code borrowed from the Goto builtin */ + if(return_context != NULL) { + /* set the return context. Code borrowed from the Goto builtin */ - working = return_context; - context = strsep(&working, "|"); - exten = strsep(&working, "|"); - if (!exten) { - /* Only a priority in this one */ - priority = context; - exten = NULL; - context = NULL; - } else { - priority = strsep(&working, "|"); - if (!priority) { - /* Only an extension and priority in this one */ - priority = exten; - exten = context; - context = NULL; - } - } - if (atoi(priority) < 0) { - ast_log(LOG_WARNING, "Priority '%s' must be a number > 0\n", priority); - free(orig_s); - return -1; - } - /* At this point we have a priority and maybe an extension and a context */ - chan->priority = atoi(priority); - if (exten && strcasecmp(exten, "BYEXTENSION")) - strncpy(chan->exten, exten, sizeof(chan->exten)-1); - if (context) - strncpy(chan->context, context, sizeof(chan->context)-1); - } - else { /* increment the priority by default*/ - chan->priority++; - } - - - if (option_verbose > 2) { - ast_verbose( VERBOSE_PREFIX_3 "Return Context: (%s,%s,%d) ID: %s\n", chan->context,chan->exten, chan->priority, chan->callerid); - if (!ast_exists_extension(chan, chan->context, chan->exten, chan->priority, chan->callerid)) { - ast_verbose( VERBOSE_PREFIX_3 "Warning: Return Context Invalid, call will return to default|s\n"); - } - } + working = return_context; + context = strsep(&working, "|"); + exten = strsep(&working, "|"); + if(!exten) { + /* Only a priority in this one */ + priority = context; + exten = NULL; + context = NULL; + } else { + priority = strsep(&working, "|"); + if(!priority) { + /* Only an extension and priority in this one */ + priority = exten; + exten = context; + context = NULL; + } + } + if(atoi(priority) < 0) { + ast_log(LOG_WARNING, "Priority '%s' must be a number > 0\n", priority); + free(orig_s); + return -1; + } + /* At this point we have a priority and maybe an extension and a context */ + chan->priority = atoi(priority); + if(exten && strcasecmp(exten, "BYEXTENSION")) + strncpy(chan->exten, exten, sizeof(chan->exten)-1); + if(context) + strncpy(chan->context, context, sizeof(chan->context)-1); + } else { /* increment the priority by default*/ + chan->priority++; + } + + + if(option_verbose > 2) { + ast_verbose( VERBOSE_PREFIX_3 "Return Context: (%s,%s,%d) ID: %s\n", chan->context,chan->exten, chan->priority, chan->callerid); + if(!ast_exists_extension(chan, chan->context, chan->exten, chan->priority, chan->callerid)) { + ast_verbose( VERBOSE_PREFIX_3 "Warning: Return Context Invalid, call will return to default|s\n"); + } + } - LOCAL_USER_ADD(u); - - /* we are using masq_park here to protect * from touching the channel once we park it. If the channel comes out of timeout - before we are done announcing and the channel is messed with, Kablooeee. So we use Masq to prevent this. */ - - ast_masq_park_call(chan, NULL, timeout, &lot); - - res=-1; - - ast_verbose( VERBOSE_PREFIX_3 "Call Parking Called, lot: %d, timeout: %d, context: %s\n", lot, timeout, return_context); - - /* Now place the call to the extention */ - - dchan = ast_request_and_dial(dialtech, AST_FORMAT_SLINEAR, dialstr,30000, &outstate, chan->callerid); - - if (dchan) { - if (dchan->_state == AST_STATE_UP) { - if (option_verbose > 3) - ast_verbose(VERBOSE_PREFIX_4 "Channel %s was answered.\n", dchan->name); - } else { - if (option_verbose > 3) - ast_verbose(VERBOSE_PREFIX_4 "Channel %s was never answered.\n", dchan->name); - ast_log(LOG_WARNING, "PARK: Channel %s was never answered for the announce.\n", dchan->name); - ast_hangup(dchan); - free(orig_s); - LOCAL_USER_REMOVE(u); - return -1; - } - } - else { - ast_log(LOG_WARNING, "PARK: Unable to allocate announce channel.\n"); - free(orig_s); - LOCAL_USER_REMOVE(u); - return -1; - } - - ast_stopstream(dchan); - - /* now we have the call placed and are ready to play stuff to it */ - - ast_verbose(VERBOSE_PREFIX_4 "Announce Template:%s\n", template); - - tpl_working = template; - tpl_current=strsep(&tpl_working, ":"); - - while ( tpl_current && looptemp < sizeof(tmp)) { - tmp[looptemp]=tpl_current; - looptemp++; - tpl_current=strsep(&tpl_working,":"); - } - - for(i=0; ilanguage); - } - else { - dres = ast_streamfile(dchan, tmp[i], dchan->language); - if (!dres) - dres = ast_waitstream(dchan, ""); - else { - ast_log(LOG_WARNING, "ast_streamfile of %s failed on %s\n", tmp[i], dchan->name); - dres = 0; - } - } - } - - ast_stopstream(dchan); - ast_hangup(dchan); - - LOCAL_USER_REMOVE(u); - free(orig_s); - return res; + LOCAL_USER_ADD(u); + + /* we are using masq_park here to protect * from touching the channel once we park it. If the channel comes out of timeout + before we are done announcing and the channel is messed with, Kablooeee. So we use Masq to prevent this. */ + + ast_masq_park_call(chan, NULL, timeout, &lot); + + res=-1; + + ast_verbose( VERBOSE_PREFIX_3 "Call Parking Called, lot: %d, timeout: %d, context: %s\n", lot, timeout, return_context); + + /* Now place the call to the extention */ + + dchan = ast_request_and_dial(dialtech, AST_FORMAT_SLINEAR, dialstr,30000, &outstate, chan->callerid); + + if(dchan) { + if(dchan->_state == AST_STATE_UP) { + if(option_verbose > 3) + ast_verbose(VERBOSE_PREFIX_4 "Channel %s was answered.\n", dchan->name); + } else { + if(option_verbose > 3) + ast_verbose(VERBOSE_PREFIX_4 "Channel %s was never answered.\n", dchan->name); + ast_log(LOG_WARNING, "PARK: Channel %s was never answered for the announce.\n", dchan->name); + ast_hangup(dchan); + free(orig_s); + LOCAL_USER_REMOVE(u); + return -1; + } + } else { + ast_log(LOG_WARNING, "PARK: Unable to allocate announce channel.\n"); + free(orig_s); + LOCAL_USER_REMOVE(u); + return -1; + } + + ast_stopstream(dchan); + + /* now we have the call placed and are ready to play stuff to it */ + + ast_verbose(VERBOSE_PREFIX_4 "Announce Template:%s\n", template); + + tpl_working = template; + tpl_current=strsep(&tpl_working, ":"); + + while(tpl_current && looptemp < sizeof(tmp)) { + tmp[looptemp]=tpl_current; + looptemp++; + tpl_current=strsep(&tpl_working,":"); + } + + for(i=0; ilanguage); + } else { + dres = ast_streamfile(dchan, tmp[i], dchan->language); + if(!dres) { + dres = ast_waitstream(dchan, ""); + } else { + ast_log(LOG_WARNING, "ast_streamfile of %s failed on %s\n", tmp[i], dchan->name); + dres = 0; + } + } + } + + ast_stopstream(dchan); + ast_hangup(dchan); + + LOCAL_USER_REMOVE(u); + free(orig_s); + return res; } @@ -236,8 +232,8 @@ int unload_module(void) int load_module(void) { - /* return ast_register_application(app, park_exec); */ - return ast_register_application(app, parkandannounce_exec, synopsis, descrip); + /* return ast_register_application(app, park_exec); */ + return ast_register_application(app, parkandannounce_exec, synopsis, descrip); } char *description(void) -- cgit v1.2.3