* searching a start.
* @param array The array the check
* @param s The string to find
- * @param start Start index for search. If start is greater or
- equal to array length, -1 will be returned.
+ * @param start Start index for search. If start is out of bounds (negative or
+ equal to array length or greater), -1 will be returned.
* @return index of string in array or -1
*/
-AP_DECLARE(int) ap_array_index(const apr_array_header_t *array,
- const char *s,
- apr_size_t start);
+AP_DECLARE(int) ap_array_str_index(const apr_array_header_t *array,
+ const char *s,
+ int start);
/**
* Check if the string is member of the given array by strcmp.
* @param array The array the check
* @param s The string to find
- * @return !=0 iff string is member of array
+ * @return !=0 iff string is member of array (via strcmp)
*/
-AP_DECLARE(int) ap_array_contains(const apr_array_header_t *array,
- const char *s);
+AP_DECLARE(int) ap_array_str_contains(const apr_array_header_t *array,
+ const char *s);
#ifdef __cplusplus
}
/* Add all protocols we know (tls or clear) and that
* are part of the offerings (if there have been any).
*/
- if (!offers || ap_array_contains(offers, *protos)) {
+ if (!offers || ap_array_str_contains(offers, *protos)) {
ap_log_cerror(APLOG_MARK, APLOG_TRACE1, 0, c,
"proposing protocol '%s'", *protos);
APR_ARRAY_PUSH(proposals, const char*) = *protos;
const char *proto2)
{
if (preferences && preferences->nelts > 0) {
- int index1 = ap_array_index(preferences, proto1, 0);
- int index2 = ap_array_index(preferences, proto2, 0);
+ int index1 = ap_array_str_index(preferences, proto1, 0);
+ int index2 = ap_array_str_index(preferences, proto2, 0);
if (index2 > index1) {
return (index1 >= 0) ? 1 : -1;
}
/* If the existing protocol has not been proposed, but is a choice,
* add it to the proposals implicitly.
*/
- if (!ap_array_contains(proposals, existing)
- && ap_array_contains(choices, existing)) {
+ if (!ap_array_str_contains(proposals, existing)
+ && ap_array_str_contains(choices, existing)) {
APR_ARRAY_PUSH(proposals, const char*) = existing;
}
for (i = 0; i < proposals->nelts; ++i) {
const char *p = APR_ARRAY_IDX(proposals, i, const char *);
if (conf->protocols->nelts > 0
- && !ap_array_contains(conf->protocols, p)) {
+ && !ap_array_str_contains(conf->protocols, p)) {
/* not a permitted protocol here */
continue;
}
return apr_pstrndup(p, buf, k);
}
-AP_DECLARE(int) ap_array_index(const apr_array_header_t *array,
- const char *s,
- apr_size_t start)
-{
- apr_size_t i;
- for (i = start; i < array->nelts; i++) {
- const char *p = APR_ARRAY_IDX(array, i, const char *);
- if (!strcmp(p, s)) {
- return (int)i;
+AP_DECLARE(int) ap_array_str_index(const apr_array_header_t *array,
+ const char *s,
+ int start)
+{
+ if (start >= 0) {
+ int i;
+
+ for (i = start; i < array->nelts; i++) {
+ const char *p = APR_ARRAY_IDX(array, i, const char *);
+ if (!strcmp(p, s)) {
+ return i;
+ }
}
}
+
return -1;
}
-AP_DECLARE(int) ap_array_contains(const apr_array_header_t *array,
- const char *s)
+AP_DECLARE(int) ap_array_str_contains(const apr_array_header_t *array,
+ const char *s)
{
- return (ap_array_index(array, s, 0) >= 0);
+ return (ap_array_str_index(array, s, 0) >= 0);
}