diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-04-16 17:42:57 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-04-16 17:42:57 +0200 |
| commit | df15bf5c59131e7f4f62f21bce78d1df166fb23b (patch) | |
| tree | b8f5a9257a8036d25bb6a98a6a32b18c800f1e39 /src | |
| parent | 2ccd9da8e877e0a689ae1e946fb5c4592d339055 (diff) | |
| download | box64-df15bf5c59131e7f4f62f21bce78d1df166fb23b.tar.gz box64-df15bf5c59131e7f4f62f21bce78d1df166fb23b.zip | |
Added some more gconf2 wrapped functions
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 3 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedgconf2types.h | 4 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 2 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 1 | ||||
| -rw-r--r-- | src/wrapped/wrappedgconf2.c | 61 | ||||
| -rw-r--r-- | src/wrapped/wrappedgconf2_private.h | 28 |
6 files changed, 84 insertions, 15 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 19176594..34098912 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -1895,6 +1895,7 @@ #() uFEiipppp #() uFEpiippp #() uFEpuuppp +#() uFEpppppp #() uFuippppp #() uFppiuppp #() uFppuuuup @@ -2618,6 +2619,8 @@ wrappedfreetype: - FTC_Manager_New wrappedgbm: wrappedgconf2: +- uFpppppp: + - gconf_client_notify_add wrappedgcrypt: - uFpppV: - gcry_sexp_build diff --git a/src/wrapped/generated/wrappedgconf2types.h b/src/wrapped/generated/wrappedgconf2types.h index 91528fbd..3bdbc664 100644 --- a/src/wrapped/generated/wrappedgconf2types.h +++ b/src/wrapped/generated/wrappedgconf2types.h @@ -11,7 +11,9 @@ #define ADDED_FUNCTIONS() #endif +typedef uint32_t (*uFpppppp_t)(void*, void*, void*, void*, void*, void*); -#define SUPER() ADDED_FUNCTIONS() +#define SUPER() ADDED_FUNCTIONS() \ + GO(gconf_client_notify_add, uFpppppp_t) #endif // __wrappedgconf2TYPES_H_ diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index 1d167ac8..7d1fd061 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -1931,6 +1931,7 @@ typedef int32_t (*iFppppppp_t)(void*, void*, void*, void*, void*, void*, void*); typedef uint32_t (*uFEiipppp_t)(x64emu_t*, int32_t, int32_t, void*, void*, void*, void*); typedef uint32_t (*uFEpiippp_t)(x64emu_t*, void*, int32_t, int32_t, void*, void*, void*); typedef uint32_t (*uFEpuuppp_t)(x64emu_t*, void*, uint32_t, uint32_t, void*, void*, void*); +typedef uint32_t (*uFEpppppp_t)(x64emu_t*, void*, void*, void*, void*, void*, void*); typedef uint32_t (*uFuippppp_t)(uint32_t, int32_t, void*, void*, void*, void*, void*); typedef uint32_t (*uFppiuppp_t)(void*, void*, int32_t, uint32_t, void*, void*, void*); typedef uint32_t (*uFppuuuup_t)(void*, void*, uint32_t, uint32_t, uint32_t, uint32_t, void*); @@ -4334,6 +4335,7 @@ void iFppppppp(x64emu_t *emu, uintptr_t fcn) { iFppppppp_t fn = (iFppppppp_t)fcn void uFEiipppp(x64emu_t *emu, uintptr_t fcn) { uFEiipppp_t fn = (uFEiipppp_t)fcn; R_RAX=(uint32_t)fn(emu, (int32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } void uFEpiippp(x64emu_t *emu, uintptr_t fcn) { uFEpiippp_t fn = (uFEpiippp_t)fcn; R_RAX=(uint32_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } void uFEpuuppp(x64emu_t *emu, uintptr_t fcn) { uFEpuuppp_t fn = (uFEpuuppp_t)fcn; R_RAX=(uint32_t)fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } +void uFEpppppp(x64emu_t *emu, uintptr_t fcn) { uFEpppppp_t fn = (uFEpppppp_t)fcn; R_RAX=(uint32_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } void uFuippppp(x64emu_t *emu, uintptr_t fcn) { uFuippppp_t fn = (uFuippppp_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } void uFppiuppp(x64emu_t *emu, uintptr_t fcn) { uFppiuppp_t fn = (uFppiuppp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); } void uFppuuuup(x64emu_t *emu, uintptr_t fcn) { uFppuuuup_t fn = (uFppuuuup_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8)); } diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index ededa59d..264d26ab 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -1932,6 +1932,7 @@ void iFppppppp(x64emu_t *emu, uintptr_t fnc); void uFEiipppp(x64emu_t *emu, uintptr_t fnc); void uFEpiippp(x64emu_t *emu, uintptr_t fnc); void uFEpuuppp(x64emu_t *emu, uintptr_t fnc); +void uFEpppppp(x64emu_t *emu, uintptr_t fnc); void uFuippppp(x64emu_t *emu, uintptr_t fnc); void uFppiuppp(x64emu_t *emu, uintptr_t fnc); void uFppuuuup(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedgconf2.c b/src/wrapped/wrappedgconf2.c index 59f47d98..0ea85bb3 100644 --- a/src/wrapped/wrappedgconf2.c +++ b/src/wrapped/wrappedgconf2.c @@ -22,6 +22,67 @@ const char* gconf2Name = "libgconf-2.so.4"; #define LIBNAME gconf2 +#include "generated/wrappedgconf2types.h" + +#include "wrappercallback.h" + +#define SUPER() \ +GO(0) \ +GO(1) \ +GO(2) \ +GO(3) + +// GFreeFct +#define GO(A) \ +static uintptr_t my_GFreeFct_fct_##A = 0; \ +static void my_GFreeFct_##A(void* a) \ +{ \ + RunFunction(my_context, my_GFreeFct_fct_##A, 1, a); \ +} +SUPER() +#undef GO +static void* findGFreeFctFct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_GFreeFct_fct_##A == (uintptr_t)fct) return my_GFreeFct_##A; + SUPER() + #undef GO + #define GO(A) if(my_GFreeFct_fct_##A == 0) {my_GFreeFct_fct_##A = (uintptr_t)fct; return my_GFreeFct_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for gconf2 GFreeFct callback\n"); + return NULL; +} +// GConfClientNotifyFunc +#define GO(A) \ +static uintptr_t my_GConfClientNotifyFunc_fct_##A = 0; \ +static void my_GConfClientNotifyFunc_##A(void* a, uint32_t b, void* c, void* d) \ +{ \ + RunFunction(my_context, my_GConfClientNotifyFunc_fct_##A, 4, a, b, c, d); \ +} +SUPER() +#undef GO +static void* findGConfClientNotifyFuncFct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_GConfClientNotifyFunc_fct_##A == (uintptr_t)fct) return my_GConfClientNotifyFunc_##A; + SUPER() + #undef GO + #define GO(A) if(my_GConfClientNotifyFunc_fct_##A == 0) {my_GConfClientNotifyFunc_fct_##A = (uintptr_t)fct; return my_GConfClientNotifyFunc_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for gconf2 GConfClientNotifyFunc callback\n"); + return NULL; +} + +#undef SUPER + +EXPORT uint32_t my_gconf_client_notify_add(x64emu_t* emu, void* client, void* section, void* f, void* data, void* d, void* error) +{ + return my->gconf_client_notify_add(client, section, findGConfClientNotifyFuncFct(f), data, findGFreeFctFct(d), error); +} #define PRE_INIT \ if(box64_nogtk) \ diff --git a/src/wrapped/wrappedgconf2_private.h b/src/wrapped/wrappedgconf2_private.h index 7b2cbac0..acf7c1e4 100644 --- a/src/wrapped/wrappedgconf2_private.h +++ b/src/wrapped/wrappedgconf2_private.h @@ -34,7 +34,7 @@ //GO(gconf_change_set_unref, //GO(gconf_change_set_unset, //GO(gconf_clear_cache, -//GO(gconf_client_add_dir, +GO(gconf_client_add_dir, vFppip) //GO(gconf_client_all_dirs, //GO(gconf_client_all_entries, //GO(gconf_client_change_set_from_current, @@ -44,28 +44,28 @@ //GO(gconf_client_dir_exists, //GO(gconf_client_error, //GO(gconf_client_error_handling_mode_get_type, -//GO(gconf_client_get, +GO(gconf_client_get, pFppp) //GO(gconf_client_get_bool, -//GO(gconf_client_get_default, +GO(gconf_client_get_default, pFv) //GO(gconf_client_get_default_from_schema, //GO(gconf_client_get_entry, //GO(gconf_client_get_float, //GO(gconf_client_get_for_engine, -//GO(gconf_client_get_int, -//GO(gconf_client_get_list, +GO(gconf_client_get_int, iFppp) +GO(gconf_client_get_list, pFppip) //GO(gconf_client_get_pair, //GO(gconf_client_get_schema, -//GO(gconf_client_get_string, +GO(gconf_client_get_string, pFppp) //GO(gconf_client_get_type, //GO(gconf_client_get_without_default, //GO(gconf_client_key_is_writable, //GO(gconf_client_notify, -//GO(gconf_client_notify_add, -//GO(gconf_client_notify_remove, +GOM(gconf_client_notify_add, uFEpppppp) +GO(gconf_client_notify_remove, vFpu) //GO(gconf_client_preload, //GO(gconf_client_preload_type_get_type, //GO(gconf_client_recursive_unset, -//GO(gconf_client_remove_dir, +GO(gconf_client_remove_dir, vFppp) //GO(gconf_client_reverse_change_set, //GO(gconf_client_set, //GO(gconf_client_set_bool, @@ -146,10 +146,10 @@ //GO(gconf_entry_free, //GO(gconf_entry_get_is_default, //GO(gconf_entry_get_is_writable, -//GO(gconf_entry_get_key, +GO(gconf_entry_get_key, pFp) //GO(gconf_entry_get_schema_name, //GO(gconf_entry_get_type, -//GO(gconf_entry_get_value, +GO(gconf_entry_get_value, pFp) //GO(gconf_entry_new, //GO(gconf_entry_new_nocopy, //GO(gconf_entry_ref, @@ -278,8 +278,8 @@ //GO(gconf_value_copy, //GO(gconf_value_decode, //GO(gconf_value_encode, -//GO(gconf_value_free, -//GO(gconf_value_get_bool, +GO(gconf_value_free, vFp) +GO(gconf_value_get_bool, iFp) //GO(gconf_value_get_car, //GO(gconf_value_get_cdr, //GO(gconf_value_get_float, @@ -287,7 +287,7 @@ //GO(gconf_value_get_list, //GO(gconf_value_get_list_type, //GO(gconf_value_get_schema, -//GO(gconf_value_get_string, +GO(gconf_value_get_string, pFp) //GO(gconf_value_get_type, //GO(gconf_value_list_from_primitive_list, //GO(gconf_value_list_to_primitive_list_destructive, |