--- enum.c.dist 2004-06-03 01:28:49.000000000 -0400 +++ enum.c 2004-06-03 01:31:11.000000000 -0400 @@ -92,6 +92,7 @@ int d_len = sizeof(temp) - 1; regex_t preg; regmatch_t pmatch[9]; + char *s; strcpy(dst, ""); @@ -125,29 +126,17 @@ return -1; } - if ((!strncasecmp(services, "e2u+sip", 7)) || - (!strncasecmp(services, "sip+e2u", 7))) { - strncpy(tech, "sip", techsize -1); - } else if ((!strncasecmp(services, "e2u+h323", 8)) || - (!strncasecmp(services, "h323+e2u", 8))) { - strncpy(tech, "h323", techsize -1); - } else if ((!strncasecmp(services, "e2u+x-iax2", 10)) || - (!strncasecmp(services, "e2u+iax2", 8)) || - (!strncasecmp(services, "iax2+e2u", 8))) { - strncpy(tech, "iax2", techsize -1); - } else if ((!strncasecmp(services, "e2u+x-iax", 9)) || - (!strncasecmp(services, "e2u+iax", 7)) || - (!strncasecmp(services, "iax+e2u", 7))) { - strncpy(tech, "iax", techsize -1); - } else if ((!strncasecmp(services, "e2u+tel", 7)) || - (!strncasecmp(services, "tel+e2u", 7))) { - strncpy(tech, "tel", techsize -1); - } else if (!strncasecmp(services, "e2u+voice:", 10)) { - strncpy(tech, services+10, techsize -1); + if ((s=strchr(services,'+')) ){ + if (!strcasecmp(s+1, "E2U")){ + s='\0'; + strncpy(tech, services, techsize); + } else if (!strncasecmp(s-3,"E2U",3)){ + strncpy(tech, s+1, techsize); + } else { + ast_log(LOG_WARNING, "Service (%s) has wrong syntax\n", services); + } } else { - ast_log(LOG_DEBUG, - "Services must be e2u+${tech}, ${tech}+e2u, or e2u+voice: where $tech is from (sip, h323, tel, iax, iax2). \n"); - return 0; + ast_log(LOG_WARNING, "Service (%s) lacks required type\n", services); } /* DEDBUGGING STUB @@ -160,7 +149,6 @@ return -1; } - delim = regexp[0]; delim2 = strchr(regexp + 1, delim); if ((delim2 == NULL) || (regexp[regexp_len-1] != delim)) {