mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-29 18:19:30 +00:00
automerge commit
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@45139 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -474,6 +474,29 @@ static char *argument_end(char *str)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void gen_match_to_pattern(const char *pattern, char *result)
|
||||
{
|
||||
/* the result will be a string that will be matched by pattern */
|
||||
char *p=(char *)pattern, *t=result;
|
||||
while (*p) {
|
||||
if (*p == 'x' || *p == 'n' || *p == 'z' || *p == 'X' || *p == 'N' || *p == 'Z')
|
||||
*t++ = '9';
|
||||
else if (*p == '[') {
|
||||
char *z = p+1;
|
||||
while (*z != ']')
|
||||
z++;
|
||||
if (*(z+1)== ']')
|
||||
z++;
|
||||
*t++=*(p+1); /* use the first char in the set */
|
||||
p = z;
|
||||
} else {
|
||||
*t++ = *p;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
*t++ = 0; /* cap it off */
|
||||
}
|
||||
|
||||
static int build_step(const char *what, const char *name, const char *filename, int lineno, struct ast_context *con, char *exten, int *pos, char *data, struct fillin **fillout, char **label);
|
||||
static int __build_step(const char *what, const char *name, const char *filename, int lineno, struct ast_context *con, char *exten, int *pos, char *data, struct fillin **fillout, char **label)
|
||||
{
|
||||
@@ -541,9 +564,12 @@ static int __build_step(const char *what, const char *name, const char *filename
|
||||
if (aeldebug & DEBUG_TOKENS)
|
||||
ast_verbose("--NEWCASE: '%s'!\n", newcase);
|
||||
if (curcase) {
|
||||
char zbuf[256];
|
||||
|
||||
/* Handle fall through */
|
||||
char tmp[strlen(newcase) + strlen(name) + 40];
|
||||
sprintf(tmp, "sw-%d-%s|%d", *pos - 2, newcase, 1);
|
||||
gen_match_to_pattern(newcase,zbuf);
|
||||
sprintf(tmp, "sw-%d-%s|%d", *pos - 2, zbuf, 1);
|
||||
ast_add_extension2(con, 0, margs, cpos, NULL, NULL, "Goto", strdup(tmp), FREE, registrar);
|
||||
}
|
||||
curcase = newcase;
|
||||
|
Reference in New Issue
Block a user