Annotation of embedaddon/libxml2/globals.c, revision 1.1

1.1     ! misho       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)
        !           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>