Annotation of embedaddon/libxml2/globals.c, revision 1.1.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>