diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-07-13 19:12:13 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-07-13 19:12:13 +0200 |
| commit | 5287e42b028314b2e5fb2a8e9d8fad604ad8fb28 (patch) | |
| tree | bf5b479c73e0a9a12488b1ffa8dbc213a6a378d8 /src/wrapped/wrappedxml2.c | |
| parent | e0a7f775c98550edf8ef4b1d1c5eab77da98bc13 (diff) | |
| download | box64-5287e42b028314b2e5fb2a8e9d8fad604ad8fb28.tar.gz box64-5287e42b028314b2e5fb2a8e9d8fad604ad8fb28.zip | |
Added some xml2 wrapped functions (for #44)
Diffstat (limited to 'src/wrapped/wrappedxml2.c')
| -rwxr-xr-x | src/wrapped/wrappedxml2.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/wrapped/wrappedxml2.c b/src/wrapped/wrappedxml2.c index 5c1e07fa..59381544 100755 --- a/src/wrapped/wrappedxml2.c +++ b/src/wrapped/wrappedxml2.c @@ -44,6 +44,7 @@ typedef int (*iFppppp_t) (void*, void*, void*, void*, void*); typedef void (*vFppppp_t) (void*, void*, void*, void*, void*); typedef int (*iFpppppp_t) (void*, void*, void*, void*, void*, void*); typedef void (*vFpppppp_t) (void*, void*, void*, void*, void*, void*); +typedef void* (*pFpppppi_t) (void*, void*, void*, void*, void*, int); #define SUPER() \ GO(xmlHashCopy, pFpp_t) \ @@ -72,6 +73,7 @@ typedef void (*vFpppppp_t) (void*, void*, void*, void*, void*, void*); GO(xmlParserInputBufferCreateIO, pFpppi_t) \ GO(xmlInitMemory, iFv_t) \ GO(xmlParseDocument, iFp_t) \ + GO(xmlCreateIOParserCtxt, pFpppppi_t) \ EXPORT uintptr_t my_xmlFree = 0; EXPORT uintptr_t my_xmlMalloc = 0; @@ -1415,6 +1417,18 @@ EXPORT int my_xmlParseDocument(x64emu_t* emu, my_xmlSAXHandler_t** p) return ret; } +EXPORT void* my_xmlCreateIOParserCtxt(x64emu_t* emu, my_xmlSAXHandler_t** p, void* user_data, void* ioread, void* ioclose, void* ioctx, int enc) +{ + xml2_my_t* my = (xml2_my_t*)my_lib->priv.w.p2; + // handling of wine that change the default sax handler of... + my_xmlSAXHandler_t* old_saxhandler = p?(*p):NULL; + my_xmlSAXHandler_t sax_handler = {0}; + wrapSaxHandler(&sax_handler, old_saxhandler); + void* ret = my->xmlCreateIOParserCtxt(p, user_data, find_xmlInputReadCallback_Fct(ioread), find_xmlInputCloseCallback_Fct(ioclose), ioctx, enc); + restoreSaxHandler(&sax_handler, old_saxhandler); + return ret; +} + #define CUSTOM_INIT \ lib->priv.w.p2 = getXml2My(lib); \ my_lib = lib; |