about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-03-19 17:36:46 +0100
committerptitSeb <sebastien.chev@gmail.com>2023-03-19 17:36:46 +0100
commit27b6715910175071f27d05937bc0e1f310b8acfd (patch)
tree330190ec40eb70e8f7560744878757a76c99761b /src
parentb8ef8565e8bd5d56acc838478debb17958e4b34f (diff)
downloadbox64-27b6715910175071f27d05937bc0e1f310b8acfd.tar.gz
box64-27b6715910175071f27d05937bc0e1f310b8acfd.zip
Added 2 more libcups wrapped functions (for Heroic)
Diffstat (limited to 'src')
-rw-r--r--src/wrapped/generated/functions_list.txt3
-rw-r--r--src/wrapped/generated/wrappedlibcupstypes.h4
-rw-r--r--src/wrapped/generated/wrapper.c2
-rw-r--r--src/wrapped/generated/wrapper.h1
-rwxr-xr-xsrc/wrapped/wrappedlibcups.c49
-rwxr-xr-xsrc/wrapped/wrappedlibcups_private.h6
6 files changed, 61 insertions, 4 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 6179cf50..165b3900 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -1989,6 +1989,7 @@
 #() vFppppiipi
 #() vFpppppuuu
 #() vFpppppppp
+#() iFEuipuupp
 #() iFEpippppp
 #() iFEpuuLppp
 #() iFEpUUuppp
@@ -3359,6 +3360,8 @@ wrappedlibc:
   - clone
 wrappedlibcrypt:
 wrappedlibcups:
+- iFuipuupp:
+  - cupsEnumDests
 wrappedlibdl:
 - iFp:
   - dlclose
diff --git a/src/wrapped/generated/wrappedlibcupstypes.h b/src/wrapped/generated/wrappedlibcupstypes.h
index c71d9118..152cc8c0 100644
--- a/src/wrapped/generated/wrappedlibcupstypes.h
+++ b/src/wrapped/generated/wrappedlibcupstypes.h
@@ -11,7 +11,9 @@
 #define ADDED_FUNCTIONS() 
 #endif
 
+typedef int32_t (*iFuipuupp_t)(uint32_t, int32_t, void*, uint32_t, uint32_t, void*, void*);
 
