15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * testSAX.c : a small tester program for parsing using the SAX API. 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See Copyright for the status of this software. 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * daniel@veillard.com 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "libxml.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_SYS_TIME_H 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <sys/time.h> 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_SYS_TIMEB_H 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <sys/timeb.h> 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_TIME_H 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <time.h> 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef LIBXML_SAX1_ENABLED 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string.h> 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdarg.h> 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_SYS_TYPES_H 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <sys/types.h> 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_SYS_STAT_H 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <sys/stat.h> 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_FCNTL_H 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <fcntl.h> 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_UNISTD_H 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <unistd.h> 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_STDLIB_H 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdlib.h> 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_STRING_H 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string.h> 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/globals.h> 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/xmlerror.h> 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/parser.h> 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/parserInternals.h> /* only for xmlNewInputFromFile() */ 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/tree.h> 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/debugXML.h> 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/xmlmemory.h> 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int debug = 0; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int copy = 0; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int recovery = 0; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int push = 0; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int speed = 0; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int noent = 0; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int quiet = 0; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int nonull = 0; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int sax2 = 0; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int repeat = 0; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int callbacks = 0; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int timing = 0; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Timing routines. 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Internal timing routines to remove the necessity to have unix-specific 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * function calls 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef HAVE_GETTIMEOFDAY 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_SYS_TIMEB_H 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_SYS_TIME_H 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_FTIME 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)my_gettimeofday(struct timeval *tvp, void *tzp) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct timeb timebuffer; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ftime(&timebuffer); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (tvp) { 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tvp->tv_sec = timebuffer.time; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tvp->tv_usec = timebuffer.millitm * 1000L; 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (0); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define HAVE_GETTIMEOFDAY 1 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define gettimeofday my_gettimeofday 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* HAVE_FTIME */ 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* HAVE_SYS_TIME_H */ 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* HAVE_SYS_TIMEB_H */ 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* !HAVE_GETTIMEOFDAY */ 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(HAVE_GETTIMEOFDAY) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static struct timeval begin, end; 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * startTimer: call where you want to start timing 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)startTimer(void) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gettimeofday(&begin, NULL); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * endTimer: call where you want to stop timing and to print out a 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * message about the timing performed; format is a printf 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * type argument 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void XMLCDECL 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endTimer(const char *fmt, ...) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) long msec; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_list ap; 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gettimeofday(&end, NULL); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) msec = end.tv_sec - begin.tv_sec; 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) msec *= 1000; 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) msec += (end.tv_usec - begin.tv_usec) / 1000; 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef HAVE_STDARG_H 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#error "endTimer required stdarg functions" 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_start(ap, fmt); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vfprintf(stderr, fmt, ap); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_end(ap); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stderr, " took %ld ms\n", msec); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(HAVE_TIME_H) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * No gettimeofday function, so we have to make do with calling clock. 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This is obviously less accurate, but there's little we can do about 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * that. 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CLOCKS_PER_SEC 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CLOCKS_PER_SEC 100 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static clock_t begin, end; 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)startTimer(void) 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) begin = clock(); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void XMLCDECL 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endTimer(const char *fmt, ...) 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) long msec; 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_list ap; 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) end = clock(); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) msec = ((end - begin) * 1000) / CLOCKS_PER_SEC; 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef HAVE_STDARG_H 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#error "endTimer required stdarg functions" 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_start(ap, fmt); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vfprintf(stderr, fmt, ap); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_end(ap); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stderr, " took %ld ms\n", msec); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * We don't have a gettimeofday or time.h, so we just don't do timing 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)startTimer(void) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Do nothing 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void XMLCDECL 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endTimer(char *format, ...) 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * We cannot do anything because we don't have a timing function 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_STDARG_H 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_start(ap, format); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vfprintf(stderr, format, ap); 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_end(ap); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stderr, " was not timed\n", msec); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* We don't have gettimeofday, time or stdarg.h, what crazy world is 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * this ?! 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * empty SAX block 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static xmlSAXHandler emptySAXHandlerStruct = { 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* internalSubset */ 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* isStandalone */ 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* hasInternalSubset */ 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* hasExternalSubset */ 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* resolveEntity */ 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* getEntity */ 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* entityDecl */ 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* notationDecl */ 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* attributeDecl */ 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* elementDecl */ 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* unparsedEntityDecl */ 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* setDocumentLocator */ 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* startDocument */ 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* endDocument */ 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* startElement */ 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* endElement */ 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* reference */ 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* characters */ 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* ignorableWhitespace */ 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* processingInstruction */ 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* comment */ 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* xmlParserWarning */ 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* xmlParserError */ 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* xmlParserError */ 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* getParameterEntity */ 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* cdataBlock; */ 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* externalSubset; */ 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1, 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* startElementNs */ 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, /* endElementNs */ 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL /* xmlStructuredErrorFunc */ 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static xmlSAXHandlerPtr emptySAXHandler = &emptySAXHandlerStruct; 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern xmlSAXHandlerPtr debugSAXHandler; 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/************************************************************************ 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * * 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Debug Handlers * 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * * 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ************************************************************************/ 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * isStandaloneDebug: 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Is this document tagged standalone ? 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns 1 if true 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)isStandaloneDebug(void *ctx ATTRIBUTE_UNUSED) 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(0); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.isStandalone()\n"); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(0); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * hasInternalSubsetDebug: 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Does this document has an internal subset 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns 1 if true 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hasInternalSubsetDebug(void *ctx ATTRIBUTE_UNUSED) 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(0); 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.hasInternalSubset()\n"); 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(0); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * hasExternalSubsetDebug: 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Does this document has an external subset 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns 1 if true 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static int 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hasExternalSubsetDebug(void *ctx ATTRIBUTE_UNUSED) 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(0); 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.hasExternalSubset()\n"); 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(0); 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * internalSubsetDebug: 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Does this document has an internal subset 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)internalSubsetDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar *ExternalID, const xmlChar *SystemID) 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.internalSubset(%s,", name); 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (ExternalID == NULL) 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, " ,"); 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, " %s,", ExternalID); 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (SystemID == NULL) 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, " )\n"); 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, " %s)\n", SystemID); 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * externalSubsetDebug: 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Does this document has an external subset 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)externalSubsetDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar *ExternalID, const xmlChar *SystemID) 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.externalSubset(%s,", name); 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (ExternalID == NULL) 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, " ,"); 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, " %s,", ExternalID); 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (SystemID == NULL) 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, " )\n"); 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, " %s)\n", SystemID); 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * resolveEntityDebug: 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @publicId: The public ID of the entity 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @systemId: The system ID of the entity 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Special entity resolver, better left to the parser, it has 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * more context than the application layer. 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The default behaviour is to NOT resolve the entities, in that case 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the ENTITY_REF nodes are built in the structure (and the parameter 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * values). 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour. 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static xmlParserInputPtr 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)resolveEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *publicId, const xmlChar *systemId) 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(NULL); 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; */ 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.resolveEntity("); 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (publicId != NULL) 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "%s", (char *)publicId); 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, " "); 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (systemId != NULL) 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ", %s)\n", (char *)systemId); 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ", )\n"); 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/********* 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (systemId != NULL) { 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(xmlNewInputFromFile(ctxt, (char *) systemId)); 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *********/ 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(NULL); 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * getEntityDebug: 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name: The entity name 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Get an entity by name 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour. 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static xmlEntityPtr 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)getEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name) 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(NULL); 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.getEntity(%s)\n", name); 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(NULL); 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * getParameterEntityDebug: 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name: The entity name 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Get a parameter entity by name 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns the xmlParserInputPtr 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static xmlEntityPtr 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)getParameterEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name) 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(NULL); 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.getParameterEntity(%s)\n", name); 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(NULL); 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * entityDeclDebug: 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name: the entity name 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type: the entity type 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @publicId: The public ID of the entity 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @systemId: The system ID of the entity 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @content: the entity value (without processing). 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * An entity definition has been parsed 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)entityDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, int type, 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar *publicId, const xmlChar *systemId, xmlChar *content) 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const xmlChar *nullstr = BAD_CAST "(null)"; 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* not all libraries handle printing null pointers nicely */ 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (publicId == NULL) 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) publicId = nullstr; 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (systemId == NULL) 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) systemId = nullstr; 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (content == NULL) 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content = (xmlChar *)nullstr; 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.entityDecl(%s, %d, %s, %s, %s)\n", 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name, type, publicId, systemId, content); 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * attributeDeclDebug: 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name: the attribute name 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type: the attribute type 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * An attribute definition has been parsed 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)attributeDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar * elem, 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar * name, int type, int def, 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar * defaultValue, xmlEnumerationPtr tree) 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (defaultValue == NULL) 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.attributeDecl(%s, %s, %d, %d, NULL, ...)\n", 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elem, name, type, def); 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.attributeDecl(%s, %s, %d, %d, %s, ...)\n", 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elem, name, type, def, defaultValue); 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmlFreeEnumeration(tree); 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * elementDeclDebug: 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name: the element name 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type: the element type 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @content: the element value (without processing). 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * An element definition has been parsed 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)elementDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, int type, 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmlElementContentPtr content ATTRIBUTE_UNUSED) 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.elementDecl(%s, %d, ...)\n", 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name, type); 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * notationDeclDebug: 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name: The name of the notation 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @publicId: The public ID of the entity 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @systemId: The system ID of the entity 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * What to do when a notation declaration has been parsed. 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)notationDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar *publicId, const xmlChar *systemId) 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.notationDecl(%s, %s, %s)\n", 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (char *) name, (char *) publicId, (char *) systemId); 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * unparsedEntityDeclDebug: 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name: The name of the entity 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @publicId: The public ID of the entity 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @systemId: The system ID of the entity 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @notationName: the name of the notation 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * What to do when an unparsed entity declaration is parsed 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)unparsedEntityDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar *publicId, const xmlChar *systemId, 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar *notationName) 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const xmlChar *nullstr = BAD_CAST "(null)"; 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (publicId == NULL) 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) publicId = nullstr; 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (systemId == NULL) 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) systemId = nullstr; 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (notationName == NULL) 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notationName = nullstr; 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.unparsedEntityDecl(%s, %s, %s, %s)\n", 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (char *) name, (char *) publicId, (char *) systemId, 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (char *) notationName); 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * setDocumentLocatorDebug: 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @loc: A SAX Locator 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Receive the document locator at startup, actually xmlDefaultSAXLocator 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Everything is available on the context, so this is useless in our case. 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)setDocumentLocatorDebug(void *ctx ATTRIBUTE_UNUSED, xmlSAXLocatorPtr loc ATTRIBUTE_UNUSED) 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.setDocumentLocator()\n"); 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * startDocumentDebug: 5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * called when the document start being processed. 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)startDocumentDebug(void *ctx ATTRIBUTE_UNUSED) 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.startDocument()\n"); 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * endDocumentDebug: 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * called when the document end has been detected. 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endDocumentDebug(void *ctx ATTRIBUTE_UNUSED) 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.endDocument()\n"); 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * startElementDebug: 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name: The element name 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * called when an opening tag has been processed. 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)startElementDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, const xmlChar **atts) 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int i; 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.startElement(%s", (char *) name); 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (atts != NULL) { 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (i = 0;(atts[i] != NULL);i++) { 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ", %s='", atts[i++]); 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (atts[i] != NULL) 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "%s'", atts[i]); 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ")\n"); 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * endElementDebug: 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name: The element name 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * called when the end of an element has been detected. 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endElementDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name) 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.endElement(%s)\n", (char *) name); 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * charactersDebug: 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ch: a xmlChar string 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @len: the number of xmlChar 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * receiving some chars from the parser. 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Question: how much at a time ??? 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)charactersDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len) 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char output[40]; 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int i; 6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (i = 0;(i<len) && (i < 30);i++) 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output[i] = ch[i]; 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output[i] = 0; 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.characters(%s, %d)\n", output, len); 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * referenceDebug: 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name: The entity name 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * called when an entity reference is detected. 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)referenceDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name) 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.reference(%s)\n", name); 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ignorableWhitespaceDebug: 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ch: a xmlChar string 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @start: the first char in the string 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @len: the number of xmlChar 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * receiving some ignorable whitespaces from the parser. 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Question: how much at a time ??? 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ignorableWhitespaceDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len) 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char output[40]; 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int i; 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (i = 0;(i<len) && (i < 30);i++) 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output[i] = ch[i]; 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) output[i] = 0; 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.ignorableWhitespace(%s, %d)\n", output, len); 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * processingInstructionDebug: 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @target: the target name 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @data: the PI data's 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @len: the number of xmlChar 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * A processing instruction has been parsed. 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)processingInstructionDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *target, 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar *data) 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (data != NULL) 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.processingInstruction(%s, %s)\n", 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (char *) target, (char *) data); 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.processingInstruction(%s, NULL)\n", 7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (char *) target); 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * cdataBlockDebug: 7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx: the user data (XML parser context) 7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @value: The pcdata content 7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @len: the block length 7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * called when a pcdata block has been parsed 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cdataBlockDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *value, int len) 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.pcdata(%.20s, %d)\n", 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (char *) value, len); 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * commentDebug: 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @value: the comment content 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * A comment has been parsed. 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)commentDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *value) 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.comment(%s)\n", value); 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * warningDebug: 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @msg: the message to display/transmit 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @...: extra parameters for the message display 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Display and format a warning messages, gives file, line, position and 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * extra parameters. 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void XMLCDECL 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)warningDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_list args; 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_start(args, msg); 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.warning: "); 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vfprintf(stdout, msg, args); 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_end(args); 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * errorDebug: 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @msg: the message to display/transmit 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @...: extra parameters for the message display 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Display and format a error messages, gives file, line, position and 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * extra parameters. 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void XMLCDECL 8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)errorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_list args; 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_start(args, msg); 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.error: "); 8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vfprintf(stdout, msg, args); 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_end(args); 8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * fatalErrorDebug: 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @msg: the message to display/transmit 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @...: extra parameters for the message display 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Display and format a fatalError messages, gives file, line, position and 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * extra parameters. 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void XMLCDECL 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fatalErrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_list args; 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_start(args, msg); 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.fatalError: "); 8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) vfprintf(stdout, msg, args); 8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) va_end(args); 8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static xmlSAXHandler debugSAXHandlerStruct = { 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) internalSubsetDebug, 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) isStandaloneDebug, 8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hasInternalSubsetDebug, 8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hasExternalSubsetDebug, 8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) resolveEntityDebug, 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getEntityDebug, 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entityDeclDebug, 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notationDeclDebug, 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) attributeDeclDebug, 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elementDeclDebug, 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unparsedEntityDeclDebug, 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setDocumentLocatorDebug, 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) startDocumentDebug, 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) endDocumentDebug, 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) startElementDebug, 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) endElementDebug, 8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) referenceDebug, 8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) charactersDebug, 8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ignorableWhitespaceDebug, 8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) processingInstructionDebug, 8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) commentDebug, 8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) warningDebug, 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) errorDebug, 8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fatalErrorDebug, 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getParameterEntityDebug, 8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cdataBlockDebug, 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) externalSubsetDebug, 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1, 8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, 8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)xmlSAXHandlerPtr debugSAXHandler = &debugSAXHandlerStruct; 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * SAX2 specific callbacks 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * startElementNsDebug: 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name: The element name 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * called when an opening tag has been processed. 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)startElementNsDebug(void *ctx ATTRIBUTE_UNUSED, 8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar *localname, 8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar *prefix, 8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar *URI, 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int nb_namespaces, 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar **namespaces, 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int nb_attributes, 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int nb_defaulted, 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar **attributes) 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int i; 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.startElementNs(%s", (char *) localname); 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (prefix == NULL) 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ", NULL"); 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ", %s", (char *) prefix); 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (URI == NULL) 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ", NULL"); 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ", '%s'", (char *) URI); 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ", %d", nb_namespaces); 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (namespaces != NULL) { 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (i = 0;i < nb_namespaces * 2;i++) { 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ", xmlns"); 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (namespaces[i] != NULL) 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ":%s", namespaces[i]); 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) i++; 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "='%s'", namespaces[i]); 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ", %d, %d", nb_attributes, nb_defaulted); 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (attributes != NULL) { 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (i = 0;i < nb_attributes * 5;i += 5) { 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (attributes[i + 1] != NULL) 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ", %s:%s='", attributes[i + 1], attributes[i]); 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ", %s='", attributes[i]); 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "%.4s...', %d", attributes[i + 3], 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (int)(attributes[i + 4] - attributes[i + 3])); 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ")\n"); 9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * endElementDebug: 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: An XML parser context 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name: The element name 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * called when the end of an element has been detected. 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endElementNsDebug(void *ctx ATTRIBUTE_UNUSED, 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar *localname, 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar *prefix, 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const xmlChar *URI) 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks++; 9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "SAX.endElementNs(%s", (char *) localname); 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (prefix == NULL) 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ", NULL"); 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ", %s", (char *) prefix); 9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (URI == NULL) 9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ", NULL)\n"); 9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, ", '%s')\n", (char *) URI); 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static xmlSAXHandler debugSAX2HandlerStruct = { 9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) internalSubsetDebug, 9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) isStandaloneDebug, 9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hasInternalSubsetDebug, 9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hasExternalSubsetDebug, 9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) resolveEntityDebug, 9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getEntityDebug, 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entityDeclDebug, 9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notationDeclDebug, 9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) attributeDeclDebug, 9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) elementDeclDebug, 9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unparsedEntityDeclDebug, 9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setDocumentLocatorDebug, 9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) startDocumentDebug, 9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) endDocumentDebug, 9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) referenceDebug, 9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) charactersDebug, 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ignorableWhitespaceDebug, 9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) processingInstructionDebug, 9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) commentDebug, 9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) warningDebug, 9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) errorDebug, 9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fatalErrorDebug, 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getParameterEntityDebug, 9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cdataBlockDebug, 9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) externalSubsetDebug, 9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) XML_SAX2_MAGIC, 9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL, 9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) startElementNsDebug, 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) endElementNsDebug, 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NULL 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static xmlSAXHandlerPtr debugSAX2Handler = &debugSAX2HandlerStruct; 9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/************************************************************************ 9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * * 9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Debug * 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * * 10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ************************************************************************/ 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void 10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)parseAndPrintFile(char *filename) { 10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int res; 10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef LIBXML_PUSH_ENABLED 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (push) { 10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FILE *f; 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ((!quiet) && (!nonull)) { 10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Empty callbacks for checking 10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) 10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) f = fopen(filename, "rb"); 10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) f = fopen(filename, "r"); 10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (f != NULL) { 10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int ret; 10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char chars[10]; 10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmlParserCtxtPtr ctxt; 10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ret = fread(chars, 1, 4, f); 10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (ret > 0) { 10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ctxt = xmlCreatePushParserCtxt(emptySAXHandler, NULL, 10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chars, ret, filename); 10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while ((ret = fread(chars, 1, 3, f)) > 0) { 10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmlParseChunk(ctxt, chars, ret, 0); 10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmlParseChunk(ctxt, chars, 0, 1); 10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmlFreeParserCtxt(ctxt); 10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fclose(f); 10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmlGenericError(xmlGenericErrorContext, 10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Cannot read file %s\n", filename); 10395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* 10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Debug callback 10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) 10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) f = fopen(filename, "rb"); 10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) f = fopen(filename, "r"); 10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (f != NULL) { 10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int ret; 10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char chars[10]; 10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmlParserCtxtPtr ctxt; 10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ret = fread(chars, 1, 4, f); 10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (ret > 0) { 10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (sax2) 10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ctxt = xmlCreatePushParserCtxt(debugSAX2Handler, NULL, 10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chars, ret, filename); 10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ctxt = xmlCreatePushParserCtxt(debugSAXHandler, NULL, 10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chars, ret, filename); 10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while ((ret = fread(chars, 1, 3, f)) > 0) { 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmlParseChunk(ctxt, chars, ret, 0); 10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ret = xmlParseChunk(ctxt, chars, 0, 1); 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmlFreeParserCtxt(ctxt); 10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (ret != 0) { 10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, 10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "xmlSAXUserParseFile returned error %d\n", ret); 10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fclose(f); 10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* LIBXML_PUSH_ENABLED */ 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!speed) { 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Empty callbacks for checking 10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ((!quiet) && (!nonull)) { 10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) res = xmlSAXUserParseFile(emptySAXHandler, NULL, filename); 10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (res != 0) { 10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "xmlSAXUserParseFile returned error %d\n", res); 10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* 10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Debug callback 10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) callbacks = 0; 10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (repeat) { 10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int i; 10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (i = 0;i < 99;i++) { 10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (sax2) 10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) res = xmlSAXUserParseFile(debugSAX2Handler, NULL, 10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) filename); 10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) res = xmlSAXUserParseFile(debugSAXHandler, NULL, 10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) filename); 11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (sax2) 11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) res = xmlSAXUserParseFile(debugSAX2Handler, NULL, filename); 11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) res = xmlSAXUserParseFile(debugSAXHandler, NULL, filename); 11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (res != 0) { 11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "xmlSAXUserParseFile returned error %d\n", res); 11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (quiet) 11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "%d callbacks generated\n", callbacks); 11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* 11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * test 100x the SAX parse 11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int i; 11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (i = 0; i<100;i++) 11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) res = xmlSAXUserParseFile(emptySAXHandler, NULL, filename); 11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (res != 0) { 11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stdout, "xmlSAXUserParseFile returned error %d\n", res); 11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef LIBXML_PUSH_ENABLED 11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int main(int argc, char **argv) { 11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int i; 11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int files = 0; 11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LIBXML_TEST_VERSION /* be safe, plus calls xmlInitParser */ 11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (i = 1; i < argc ; i++) { 11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ((!strcmp(argv[i], "-debug")) || (!strcmp(argv[i], "--debug"))) 11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) debug++; 11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if ((!strcmp(argv[i], "-copy")) || (!strcmp(argv[i], "--copy"))) 11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) copy++; 11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if ((!strcmp(argv[i], "-recover")) || 11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (!strcmp(argv[i], "--recover"))) 11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) recovery++; 11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if ((!strcmp(argv[i], "-push")) || 11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (!strcmp(argv[i], "--push"))) 11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef LIBXML_PUSH_ENABLED 11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) push++; 11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fprintf(stderr,"'push' not enabled in library - ignoring\n"); 11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* LIBXML_PUSH_ENABLED */ 11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if ((!strcmp(argv[i], "-speed")) || 11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (!strcmp(argv[i], "--speed"))) 11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) speed++; 11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if ((!strcmp(argv[i], "-timing")) || 11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (!strcmp(argv[i], "--timing"))) { 11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nonull++; 11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) timing++; 11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) quiet++; 11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if ((!strcmp(argv[i], "-repeat")) || 11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (!strcmp(argv[i], "--repeat"))) { 11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) repeat++; 11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) quiet++; 11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if ((!strcmp(argv[i], "-noent")) || 11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (!strcmp(argv[i], "--noent"))) 11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) noent++; 11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if ((!strcmp(argv[i], "-quiet")) || 11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (!strcmp(argv[i], "--quiet"))) 11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) quiet++; 11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if ((!strcmp(argv[i], "-sax2")) || 11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (!strcmp(argv[i], "--sax2"))) 11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sax2++; 11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if ((!strcmp(argv[i], "-nonull")) || 11725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (!strcmp(argv[i], "--nonull"))) 11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nonull++; 11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (noent != 0) xmlSubstituteEntitiesDefault(1); 11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (i = 1; i < argc ; i++) { 11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (argv[i][0] != '-') { 11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (timing) { 11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) startTimer(); 11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) parseAndPrintFile(argv[i]); 11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (timing) { 11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) endTimer("Parsing"); 11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) files ++; 11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmlCleanupParser(); 11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmlMemoryDump(); 11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(0); 11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) { 11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) printf("%s : SAX1 parsing support not compiled in\n", argv[0]); 11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return(0); 11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* LIBXML_SAX1_ENABLED */ 1199