diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-05-09 18:06:52 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-05-09 18:06:52 +0200 |
| commit | 6ef734960abfb83501cf2236ae41624c0375f570 (patch) | |
| tree | c4870f8113a7dd23fdd4c1fbd26d7796fb6b6317 /src/wrapped/wrappedlibncurses6.c | |
| parent | 244e3eafdf05ddef3b75c88c362ffc62ffbf2584 (diff) | |
| download | box64-6ef734960abfb83501cf2236ae41624c0375f570.tar.gz box64-6ef734960abfb83501cf2236ae41624c0375f570.zip | |
Some refactor on wrapped lib handling, to limit calloc/free used and get more straight forward usage of native wrapped functions (ported from box86)
Diffstat (limited to 'src/wrapped/wrappedlibncurses6.c')
| -rwxr-xr-x | src/wrapped/wrappedlibncurses6.c | 46 |
1 files changed, 5 insertions, 41 deletions
diff --git a/src/wrapped/wrappedlibncurses6.c b/src/wrapped/wrappedlibncurses6.c index 164d9ceb..a41dacac 100755 --- a/src/wrapped/wrappedlibncurses6.c +++ b/src/wrapped/wrappedlibncurses6.c @@ -22,39 +22,15 @@ const char* libncurses6Name = "libncurses.so.6"; #define LIBNAME libncurses6 -static library_t* my_lib = NULL; - // this is a simple copy of libncursesw wrapper. TODO: check if ok #define ADDED_FUNCTIONS() GO(stdscr, void*) #include "generated/wrappedlibncurses6types.h" -typedef struct libncurses6_my_s { - // functions - #define GO(A, B) B A; - SUPER() - #undef GO -} libncurses6_my_t; - -void* getNCurses6My(library_t* lib) -{ - libncurses6_my_t* my = (libncurses6_my_t*)calloc(1, sizeof(libncurses6_my_t)); - #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A); - SUPER() - #undef GO - return my; -} -#undef SUPER - -void freeNCurses6My(void* lib) -{ - //libncurses6_my_t *my = (libncurses6_my_t *)lib; -} +#include "wrappercallback.h" EXPORT int my6_mvwprintw(x64emu_t* emu, void* win, int32_t y, int32_t x, void* fmt, void* b) { - libncurses6_my_t *my = (libncurses6_my_t*)my_lib->priv.w.p2; - char* buf = NULL; myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 4); PREPARE_VALIST; @@ -68,8 +44,6 @@ EXPORT int my6_mvwprintw(x64emu_t* emu, void* win, int32_t y, int32_t x, void* f EXPORT int my6_printw(x64emu_t* emu, void* fmt, void* b) { - libncurses6_my_t *my = (libncurses6_my_t*)my_lib->priv.w.p2; - myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 1); PREPARE_VALIST; return my->vwprintw(my->stdscr, fmt, VARARGS); @@ -77,8 +51,6 @@ EXPORT int my6_printw(x64emu_t* emu, void* fmt, void* b) EXPORT int my6_vwprintw(x64emu_t* emu, void* p, void* fmt, x64_va_list_t b) { - libncurses6_my_t *my = (libncurses6_my_t*)my_lib->priv.w.p2; - #ifdef CONVERT_VALIST CONVERT_VALIST(b); #else @@ -90,8 +62,6 @@ EXPORT int my6_vwprintw(x64emu_t* emu, void* p, void* fmt, x64_va_list_t b) EXPORT int my6_mvprintw(x64emu_t* emu, int x, int y, void* fmt, void* b) { - libncurses6_my_t *my = (libncurses6_my_t*)my_lib->priv.w.p2; - char* buf = NULL; myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 3); PREPARE_VALIST; @@ -105,23 +75,17 @@ EXPORT int my6_mvprintw(x64emu_t* emu, int x, int y, void* fmt, void* b) EXPORT void* my6_initscr() { - libncurses6_my_t *my = (libncurses6_my_t*)my_lib->priv.w.p2; void* ret = my->initscr(); my_checkGlobalTInfo(); return ret; } #define CUSTOM_INIT \ - lib->priv.w.p2 = getNCurses6My(lib); \ - my_lib = lib; \ - lib->altmy = strdup("my6_"); \ - lib->priv.w.needed = 1; \ - lib->priv.w.neededlibs = (char**)calloc(lib->priv.w.needed, sizeof(char*)); \ - lib->priv.w.neededlibs[0] = strdup("libtinfo.so.6"); + getMy(lib); \ + SETALT(my6_); \ + setNeededLibs(&lib->priv.w, 1, "libtinfo.so.6"); #define CUSTOM_FINI \ - freeNCurses6My(lib->priv.w.p2); \ - free(lib->priv.w.p2); \ - my_lib = NULL; + freeMy(); #include "wrappedlib_init.h" |