diff options
-rw-r--r-- | worker/xml_helper.c | 27 |
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; |