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/wrappedlibncurses.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/wrappedlibncurses.c')
| -rwxr-xr-x | src/wrapped/wrappedlibncurses.c | 44 |
1 files changed, 4 insertions, 40 deletions
diff --git a/src/wrapped/wrappedlibncurses.c b/src/wrapped/wrappedlibncurses.c index 901a5e0e..f9d49767 100755 --- a/src/wrapped/wrappedlibncurses.c +++ b/src/wrapped/wrappedlibncurses.c @@ -22,39 +22,15 @@ const char* libncursesName = "libncurses.so.5"; #define LIBNAME libncurses -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/wrappedlibncursestypes.h" -typedef struct libncurses_my_s { - // functions - #define GO(A, B) B A; - SUPER() - #undef GO -} libncurses_my_t; - -void* getNCursesMy(library_t* lib) -{ - libncurses_my_t* my = (libncurses_my_t*)calloc(1, sizeof(libncurses_my_t)); - #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A); - SUPER() - #undef GO - return my; -} -#undef SUPER - -void freeNCursesMy(void* lib) -{ - //libncurses_my_t *my = (libncurses_my_t *)lib; -} +#include "wrappercallback.h" EXPORT int my_mvwprintw(x64emu_t* emu, void* win, int32_t y, int32_t x, void* fmt, void* b) { - libncurses_my_t *my = (libncurses_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 my_mvwprintw(x64emu_t* emu, void* win, int32_t y, int32_t x, void* fm EXPORT int my_printw(x64emu_t* emu, void* fmt, void* b) { - libncurses_my_t *my = (libncurses_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 my_printw(x64emu_t* emu, void* fmt, void* b) EXPORT int my_vwprintw(x64emu_t* emu, void* p, void* fmt, x64_va_list_t b) { - libncurses_my_t *my = (libncurses_my_t*)my_lib->priv.w.p2; - #ifdef CONVERT_VALIST CONVERT_VALIST(b); #else @@ -90,8 +62,6 @@ EXPORT int my_vwprintw(x64emu_t* emu, void* p, void* fmt, x64_va_list_t b) EXPORT int my_mvprintw(x64emu_t* emu, int x, int y, void* fmt, void* b) { - libncurses_my_t *my = (libncurses_my_t*)my_lib->priv.w.p2; - char* buf = NULL; myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 3); PREPARE_VALIST; @@ -105,22 +75,16 @@ EXPORT int my_mvprintw(x64emu_t* emu, int x, int y, void* fmt, void* b) EXPORT void* my_initscr() { - libncurses_my_t *my = (libncurses_my_t*)my_lib->priv.w.p2; void* ret = my->initscr(); my_checkGlobalTInfo(); return ret; } #define CUSTOM_INIT \ - lib->priv.w.p2 = getNCursesMy(lib); \ - my_lib = lib; \ - 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.5"); + getMy(lib); \ + setNeededLibs(&lib->priv.w, 1, "libtinfo.so.5"); #define CUSTOM_FINI \ - freeNCursesMy(lib->priv.w.p2); \ - free(lib->priv.w.p2); \ - my_lib = NULL; + freeMy(); #include "wrappedlib_init.h" |