summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--worker/xml_helper.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/worker/xml_helper.c b/worker/xml_helper.c
index 1680d3b..98d9e31 100644
--- a/worker/xml_helper.c
+++ b/worker/xml_helper.c
@@ -295,6 +295,7 @@ xmlParserInputPtr xml_external_entity_loader(const char *url, const char *id,
xmlParserInputPtr input_ptr;
warningSAXFunc saved_warning = NULL;
errorSAXFunc saved_error = NULL;
+ struct search_list *path_ptr;
CHECK(default_entity_loader, NULL,
@@ -319,18 +320,24 @@ xmlParserInputPtr xml_external_entity_loader(const char *url, const char *id,
if (saved_error != NULL) ctxt->sax->error = saved_error;
return input_ptr;
}
+
+ path_ptr = search_list_head;
+ while ( path_ptr != NULL ) {
- new_path[0]='\0';
- strncat(new_path, "../policy_metadata/", PATH_MAX-1);
- strncat(new_path, filename, PATH_MAX-strlen(new_path)-1);
+ new_path[0]='\0';
+ strncat(new_path, path_ptr->path, PATH_MAX-1);
+ strncat(new_path, filename, PATH_MAX-strlen(new_path)-1);
+
+ input_ptr=default_entity_loader(new_path, id, ctxt);
+ if (input_ptr != NULL) {
+ DEBUG(3, ("found: %s %s\n",new_path, id));
+ if (saved_warning != NULL) ctxt->sax->warning = saved_warning;
+ if (saved_error != NULL) ctxt->sax->error = saved_error;
+ return input_ptr;
+ }
- input_ptr=default_entity_loader(new_path, id, ctxt);
- if (input_ptr != NULL) {
- DEBUG(3, ("found: %s %s\n",new_path, id));
- if (saved_warning != NULL) ctxt->sax->warning = saved_warning;
- if (saved_error != NULL) ctxt->sax->error = saved_error;
- return input_ptr;
- }
+ path_ptr = path_ptr->next;
+ }
DEBUG(0, ("entity NOT found: %s %s\n",new_path, id));
if (saved_warning != NULL) ctxt->sax->warning = saved_warning;