#include #include #include "libretro.h" typedef void (*rust_retro_ffi_log_print_t)(enum retro_log_level level, const char* msg); rust_retro_ffi_log_print_t g_rust_retro_ffi_log_print = NULL; void retro_log_snprintf_wrapper(enum retro_log_level level, const char* fmt, ...) { if (g_rust_retro_ffi_log_print != NULL) { char msg[4096]; va_list args; va_start(args, fmt); vsnprintf(msg, sizeof(msg), fmt, args); va_end(args); g_rust_retro_ffi_log_print(level, msg); } } bool c_ext_handle_get_log_interface(struct retro_log_callback* retro_cb) { retro_cb->log = retro_log_snprintf_wrapper; return true; } void c_ext_set_log_print_cb(rust_retro_ffi_log_print_t cb) { g_rust_retro_ffi_log_print = cb; }