📄 error.c
字号:
/* * error.c: module displaying/handling XML parser errors * * See Copyright for the status of this software. * * Daniel Veillard <Daniel.Veillard@w3.org> */#include "global.h"#ifdef WIN32#include "win32config.h"#else#include "config.h"#endif#include <stdio.h>#include <stdarg.h>#include <libxml/parser.h>/** * xmlParserPrintFileInfo: * @input: an xmlParserInputPtr input * * Displays the associated file and line informations for the current input */voidxmlParserPrintFileInfo(xmlParserInputPtr input) { if (input != NULL) { if (input->filename) fprintf(stderr, "%s:%d: ", input->filename, input->line); else fprintf(stderr, "Entity: line %d: ", input->line); }}/** * xmlParserPrintFileContext: * @input: an xmlParserInputPtr input * * Displays current context within the input content for error tracking */voidxmlParserPrintFileContext(xmlParserInputPtr input) { const xmlChar *cur, *base; int n; if (input == NULL) return; cur = input->cur; base = input->base; while ((cur > base) && ((*cur == '\n') || (*cur == '\r'))) { cur--; } n = 0; while ((n++ < 80) && (cur > base) && (*cur != '\n') && (*cur != '\r')) cur--; if ((*cur == '\n') || (*cur == '\r')) cur++; base = cur; n = 0; while ((*cur != 0) && (*cur != '\n') && (*cur != '\r') && (n < 79)) { fprintf(stderr, "%c", (unsigned char) *cur++); n++; } fprintf(stderr, "\n"); cur = input->cur; while ((*cur == '\n') || (*cur == '\r')) cur--; n = 0; while ((cur != base) && (n++ < 80)) { fprintf(stderr, " "); base++; } fprintf(stderr,"^\n");}/** * xmlParserError: * @ctx: an XML parser context * @msg: the message to display/transmit * @...: extra parameters for the message display * * Display and format an error messages, gives file, line, position and * extra parameters. */voidxmlParserError(void *ctx, const char *msg, ...){ xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; xmlParserInputPtr input; xmlParserInputPtr cur = NULL; va_list args; input = ctxt->input; if ((input != NULL) && (input->filename == NULL) && (ctxt->inputNr > 1)) { cur = input; input = ctxt->inputTab[ctxt->inputNr - 2]; } xmlParserPrintFileInfo(input); fprintf(stderr, "error: "); va_start(args, msg); vfprintf(stderr, msg, args); va_end(args); xmlParserPrintFileContext(input); if (cur != NULL) { xmlParserPrintFileInfo(cur); fprintf(stderr, "\n"); xmlParserPrintFileContext(cur); }}/** * xmlParserWarning: * @ctx: an XML parser context * @msg: the message to display/transmit * @...: extra parameters for the message display * * Display and format a warning messages, gives file, line, position and * extra parameters. */voidxmlParserWarning(void *ctx, const char *msg, ...){ xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; xmlParserInputPtr input; xmlParserInputPtr cur = NULL; va_list args; input = ctxt->input; if ((input != NULL) && (input->filename == NULL) && (ctxt->inputNr > 1)) { cur = input; input = ctxt->inputTab[ctxt->inputNr - 2]; } xmlParserPrintFileInfo(input); fprintf(stderr, "warning: "); va_start(args, msg); vfprintf(stderr, msg, args); va_end(args); xmlParserPrintFileContext(input); if (cur != NULL) { xmlParserPrintFileInfo(cur); fprintf(stderr, "\n"); xmlParserPrintFileContext(cur); }}/** * xmlParserValidityError: * @ctx: an XML parser context * @msg: the message to display/transmit * @...: extra parameters for the message display * * Display and format an validity error messages, gives file, * line, position and extra parameters. */voidxmlParserValidityError(void *ctx, const char *msg, ...){ xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; xmlParserInputPtr input; va_list args; input = ctxt->input; if ((input->filename == NULL) && (ctxt->inputNr > 1)) input = ctxt->inputTab[ctxt->inputNr - 2]; xmlParserPrintFileInfo(input); fprintf(stderr, "validity error: "); va_start(args, msg); vfprintf(stderr, msg, args); va_end(args); xmlParserPrintFileContext(input);}/** * xmlParserValidityWarning: * @ctx: an XML parser context * @msg: the message to display/transmit * @...: extra parameters for the message display * * Display and format a validity warning messages, gives file, line, * position and extra parameters. */voidxmlParserValidityWarning(void *ctx, const char *msg, ...){ xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; xmlParserInputPtr input; va_list args; input = ctxt->input; if ((input->filename == NULL) && (ctxt->inputNr > 1)) input = ctxt->inputTab[ctxt->inputNr - 2]; xmlParserPrintFileInfo(input); fprintf(stderr, "validity warning: "); va_start(args, msg); vfprintf(stderr, msg, args); va_end(args); xmlParserPrintFileContext(input);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -