return SWITCH_TRUE;
}
+/* find a character (find) in a string (in) and return a pointer to that point in the string where the character was found
+ using the array (allowed) as allowed non-matching characters, when (allowed) is NULL, behaviour should be identical to strchr()
+ */
+static inline char *switch_strchr_strict(const char *in, char find, const char *allowed)
+{
+ const char *p;
+
+ switch_assert(in);
+
+ p = in;
+
+ while(p && *p) {
+ const char *a = allowed;
+ int found = 0;
+
+ if (!a) {
+ found = 1;
+ } else {
+
+ while(a && *a) {
+
+ if (*p == *a) {
+ found = 1;
+ break;
+ }
+
+ a++;
+ }
+
+ }
+
+ if (!found) return NULL;
+
+ if (*p == find) break;
+
+ p++;
+ }
+
+ return (char *) p;
+}
+
#define switch_arraylen(_a) (sizeof(_a) / sizeof(_a[0]))
#define switch_split(_data, _delim, _array) switch_separate_string(_data, _delim, _array, switch_arraylen(_array))
check_a = end;
- while (check_a && (check_b = strchr(check_a, a))) {
+ while (check_a && (check_b = switch_strchr_strict(check_a, a, " "))) {
if ((check_b = switch_find_end_paren(check_b, a, b))) {
check_a = check_b;
}
char *pnext;
*next++ = '\0';
- if ((pnext = strchr(next, a))) {
+ if ((pnext = switch_strchr_strict(next, a, " "))) {
next = pnext + 1;
}
}
}
if (p == end) {
- end = strchr(p, '[');
+ end = switch_strchr_strict(p, '[', " ");
}
p++;
current_variable = NULL;
switch_event_add_header_string(var_event, SWITCH_STACK_BOTTOM, "originate_early_media", oglobals.early_ok ? "true" : "false");
-
+ printf("ASS %s\n", vdata);
if (vdata) {
char *var_array[1024] = { 0 };
int var_count = 0;
char *pnext;
*next++ = '\0';
- if ((pnext = strchr(next, '['))) {
+ if ((pnext = switch_strchr_strict(next, '[', " "))) {
next = pnext + 1;
}
}