| 166 | } |
| 167 | |
| 168 | AP_DECLARE(apr_array_header_t *) ap_list_provider_groups(apr_pool_t *pool) |
| 169 | { |
| 170 | apr_array_header_t *ret = apr_array_make(pool, 10, sizeof(ap_list_provider_groups_t)); |
| 171 | ap_list_provider_groups_t *entry; |
| 172 | apr_hash_t *provider_group_hash; |
| 173 | apr_hash_index_t *groups_hi, *vers_hi; |
| 174 | char *group, *version; |
| 175 | |
| 176 | if (global_providers_names == NULL) |
| 177 | return ret; |
| 178 | |
| 179 | for (groups_hi = apr_hash_first(pool, global_providers_names); |
| 180 | groups_hi; |
| 181 | groups_hi = apr_hash_next(groups_hi)) |
| 182 | { |
| 183 | apr_hash_this(groups_hi, (void *)&group, NULL, (void *)&provider_group_hash); |
| 184 | if (provider_group_hash == NULL) |
| 185 | continue; |
| 186 | for (vers_hi = apr_hash_first(pool, provider_group_hash); |
| 187 | vers_hi; |
| 188 | vers_hi = apr_hash_next(vers_hi)) |
| 189 | { |
| 190 | apr_hash_this(vers_hi, (void *)&version, NULL, NULL); |
| 191 | |
| 192 | entry = apr_array_push(ret); |
| 193 | entry->provider_group = group; |
| 194 | entry->provider_version = version; |
| 195 | } |
| 196 | } |
| 197 | return ret; |
| 198 | } |
no outgoing calls
no test coverage detected