X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Flibxml2_error.c;fp=src%2Flibxml2_error.c;h=3241a63956ef192daa008372b807f1f84b431b1d;hb=27481680fb1a69456e789e5bc8e1ec914337287d;hp=0000000000000000000000000000000000000000;hpb=783d4b3820a54d9079499a4b09ad4b98b709dbde;p=yaz-moved-to-github.git diff --git a/src/libxml2_error.c b/src/libxml2_error.c new file mode 100644 index 0000000..3241a63 --- /dev/null +++ b/src/libxml2_error.c @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2006, Index Data ApS + * See the file LICENSE for details. + * + * $Id: libxml2_error.c,v 1.1 2006-05-07 17:45:41 adam Exp $ + */ +/** + * \file libxml2_error.c + * \brief Libxml2 error handling + */ + +#include +#include +#include +#include + +#if HAVE_XML2 +#include +#endif + +#if HAVE_XSLT +#include +#endif + +static int libxml2_error_level = 0; + +static void proxy_xml_error_handler(void *ctx, const char *fmt, ...) +{ + char buf[1024]; + + va_list ap; + va_start(ap, fmt); + +#ifdef WIN32 + vsprintf(buf, fmt, ap); +#else + vsnprintf(buf, sizeof(buf), fmt, ap); +#endif + yaz_log(libxml2_error_level, "%s: %s", (char*) ctx, buf); + + va_end (ap); +} + +int libxml2_error_to_yazlog(int level, const char *lead_msg) +{ + libxml2_error_level = level; +#if HAVE_XSLT + xsltSetGenericErrorFunc((void *) "XSLT", proxy_xml_error_handler); +#endif +#if HAVE_XML2 + xmlSetGenericErrorFunc((void *) "XML", proxy_xml_error_handler); + return 0; +#else + return -1; +#endif +} + +/* + * Local variables: + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +