(closes issue #13557)

Reported by: nickpeirson

The user attached a patch, but the license is not yet
recorded. I took the liberty of finding and replacing
ALL index() calls with strchr() calls, and that
involves more than just main/pbx.c;

chan_oss, app_playback, func_cut also had calls
to index(), and I changed them out. 1.4 had no
references to index() at all.




git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@144569 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.2
Steve Murphy 17 years ago
parent a36696f2e7
commit e74584ca3c

@ -200,13 +200,13 @@ static int do_say(say_args_t *a, const char *s, const char *options, int depth)
ast_debug(2, "doing [%s]\n", fn); ast_debug(2, "doing [%s]\n", fn);
/* locate prefix and data, if any */ /* locate prefix and data, if any */
fmt = index(fn, ':'); fmt = strchr(fn, ':');
if (!fmt || fmt == fn) { /* regular filename */ if (!fmt || fmt == fn) { /* regular filename */
ret = s_streamwait3(a, fn); ret = s_streamwait3(a, fn);
continue; continue;
} }
fmt++; fmt++;
data = index(fmt, ':'); /* colon before data */ data = strchr(fmt, ':'); /* colon before data */
if (!data || data == fmt) { /* simple prefix-fmt */ if (!data || data == fmt) { /* simple prefix-fmt */
ret = do_say(a, fn, options, depth); ret = do_say(a, fn, options, depth);
continue; continue;
@ -219,14 +219,14 @@ static int do_say(say_args_t *a, const char *s, const char *options, int depth)
if (*p == '\'') {/* file name - we trim them */ if (*p == '\'') {/* file name - we trim them */
char *y; char *y;
strcpy(fn2, ast_skip_blanks(p+1)); /* make a full copy */ strcpy(fn2, ast_skip_blanks(p+1)); /* make a full copy */
y = index(fn2, '\''); y = strchr(fn2, '\'');
if (!y) { if (!y) {
p = data; /* invalid. prepare to end */ p = data; /* invalid. prepare to end */
break; break;
} }
*y = '\0'; *y = '\0';
ast_trim_blanks(fn2); ast_trim_blanks(fn2);
p = index(p+1, '\''); p = strchr(p+1, '\'');
ret = s_streamwait3(a, fn2); ret = s_streamwait3(a, fn2);
} else { } else {
int l = fmt-fn; int l = fmt-fn;

@ -1299,7 +1299,7 @@ static void store_mixer(struct chan_oss_pvt *o, const char *s)
int i; int i;
for (i = 0; i < strlen(s); i++) { for (i = 0; i < strlen(s); i++) {
if (!isalnum(s[i]) && index(" \t-/", s[i]) == NULL) { if (!isalnum(s[i]) && strchr(" \t-/", s[i]) == NULL) {
ast_log(LOG_WARNING, "Suspect char %c in mixer cmd, ignoring:\n\t%s\n", s[i], s); ast_log(LOG_WARNING, "Suspect char %c in mixer cmd, ignoring:\n\t%s\n", s[i], s);
return; return;
} }

@ -82,7 +82,7 @@ static int sort_internal(struct ast_channel *chan, char *data, char *buffer, siz
/* Parse each into a struct */ /* Parse each into a struct */
count2 = 0; count2 = 0;
while ((ptrkey = strsep(&strings, ","))) { while ((ptrkey = strsep(&strings, ","))) {
ptrvalue = index(ptrkey, ':'); ptrvalue = strchr(ptrkey, ':');
if (!ptrvalue) { if (!ptrvalue) {
count--; count--;
continue; continue;
@ -171,7 +171,7 @@ static int cut_internal(struct ast_channel *chan, char *data, char *buffer, size
/* Get to start, if any */ /* Get to start, if any */
if (num1 > 0) { if (num1 > 0) {
while (tmp2 != (char *)NULL + 1 && curfieldnum < num1) { while (tmp2 != (char *)NULL + 1 && curfieldnum < num1) {
tmp2 = index(tmp2, d) + 1; tmp2 = strchr(tmp2, d) + 1;
curfieldnum++; curfieldnum++;
} }
} }

@ -1048,7 +1048,7 @@ static void pbx_destroy(struct ast_pbx *p)
* NULL * NULL
* *
* In the above, I could easily turn "N" into "23456789", but I think that a quick "if( *z >= '2' && *z <= '9' )" might take * In the above, I could easily turn "N" into "23456789", but I think that a quick "if( *z >= '2' && *z <= '9' )" might take
* fewer CPU cycles than a call to index("23456789",*z), where *z is the char to match... * fewer CPU cycles than a call to strchr("23456789",*z), where *z is the char to match...
* *
* traversal is pretty simple: one routine merely traverses the alt list, and for each matching char in the pattern, it calls itself * traversal is pretty simple: one routine merely traverses the alt list, and for each matching char in the pattern, it calls itself
* on the corresponding next pointer, incrementing also the pointer of the string to be matched, and passing the total specificity and length. * on the corresponding next pointer, incrementing also the pointer of the string to be matched, and passing the total specificity and length.
@ -1346,7 +1346,7 @@ static void new_find_extension(const char *str, struct scoreboard *score, struct
return; /* the first match is all we need */ return; /* the first match is all we need */
} }
} }
} else if (index(p->x, *str)) { } else if (strchr(p->x, *str)) {
ast_debug(4, "Nothing strange about this match\n"); ast_debug(4, "Nothing strange about this match\n");
NEW_MATCHER_CHK_MATCH; NEW_MATCHER_CHK_MATCH;
NEW_MATCHER_RECURSE; NEW_MATCHER_RECURSE;

Loading…
Cancel
Save