diff options
author | Russell Bryant <russell@russellbryant.com> | 2006-01-25 19:06:37 +0000 |
---|---|---|
committer | Russell Bryant <russell@russellbryant.com> | 2006-01-25 19:06:37 +0000 |
commit | 19f99bee0f14e9caaba3dd3971f4773c7caa9d20 (patch) | |
tree | 8fa3a015ec357979cdd5593f5339ab1266cbcd3a /channels | |
parent | 778acbff123a0f9edf5707f183a2bd66bc8fe9fc (diff) |
use arg parsing macros in the AGENT dialplan function (issue #6236, with small mods)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@8676 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_agent.c | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/channels/chan_agent.c b/channels/chan_agent.c index e658cf33a..89e21ef43 100644 --- a/channels/chan_agent.c +++ b/channels/chan_agent.c @@ -2417,8 +2417,11 @@ struct agent_pvt *find_agent(char *agentid) static char *function_agent(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len) { - char *agentid; - char *item; + char *parse; + AST_DECLARE_APP_ARGS(args, + AST_APP_ARG(agentid); + AST_APP_ARG(item); + ); char *tmp; struct agent_pvt *agent; @@ -2429,39 +2432,38 @@ static char *function_agent(struct ast_channel *chan, char *cmd, char *data, cha return buf; } - if (!(item = ast_strdupa(data))) + if (!(parse = ast_strdupa(data))) return buf; - agentid = strsep(&item, ":"); - if (!item) - item = "status"; + AST_NONSTANDARD_APP_ARGS(args, parse, ':'); + if (!args.item) + args.item = "status"; - agent = find_agent(agentid); - if (!agent) { - ast_log(LOG_WARNING, "Agent '%s' not found!\n", agentid); + if (!(agent = find_agent(args.agentid))) { + ast_log(LOG_WARNING, "Agent '%s' not found!\n", args.agentid); return buf; } - if (!strcasecmp(item, "status")) { + if (!strcasecmp(args.item, "status")) { if (agent->chan || !ast_strlen_zero(agent->loginchan)) { ast_copy_string(buf, "LOGGEDIN", len); } else { ast_copy_string(buf, "LOGGEDOUT", len); } - } else if (!strcasecmp(item, "password")) { + } else if (!strcasecmp(args.item, "password")) { ast_copy_string(buf, agent->password, len); - } else if (!strcasecmp(item, "name")) { + } else if (!strcasecmp(args.item, "name")) { ast_copy_string(buf, agent->name, len); - } else if (!strcasecmp(item, "mohclass")) { + } else if (!strcasecmp(args.item, "mohclass")) { ast_copy_string(buf, agent->moh, len); - } else if (!strcasecmp(item, "channel")) { + } else if (!strcasecmp(args.item, "channel")) { if (agent->chan) { ast_copy_string(buf, agent->chan->name, len); tmp = strrchr(buf, '-'); if (tmp) *tmp = '\0'; } - } else if (!strcasecmp(item, "exten")) { + } else if (!strcasecmp(args.item, "exten")) { ast_copy_string(buf, agent->loginchan, len); } |