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>