38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * testSAX.c : a small tester program for parsing using the SAX API.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * See Copyright for the status of this software.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * daniel@veillard.com
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include "libxml.h"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef HAVE_SYS_TIME_H
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <sys/time.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef HAVE_SYS_TIMEB_H
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <sys/timeb.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef HAVE_TIME_H
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <time.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef LIBXML_SAX1_ENABLED
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <string.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <stdarg.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef HAVE_SYS_TYPES_H
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <sys/types.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef HAVE_SYS_STAT_H
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <sys/stat.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef HAVE_FCNTL_H
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <fcntl.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef HAVE_UNISTD_H
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <unistd.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef HAVE_STDLIB_H
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <stdlib.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef HAVE_STRING_H
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <string.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/globals.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/xmlerror.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/parser.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/parserInternals.h> /* only for xmlNewInputFromFile() */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/tree.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/debugXML.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/xmlmemory.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic int debug = 0;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic int copy = 0;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic int recovery = 0;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic int push = 0;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic int speed = 0;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic int noent = 0;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic int quiet = 0;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic int nonull = 0;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic int sax2 = 0;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic int repeat = 0;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic int callbacks = 0;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic int timing = 0;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Timing routines.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Internal timing routines to remove the necessity to have unix-specific
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * function calls
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifndef HAVE_GETTIMEOFDAY
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef HAVE_SYS_TIMEB_H
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef HAVE_SYS_TIME_H
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef HAVE_FTIME
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic int
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncmy_gettimeofday(struct timeval *tvp, void *tzp)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync struct timeb timebuffer;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ftime(&timebuffer);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (tvp) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync tvp->tv_sec = timebuffer.time;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync tvp->tv_usec = timebuffer.millitm * 1000L;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return (0);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#define HAVE_GETTIMEOFDAY 1
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#define gettimeofday my_gettimeofday
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* HAVE_FTIME */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* HAVE_SYS_TIME_H */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* HAVE_SYS_TIMEB_H */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* !HAVE_GETTIMEOFDAY */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#if defined(HAVE_GETTIMEOFDAY)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic struct timeval begin, end;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * startTimer: call where you want to start timing
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstartTimer(void)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync gettimeofday(&begin, NULL);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * endTimer: call where you want to stop timing and to print out a
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * message about the timing performed; format is a printf
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * type argument
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void XMLCDECL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncendTimer(const char *fmt, ...)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync long msec;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_list ap;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync gettimeofday(&end, NULL);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync msec = end.tv_sec - begin.tv_sec;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync msec *= 1000;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync msec += (end.tv_usec - begin.tv_usec) / 1000;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifndef HAVE_STDARG_H
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#error "endTimer required stdarg functions"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_start(ap, fmt);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync vfprintf(stderr, fmt, ap);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_end(ap);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stderr, " took %ld ms\n", msec);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#elif defined(HAVE_TIME_H)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * No gettimeofday function, so we have to make do with calling clock.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * This is obviously less accurate, but there's little we can do about
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * that.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifndef CLOCKS_PER_SEC
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#define CLOCKS_PER_SEC 100
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic clock_t begin, end;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstartTimer(void)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync begin = clock();
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void XMLCDECL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncendTimer(const char *fmt, ...)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync long msec;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_list ap;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync end = clock();
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync msec = ((end - begin) * 1000) / CLOCKS_PER_SEC;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifndef HAVE_STDARG_H
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#error "endTimer required stdarg functions"
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_start(ap, fmt);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync vfprintf(stderr, fmt, ap);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_end(ap);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stderr, " took %ld ms\n", msec);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * We don't have a gettimeofday or time.h, so we just don't do timing
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstartTimer(void)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Do nothing
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void XMLCDECL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncendTimer(char *format, ...)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * We cannot do anything because we don't have a timing function
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef HAVE_STDARG_H
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_start(ap, format);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync vfprintf(stderr, format, ap);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_end(ap);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stderr, " was not timed\n", msec);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* We don't have gettimeofday, time or stdarg.h, what crazy world is
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * this ?!
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * empty SAX block
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic xmlSAXHandler emptySAXHandlerStruct = {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* internalSubset */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* isStandalone */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* hasInternalSubset */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* hasExternalSubset */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* resolveEntity */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* getEntity */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* entityDecl */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* notationDecl */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* attributeDecl */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* elementDecl */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* unparsedEntityDecl */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* setDocumentLocator */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* startDocument */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* endDocument */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* startElement */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* endElement */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* reference */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* characters */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* ignorableWhitespace */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* processingInstruction */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* comment */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* xmlParserWarning */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* xmlParserError */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* xmlParserError */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* getParameterEntity */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* cdataBlock; */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* externalSubset; */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync 1,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* startElementNs */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL, /* endElementNs */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL /* xmlStructuredErrorFunc */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync};
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic xmlSAXHandlerPtr emptySAXHandler = &emptySAXHandlerStruct;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncextern xmlSAXHandlerPtr debugSAXHandler;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/************************************************************************
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Debug Handlers *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ************************************************************************/
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * isStandaloneDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Is this document tagged standalone ?
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Returns 1 if true
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic int
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncisStandaloneDebug(void *ctx ATTRIBUTE_UNUSED)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return(0);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.isStandalone()\n");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return(0);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * hasInternalSubsetDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Does this document has an internal subset
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Returns 1 if true
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic int
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynchasInternalSubsetDebug(void *ctx ATTRIBUTE_UNUSED)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return(0);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.hasInternalSubset()\n");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return(0);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * hasExternalSubsetDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Does this document has an external subset
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Returns 1 if true
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic int
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynchasExternalSubsetDebug(void *ctx ATTRIBUTE_UNUSED)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return(0);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.hasExternalSubset()\n");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return(0);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * internalSubsetDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Does this document has an internal subset
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncinternalSubsetDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *ExternalID, const xmlChar *SystemID)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.internalSubset(%s,", name);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (ExternalID == NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, " ,");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, " %s,", ExternalID);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (SystemID == NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, " )\n");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, " %s)\n", SystemID);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * externalSubsetDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Does this document has an external subset
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncexternalSubsetDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *ExternalID, const xmlChar *SystemID)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.externalSubset(%s,", name);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (ExternalID == NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, " ,");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, " %s,", ExternalID);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (SystemID == NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, " )\n");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, " %s)\n", SystemID);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * resolveEntityDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @publicId: The public ID of the entity
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @systemId: The system ID of the entity
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Special entity resolver, better left to the parser, it has
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * more context than the application layer.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * The default behaviour is to NOT resolve the entities, in that case
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * the ENTITY_REF nodes are built in the structure (and the parameter
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * values).
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic xmlParserInputPtr
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncresolveEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *publicId, const xmlChar *systemId)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return(NULL);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.resolveEntity(");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (publicId != NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "%s", (char *)publicId);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, " ");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (systemId != NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ", %s)\n", (char *)systemId);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ", )\n");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*********
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (systemId != NULL) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return(xmlNewInputFromFile(ctxt, (char *) systemId));
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *********/
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return(NULL);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * getEntityDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @name: The entity name
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Get an entity by name
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic xmlEntityPtr
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncgetEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return(NULL);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.getEntity(%s)\n", name);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return(NULL);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * getParameterEntityDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @name: The entity name
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Get a parameter entity by name
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Returns the xmlParserInputPtr
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic xmlEntityPtr
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncgetParameterEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return(NULL);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.getParameterEntity(%s)\n", name);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return(NULL);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * entityDeclDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @name: the entity name
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @type: the entity type
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @publicId: The public ID of the entity
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @systemId: The system ID of the entity
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @content: the entity value (without processing).
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * An entity definition has been parsed
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncentityDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, int type,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *publicId, const xmlChar *systemId, xmlChar *content)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncconst xmlChar *nullstr = BAD_CAST "(null)";
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /* not all libraries handle printing null pointers nicely */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (publicId == NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync publicId = nullstr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (systemId == NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync systemId = nullstr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (content == NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync content = (xmlChar *)nullstr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.entityDecl(%s, %d, %s, %s, %s)\n",
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync name, type, publicId, systemId, content);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * attributeDeclDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @name: the attribute name
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @type: the attribute type
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * An attribute definition has been parsed
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncattributeDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar * elem,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar * name, int type, int def,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar * defaultValue, xmlEnumerationPtr tree)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (defaultValue == NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.attributeDecl(%s, %s, %d, %d, NULL, ...)\n",
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync elem, name, type, def);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.attributeDecl(%s, %s, %d, %d, %s, ...)\n",
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync elem, name, type, def, defaultValue);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlFreeEnumeration(tree);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * elementDeclDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @name: the element name
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @type: the element type
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @content: the element value (without processing).
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * An element definition has been parsed
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncelementDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, int type,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlElementContentPtr content ATTRIBUTE_UNUSED)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.elementDecl(%s, %d, ...)\n",
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync name, type);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * notationDeclDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @name: The name of the notation
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @publicId: The public ID of the entity
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @systemId: The system ID of the entity
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * What to do when a notation declaration has been parsed.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncnotationDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *publicId, const xmlChar *systemId)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.notationDecl(%s, %s, %s)\n",
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (char *) name, (char *) publicId, (char *) systemId);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * unparsedEntityDeclDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @name: The name of the entity
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @publicId: The public ID of the entity
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @systemId: The system ID of the entity
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @notationName: the name of the notation
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * What to do when an unparsed entity declaration is parsed
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncunparsedEntityDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *publicId, const xmlChar *systemId,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *notationName)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncconst xmlChar *nullstr = BAD_CAST "(null)";
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (publicId == NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync publicId = nullstr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (systemId == NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync systemId = nullstr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (notationName == NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync notationName = nullstr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.unparsedEntityDecl(%s, %s, %s, %s)\n",
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (char *) name, (char *) publicId, (char *) systemId,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (char *) notationName);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * setDocumentLocatorDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @loc: A SAX Locator
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Receive the document locator at startup, actually xmlDefaultSAXLocator
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Everything is available on the context, so this is useless in our case.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncsetDocumentLocatorDebug(void *ctx ATTRIBUTE_UNUSED, xmlSAXLocatorPtr loc ATTRIBUTE_UNUSED)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.setDocumentLocator()\n");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * startDocumentDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * called when the document start being processed.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstartDocumentDebug(void *ctx ATTRIBUTE_UNUSED)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.startDocument()\n");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * endDocumentDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * called when the document end has been detected.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncendDocumentDebug(void *ctx ATTRIBUTE_UNUSED)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.endDocument()\n");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * startElementDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @name: The element name
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * called when an opening tag has been processed.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstartElementDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, const xmlChar **atts)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int i;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.startElement(%s", (char *) name);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (atts != NULL) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync for (i = 0;(atts[i] != NULL);i++) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ", %s='", atts[i++]);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (atts[i] != NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "%s'", atts[i]);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ")\n");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * endElementDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @name: The element name
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * called when the end of an element has been detected.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncendElementDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.endElement(%s)\n", (char *) name);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * charactersDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ch: a xmlChar string
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @len: the number of xmlChar
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * receiving some chars from the parser.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Question: how much at a time ???
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynccharactersDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync char output[40];
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int i;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync for (i = 0;(i<len) && (i < 30);i++)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync output[i] = ch[i];
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync output[i] = 0;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.characters(%s, %d)\n", output, len);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * referenceDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @name: The entity name
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * called when an entity reference is detected.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncreferenceDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.reference(%s)\n", name);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * ignorableWhitespaceDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ch: a xmlChar string
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @start: the first char in the string
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @len: the number of xmlChar
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * receiving some ignorable whitespaces from the parser.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Question: how much at a time ???
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncignorableWhitespaceDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync char output[40];
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int i;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync for (i = 0;(i<len) && (i < 30);i++)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync output[i] = ch[i];
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync output[i] = 0;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.ignorableWhitespace(%s, %d)\n", output, len);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * processingInstructionDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @target: the target name
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @data: the PI data's
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @len: the number of xmlChar
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * A processing instruction has been parsed.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncprocessingInstructionDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *target,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *data)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (data != NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.processingInstruction(%s, %s)\n",
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (char *) target, (char *) data);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.processingInstruction(%s, NULL)\n",
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (char *) target);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * cdataBlockDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctx: the user data (XML parser context)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @value: The pcdata content
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @len: the block length
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * called when a pcdata block has been parsed
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynccdataBlockDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *value, int len)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.pcdata(%.20s, %d)\n",
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (char *) value, len);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * commentDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @value: the comment content
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * A comment has been parsed.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynccommentDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *value)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.comment(%s)\n", value);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * warningDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @msg: the message to display/transmit
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @...: extra parameters for the message display
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Display and format a warning messages, gives file, line, position and
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * extra parameters.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void XMLCDECL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncwarningDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_list args;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_start(args, msg);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.warning: ");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync vfprintf(stdout, msg, args);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_end(args);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * errorDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @msg: the message to display/transmit
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @...: extra parameters for the message display
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Display and format a error messages, gives file, line, position and
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * extra parameters.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void XMLCDECL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncerrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_list args;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_start(args, msg);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.error: ");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync vfprintf(stdout, msg, args);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_end(args);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * fatalErrorDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @msg: the message to display/transmit
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @...: extra parameters for the message display
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Display and format a fatalError messages, gives file, line, position and
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * extra parameters.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void XMLCDECL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncfatalErrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_list args;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_start(args, msg);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.fatalError: ");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync vfprintf(stdout, msg, args);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync va_end(args);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic xmlSAXHandler debugSAXHandlerStruct = {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync internalSubsetDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync isStandaloneDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync hasInternalSubsetDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync hasExternalSubsetDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync resolveEntityDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync getEntityDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync entityDeclDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync notationDeclDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync attributeDeclDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync elementDeclDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync unparsedEntityDeclDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync setDocumentLocatorDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync startDocumentDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync endDocumentDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync startElementDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync endElementDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync referenceDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync charactersDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ignorableWhitespaceDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync processingInstructionDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync commentDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync warningDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync errorDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fatalErrorDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync getParameterEntityDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync cdataBlockDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync externalSubsetDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync 1,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync};
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncxmlSAXHandlerPtr debugSAXHandler = &debugSAXHandlerStruct;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * SAX2 specific callbacks
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * startElementNsDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @name: The element name
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * called when an opening tag has been processed.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstartElementNsDebug(void *ctx ATTRIBUTE_UNUSED,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *localname,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *prefix,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *URI,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int nb_namespaces,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar **namespaces,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int nb_attributes,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int nb_defaulted,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar **attributes)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int i;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.startElementNs(%s", (char *) localname);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (prefix == NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ", NULL");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ", %s", (char *) prefix);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (URI == NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ", NULL");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ", '%s'", (char *) URI);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ", %d", nb_namespaces);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (namespaces != NULL) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync for (i = 0;i < nb_namespaces * 2;i++) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ", xmlns");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (namespaces[i] != NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ":%s", namespaces[i]);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync i++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "='%s'", namespaces[i]);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ", %d, %d", nb_attributes, nb_defaulted);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (attributes != NULL) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync for (i = 0;i < nb_attributes * 5;i += 5) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (attributes[i + 1] != NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ", %s:%s='", attributes[i + 1], attributes[i]);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ", %s='", attributes[i]);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "%.4s...', %d", attributes[i + 3],
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (int)(attributes[i + 4] - attributes[i + 3]));
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ")\n");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * endElementDebug:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @ctxt: An XML parser context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * @name: The element name
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * called when the end of an element has been detected.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncendElementNsDebug(void *ctx ATTRIBUTE_UNUSED,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *localname,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *prefix,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *URI)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync{
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "SAX.endElementNs(%s", (char *) localname);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (prefix == NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ", NULL");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ", %s", (char *) prefix);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (URI == NULL)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ", NULL)\n");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, ", '%s')\n", (char *) URI);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic xmlSAXHandler debugSAX2HandlerStruct = {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync internalSubsetDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync isStandaloneDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync hasInternalSubsetDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync hasExternalSubsetDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync resolveEntityDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync getEntityDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync entityDeclDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync notationDeclDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync attributeDeclDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync elementDeclDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync unparsedEntityDeclDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync setDocumentLocatorDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync startDocumentDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync endDocumentDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync referenceDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync charactersDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ignorableWhitespaceDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync processingInstructionDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync commentDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync warningDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync errorDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fatalErrorDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync getParameterEntityDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync cdataBlockDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync externalSubsetDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_SAX2_MAGIC,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync startElementNsDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync endElementNsDebug,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync NULL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync};
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic xmlSAXHandlerPtr debugSAX2Handler = &debugSAX2HandlerStruct;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/************************************************************************
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Debug *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ************************************************************************/
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncstatic void
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncparseAndPrintFile(char *filename) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int res;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef LIBXML_PUSH_ENABLED
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (push) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync FILE *f;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if ((!quiet) && (!nonull)) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Empty callbacks for checking
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync f = fopen(filename, "rb");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync f = fopen(filename, "r");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (f != NULL) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int ret;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync char chars[10];
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlParserCtxtPtr ctxt;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ret = fread(chars, 1, 4, f);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (ret > 0) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ctxt = xmlCreatePushParserCtxt(emptySAXHandler, NULL,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync chars, ret, filename);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync while ((ret = fread(chars, 1, 3, f)) > 0) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlParseChunk(ctxt, chars, ret, 0);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlParseChunk(ctxt, chars, 0, 1);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlFreeParserCtxt(ctxt);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fclose(f);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync } else {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlGenericError(xmlGenericErrorContext,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync "Cannot read file %s\n", filename);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Debug callback
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync f = fopen(filename, "rb");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync f = fopen(filename, "r");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (f != NULL) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int ret;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync char chars[10];
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlParserCtxtPtr ctxt;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ret = fread(chars, 1, 4, f);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (ret > 0) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (sax2)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ctxt = xmlCreatePushParserCtxt(debugSAX2Handler, NULL,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync chars, ret, filename);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ctxt = xmlCreatePushParserCtxt(debugSAXHandler, NULL,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync chars, ret, filename);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync while ((ret = fread(chars, 1, 3, f)) > 0) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlParseChunk(ctxt, chars, ret, 0);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync ret = xmlParseChunk(ctxt, chars, 0, 1);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlFreeParserCtxt(ctxt);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (ret != 0) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync "xmlSAXUserParseFile returned error %d\n", ret);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fclose(f);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync } else {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* LIBXML_PUSH_ENABLED */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (!speed) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Empty callbacks for checking
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if ((!quiet) && (!nonull)) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync res = xmlSAXUserParseFile(emptySAXHandler, NULL, filename);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (res != 0) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "xmlSAXUserParseFile returned error %d\n", res);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Debug callback
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync callbacks = 0;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (repeat) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int i;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync for (i = 0;i < 99;i++) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (sax2)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync res = xmlSAXUserParseFile(debugSAX2Handler, NULL,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync filename);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync res = xmlSAXUserParseFile(debugSAXHandler, NULL,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync filename);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (sax2)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync res = xmlSAXUserParseFile(debugSAX2Handler, NULL, filename);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync res = xmlSAXUserParseFile(debugSAXHandler, NULL, filename);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (res != 0) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "xmlSAXUserParseFile returned error %d\n", res);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (quiet)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "%d callbacks generated\n", callbacks);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync } else {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync /*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * test 100x the SAX parse
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int i;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync for (i = 0; i<100;i++)
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync res = xmlSAXUserParseFile(emptySAXHandler, NULL, filename);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (res != 0) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stdout, "xmlSAXUserParseFile returned error %d\n", res);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef LIBXML_PUSH_ENABLED
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncint main(int argc, char **argv) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int i;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int files = 0;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync LIBXML_TEST_VERSION /* be safe, plus calls xmlInitParser */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync for (i = 1; i < argc ; i++) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if ((!strcmp(argv[i], "-debug")) || (!strcmp(argv[i], "--debug")))
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync debug++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else if ((!strcmp(argv[i], "-copy")) || (!strcmp(argv[i], "--copy")))
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync copy++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else if ((!strcmp(argv[i], "-recover")) ||
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (!strcmp(argv[i], "--recover")))
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync recovery++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else if ((!strcmp(argv[i], "-push")) ||
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (!strcmp(argv[i], "--push")))
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef LIBXML_PUSH_ENABLED
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync push++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync fprintf(stderr,"'push' not enabled in library - ignoring\n");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* LIBXML_PUSH_ENABLED */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else if ((!strcmp(argv[i], "-speed")) ||
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (!strcmp(argv[i], "--speed")))
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync speed++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else if ((!strcmp(argv[i], "-timing")) ||
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (!strcmp(argv[i], "--timing"))) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync nonull++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync timing++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync quiet++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync } else if ((!strcmp(argv[i], "-repeat")) ||
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (!strcmp(argv[i], "--repeat"))) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync repeat++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync quiet++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync } else if ((!strcmp(argv[i], "-noent")) ||
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (!strcmp(argv[i], "--noent")))
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync noent++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else if ((!strcmp(argv[i], "-quiet")) ||
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (!strcmp(argv[i], "--quiet")))
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync quiet++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else if ((!strcmp(argv[i], "-sax2")) ||
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (!strcmp(argv[i], "--sax2")))
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync sax2++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync else if ((!strcmp(argv[i], "-nonull")) ||
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync (!strcmp(argv[i], "--nonull")))
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync nonull++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (noent != 0) xmlSubstituteEntitiesDefault(1);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync for (i = 1; i < argc ; i++) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (argv[i][0] != '-') {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (timing) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync startTimer();
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync parseAndPrintFile(argv[i]);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync if (timing) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync endTimer("Parsing");
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync files ++;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync }
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlCleanupParser();
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlMemoryDump();
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return(0);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#else
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncint main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync printf("%s : SAX1 parsing support not compiled in\n", argv[0]);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync return(0);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* LIBXML_SAX1_ENABLED */