code clean up and macro implementation from

bug 6247


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@8505 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Matt O'Gorman
2006-01-23 18:07:12 +00:00
parent 9cda86f4b2
commit 428efda5a9
3 changed files with 75 additions and 54 deletions

View File

@@ -320,23 +320,27 @@ struct ast_variable *astman_get_variables(struct message *m)
int varlen, x, y;
struct ast_variable *head = NULL, *cur;
char *var, *val;
unsigned int var_count;
char *vars[32];
char *parse;
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(vars)[32];
);
varlen = strlen("Variable: ");
for (x = 0; x < m->hdrcount; x++) {
if (strncasecmp("Variable: ", m->headers[x], varlen))
continue;
if (!(var = ast_strdupa(m->headers[x] + varlen)))
if (!(parse = ast_strdupa(m->headers[x] + varlen)))
return head;
if ((var_count = ast_app_separate_args(var, '|', vars, sizeof(vars) / sizeof(vars[0])))) {
for (y = 0; y < var_count; y++) {
if (!vars[y])
AST_STANDARD_APP_ARGS(args, parse);
if (args.argc) {
for (y = 0; y < args.argc; y++) {
if (!args.vars[y])
continue;
var = val = ast_strdupa(vars[y]);
var = val = ast_strdupa(args.vars[y]);
strsep(&val, "=");
if (!val || ast_strlen_zero(var))
continue;