Bug 6699 - Fix for ENUMLOOKUP

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@13710 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Tilghman Lesher
2006-03-21 05:54:04 +00:00
parent 96ec20c0fc
commit 98d91f0464

View File

@@ -64,7 +64,7 @@ static int function_enum(struct ast_channel *chan, char *cmd, char *data,
); );
int res = 0; int res = 0;
char tech[80]; char tech[80];
char dest[256] = ""; char dest[256] = "", tmp[2] = "", num[AST_MAX_EXTENSION] = "";
struct localuser *u; struct localuser *u;
char *s, *p; char *s, *p;
@@ -82,6 +82,8 @@ static int function_enum(struct ast_channel *chan, char *cmd, char *data,
return -1; return -1;
} }
LOCAL_USER_ADD(u);
ast_copy_string(tech, args.tech ? args.tech : "sip", sizeof(tech)); ast_copy_string(tech, args.tech ? args.tech : "sip", sizeof(tech));
if (!args.zone) if (!args.zone)
@@ -92,24 +94,24 @@ static int function_enum(struct ast_channel *chan, char *cmd, char *data,
/* strip any '-' signs from number */ /* strip any '-' signs from number */
for (s = p = args.number; *s; s++) { for (s = p = args.number; *s; s++) {
if (*s != '-') if (*s != '-') {
*p++ = *s; snprintf(tmp, sizeof(tmp), "%c", *s);
strncat(num, tmp, sizeof(num));
}
} }
*p = '\0';
LOCAL_USER_ADD(u); res = ast_get_enum(chan, num, dest, sizeof(dest), tech, sizeof(tech), args.zone,
res = ast_get_enum(chan, p, dest, sizeof(dest), tech, sizeof(tech), args.zone,
args.options); args.options);
LOCAL_USER_REMOVE(u);
p = strchr(dest, ':'); p = strchr(dest, ':');
if (p && strcasecmp(tech, "ALL")) if (p && strcasecmp(tech, "ALL"))
ast_copy_string(buf, p + 1, len); ast_copy_string(buf, p + 1, len);
else else
ast_copy_string(buf, dest, len); ast_copy_string(buf, dest, len);
LOCAL_USER_REMOVE(u);
return 0; return 0;
} }