File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / globals.c
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Sun Jun 15 19:53:28 2014 UTC (10 years ago) by misho
Branches: libxml2, MAIN
CVS tags: v2_9_1p0, v2_9_1, HEAD
libxml2 2.9.1

    1: /*
    2:  * globals.c: definition and handling of the set of global variables
    3:  *            of the library
    4:  *
    5:  * The bottom of this file is automatically generated by build_glob.py
    6:  * based on the description file global.data
    7:  *
    8:  * See Copyright for the status of this software.
    9:  *
   10:  * Gary Pennington <Gary.Pennington@uk.sun.com>
   11:  * daniel@veillard.com
   12:  */
   13: 
   14: #define IN_LIBXML
   15: #include "libxml.h"
   16: 
   17: #ifdef HAVE_STDLIB_H
   18: #include <stdlib.h>
   19: #endif
   20: #include <string.h>
   21: 
   22: #include <libxml/globals.h>
   23: #include <libxml/xmlmemory.h>
   24: #include <libxml/threads.h>
   25: 
   26: /* #define DEBUG_GLOBALS */
   27: 
   28: /*
   29:  * Helpful Macro
   30:  */
   31: #ifdef LIBXML_THREAD_ENABLED
   32: #define IS_MAIN_THREAD (xmlIsMainThread())
   33: #else
   34: #define IS_MAIN_THREAD 1
   35: #endif
   36: 
   37: /*
   38:  * Mutex to protect "ForNewThreads" variables
   39:  */
   40: static xmlMutexPtr xmlThrDefMutex = NULL;
   41: 
   42: /**
   43:  * xmlInitGlobals:
   44:  *
   45:  * Additional initialisation for multi-threading
   46:  */
   47: void xmlInitGlobals(void)
   48: {
   49:     if (xmlThrDefMutex == NULL)
   50:         xmlThrDefMutex = xmlNewMutex();
   51: }
   52: 
   53: /**
   54:  * xmlCleanupGlobals:
   55:  *
   56:  * Additional cleanup for multi-threading
   57:  */
   58: void xmlCleanupGlobals(void)
   59: {
   60:     if (xmlThrDefMutex != NULL) {
   61: 	xmlFreeMutex(xmlThrDefMutex);
   62: 	xmlThrDefMutex = NULL;
   63:     }
   64:     __xmlGlobalInitMutexDestroy();
   65: }
   66: 
   67: /************************************************************************
   68:  *									*
   69:  *	All the user accessible global variables of the library		*
   70:  *									*
   71:  ************************************************************************/
   72: 
   73: /*
   74:  * Memory allocation routines
   75:  */
   76: #undef	xmlFree
   77: #undef	xmlMalloc
   78: #undef	xmlMallocAtomic
   79: #undef	xmlMemStrdup
   80: #undef	xmlRealloc
   81: 
   82: #if defined(DEBUG_MEMORY_LOCATION) || defined(DEBUG_MEMORY)
   83: xmlFreeFunc xmlFree = (xmlFreeFunc) xmlMemFree;
   84: xmlMallocFunc xmlMalloc = (xmlMallocFunc) xmlMemMalloc;
   85: xmlMallocFunc xmlMallocAtomic = (xmlMallocFunc) xmlMemMalloc;
   86: xmlReallocFunc xmlRealloc = (xmlReallocFunc) xmlMemRealloc;
   87: xmlStrdupFunc xmlMemStrdup = (xmlStrdupFunc) xmlMemoryStrdup;
   88: #else
   89: /**
   90:  * xmlFree:
   91:  * @mem: an already allocated block of memory
   92:  *
   93:  * The variable holding the libxml free() implementation
   94:  */
   95: xmlFreeFunc xmlFree = (xmlFreeFunc) free;
   96: /**
   97:  * xmlMalloc:
   98:  * @size:  the size requested in bytes
   99:  *
  100:  * The variable holding the libxml malloc() implementation
  101:  *
  102:  * Returns a pointer to the newly allocated block or NULL in case of error
  103:  */
  104: xmlMallocFunc xmlMalloc = (xmlMallocFunc) malloc;
  105: /**
  106:  * xmlMallocAtomic:
  107:  * @size:  the size requested in bytes
  108:  *
  109:  * The variable holding the libxml malloc() implementation for atomic
  110:  * data (i.e. blocks not containings pointers), useful when using a
  111:  * garbage collecting allocator.
  112:  *
  113:  * Returns a pointer to the newly allocated block or NULL in case of error
  114:  */
  115: xmlMallocFunc xmlMallocAtomic = (xmlMallocFunc) malloc;
  116: /**
  117:  * xmlRealloc:
  118:  * @mem: an already allocated block of memory
  119:  * @size:  the new size requested in bytes
  120:  *
  121:  * The variable holding the libxml realloc() implementation
  122:  *
  123:  * Returns a pointer to the newly reallocated block or NULL in case of error
  124:  */
  125: xmlReallocFunc xmlRealloc = (xmlReallocFunc) realloc;
  126: /**
  127:  * xmlMemStrdup:
  128:  * @str: a zero terminated string
  129:  *
  130:  * The variable holding the libxml strdup() implementation
  131:  *
  132:  * Returns the copy of the string or NULL in case of error
  133:  */
  134: xmlStrdupFunc xmlMemStrdup = (xmlStrdupFunc) xmlStrdup;
  135: #endif /* DEBUG_MEMORY_LOCATION || DEBUG_MEMORY */
  136: 
  137: #include <libxml/threads.h>
  138: #include <libxml/globals.h>
  139: #include <libxml/SAX.h>
  140: 
  141: #undef	docbDefaultSAXHandler
  142: #undef	htmlDefaultSAXHandler
  143: #undef	oldXMLWDcompatibility
  144: #undef	xmlBufferAllocScheme
  145: #undef	xmlDefaultBufferSize
  146: #undef	xmlDefaultSAXHandler
  147: #undef	xmlDefaultSAXLocator
  148: #undef	xmlDoValidityCheckingDefaultValue
  149: #undef	xmlGenericError
  150: #undef	xmlStructuredError
  151: #undef	xmlGenericErrorContext
  152: #undef	xmlStructuredErrorContext
  153: #undef	xmlGetWarningsDefaultValue
  154: #undef	xmlIndentTreeOutput
  155: #undef  xmlTreeIndentString
  156: #undef	xmlKeepBlanksDefaultValue
  157: #undef	xmlLineNumbersDefaultValue
  158: #undef	xmlLoadExtDtdDefaultValue
  159: #undef	xmlParserDebugEntities
  160: #undef	xmlParserVersion
  161: #undef	xmlPedanticParserDefaultValue
  162: #undef	xmlSaveNoEmptyTags
  163: #undef	xmlSubstituteEntitiesDefaultValue
  164: #undef	xmlRegisterNodeDefaultValue
  165: #undef	xmlDeregisterNodeDefaultValue
  166: #undef	xmlLastError
  167: 
  168: #undef  xmlParserInputBufferCreateFilenameValue
  169: #undef  xmlOutputBufferCreateFilenameValue
  170: /**
  171:  * xmlParserVersion:
  172:  *
  173:  * Constant string describing the internal version of the library
  174:  */
  175: const char *xmlParserVersion = LIBXML_VERSION_STRING LIBXML_VERSION_EXTRA;
  176: 
  177: /**
  178:  * xmlBufferAllocScheme:
  179:  *
  180:  * Global setting, default allocation policy for buffers, default is
  181:  * XML_BUFFER_ALLOC_EXACT
  182:  */
  183: xmlBufferAllocationScheme xmlBufferAllocScheme = XML_BUFFER_ALLOC_EXACT;
  184: static xmlBufferAllocationScheme xmlBufferAllocSchemeThrDef = XML_BUFFER_ALLOC_EXACT;
  185: /**
  186:  * xmlDefaultBufferSize:
  187:  *
  188:  * Global setting, default buffer size. Default value is BASE_BUFFER_SIZE
  189:  */
  190: int xmlDefaultBufferSize = BASE_BUFFER_SIZE;
  191: static int xmlDefaultBufferSizeThrDef = BASE_BUFFER_SIZE;
  192: 
  193: /*
  194:  * Parser defaults
  195:  */
  196: 
  197: /**
  198:  * oldXMLWDcompatibility:
  199:  *
  200:  * Global setting, DEPRECATED.
  201:  */
  202: int oldXMLWDcompatibility = 0; /* DEPRECATED */
  203: /**
  204:  * xmlParserDebugEntities:
  205:  *
  206:  * Global setting, asking the parser to print out debugging informations.
  207:  * while handling entities.
  208:  * Disabled by default
  209:  */
  210: int xmlParserDebugEntities = 0;
  211: static int xmlParserDebugEntitiesThrDef = 0;
  212: /**
  213:  * xmlDoValidityCheckingDefaultValue:
  214:  *
  215:  * Global setting, indicate that the parser should work in validating mode.
  216:  * Disabled by default.
  217:  */
  218: int xmlDoValidityCheckingDefaultValue = 0;
  219: static int xmlDoValidityCheckingDefaultValueThrDef = 0;
  220: /**
  221:  * xmlGetWarningsDefaultValue:
  222:  *
  223:  * Global setting, indicate that the parser should provide warnings.
  224:  * Activated by default.
  225:  */
  226: int xmlGetWarningsDefaultValue = 1;
  227: static int xmlGetWarningsDefaultValueThrDef = 1;
  228: /**
  229:  * xmlLoadExtDtdDefaultValue:
  230:  *
  231:  * Global setting, indicate that the parser should load DTD while not
  232:  * validating.
  233:  * Disabled by default.
  234:  */
  235: int xmlLoadExtDtdDefaultValue = 0;
  236: static int xmlLoadExtDtdDefaultValueThrDef = 0;
  237: /**
  238:  * xmlPedanticParserDefaultValue:
  239:  *
  240:  * Global setting, indicate that the parser be pedantic
  241:  * Disabled by default.
  242:  */
  243: int xmlPedanticParserDefaultValue = 0;
  244: static int xmlPedanticParserDefaultValueThrDef = 0;
  245: /**
  246:  * xmlLineNumbersDefaultValue:
  247:  *
  248:  * Global setting, indicate that the parser should store the line number
  249:  * in the content field of elements in the DOM tree.
  250:  * Disabled by default since this may not be safe for old classes of
  251:  * applicaton.
  252:  */
  253: int xmlLineNumbersDefaultValue = 0;
  254: static int xmlLineNumbersDefaultValueThrDef = 0;
  255: /**
  256:  * xmlKeepBlanksDefaultValue:
  257:  *
  258:  * Global setting, indicate that the parser should keep all blanks
  259:  * nodes found in the content
  260:  * Activated by default, this is actually needed to have the parser
  261:  * conformant to the XML Recommendation, however the option is kept
  262:  * for some applications since this was libxml1 default behaviour.
  263:  */
  264: int xmlKeepBlanksDefaultValue = 1;
  265: static int xmlKeepBlanksDefaultValueThrDef = 1;
  266: /**
  267:  * xmlSubstituteEntitiesDefaultValue:
  268:  *
  269:  * Global setting, indicate that the parser should not generate entity
  270:  * references but replace them with the actual content of the entity
  271:  * Disabled by default, this should be activated when using XPath since
  272:  * the XPath data model requires entities replacement and the XPath
  273:  * engine does not handle entities references transparently.
  274:  */
  275: int xmlSubstituteEntitiesDefaultValue = 0;
  276: static int xmlSubstituteEntitiesDefaultValueThrDef = 0;
  277: 
  278: xmlRegisterNodeFunc xmlRegisterNodeDefaultValue = NULL;
  279: static xmlRegisterNodeFunc xmlRegisterNodeDefaultValueThrDef = NULL;
  280: xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue = NULL;
  281: static xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValueThrDef = NULL;
  282: 
  283: xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue = NULL;
  284: static xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValueThrDef = NULL;
  285: 
  286: xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue = NULL;
  287: static xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValueThrDef = NULL;
  288: 
  289: /*
  290:  * Error handling
  291:  */
  292: 
  293: /* xmlGenericErrorFunc xmlGenericError = xmlGenericErrorDefaultFunc; */
  294: /* Must initialize xmlGenericError in xmlInitParser */
  295: void XMLCDECL xmlGenericErrorDefaultFunc	(void *ctx ATTRIBUTE_UNUSED,
  296: 				 const char *msg,
  297: 				 ...);
  298: /**
  299:  * xmlGenericError:
  300:  *
  301:  * Global setting: function used for generic error callbacks
  302:  */
  303: xmlGenericErrorFunc xmlGenericError = xmlGenericErrorDefaultFunc;
  304: static xmlGenericErrorFunc xmlGenericErrorThrDef = xmlGenericErrorDefaultFunc;
  305: /**
  306:  * xmlStructuredError:
  307:  *
  308:  * Global setting: function used for structured error callbacks
  309:  */
  310: xmlStructuredErrorFunc xmlStructuredError = NULL;
  311: static xmlStructuredErrorFunc xmlStructuredErrorThrDef = NULL;
  312: /**
  313:  * xmlGenericErrorContext:
  314:  *
  315:  * Global setting passed to generic error callbacks
  316:  */
  317: void *xmlGenericErrorContext = NULL;
  318: static void *xmlGenericErrorContextThrDef = NULL;
  319: /**
  320:  * xmlStructuredErrorContext:
  321:  *
  322:  * Global setting passed to structured error callbacks
  323:  */
  324: void *xmlStructuredErrorContext = NULL;
  325: static void *xmlStructuredErrorContextThrDef = NULL;
  326: xmlError xmlLastError;
  327: 
  328: /*
  329:  * output defaults
  330:  */
  331: /**
  332:  * xmlIndentTreeOutput:
  333:  *
  334:  * Global setting, asking the serializer to indent the output tree by default
  335:  * Enabled by default
  336:  */
  337: int xmlIndentTreeOutput = 1;
  338: static int xmlIndentTreeOutputThrDef = 1;
  339: 
  340: /**
  341:  * xmlTreeIndentString:
  342:  *
  343:  * The string used to do one-level indent. By default is equal to "  " (two spaces)
  344:  */
  345: const char *xmlTreeIndentString = "  ";
  346: static const char *xmlTreeIndentStringThrDef = "  ";
  347: 
  348: /**
  349:  * xmlSaveNoEmptyTags:
  350:  *
  351:  * Global setting, asking the serializer to not output empty tags
  352:  * as <empty/> but <empty></empty>. those two forms are undistinguishable
  353:  * once parsed.
  354:  * Disabled by default
  355:  */
  356: int xmlSaveNoEmptyTags = 0;
  357: static int xmlSaveNoEmptyTagsThrDef = 0;
  358: 
  359: #ifdef LIBXML_SAX1_ENABLED
  360: /**
  361:  * xmlDefaultSAXHandler:
  362:  *
  363:  * Default SAX version1 handler for XML, builds the DOM tree
  364:  */
  365: xmlSAXHandlerV1 xmlDefaultSAXHandler = {
  366:     xmlSAX2InternalSubset,
  367:     xmlSAX2IsStandalone,
  368:     xmlSAX2HasInternalSubset,
  369:     xmlSAX2HasExternalSubset,
  370:     xmlSAX2ResolveEntity,
  371:     xmlSAX2GetEntity,
  372:     xmlSAX2EntityDecl,
  373:     xmlSAX2NotationDecl,
  374:     xmlSAX2AttributeDecl,
  375:     xmlSAX2ElementDecl,
  376:     xmlSAX2UnparsedEntityDecl,
  377:     xmlSAX2SetDocumentLocator,
  378:     xmlSAX2StartDocument,
  379:     xmlSAX2EndDocument,
  380:     xmlSAX2StartElement,
  381:     xmlSAX2EndElement,
  382:     xmlSAX2Reference,
  383:     xmlSAX2Characters,
  384:     xmlSAX2Characters,
  385:     xmlSAX2ProcessingInstruction,
  386:     xmlSAX2Comment,
  387:     xmlParserWarning,
  388:     xmlParserError,
  389:     xmlParserError,
  390:     xmlSAX2GetParameterEntity,
  391:     xmlSAX2CDataBlock,
  392:     xmlSAX2ExternalSubset,
  393:     0,
  394: };
  395: #endif /* LIBXML_SAX1_ENABLED */
  396: 
  397: /**
  398:  * xmlDefaultSAXLocator:
  399:  *
  400:  * The default SAX Locator
  401:  * { getPublicId, getSystemId, getLineNumber, getColumnNumber}
  402:  */
  403: xmlSAXLocator xmlDefaultSAXLocator = {
  404:     xmlSAX2GetPublicId,
  405:     xmlSAX2GetSystemId,
  406:     xmlSAX2GetLineNumber,
  407:     xmlSAX2GetColumnNumber
  408: };
  409: 
  410: #ifdef LIBXML_HTML_ENABLED
  411: /**
  412:  * htmlDefaultSAXHandler:
  413:  *
  414:  * Default old SAX v1 handler for HTML, builds the DOM tree
  415:  */
  416: xmlSAXHandlerV1 htmlDefaultSAXHandler = {
  417:     xmlSAX2InternalSubset,
  418:     NULL,
  419:     NULL,
  420:     NULL,
  421:     NULL,
  422:     xmlSAX2GetEntity,
  423:     NULL,
  424:     NULL,
  425:     NULL,
  426:     NULL,
  427:     NULL,
  428:     xmlSAX2SetDocumentLocator,
  429:     xmlSAX2StartDocument,
  430:     xmlSAX2EndDocument,
  431:     xmlSAX2StartElement,
  432:     xmlSAX2EndElement,
  433:     NULL,
  434:     xmlSAX2Characters,
  435:     xmlSAX2IgnorableWhitespace,
  436:     xmlSAX2ProcessingInstruction,
  437:     xmlSAX2Comment,
  438:     xmlParserWarning,
  439:     xmlParserError,
  440:     xmlParserError,
  441:     xmlSAX2GetParameterEntity,
  442:     xmlSAX2CDataBlock,
  443:     NULL,
  444:     0,
  445: };
  446: #endif /* LIBXML_HTML_ENABLED */
  447: 
  448: #ifdef LIBXML_DOCB_ENABLED
  449: /**
  450:  * docbDefaultSAXHandler:
  451:  *
  452:  * Default old SAX v1 handler for SGML DocBook, builds the DOM tree
  453:  */
  454: xmlSAXHandlerV1 docbDefaultSAXHandler = {
  455:     xmlSAX2InternalSubset,
  456:     xmlSAX2IsStandalone,
  457:     xmlSAX2HasInternalSubset,
  458:     xmlSAX2HasExternalSubset,
  459:     xmlSAX2ResolveEntity,
  460:     xmlSAX2GetEntity,
  461:     xmlSAX2EntityDecl,
  462:     NULL,
  463:     NULL,
  464:     NULL,
  465:     NULL,
  466:     xmlSAX2SetDocumentLocator,
  467:     xmlSAX2StartDocument,
  468:     xmlSAX2EndDocument,
  469:     xmlSAX2StartElement,
  470:     xmlSAX2EndElement,
  471:     xmlSAX2Reference,
  472:     xmlSAX2Characters,
  473:     xmlSAX2IgnorableWhitespace,
  474:     NULL,
  475:     xmlSAX2Comment,
  476:     xmlParserWarning,
  477:     xmlParserError,
  478:     xmlParserError,
  479:     xmlSAX2GetParameterEntity,
  480:     NULL,
  481:     NULL,
  482:     0,
  483: };
  484: #endif /* LIBXML_DOCB_ENABLED */
  485: 
  486: /**
  487:  * xmlInitializeGlobalState:
  488:  * @gs: a pointer to a newly allocated global state
  489:  *
  490:  * xmlInitializeGlobalState() initialize a global state with all the
  491:  * default values of the library.
  492:  */
  493: void
  494: xmlInitializeGlobalState(xmlGlobalStatePtr gs)
  495: {
  496: #ifdef DEBUG_GLOBALS
  497:     fprintf(stderr, "Initializing globals at %lu for thread %d\n",
  498: 	    (unsigned long) gs, xmlGetThreadId());
  499: #endif
  500: 
  501:     /*
  502:      * Perform initialization as required by libxml
  503:      */
  504:     if (xmlThrDefMutex == NULL)
  505:         xmlInitGlobals();
  506: 
  507:     xmlMutexLock(xmlThrDefMutex);
  508: 
  509: #if defined(LIBXML_DOCB_ENABLED) && defined(LIBXML_LEGACY_ENABLED) && defined(LIBXML_SAX1_ENABLED)
  510:     initdocbDefaultSAXHandler(&gs->docbDefaultSAXHandler);
  511: #endif
  512: #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_LEGACY_ENABLED) && defined(LIBXML_SAX1_ENABLED)
  513:     inithtmlDefaultSAXHandler(&gs->htmlDefaultSAXHandler);
  514: #endif
  515: 
  516:     gs->oldXMLWDcompatibility = 0;
  517:     gs->xmlBufferAllocScheme = xmlBufferAllocSchemeThrDef;
  518:     gs->xmlDefaultBufferSize = xmlDefaultBufferSizeThrDef;
  519: #if defined(LIBXML_SAX1_ENABLED) && defined(LIBXML_LEGACY_ENABLED)
  520:     initxmlDefaultSAXHandler(&gs->xmlDefaultSAXHandler, 1);
  521: #endif /* LIBXML_SAX1_ENABLED */
  522:     gs->xmlDefaultSAXLocator.getPublicId = xmlSAX2GetPublicId;
  523:     gs->xmlDefaultSAXLocator.getSystemId = xmlSAX2GetSystemId;
  524:     gs->xmlDefaultSAXLocator.getLineNumber = xmlSAX2GetLineNumber;
  525:     gs->xmlDefaultSAXLocator.getColumnNumber = xmlSAX2GetColumnNumber;
  526:     gs->xmlDoValidityCheckingDefaultValue =
  527:          xmlDoValidityCheckingDefaultValueThrDef;
  528: #if defined(DEBUG_MEMORY_LOCATION) | defined(DEBUG_MEMORY)
  529:     gs->xmlFree = (xmlFreeFunc) xmlMemFree;
  530:     gs->xmlMalloc = (xmlMallocFunc) xmlMemMalloc;
  531:     gs->xmlMallocAtomic = (xmlMallocFunc) xmlMemMalloc;
  532:     gs->xmlRealloc = (xmlReallocFunc) xmlMemRealloc;
  533:     gs->xmlMemStrdup = (xmlStrdupFunc) xmlMemoryStrdup;
  534: #else
  535:     gs->xmlFree = (xmlFreeFunc) free;
  536:     gs->xmlMalloc = (xmlMallocFunc) malloc;
  537:     gs->xmlMallocAtomic = (xmlMallocFunc) malloc;
  538:     gs->xmlRealloc = (xmlReallocFunc) realloc;
  539:     gs->xmlMemStrdup = (xmlStrdupFunc) xmlStrdup;
  540: #endif
  541:     gs->xmlGetWarningsDefaultValue = xmlGetWarningsDefaultValueThrDef;
  542:     gs->xmlIndentTreeOutput = xmlIndentTreeOutputThrDef;
  543:     gs->xmlTreeIndentString = xmlTreeIndentStringThrDef;
  544:     gs->xmlKeepBlanksDefaultValue = xmlKeepBlanksDefaultValueThrDef;
  545:     gs->xmlLineNumbersDefaultValue = xmlLineNumbersDefaultValueThrDef;
  546:     gs->xmlLoadExtDtdDefaultValue = xmlLoadExtDtdDefaultValueThrDef;
  547:     gs->xmlParserDebugEntities = xmlParserDebugEntitiesThrDef;
  548:     gs->xmlParserVersion = LIBXML_VERSION_STRING;
  549:     gs->xmlPedanticParserDefaultValue = xmlPedanticParserDefaultValueThrDef;
  550:     gs->xmlSaveNoEmptyTags = xmlSaveNoEmptyTagsThrDef;
  551:     gs->xmlSubstituteEntitiesDefaultValue =
  552:         xmlSubstituteEntitiesDefaultValueThrDef;
  553: 
  554:     gs->xmlGenericError = xmlGenericErrorThrDef;
  555:     gs->xmlStructuredError = xmlStructuredErrorThrDef;
  556:     gs->xmlGenericErrorContext = xmlGenericErrorContextThrDef;
  557:     gs->xmlStructuredErrorContext = xmlStructuredErrorContextThrDef;
  558:     gs->xmlRegisterNodeDefaultValue = xmlRegisterNodeDefaultValueThrDef;
  559:     gs->xmlDeregisterNodeDefaultValue = xmlDeregisterNodeDefaultValueThrDef;
  560: 
  561: 	gs->xmlParserInputBufferCreateFilenameValue = xmlParserInputBufferCreateFilenameValueThrDef;
  562: 	gs->xmlOutputBufferCreateFilenameValue = xmlOutputBufferCreateFilenameValueThrDef;
  563:     memset(&gs->xmlLastError, 0, sizeof(xmlError));
  564: 
  565:     xmlMutexUnlock(xmlThrDefMutex);
  566: }
  567: 
  568: /**
  569:  * DOC_DISABLE : we ignore missing doc for the xmlThrDef functions,
  570:  *               those are really internal work
  571:  */
  572: void
  573: xmlThrDefSetGenericErrorFunc(void *ctx, xmlGenericErrorFunc handler) {
  574:     xmlMutexLock(xmlThrDefMutex);
  575:     xmlGenericErrorContextThrDef = ctx;
  576:     if (handler != NULL)
  577: 	xmlGenericErrorThrDef = handler;
  578:     else
  579: 	xmlGenericErrorThrDef = xmlGenericErrorDefaultFunc;
  580:     xmlMutexUnlock(xmlThrDefMutex);
  581: }
  582: 
  583: void
  584: xmlThrDefSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler) {
  585:     xmlMutexLock(xmlThrDefMutex);
  586:     xmlStructuredErrorContextThrDef = ctx;
  587:     xmlStructuredErrorThrDef = handler;
  588:     xmlMutexUnlock(xmlThrDefMutex);
  589: }
  590: 
  591: /**
  592:  * xmlRegisterNodeDefault:
  593:  * @func: function pointer to the new RegisterNodeFunc
  594:  *
  595:  * Registers a callback for node creation
  596:  *
  597:  * Returns the old value of the registration function
  598:  */
  599: xmlRegisterNodeFunc
  600: xmlRegisterNodeDefault(xmlRegisterNodeFunc func)
  601: {
  602:     xmlRegisterNodeFunc old = xmlRegisterNodeDefaultValue;
  603: 
  604:     __xmlRegisterCallbacks = 1;
  605:     xmlRegisterNodeDefaultValue = func;
  606:     return(old);
  607: }
  608: 
  609: xmlRegisterNodeFunc
  610: xmlThrDefRegisterNodeDefault(xmlRegisterNodeFunc func)
  611: {
  612:     xmlRegisterNodeFunc old;
  613: 
  614:     xmlMutexLock(xmlThrDefMutex);
  615:     old = xmlRegisterNodeDefaultValueThrDef;
  616: 
  617:     __xmlRegisterCallbacks = 1;
  618:     xmlRegisterNodeDefaultValueThrDef = func;
  619:     xmlMutexUnlock(xmlThrDefMutex);
  620: 
  621:     return(old);
  622: }
  623: 
  624: /**
  625:  * xmlDeregisterNodeDefault:
  626:  * @func: function pointer to the new DeregisterNodeFunc
  627:  *
  628:  * Registers a callback for node destruction
  629:  *
  630:  * Returns the previous value of the deregistration function
  631:  */
  632: xmlDeregisterNodeFunc
  633: xmlDeregisterNodeDefault(xmlDeregisterNodeFunc func)
  634: {
  635:     xmlDeregisterNodeFunc old = xmlDeregisterNodeDefaultValue;
  636: 
  637:     __xmlRegisterCallbacks = 1;
  638:     xmlDeregisterNodeDefaultValue = func;
  639:     return(old);
  640: }
  641: 
  642: xmlDeregisterNodeFunc
  643: xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func)
  644: {
  645:     xmlDeregisterNodeFunc old;
  646: 
  647:     xmlMutexLock(xmlThrDefMutex);
  648:     old = xmlDeregisterNodeDefaultValueThrDef;
  649: 
  650:     __xmlRegisterCallbacks = 1;
  651:     xmlDeregisterNodeDefaultValueThrDef = func;
  652:     xmlMutexUnlock(xmlThrDefMutex);
  653: 
  654:     return(old);
  655: }
  656: 
  657: xmlParserInputBufferCreateFilenameFunc
  658: xmlThrDefParserInputBufferCreateFilenameDefault(xmlParserInputBufferCreateFilenameFunc func)
  659: {
  660:     xmlParserInputBufferCreateFilenameFunc old;
  661: 
  662:     xmlMutexLock(xmlThrDefMutex);
  663:     old = xmlParserInputBufferCreateFilenameValueThrDef;
  664:     if (old == NULL) {
  665: 		old = __xmlParserInputBufferCreateFilename;
  666: 	}
  667: 
  668:     xmlParserInputBufferCreateFilenameValueThrDef = func;
  669:     xmlMutexUnlock(xmlThrDefMutex);
  670: 
  671:     return(old);
  672: }
  673: 
  674: xmlOutputBufferCreateFilenameFunc
  675: xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func)
  676: {
  677:     xmlOutputBufferCreateFilenameFunc old;
  678: 
  679:     xmlMutexLock(xmlThrDefMutex);
  680:     old = xmlOutputBufferCreateFilenameValueThrDef;
  681: #ifdef LIBXML_OUTPUT_ENABLED
  682:     if (old == NULL) {
  683: 		old = __xmlOutputBufferCreateFilename;
  684: 	}
  685: #endif
  686:     xmlOutputBufferCreateFilenameValueThrDef = func;
  687:     xmlMutexUnlock(xmlThrDefMutex);
  688: 
  689:     return(old);
  690: }
  691: 
  692: #ifdef LIBXML_DOCB_ENABLED
  693: #undef	docbDefaultSAXHandler
  694: xmlSAXHandlerV1 *
  695: __docbDefaultSAXHandler(void) {
  696:     if (IS_MAIN_THREAD)
  697: 	return (&docbDefaultSAXHandler);
  698:     else
  699: 	return (&xmlGetGlobalState()->docbDefaultSAXHandler);
  700: }
  701: #endif
  702: 
  703: #ifdef LIBXML_HTML_ENABLED
  704: #undef	htmlDefaultSAXHandler
  705: xmlSAXHandlerV1 *
  706: __htmlDefaultSAXHandler(void) {
  707:     if (IS_MAIN_THREAD)
  708: 	return (&htmlDefaultSAXHandler);
  709:     else
  710: 	return (&xmlGetGlobalState()->htmlDefaultSAXHandler);
  711: }
  712: #endif
  713: 
  714: #undef xmlLastError
  715: xmlError *
  716: __xmlLastError(void) {
  717:     if (IS_MAIN_THREAD)
  718: 	return (&xmlLastError);
  719:     else
  720: 	return (&xmlGetGlobalState()->xmlLastError);
  721: }
  722: 
  723: /*
  724:  * The following memory routines were apparently lost at some point,
  725:  * and were re-inserted at this point on June 10, 2004.  Hope it's
  726:  * the right place for them :-)
  727:  */
  728: #if defined(LIBXML_THREAD_ALLOC_ENABLED) && defined(LIBXML_THREAD_ENABLED)
  729: #undef xmlMalloc
  730: xmlMallocFunc *
  731: __xmlMalloc(void){
  732:     if (IS_MAIN_THREAD)
  733:         return (&xmlMalloc);
  734:     else
  735: 	return (&xmlGetGlobalState()->xmlMalloc);
  736: }
  737: 
  738: #undef xmlMallocAtomic
  739: xmlMallocFunc *
  740: __xmlMallocAtomic(void){
  741:     if (IS_MAIN_THREAD)
  742:         return (&xmlMallocAtomic);
  743:     else
  744:         return (&xmlGetGlobalState()->xmlMallocAtomic);
  745: }
  746: 
  747: #undef xmlRealloc
  748: xmlReallocFunc *
  749: __xmlRealloc(void){
  750:     if (IS_MAIN_THREAD)
  751:         return (&xmlRealloc);
  752:     else
  753:         return (&xmlGetGlobalState()->xmlRealloc);
  754: }
  755: 
  756: #undef xmlFree
  757: xmlFreeFunc *
  758: __xmlFree(void){
  759:     if (IS_MAIN_THREAD)
  760:         return (&xmlFree);
  761:     else
  762:         return (&xmlGetGlobalState()->xmlFree);
  763: }
  764: 
  765: xmlStrdupFunc *
  766: __xmlMemStrdup(void){
  767:     if (IS_MAIN_THREAD)
  768:         return (&xmlMemStrdup);
  769:     else
  770:         return (&xmlGetGlobalState()->xmlMemStrdup);
  771: }
  772: 
  773: #endif
  774: 
  775: /*
  776:  * Everything starting from the line below is
  777:  * Automatically generated by build_glob.py.
  778:  * Do not modify the previous line.
  779:  */
  780: 
  781: 
  782: #undef	oldXMLWDcompatibility
  783: int *
  784: __oldXMLWDcompatibility(void) {
  785:     if (IS_MAIN_THREAD)
  786: 	return (&oldXMLWDcompatibility);
  787:     else
  788: 	return (&xmlGetGlobalState()->oldXMLWDcompatibility);
  789: }
  790: 
  791: #undef	xmlBufferAllocScheme
  792: xmlBufferAllocationScheme *
  793: __xmlBufferAllocScheme(void) {
  794:     if (IS_MAIN_THREAD)
  795: 	return (&xmlBufferAllocScheme);
  796:     else
  797: 	return (&xmlGetGlobalState()->xmlBufferAllocScheme);
  798: }
  799: xmlBufferAllocationScheme xmlThrDefBufferAllocScheme(xmlBufferAllocationScheme v) {
  800:     xmlBufferAllocationScheme ret;
  801:     xmlMutexLock(xmlThrDefMutex);
  802:     ret = xmlBufferAllocSchemeThrDef;
  803:     xmlBufferAllocSchemeThrDef = v;
  804:     xmlMutexUnlock(xmlThrDefMutex);
  805:     return ret;
  806: }
  807: 
  808: #undef	xmlDefaultBufferSize
  809: int *
  810: __xmlDefaultBufferSize(void) {
  811:     if (IS_MAIN_THREAD)
  812: 	return (&xmlDefaultBufferSize);
  813:     else
  814: 	return (&xmlGetGlobalState()->xmlDefaultBufferSize);
  815: }
  816: int xmlThrDefDefaultBufferSize(int v) {
  817:     int ret;
  818:     xmlMutexLock(xmlThrDefMutex);
  819:     ret = xmlDefaultBufferSizeThrDef;
  820:     xmlDefaultBufferSizeThrDef = v;
  821:     xmlMutexUnlock(xmlThrDefMutex);
  822:     return ret;
  823: }
  824: 
  825: #ifdef LIBXML_SAX1_ENABLED
  826: #undef	xmlDefaultSAXHandler
  827: xmlSAXHandlerV1 *
  828: __xmlDefaultSAXHandler(void) {
  829:     if (IS_MAIN_THREAD)
  830: 	return (&xmlDefaultSAXHandler);
  831:     else
  832: 	return (&xmlGetGlobalState()->xmlDefaultSAXHandler);
  833: }
  834: #endif /* LIBXML_SAX1_ENABLED */
  835: 
  836: #undef	xmlDefaultSAXLocator
  837: xmlSAXLocator *
  838: __xmlDefaultSAXLocator(void) {
  839:     if (IS_MAIN_THREAD)
  840: 	return (&xmlDefaultSAXLocator);
  841:     else
  842: 	return (&xmlGetGlobalState()->xmlDefaultSAXLocator);
  843: }
  844: 
  845: #undef	xmlDoValidityCheckingDefaultValue
  846: int *
  847: __xmlDoValidityCheckingDefaultValue(void) {
  848:     if (IS_MAIN_THREAD)
  849: 	return (&xmlDoValidityCheckingDefaultValue);
  850:     else
  851: 	return (&xmlGetGlobalState()->xmlDoValidityCheckingDefaultValue);
  852: }
  853: int xmlThrDefDoValidityCheckingDefaultValue(int v) {
  854:     int ret;
  855:     xmlMutexLock(xmlThrDefMutex);
  856:     ret = xmlDoValidityCheckingDefaultValueThrDef;
  857:     xmlDoValidityCheckingDefaultValueThrDef = v;
  858:     xmlMutexUnlock(xmlThrDefMutex);
  859:     return ret;
  860: }
  861: 
  862: #undef	xmlGenericError
  863: xmlGenericErrorFunc *
  864: __xmlGenericError(void) {
  865:     if (IS_MAIN_THREAD)
  866: 	return (&xmlGenericError);
  867:     else
  868: 	return (&xmlGetGlobalState()->xmlGenericError);
  869: }
  870: 
  871: #undef	xmlStructuredError
  872: xmlStructuredErrorFunc *
  873: __xmlStructuredError(void) {
  874:     if (IS_MAIN_THREAD)
  875: 	return (&xmlStructuredError);
  876:     else
  877: 	return (&xmlGetGlobalState()->xmlStructuredError);
  878: }
  879: 
  880: #undef	xmlGenericErrorContext
  881: void * *
  882: __xmlGenericErrorContext(void) {
  883:     if (IS_MAIN_THREAD)
  884: 	return (&xmlGenericErrorContext);
  885:     else
  886: 	return (&xmlGetGlobalState()->xmlGenericErrorContext);
  887: }
  888: 
  889: #undef	xmlStructuredErrorContext
  890: void * *
  891: __xmlStructuredErrorContext(void) {
  892:     if (IS_MAIN_THREAD)
  893: 	return (&xmlStructuredErrorContext);
  894:     else
  895: 	return (&xmlGetGlobalState()->xmlStructuredErrorContext);
  896: }
  897: 
  898: #undef	xmlGetWarningsDefaultValue
  899: int *
  900: __xmlGetWarningsDefaultValue(void) {
  901:     if (IS_MAIN_THREAD)
  902: 	return (&xmlGetWarningsDefaultValue);
  903:     else
  904: 	return (&xmlGetGlobalState()->xmlGetWarningsDefaultValue);
  905: }
  906: int xmlThrDefGetWarningsDefaultValue(int v) {
  907:     int ret;
  908:     xmlMutexLock(xmlThrDefMutex);
  909:     ret = xmlGetWarningsDefaultValueThrDef;
  910:     xmlGetWarningsDefaultValueThrDef = v;
  911:     xmlMutexUnlock(xmlThrDefMutex);
  912:     return ret;
  913: }
  914: 
  915: #undef	xmlIndentTreeOutput
  916: int *
  917: __xmlIndentTreeOutput(void) {
  918:     if (IS_MAIN_THREAD)
  919: 	return (&xmlIndentTreeOutput);
  920:     else
  921: 	return (&xmlGetGlobalState()->xmlIndentTreeOutput);
  922: }
  923: int xmlThrDefIndentTreeOutput(int v) {
  924:     int ret;
  925:     xmlMutexLock(xmlThrDefMutex);
  926:     ret = xmlIndentTreeOutputThrDef;
  927:     xmlIndentTreeOutputThrDef = v;
  928:     xmlMutexUnlock(xmlThrDefMutex);
  929:     return ret;
  930: }
  931: 
  932: #undef	xmlTreeIndentString
  933: const char * *
  934: __xmlTreeIndentString(void) {
  935:     if (IS_MAIN_THREAD)
  936: 	return (&xmlTreeIndentString);
  937:     else
  938: 	return (&xmlGetGlobalState()->xmlTreeIndentString);
  939: }
  940: const char * xmlThrDefTreeIndentString(const char * v) {
  941:     const char * ret;
  942:     xmlMutexLock(xmlThrDefMutex);
  943:     ret = xmlTreeIndentStringThrDef;
  944:     xmlTreeIndentStringThrDef = v;
  945:     xmlMutexUnlock(xmlThrDefMutex);
  946:     return ret;
  947: }
  948: 
  949: #undef	xmlKeepBlanksDefaultValue
  950: int *
  951: __xmlKeepBlanksDefaultValue(void) {
  952:     if (IS_MAIN_THREAD)
  953: 	return (&xmlKeepBlanksDefaultValue);
  954:     else
  955: 	return (&xmlGetGlobalState()->xmlKeepBlanksDefaultValue);
  956: }
  957: int xmlThrDefKeepBlanksDefaultValue(int v) {
  958:     int ret;
  959:     xmlMutexLock(xmlThrDefMutex);
  960:     ret = xmlKeepBlanksDefaultValueThrDef;
  961:     xmlKeepBlanksDefaultValueThrDef = v;
  962:     xmlMutexUnlock(xmlThrDefMutex);
  963:     return ret;
  964: }
  965: 
  966: #undef	xmlLineNumbersDefaultValue
  967: int *
  968: __xmlLineNumbersDefaultValue(void) {
  969:     if (IS_MAIN_THREAD)
  970: 	return (&xmlLineNumbersDefaultValue);
  971:     else
  972: 	return (&xmlGetGlobalState()->xmlLineNumbersDefaultValue);
  973: }
  974: int xmlThrDefLineNumbersDefaultValue(int v) {
  975:     int ret;
  976:     xmlMutexLock(xmlThrDefMutex);
  977:     ret = xmlLineNumbersDefaultValueThrDef;
  978:     xmlLineNumbersDefaultValueThrDef = v;
  979:     xmlMutexUnlock(xmlThrDefMutex);
  980:     return ret;
  981: }
  982: 
  983: #undef	xmlLoadExtDtdDefaultValue
  984: int *
  985: __xmlLoadExtDtdDefaultValue(void) {
  986:     if (IS_MAIN_THREAD)
  987: 	return (&xmlLoadExtDtdDefaultValue);
  988:     else
  989: 	return (&xmlGetGlobalState()->xmlLoadExtDtdDefaultValue);
  990: }
  991: int xmlThrDefLoadExtDtdDefaultValue(int v) {
  992:     int ret;
  993:     xmlMutexLock(xmlThrDefMutex);
  994:     ret = xmlLoadExtDtdDefaultValueThrDef;
  995:     xmlLoadExtDtdDefaultValueThrDef = v;
  996:     xmlMutexUnlock(xmlThrDefMutex);
  997:     return ret;
  998: }
  999: 
 1000: #undef	xmlParserDebugEntities
 1001: int *
 1002: __xmlParserDebugEntities(void) {
 1003:     if (IS_MAIN_THREAD)
 1004: 	return (&xmlParserDebugEntities);
 1005:     else
 1006: 	return (&xmlGetGlobalState()->xmlParserDebugEntities);
 1007: }
 1008: int xmlThrDefParserDebugEntities(int v) {
 1009:     int ret;
 1010:     xmlMutexLock(xmlThrDefMutex);
 1011:     ret = xmlParserDebugEntitiesThrDef;
 1012:     xmlParserDebugEntitiesThrDef = v;
 1013:     xmlMutexUnlock(xmlThrDefMutex);
 1014:     return ret;
 1015: }
 1016: 
 1017: #undef	xmlParserVersion
 1018: const char * *
 1019: __xmlParserVersion(void) {
 1020:     if (IS_MAIN_THREAD)
 1021: 	return (&xmlParserVersion);
 1022:     else
 1023: 	return (&xmlGetGlobalState()->xmlParserVersion);
 1024: }
 1025: 
 1026: #undef	xmlPedanticParserDefaultValue
 1027: int *
 1028: __xmlPedanticParserDefaultValue(void) {
 1029:     if (IS_MAIN_THREAD)
 1030: 	return (&xmlPedanticParserDefaultValue);
 1031:     else
 1032: 	return (&xmlGetGlobalState()->xmlPedanticParserDefaultValue);
 1033: }
 1034: int xmlThrDefPedanticParserDefaultValue(int v) {
 1035:     int ret;
 1036:     xmlMutexLock(xmlThrDefMutex);
 1037:     ret = xmlPedanticParserDefaultValueThrDef;
 1038:     xmlPedanticParserDefaultValueThrDef = v;
 1039:     xmlMutexUnlock(xmlThrDefMutex);
 1040:     return ret;
 1041: }
 1042: 
 1043: #undef	xmlSaveNoEmptyTags
 1044: int *
 1045: __xmlSaveNoEmptyTags(void) {
 1046:     if (IS_MAIN_THREAD)
 1047: 	return (&xmlSaveNoEmptyTags);
 1048:     else
 1049: 	return (&xmlGetGlobalState()->xmlSaveNoEmptyTags);
 1050: }
 1051: int xmlThrDefSaveNoEmptyTags(int v) {
 1052:     int ret;
 1053:     xmlMutexLock(xmlThrDefMutex);
 1054:     ret = xmlSaveNoEmptyTagsThrDef;
 1055:     xmlSaveNoEmptyTagsThrDef = v;
 1056:     xmlMutexUnlock(xmlThrDefMutex);
 1057:     return ret;
 1058: }
 1059: 
 1060: #undef	xmlSubstituteEntitiesDefaultValue
 1061: int *
 1062: __xmlSubstituteEntitiesDefaultValue(void) {
 1063:     if (IS_MAIN_THREAD)
 1064: 	return (&xmlSubstituteEntitiesDefaultValue);
 1065:     else
 1066: 	return (&xmlGetGlobalState()->xmlSubstituteEntitiesDefaultValue);
 1067: }
 1068: int xmlThrDefSubstituteEntitiesDefaultValue(int v) {
 1069:     int ret;
 1070:     xmlMutexLock(xmlThrDefMutex);
 1071:     ret = xmlSubstituteEntitiesDefaultValueThrDef;
 1072:     xmlSubstituteEntitiesDefaultValueThrDef = v;
 1073:     xmlMutexUnlock(xmlThrDefMutex);
 1074:     return ret;
 1075: }
 1076: 
 1077: #undef	xmlRegisterNodeDefaultValue
 1078: xmlRegisterNodeFunc *
 1079: __xmlRegisterNodeDefaultValue(void) {
 1080:     if (IS_MAIN_THREAD)
 1081: 	return (&xmlRegisterNodeDefaultValue);
 1082:     else
 1083: 	return (&xmlGetGlobalState()->xmlRegisterNodeDefaultValue);
 1084: }
 1085: 
 1086: #undef	xmlDeregisterNodeDefaultValue
 1087: xmlDeregisterNodeFunc *
 1088: __xmlDeregisterNodeDefaultValue(void) {
 1089:     if (IS_MAIN_THREAD)
 1090: 	return (&xmlDeregisterNodeDefaultValue);
 1091:     else
 1092: 	return (&xmlGetGlobalState()->xmlDeregisterNodeDefaultValue);
 1093: }
 1094: 
 1095: #undef	xmlParserInputBufferCreateFilenameValue
 1096: xmlParserInputBufferCreateFilenameFunc *
 1097: __xmlParserInputBufferCreateFilenameValue(void) {
 1098:     if (IS_MAIN_THREAD)
 1099: 	return (&xmlParserInputBufferCreateFilenameValue);
 1100:     else
 1101: 	return (&xmlGetGlobalState()->xmlParserInputBufferCreateFilenameValue);
 1102: }
 1103: 
 1104: #undef	xmlOutputBufferCreateFilenameValue
 1105: xmlOutputBufferCreateFilenameFunc *
 1106: __xmlOutputBufferCreateFilenameValue(void) {
 1107:     if (IS_MAIN_THREAD)
 1108: 	return (&xmlOutputBufferCreateFilenameValue);
 1109:     else
 1110: 	return (&xmlGetGlobalState()->xmlOutputBufferCreateFilenameValue);
 1111: }
 1112: 
 1113: #define bottom_globals
 1114: #include "elfgcchack.h"

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>