aboutsummaryrefslogtreecommitdiffstats
path: root/pbx.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-09-13 20:51:48 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-09-13 20:51:48 +0000
commit8a8d27a2dfa1536f7273579dc7f4886bf9c4cfed (patch)
tree0e8008c721582afe7e8954a6be00bdba448be121 /pbx.c
parente1c164d7893f1d41083c35b5f5ea440df0940961 (diff)
CLeanup PBX patch and add localtime stuff for saytime (bug #168)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1506 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx.c')
-rwxr-xr-xpbx.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/pbx.c b/pbx.c
index 9ea3e9ded..abb2e3256 100755
--- a/pbx.c
+++ b/pbx.c
@@ -144,8 +144,6 @@ struct ast_hint {
struct ast_hint *next;
};
-int ast_extension_patmatch(const char *pattern, const char *data);
-
static int pbx_builtin_prefix(struct ast_channel *, void *);
static int pbx_builtin_suffix(struct ast_channel *, void *);
static int pbx_builtin_stripmsd(struct ast_channel *, void *);
@@ -172,6 +170,7 @@ static int pbx_builtin_saynumber(struct ast_channel *, void *);
static int pbx_builtin_saydigits(struct ast_channel *, void *);
void pbx_builtin_setvar_helper(struct ast_channel *chan, char *name, char *value);
char *pbx_builtin_getvar_helper(struct ast_channel *chan, char *name);
+static int ast_extension_patmatch_repeated(const char *pattern, const char *data, const int num);
static struct varshead globals = AST_LIST_HEAD_INITIALIZER(varshead);
@@ -522,14 +521,13 @@ char patmatch_group[80] = "";
variables, starting with $1, $2 and so on.
* alternation as in (01|0|99) ("01 or 0 or 99")
*/
-int ast_extension_patmatch(const char *pattern, char *data)
+int ast_extension_patmatch(const char *pattern, const char *data)
{
int i,border=0;
char *where;
static char prev = '\0';
static char groupdata[80] = "";
static char *group = patmatch_group;
- int groupcounter = patmatch_groupcounter;
if (option_debug)
ast_log(LOG_DEBUG, " >>> \"%s\" =~ /%s/\n", data, pattern);
@@ -571,7 +569,7 @@ int ast_extension_patmatch(const char *pattern, char *data)
case '{': /* quantifier {n[,m]} */
{
- char *comma;
+ char *comma=NULL;
int cpos;
where=strchr(pattern,'}');
if (where) {
@@ -636,11 +634,10 @@ int ast_extension_patmatch(const char *pattern, char *data)
}
prev = *tmp;
if (i >= from || !from) { /* if found */
+ int l = strlen(groupdata) - strlen(data);
if (option_debug)
ast_log(LOG_DEBUG, " >>>> found '%s' in data '%s' after %d runs\n", group, data, i);
- char name[16];
data = data + (i * (strlen(group)- 1)) - 1;
- int l = strlen(groupdata) - strlen(data);
/* data = data-i+from-1; */ /* possible failure here! */
if (prev == ')') { /* grouping => capture */
*(group+strlen(group)-1) = '\0';
@@ -708,7 +705,7 @@ int ast_extension_patmatch(const char *pattern, char *data)
s = scopy = (char *) malloc(strlen(pattern));
sepcopy = (char *) malloc(strlen(pattern));
strcpy(s,group);
- while (sep = strsep(&s,"|")) {
+ while ((sep = strsep(&s,"|"))) {
strcpy(sepcopy,sep);
strcat(sepcopy,pattern+border+1);
if (option_debug)
@@ -737,7 +734,6 @@ int ast_extension_patmatch(const char *pattern, char *data)
return 0;
} else {
if (pattern[1] != '{') { /* capture without quantifiers */
- char name[16];
int l = strlen(groupdata) - strlen(data);
groupdata[l-1] = '\0';
*(group+strlen(group)-1) = '\0';
@@ -810,7 +806,7 @@ int ast_extension_patmatch(const char *pattern, char *data)
}
/* try exactly num repetitions, from high to from */
-int ast_extension_patmatch_repeated(const char *pattern, char *data, const int num)
+static int ast_extension_patmatch_repeated(const char *pattern, const char *data, const int num)
{
int i;
ast_log(LOG_DEBUG, " >>> try %d repetitions of '%s' in data '%s'\n", num, pattern, data);
@@ -848,7 +844,7 @@ int ast_extension_match(char *pattern, char *data)
static int extension_close(char *pattern, char *data, int needmore)
{
- int match;
+ int match=1;
/* If "data" is longer, it can'be a subset of pattern unless
pattern is a pattern match */
if ((strlen(pattern) < strlen(data)) && (pattern[0] != '_'))