diff options
Diffstat (limited to 'contrib/xml2/xslt_proc.c')
-rw-r--r-- | contrib/xml2/xslt_proc.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/contrib/xml2/xslt_proc.c b/contrib/xml2/xslt_proc.c index 9b71766fceb..8bd9e401fa2 100644 --- a/contrib/xml2/xslt_proc.c +++ b/contrib/xml2/xslt_proc.c @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/contrib/xml2/xslt_proc.c,v 1.19 2010/03/01 18:07:59 tgl Exp $ + * $PostgreSQL: pgsql/contrib/xml2/xslt_proc.c,v 1.20 2010/03/03 19:10:22 tgl Exp $ * * XSLT processing functions (requiring libxslt) * @@ -12,6 +12,7 @@ #include "funcapi.h" #include "miscadmin.h" #include "utils/builtins.h" +#include "utils/xml.h" #ifdef USE_LIBXSLT @@ -38,7 +39,6 @@ Datum xslt_process(PG_FUNCTION_ARGS); #ifdef USE_LIBXSLT /* declarations to come from xpath.c */ -extern void elog_error(const char *explain, bool force); extern void pgxml_parser_init(void); /* local defs */ @@ -88,11 +88,8 @@ xslt_process(PG_FUNCTION_ARGS) doctree = xmlParseFile(text_to_cstring(doct)); if (doctree == NULL) - { - elog_error("error parsing XML document", false); - - PG_RETURN_NULL(); - } + xml_ereport(ERROR, ERRCODE_EXTERNAL_ROUTINE_EXCEPTION, + "error parsing XML document"); /* Same for stylesheet */ if (VARDATA(ssheet)[0] == '<') @@ -102,8 +99,8 @@ xslt_process(PG_FUNCTION_ARGS) if (ssdoc == NULL) { xmlFreeDoc(doctree); - elog_error("error parsing stylesheet as XML document", false); - PG_RETURN_NULL(); + xml_ereport(ERROR, ERRCODE_EXTERNAL_ROUTINE_EXCEPTION, + "error parsing stylesheet as XML document"); } stylesheet = xsltParseStylesheetDoc(ssdoc); @@ -116,8 +113,8 @@ xslt_process(PG_FUNCTION_ARGS) { xmlFreeDoc(doctree); xsltCleanupGlobals(); - elog_error("failed to parse stylesheet", false); - PG_RETURN_NULL(); + xml_ereport(ERROR, ERRCODE_EXTERNAL_ROUTINE_EXCEPTION, + "failed to parse stylesheet"); } restree = xsltApplyStylesheet(stylesheet, doctree, params); |