-#define SUPER() ADDED_FUNCTIONS()
+#define SUPER() ADDED_FUNCTIONS() \
+	GO(cupsEnumDests, iFuipuupp_t)
 
 #endif // __wrappedlibcupsTYPES_H_
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index 747f6237..6b12efa8 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -2023,6 +2023,7 @@ typedef void (*vFpplppppp_t)(void*, void*, intptr_t, void*, void*, void*, void*,
 typedef void (*vFppppiipi_t)(void*, void*, void*, void*, int32_t, int32_t, void*, int32_t);
 typedef void (*vFpppppuuu_t)(void*, void*, void*, void*, void*, uint32_t, uint32_t, uint32_t);
 typedef void (*vFpppppppp_t)(void*, void*, void*, void*, void*, void*, void*, void*);
+typedef int32_t (*iFEuipuupp_t)(x64emu_t*, uint32_t, int32_t, void*, uint32_t, uint32_t, void*, void*);
 typedef int32_t (*iFEpippppp_t)(x64emu_t*, void*, int32_t, void*, void*, void*, void*, void*);
 typedef int32_t (*iFEpuuLppp_t)(x64emu_t*, void*, uint32_t, uint32_t, uintptr_t, void*, void*, void*);
 typedef int32_t (*iFEpUUuppp_t)(x64emu_t*, void*, uint64_t, uint64_t, uint32_t, void*, void*, void*);
@@ -4400,6 +4401,7 @@ void vFpplppppp(x64emu_t *emu, uintptr_t fcn) { vFpplppppp_t fn = (vFpplppppp_t)
 void vFppppiipi(x64emu_t *emu, uintptr_t fcn) { vFppppiipi_t fn = (vFppppiipi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8), *(int32_t*)(R_RSP + 16)); }
 void vFpppppuuu(x64emu_t *emu, uintptr_t fcn) { vFpppppuuu_t fn = (vFpppppuuu_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16)); }
 void vFpppppppp(x64emu_t *emu, uintptr_t fcn) { vFpppppppp_t fn = (vFpppppppp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
+void iFEuipuupp(x64emu_t *emu, uintptr_t fcn) { iFEuipuupp_t fn = (iFEuipuupp_t)fcn; R_RAX=(int32_t)fn(emu, (uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void iFEpippppp(x64emu_t *emu, uintptr_t fcn) { iFEpippppp_t fn = (iFEpippppp_t)fcn; R_RAX=(int32_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void iFEpuuLppp(x64emu_t *emu, uintptr_t fcn) { iFEpuuLppp_t fn = (iFEpuuLppp_t)fcn; R_RAX=(int32_t)fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uintptr_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void iFEpUUuppp(x64emu_t *emu, uintptr_t fcn) { iFEpUUuppp_t fn = (iFEpUUuppp_t)fcn; R_RAX=(int32_t)fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index 790b8224..75ae7fef 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -2022,6 +2022,7 @@ void vFpplppppp(x64emu_t *emu, uintptr_t fnc);
 void vFppppiipi(x64emu_t *emu, uintptr_t fnc);
 void vFpppppuuu(x64emu_t *emu, uintptr_t fnc);
 void vFpppppppp(x64emu_t *emu, uintptr_t fnc);
+void iFEuipuupp(x64emu_t *emu, uintptr_t fnc);
 void iFEpippppp(x64emu_t *emu, uintptr_t fnc);
 void iFEpuuLppp(x64emu_t *emu, uintptr_t fnc);
 void iFEpUUuppp(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedlibcups.c b/src/wrapped/wrappedlibcups.c
index a99f0b45..23541940 100755
--- a/src/wrapped/wrappedlibcups.c
+++ b/src/wrapped/wrappedlibcups.c
@@ -21,5 +21,54 @@
 const char* libcupsName = "libcups.so.2";
 #define LIBNAME libcups
 
+#define ADDED_FUNCTIONS()                   \
+
+#include "generated/wrappedlibcupstypes.h"
+
+#include "wrappercallback.h"
+
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)   \
+GO(4)
+
+// cups_dest_cb_t ...
+#define GO(A)   \
+static uintptr_t my_cups_dest_cb_t_fct_##A = 0;                                 \
+static int my_cups_dest_cb_t_##A(void* a, uint32_t b, void* c)                  \
+{                                                                               \
+    return (int)RunFunction(my_context, my_cups_dest_cb_t_fct_##A, 3, a, b, c); \
+}
+SUPER()
+#undef GO
+static void* find_cups_dest_cb_t_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_cups_dest_cb_t_fct_##A == (uintptr_t)fct) return my_cups_dest_cb_t_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_cups_dest_cb_t_fct_##A == 0) {my_cups_dest_cb_t_fct_##A = (uintptr_t)fct; return my_cups_dest_cb_t_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libcups cups_dest_cb_t callback\n");
+    return NULL;
+}
+
+#undef SUPER
+
+EXPORT int my_cupsEnumDests(x64emu_t* emu, uint32_t flags, int msec, int* cancel, uint32_t type, uint32_t mask, void* f, void* data)
+{
+    my->cupsEnumDests(flags, msec, cancel, type, mask, find_cups_dest_cb_t_Fct(f), data);
+}
+
+#define CUSTOM_INIT \
+    getMy(lib);
+
+#define CUSTOM_FINI \
+    freeMy();
+
 #include "wrappedlib_init.h"
 
diff --git a/src/wrapped/wrappedlibcups_private.h b/src/wrapped/wrappedlibcups_private.h
index 0f27d6f5..4978426c 100755
--- a/src/wrapped/wrappedlibcups_private.h
+++ b/src/wrapped/wrappedlibcups_private.h
@@ -52,7 +52,7 @@ GO(cupsAddOption, iFppip)
 //GO(_cupsConnect, 
 //GO(cupsConnectDest, 
 //GO(_cupsConvertOptions, 
-//GO(cupsCopyDest, 
+GO(cupsCopyDest, iFpip)
 //GO(cupsCopyDestConflicts, 
 //GO(cupsCopyDestInfo, 
 //GO(_cupsCreateDest, 
@@ -72,7 +72,7 @@ GO(cupsAddOption, iFppip)
 //GO(cupsEncodeOptions2, 
 //GO(_cupsEncodingName, 
 //GO(cupsEncryption, 
-//GO(cupsEnumDests, 
+GOM(cupsEnumDests, iFEuipuupp)
 //GO(_cupsFileCheck, 
 //GO(_cupsFileCheckFilter, 
 //GO(cupsFileClose, 
@@ -545,7 +545,7 @@ GO(ppdMarkDefaults, vFp)
 //GO(_ppdOpen, 
 //GO(ppdOpen, 
 //GO(ppdOpen2, 
-//GO(ppdOpenFd, 
+GO(ppdOpenFd, pFi)
 //GO(_ppdOpenFile, 
 GO(ppdOpenFile, pFp)
 //GO(ppdPageLength,