diff --git a/vendor/luajit/src/lib_os.c b/vendor/luajit/src/lib_os.c index 8c96b86c7..05b324950 100644 --- a/vendor/luajit/src/lib_os.c +++ b/vendor/luajit/src/lib_os.c @@ -32,6 +32,23 @@ /* ------------------------------------------------------------------------ */ +#if LJ_TARGET_WINDOWS +#define WIN32_LEAN_AND_MEAN +#include + +static wchar_t *widen_static(const char *narrow, int idx) +{ + __declspec(thread) static wchar_t buffer[2][MAX_PATH]; + return MultiByteToWideChar(CP_UTF8, 0, narrow, -1, buffer[idx], MAX_PATH) ? buffer[idx] : L""; +} + +#define remove(x) _wremove(widen_static(x, 0)) +#define system(x) _wsystem(widen_static(x, 0)) +#define rename(x, y) _wrename(widen_static(x, 0), widen_static(y, 1)) +#endif + +/* ------------------------------------------------------------------------ */ + #define LJLIB_MODULE_os LJLIB_CF(os_execute)