return NULL;
}
-static const char *start_ifmod(cmd_parms *cmd, void *mconfig, const char *arg)
+static module *find_module(server_rec *s, const char *name)
{
- const char *endp = ap_strrchr_c(arg, '>');
- int not = (arg[0] == '!');
- module *found;
-
- if (endp == NULL) {
- return unclosed_directive(cmd);
- }
-
- arg = apr_pstrndup(cmd->pool, arg, endp - arg);
-
- if (not) {
- arg++;
- }
-
- if (!arg[0]) {
- return missing_container_arg(cmd);
- }
-
- found = ap_find_linked_module(arg);
+ module *found = ap_find_linked_module(name);
/* search prelinked stuff */
if (!found) {
ap_module_symbol_t *current = ap_prelinked_module_symbols;
for (; current->name; ++current) {
- if (!strcmp(current->name, arg)) {
+ if (!strcmp(current->name, name)) {
found = current->modp;
break;
}
APR_RETRIEVE_OPTIONAL_FN(ap_find_loaded_module_symbol);
if (check_symbol) {
- found = check_symbol(cmd->server, arg);
+ found = check_symbol(s, name);
}
}
+ return found;
+}
+
+
+static const char *start_ifmod(cmd_parms *cmd, void *mconfig, const char *arg)
+{
+ const char *endp = ap_strrchr_c(arg, '>');
+ int not = (arg[0] == '!');
+ module *found;
+
+ if (endp == NULL) {
+ return unclosed_directive(cmd);
+ }
+
+ arg = apr_pstrndup(cmd->pool, arg, endp - arg);
+
+ if (not) {
+ arg++;
+ }
+
+ if (!arg[0]) {
+ return missing_container_arg(cmd);
+ }
+
+ found = find_module(cmd->server, arg);
+
if ((!not && found) || (not && !found)) {
ap_directive_t *parent = NULL;
ap_directive_t *current = NULL;