Update of /usr/cvsroot/asterisk/pbx In directory mongoose.digium.com:/tmp/cvs-serv9002/pbx
Modified Files:
pbx_config.c
Log Message:
check to see if a comma or an open paren came first when splitting the
application
from the application arguments (bug #4306)
Index: pbx_config.c
===================================================================
RCS file: /usr/cvsroot/asterisk/pbx/pbx_config.c,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -d -r1.61 -r1.62
--- pbx_config.c 12 May 2005 20:47:23 -0000 1.61
+++ pbx_config.c 19 May 2005 01:18:37 -0000 1.62
@@ -1619,7 +1619,7 @@
struct ast_variable *v;
char *cxt, *ext, *pri, *appl, *data, *tc, *cidmatch;
struct ast_context *con;
- char *start, *end;
+ char *end;
char *label;
char realvalue[256];
int lastpri = -2;
@@ -1656,7 +1656,7 @@
char *stringp=NULL;
int ipri = -2;
char realext[256]="";
- char *plus;
+ char *plus, *firstp, *firstc;
tc = strdup(v->value);
if(tc!=NULL){
stringp=tc;
@@ -1711,25 +1711,28 @@
appl = stringp;
if (!appl)
appl="";
- if (!(start =
strchr(appl, '('))) {
- if (stringp)
- appl =
strsep(&stringp, ",");
- else
- appl =
"";
- }
- if (start && (end =
strrchr(appl, ')'))) {
- *start = *end =
'\0';
- data = start +
1;
-
process_quotes_and_slashes(data, ',', '|');
- } else if
(stringp!=NULL && *stringp=='"') {
- stringp++;
- data =
strsep(&stringp, "\"");
- stringp++;
+ /* Find the first
occurrence of either '(' or ',' */
+ firstc = strchr(appl,
',');
+ firstp = strchr(appl,
'(');
+ if (firstc &&
((!firstp) || (firstc < firstp))) {
+ /* comma found,
no parenthesis */
+ /* or both
found, but comma found first */
+ appl =
strsep(&stringp, ",");
+ data = stringp;
+ } else if ((!firstc) &&
(!firstp)) {
+ /* Neither
found */
+ data = "";
} else {
- if (stringp)
- data =
strsep(&stringp, ",");
- else
- data =
"";
+ /* Final
remaining case is parenthesis found first */
+ appl =
strsep(&stringp, "(");
+ data = stringp;
+ end =
strrchr(data, ')');
+ if ((end =
strrchr(data, ')'))) {
+ *end =
'\0';
+ } else {
+
ast_log(LOG_WARNING, "No closing parenthesis found? '%s(%s'\n", appl, data);
+ }
+
process_quotes_and_slashes(data, ',', '|');
}
if (!data)
_______________________________________________
Asterisk-Cvs mailing list
[email protected]
http://lists.digium.com/mailman/listinfo/asterisk-cvs
