about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-07-13 19:12:13 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-07-13 19:12:13 +0200
commit5287e42b028314b2e5fb2a8e9d8fad604ad8fb28 (patch)
treebf5b479c73e0a9a12488b1ffa8dbc213a6a378d8 /src
parente0a7f775c98550edf8ef4b1d1c5eab77da98bc13 (diff)
downloadbox64-5287e42b028314b2e5fb2a8e9d8fad604ad8fb28.tar.gz
box64-5287e42b028314b2e5fb2a8e9d8fad604ad8fb28.zip
Added some xml2 wrapped functions (for #44)
Diffstat (limited to 'src')
-rw-r--r--src/wrapped/generated/functions_list.txt3
-rw-r--r--src/wrapped/generated/wrappedxml2types.h4
-rw-r--r--src/wrapped/generated/wrapper.c2
-rw-r--r--src/wrapped/generated/wrapper.h1
-rwxr-xr-xsrc/wrapped/wrappedxml2.c14
-rwxr-xr-xsrc/wrapped/wrappedxml2_private.h8
6 files changed, 27 insertions, 5 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 8ee82250..1f37540b 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -1172,6 +1172,7 @@
 #() pFEpLiiii
 #() pFEpLiiiI
 #() pFEppppip
+#() pFEpppppi
 #() pFifffppp
 #() pFuupupup
 #() pFpCuwwWW
@@ -2357,3 +2358,5 @@ wrappedxml2:
   - xmlHashScanFull3
 - iFpppppp:
   - xmlHashUpdateEntry3
+- pFpppppi:
+  - xmlCreateIOParserCtxt
diff --git a/src/wrapped/generated/wrappedxml2types.h b/src/wrapped/generated/wrappedxml2types.h
index a86d7aa7..ddabd191 100644
--- a/src/wrapped/generated/wrappedxml2types.h
+++ b/src/wrapped/generated/wrappedxml2types.h
@@ -27,6 +27,7 @@ typedef int64_t (*iFppppp_t)(void*, void*, void*, void*, void*);
 typedef void* (*pFppppi_t)(void*, void*, void*, void*, int64_t);
 typedef void (*vFpppppp_t)(void*, void*, void*, void*, void*, void*);
 typedef int64_t (*iFpppppp_t)(void*, void*, void*, void*, void*, void*);
+typedef void* (*pFpppppi_t)(void*, void*, void*, void*, void*, int64_t);
 
 #define SUPER() ADDED_FUNCTIONS() \
 	GO(xmlSetExternalEntityLoader, vFp_t) \
@@ -53,6 +54,7 @@ typedef int64_t (*iFpppppp_t)(void*, void*, void*, void*, void*, void*);
 	GO(xmlSaveToIO, pFppppi_t) \
 	GO(xmlHashScan3, vFpppppp_t) \
 	GO(xmlHashScanFull3, vFpppppp_t) \
-	GO(xmlHashUpdateEntry3, iFpppppp_t)
+	GO(xmlHashUpdateEntry3, iFpppppp_t) \
+	GO(xmlCreateIOParserCtxt, pFpppppi_t)
 
 #endif // __wrappedxml2TYPES_H_
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index 38619b55..c0a26c95 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -1206,6 +1206,7 @@ typedef uint64_t (*uFuippppp_t)(uint64_t, int64_t, void*, void*, void*, void*, v
 typedef void* (*pFEpLiiii_t)(x64emu_t*, void*, uintptr_t, int64_t, int64_t, int64_t, int64_t);
 typedef void* (*pFEpLiiiI_t)(x64emu_t*, void*, uintptr_t, int64_t, int64_t, int64_t, int64_t);
 typedef void* (*pFEppppip_t)(x64emu_t*, void*, void*, void*, void*, int64_t, void*);
+typedef void* (*pFEpppppi_t)(x64emu_t*, void*, void*, void*, void*, void*, int64_t);
 typedef void* (*pFifffppp_t)(int64_t, float, float, float, void*, void*, void*);
 typedef void* (*pFuupupup_t)(uint64_t, uint64_t, void*, uint64_t, void*, uint64_t, void*);
 typedef void* (*pFpCuwwWW_t)(void*, uint8_t, uint64_t, int16_t, int16_t, uint16_t, uint16_t);
@@ -2631,6 +2632,7 @@ void uFuippppp(x64emu_t *emu, uintptr_t fcn) { uFuippppp_t fn = (uFuippppp_t)fcn
 void pFEpLiiii(x64emu_t *emu, uintptr_t fcn) { pFEpLiiii_t fn = (pFEpLiiii_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9); }
 void pFEpLiiiI(x64emu_t *emu, uintptr_t fcn) { pFEpLiiiI_t fn = (pFEpLiiiI_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9); }
 void pFEppppip(x64emu_t *emu, uintptr_t fcn) { pFEppppip_t fn = (pFEppppip_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8, (void*)R_R9); }
+void pFEpppppi(x64emu_t *emu, uintptr_t fcn) { pFEpppppi_t fn = (pFEpppppi_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (int64_t)R_R9); }
 void pFifffppp(x64emu_t *emu, uintptr_t fcn) { pFifffppp_t fn = (pFifffppp_t)fcn; R_RAX=(uintptr_t)fn((int64_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void pFuupupup(x64emu_t *emu, uintptr_t fcn) { pFuupupup_t fn = (pFuupupup_t)fcn; R_RAX=(uintptr_t)fn((uint64_t)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (uint64_t)R_RCX, (void*)R_R8, (uint64_t)R_R9, *(void**)(R_RSP + 8)); }
 void pFpCuwwWW(x64emu_t *emu, uintptr_t fcn) { pFpCuwwWW_t fn = (pFpCuwwWW_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint8_t)R_RSI, (uint64_t)R_RDX, (int16_t)R_RCX, (int16_t)R_R8, (uint16_t)R_R9, *(uint16_t*)(R_RSP + 8)); }
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index b4702def..8b6ed6e6 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -1202,6 +1202,7 @@ void uFuippppp(x64emu_t *emu, uintptr_t fnc);
 void pFEpLiiii(x64emu_t *emu, uintptr_t fnc);
 void pFEpLiiiI(x64emu_t *emu, uintptr_t fnc);
 void pFEppppip(x64emu_t *emu, uintptr_t fnc);
+void pFEpppppi(x64emu_t *emu, uintptr_t fnc);
 void pFifffppp(x64emu_t *emu, uintptr_t fnc);
 void pFuupupup(x64emu_t *emu, uintptr_t fnc);
 void pFpCuwwWW(x64emu_t *emu, uintptr_t fnc);
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;
diff --git a/src/wrapped/wrappedxml2_private.h b/src/wrapped/wrappedxml2_private.h
index 81cba09b..6c297d1a 100755
--- a/src/wrapped/wrappedxml2_private.h
+++ b/src/wrapped/wrappedxml2_private.h
@@ -163,7 +163,7 @@ GO(xmlBufferWriteChar, vFpp)
 GO(xmlBufferWriteCHAR, vFpp)
 GO(xmlBufferWriteQuotedString, vFpp)
 GO(xmlBuildQName, pFpppi)
-//GO(xmlBuildRelativeURI, 
+GO(xmlBuildRelativeURI, pFpp)
 //GO(xmlBuildURI, 
 GO(xmlByteConsumed, lFp)
 //GO(xmlC14NDocDumpMemory, 
@@ -198,7 +198,7 @@ GO(xmlCharEncInFunc, iFppp)
 GO(xmlCharEncOutFunc, iFppp)
 //GO(xmlCharInRange, 
 //GO(xmlCharStrdup, 
-//GO(xmlCharStrndup, 
+GO(xmlCharStrndup, pFpi)
 GO(xmlCheckFilename, iFp)
 GO(xmlCheckHTTPInput, pFpp)
 GO(xmlCheckLanguageID, iFp)
@@ -241,12 +241,12 @@ GO(xmlCreateEntityParserCtxt, pFppp)
 GO(xmlCreateEnumeration, pFp)
 GO(xmlCreateFileParserCtxt, pFp)
 GO(xmlCreateIntSubset, pFpppp)
-//GOM(xmlCreateIOParserCtxt, pFEppBBpi)
+GOM(xmlCreateIOParserCtxt, pFEpppppi)
 GO(xmlCreateMemoryParserCtxt, pFpi)
 GO(xmlCreatePushParserCtxt, pFpppip)
 //GO(xmlCreateURI, 
 GO(xmlCreateURLParserCtxt, pFpi)
-//GO(xmlCtxtGetLastError, 
+GO(xmlCtxtGetLastError, pFp)
 GO(xmlCtxtReadDoc, pFppppi)
 GO(xmlCtxtReadFd, pFpippi)
 GO(xmlCtxtReadFile, pFpppi)