diff options
author | Daniel Veillard <veillard@src.gnome.org> | 2004-06-02 16:18:40 +0000 |
---|---|---|
committer | Daniel Veillard <veillard@src.gnome.org> | 2004-06-02 16:18:40 +0000 |
commit | 0335a846ad62ce5b2394ea9c429c271391bd9ca7 (patch) | |
tree | 217ece3d48454ac2ecd562e58d10572618c028f5 /globals.c | |
parent | 8fad8bff2c2e0b064a6d48d4eeb663804de5545f (diff) | |
download | libxml2-0335a846ad62ce5b2394ea9c429c271391bd9ca7.tar.gz |
applied patch from Rob Richards for custom I/O BufferCreateFilenane fixes
* globals.c xmlIO.c include/libxml/globals.h: applied patch from
Rob Richards for custom I/O BufferCreateFilenane fixes bug
#143366
Daniel
Diffstat (limited to 'globals.c')
-rw-r--r-- | globals.c | 90 |
1 files changed, 90 insertions, 0 deletions
@@ -169,6 +169,8 @@ xmlStrdupFunc xmlMemStrdup = (xmlStrdupFunc) xmlStrdup; #undef xmlMemStrdup #undef xmlRealloc +#undef xmlParserInputBufferCreateFilenameValue +#undef xmlOutputBufferCreateFilenameValue /** * xmlParserVersion: * @@ -282,6 +284,12 @@ static xmlRegisterNodeFunc xmlRegisterNodeDefaultValueThrDef = NULL; xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue = NULL; static xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValueThrDef = NULL; +xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue = NULL; +static xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValueThrDef = NULL; + +xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue = NULL; +static xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValueThrDef = NULL; + /* * Error handling */ @@ -545,6 +553,9 @@ xmlInitializeGlobalState(xmlGlobalStatePtr gs) gs->xmlGenericErrorContext = xmlGenericErrorContextThrDef; gs->xmlRegisterNodeDefaultValue = xmlRegisterNodeDefaultValueThrDef; gs->xmlDeregisterNodeDefaultValue = xmlDeregisterNodeDefaultValueThrDef; + + gs->xmlParserInputBufferCreateFilenameValue = xmlParserInputBufferCreateFilenameValueThrDef; + gs->xmlOutputBufferCreateFilenameValue = xmlOutputBufferCreateFilenameValueThrDef; memset(&gs->xmlLastError, 0, sizeof(xmlError)); xmlMutexUnlock(xmlThrDefMutex); @@ -639,6 +650,67 @@ xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func) return(old); } +/** + * xmlParserInputBufferCreateFilename: + * @func: function pointer to the new ParserInputBufferCreateFilenameFunc + * + * Registers a callback for URI input file handling + * + * Returns the old value of the registration function + */ +xmlParserInputBufferCreateFilenameFunc +xmlParserInputBufferCreateFilenameDefault(xmlParserInputBufferCreateFilenameFunc func) +{ + xmlParserInputBufferCreateFilenameFunc old = xmlParserInputBufferCreateFilenameValue; + + xmlParserInputBufferCreateFilenameValue = func; + return(old); +} + +xmlParserInputBufferCreateFilenameFunc +xmlThrDefParserInputBufferCreateFilenameDefault(xmlParserInputBufferCreateFilenameFunc func) +{ + xmlParserInputBufferCreateFilenameFunc old; + + xmlMutexLock(xmlThrDefMutex); + old = xmlParserInputBufferCreateFilenameValueThrDef; + + xmlParserInputBufferCreateFilenameValueThrDef = func; + xmlMutexUnlock(xmlThrDefMutex); + + return(old); +} + +/** + * xmlOutputBufferCreateFilename: + * @func: function pointer to the new OutputBufferCreateFilenameFunc + * + * Registers a callback for URI output file handling + * + * Returns the old value of the registration function + */ +xmlOutputBufferCreateFilenameFunc +xmlOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func) +{ + xmlOutputBufferCreateFilenameFunc old = xmlOutputBufferCreateFilenameValue; + + xmlOutputBufferCreateFilenameValue = func; + return(old); +} + +xmlOutputBufferCreateFilenameFunc +xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func) +{ + xmlOutputBufferCreateFilenameFunc old; + + xmlMutexLock(xmlThrDefMutex); + old = xmlOutputBufferCreateFilenameValueThrDef; + + xmlOutputBufferCreateFilenameValueThrDef = func; + xmlMutexUnlock(xmlThrDefMutex); + + return(old); +} #ifdef LIBXML_DOCB_ENABLED #undef docbDefaultSAXHandler @@ -981,3 +1053,21 @@ __xmlDeregisterNodeDefaultValue(void) { else return (&xmlGetGlobalState()->xmlDeregisterNodeDefaultValue); } + +#undef xmlParserInputBufferCreateFilenameValue +xmlParserInputBufferCreateFilenameFunc * +__xmlParserInputBufferCreateFilenameValue(void) { + if (IS_MAIN_THREAD) + return (&xmlParserInputBufferCreateFilenameValue); + else + return (&xmlGetGlobalState()->xmlParserInputBufferCreateFilenameValue); +} + +#undef xmlOutputBufferCreateFilenameValue +xmlOutputBufferCreateFilenameFunc * +__xmlOutputBufferCreateFilenameValue(void) { + if (IS_MAIN_THREAD) + return (&xmlOutputBufferCreateFilenameValue); + else + return (&xmlGetGlobalState()->xmlOutputBufferCreateFilenameValue); +}
\ No newline at end of file |