From 2481102c6541df37a773569dd4d67b579f04d819 Mon Sep 17 00:00:00 2001 From: Alexander Lantsev Date: Thu, 2 Jul 2015 08:52:29 +0000 Subject: MirLua: - removed console - changed logging (via netlib) - version bump git-svn-id: http://svn.miranda-ng.org/main/trunk@14467 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/MirLua/src/m_core.cpp | 2 +- plugins/MirLua/src/main.cpp | 15 +++++++++++++ plugins/MirLua/src/mlua.cpp | 26 +++++++++++----------- plugins/MirLua/src/mlua.h | 5 ----- plugins/MirLua/src/mlua_console.cpp | 36 ------------------------------- plugins/MirLua/src/mlua_console.h | 15 ------------- plugins/MirLua/src/mlua_script_loader.cpp | 29 ++++++++++++++----------- plugins/MirLua/src/mlua_script_loader.h | 6 +++--- plugins/MirLua/src/mlua_utils.cpp | 20 +++++++++++++++++ plugins/MirLua/src/stdafx.h | 9 +++++--- plugins/MirLua/src/version.h | 2 +- 11 files changed, 75 insertions(+), 90 deletions(-) delete mode 100644 plugins/MirLua/src/mlua_console.cpp delete mode 100644 plugins/MirLua/src/mlua_console.h diff --git a/plugins/MirLua/src/m_core.cpp b/plugins/MirLua/src/m_core.cpp index 41adff71fc..a61ed05431 100644 --- a/plugins/MirLua/src/m_core.cpp +++ b/plugins/MirLua/src/m_core.cpp @@ -177,7 +177,7 @@ static INT_PTR ServiceFunctionObjParam(void *obj, WPARAM wParam, LPARAM lParam, lua_pushnumber(L, wParam); lua_pushnumber(L, lParam); if (lua_pcall(L, 2, 1, 0)) - printf("%s\n", lua_tostring(L, -1)); + CallService(MS_NETLIB_LOG, (WPARAM)hNetlib, (LPARAM)lua_tostring(L, -1)); INT_PTR res = (INT_PTR)lua_tointeger(L, 1); lua_pushinteger(L, res); diff --git a/plugins/MirLua/src/main.cpp b/plugins/MirLua/src/main.cpp index 62ebb97be3..e9bf5fff64 100644 --- a/plugins/MirLua/src/main.cpp +++ b/plugins/MirLua/src/main.cpp @@ -8,6 +8,8 @@ HINSTANCE g_hInstance; HANDLE g_hCommonFolderPath; HANDLE g_hCustomFolderPath; +HANDLE hNetlib = NULL; + CMLua *g_mLua; PLUGININFOEX pluginInfo = @@ -54,6 +56,13 @@ extern "C" int __declspec(dllexport) Load(void) g_hCommonFolderPath = FoldersRegisterCustomPathT("MirLua", Translate("Common scripts folder"), COMMON_SCRIPTS_PATHT); g_hCustomFolderPath = FoldersRegisterCustomPathT("MirLua", Translate("Custom scripts folder"), CUSTOM_SCRIPTS_PATHT); + NETLIBUSER nlu = { 0 }; + nlu.cbSize = sizeof(nlu); + nlu.flags = NUF_OUTGOING | NUF_INCOMING | NUF_HTTPCONNS | NUF_UNICODE; + nlu.ptszDescriptiveName = _T(MODULE); + nlu.szSettingsModule = MODULE; + hNetlib = (HANDLE)CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nlu); + g_mLua = new CMLua(); return 0; @@ -63,5 +72,11 @@ extern "C" int __declspec(dllexport) Unload(void) { delete g_mLua; + if (hNetlib) + { + Netlib_CloseHandle(hNetlib); + hNetlib = NULL; + } + return 0; } diff --git a/plugins/MirLua/src/mlua.cpp b/plugins/MirLua/src/mlua.cpp index 3d0d7f6106..253bd2b64e 100644 --- a/plugins/MirLua/src/mlua.cpp +++ b/plugins/MirLua/src/mlua.cpp @@ -2,24 +2,19 @@ CMLua::CMLua() : L(NULL) { - console = new CMLuaConsole(L); - hLogger = mir_createLog(MODULE, _T("MirLua log"), VARST(_T("%miranda_logpath%\\MirLua.txt")), 0); - Load(); } CMLua::~CMLua() { Unload(); - mir_closeLog(hLogger); - delete console; } void CMLua::Load() { - mir_writeLogT(hLogger, _T("Loading lua engine\n")); + CallService(MS_NETLIB_LOG, (WPARAM)hNetlib, (LPARAM)"Loading lua engine"); L = luaL_newstate(); - mir_writeLogT(hLogger, _T("Loading std modules\n")); + CallService(MS_NETLIB_LOG, (WPARAM)hNetlib, (LPARAM)"Loading std modules"); luaL_openlibs(L); lua_getglobal(L, "package"); @@ -29,17 +24,24 @@ void CMLua::Load() lua_setfield(L, -2, "cpath"); lua_pop(L, 1); + lua_getglobal(L, "_G"); + lua_pushcclosure(L, luaM_print, 0); + lua_setfield(L, -2, "print"); + lua_pop(L, 1); + + lua_atpanic(L, luaM_atpanic); + MUUID muidLast = MIID_LAST; hScriptsLangpack = GetPluginLangId(muidLast, 0); - mir_writeLogT(hLogger, _T("Loading miranda modules\n")); + CallService(MS_NETLIB_LOG, (WPARAM)hNetlib, (LPARAM)"Loading miranda modules"); CLuaModuleLoader::Load(L); - CLuaScriptLoader::Load(L, hLogger); + CLuaScriptLoader::Load(L); } void CMLua::Unload() { - mir_writeLogT(hLogger, _T("Unloading lua engine\n")); + CallService(MS_NETLIB_LOG, (WPARAM)hNetlib, (LPARAM)"Unloading lua engine"); ::KillModuleMenus(hScriptsLangpack); ::KillModuleServices(); @@ -66,11 +68,9 @@ int CMLua::HookEventObjParam(void *obj, WPARAM wParam, LPARAM lParam, LPARAM par lua_pushnumber(L, wParam); lua_pushnumber(L, lParam); if (lua_pcall(L, 2, 1, 0)) - printf("%s\n", lua_tostring(L, -1)); + CallService(MS_NETLIB_LOG, (WPARAM)hNetlib, (LPARAM)lua_tostring(L, -1)); int res = (int)lua_tointeger(L, 1); - //luaL_unref(L, LUA_REGISTRYINDEX, ref); - return res; } \ No newline at end of file diff --git a/plugins/MirLua/src/mlua.h b/plugins/MirLua/src/mlua.h index 81bdbdb177..c792c32780 100644 --- a/plugins/MirLua/src/mlua.h +++ b/plugins/MirLua/src/mlua.h @@ -5,11 +5,6 @@ class CMLua { private: lua_State *L; - HANDLE hLogger; - CMLuaConsole *console; - - static void KillModuleServices(); - static void KillModuleEventHooks(); void Load(); void Unload(); diff --git a/plugins/MirLua/src/mlua_console.cpp b/plugins/MirLua/src/mlua_console.cpp deleted file mode 100644 index 428e43f585..0000000000 --- a/plugins/MirLua/src/mlua_console.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "stdafx.h" - -BOOL WINAPI ConsoleHandler(DWORD) -{ - return TRUE; -} - -CMLuaConsole::CMLuaConsole(lua_State *L) - : L(L), hConsole(NULL) -{ - if (db_get_b(NULL, MODULE, "ShowConsole", 0)) - { - if (!AttachConsole(ATTACH_PARENT_PROCESS)) - { - if (AllocConsole()) - { - SetConsoleTitle(_T("MirLua Console")); - freopen("CONOUT$", "w", stdout); - hConsole = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL); - if (HWND hConsoleWindow = GetConsoleWindow()) - { - HMENU hConsoleMenu = GetSystemMenu(hConsoleWindow, FALSE); - DeleteMenu(hConsoleMenu, SC_CLOSE, MF_BYCOMMAND); - } - SetConsoleCtrlHandler(ConsoleHandler, true); - } - } - } -} - -CMLuaConsole::~CMLuaConsole() -{ - if (hConsole) - CloseHandle(hConsole); - FreeConsole(); -} \ No newline at end of file diff --git a/plugins/MirLua/src/mlua_console.h b/plugins/MirLua/src/mlua_console.h deleted file mode 100644 index 6e82a22dd0..0000000000 --- a/plugins/MirLua/src/mlua_console.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _LUA_CONSOLE_H_ -#define _LUA_CONSOLE_H_ - -class CMLuaConsole -{ -private: - lua_State *L; - HANDLE hConsole; - -public: - CMLuaConsole(lua_State *L); - ~CMLuaConsole(); -}; - -#endif //_LUA_CONSOLE_H_ \ No newline at end of file diff --git a/plugins/MirLua/src/mlua_script_loader.cpp b/plugins/MirLua/src/mlua_script_loader.cpp index 663ad4cd59..c54c489d8b 100644 --- a/plugins/MirLua/src/mlua_script_loader.cpp +++ b/plugins/MirLua/src/mlua_script_loader.cpp @@ -1,6 +1,6 @@ #include "stdafx.h" -CLuaScriptLoader::CLuaScriptLoader(lua_State *L, HANDLE hLogger) : L(L), hLogger(hLogger) +CLuaScriptLoader::CLuaScriptLoader(lua_State *L) : L(L) { } @@ -18,20 +18,26 @@ void CLuaScriptLoader::RegisterScriptsFolder(const char *path) lua_pop(L, 1); } -void CLuaScriptLoader::LoadScript(const TCHAR *path, const TCHAR *name) +void CLuaScriptLoader::LoadScript(const TCHAR *path) { + if (luaL_dofile(L, T2Utf(path))) { - ptrT error(mir_utf8decodeT(lua_tostring(L, -1))); - mir_writeLogT(hLogger, _T(" %s:FAIL\n %s\n"), name, error); - printf("%s\n", lua_tostring(L, -1)); + CallService(MS_NETLIB_LOG, (WPARAM)hNetlib, (LPARAM)lua_tostring(L, -1)); + return; } - else mir_writeLogT(hLogger, _T(" %s:OK\n"), name); + + TCHAR buf[4096]; + mir_sntprintf(buf, _T("%s:OK"), path); + CallService(MS_NETLIB_LOGW, (WPARAM)hNetlib, (LPARAM)buf); } void CLuaScriptLoader::LoadScripts(const TCHAR *scriptDir) { - mir_writeLogT(hLogger, _T("Loading scripts from path %s\n"), scriptDir); + TCHAR buf[4096]; + mir_sntprintf(buf, _T("Loading scripts from %s"), scriptDir); + CallService(MS_NETLIB_LOGW, (WPARAM)hNetlib, (LPARAM)buf); + RegisterScriptsFolder(ptrA(mir_utf8encodeT(scriptDir))); TCHAR searchMask[MAX_PATH]; @@ -50,24 +56,21 @@ void CLuaScriptLoader::LoadScripts(const TCHAR *scriptDir) mir_sntprintf(fullPath, _T("%s\\%s"), scriptDir, fd.cFileName); PathToRelativeT(fullPath, path); if (db_get_b(NULL, MODULE, _T2A(fd.cFileName), 1)) - LoadScript(fullPath, fd.cFileName); + LoadScript(fullPath); } } while (FindNextFile(hFind, &fd)); FindClose(hFind); } - mir_writeLogT(hLogger, _T("\n"), scriptDir); } -void CLuaScriptLoader::Load(lua_State *L, HANDLE hLogger) +void CLuaScriptLoader::Load(lua_State *L) { TCHAR scriptDir[MAX_PATH]; - CLuaScriptLoader loader(L, hLogger); + CLuaScriptLoader loader(L); FoldersGetCustomPathT(g_hCommonFolderPath, scriptDir, _countof(scriptDir), VARST(COMMON_SCRIPTS_PATHT)); loader.LoadScripts(scriptDir); FoldersGetCustomPathT(g_hCustomFolderPath, scriptDir, _countof(scriptDir), VARST(CUSTOM_SCRIPTS_PATHT)); loader.LoadScripts(scriptDir); - - mir_writeLogT(hLogger, _T("\n"), scriptDir); } \ No newline at end of file diff --git a/plugins/MirLua/src/mlua_script_loader.h b/plugins/MirLua/src/mlua_script_loader.h index b4067ec530..fe15bbc08b 100644 --- a/plugins/MirLua/src/mlua_script_loader.h +++ b/plugins/MirLua/src/mlua_script_loader.h @@ -7,15 +7,15 @@ private: lua_State *L; HANDLE hLogger; - CLuaScriptLoader(lua_State *L, HANDLE hLogger); + CLuaScriptLoader(lua_State *L); void RegisterScriptsFolder(const char *path); - void LoadScript(const TCHAR *path, const TCHAR *name); + void LoadScript(const TCHAR *path); void LoadScripts(const TCHAR *scriptDir); public: - static void Load(lua_State *L, HANDLE hLogger = NULL); + static void Load(lua_State *L); }; #endif //_LUA_SCRIPT_LOADER_H_ \ No newline at end of file diff --git a/plugins/MirLua/src/mlua_utils.cpp b/plugins/MirLua/src/mlua_utils.cpp index d4eded5ea9..837ab08c53 100644 --- a/plugins/MirLua/src/mlua_utils.cpp +++ b/plugins/MirLua/src/mlua_utils.cpp @@ -1,5 +1,25 @@ #include "stdafx.h" +int luaM_print(lua_State *L) +{ + CMStringA data; + int nargs = lua_gettop(L); + for (int i = 1; i <= nargs; ++i) + data.AppendFormat("%s ", lua_tostring(L, i)); + data.Delete(data.GetLength() - 3, 3); + + CallService(MS_NETLIB_LOG, (WPARAM)hNetlib, (LPARAM)data.GetBuffer()); + + return 0; +} + +int luaM_atpanic(lua_State *L) +{ + CallService(MS_NETLIB_LOG, (WPARAM)hNetlib, (LPARAM)lua_tostring(L, -1)); + + return 0; +} + bool luaM_checkboolean(lua_State *L, int idx) { luaL_checktype(L, 2, LUA_TBOOLEAN); diff --git a/plugins/MirLua/src/stdafx.h b/plugins/MirLua/src/stdafx.h index 5c2cedb63e..1b463b564a 100644 --- a/plugins/MirLua/src/stdafx.h +++ b/plugins/MirLua/src/stdafx.h @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -32,10 +33,7 @@ extern "C" #include "version.h" #include "resource.h" -class CMLuaConsole; - #include "mlua.h" -#include "mlua_console.h" #include "mlua_module_loader.h" #include "mlua_script_loader.h" #include "mlua_options.h" @@ -51,6 +49,8 @@ extern HINSTANCE g_hInstance; extern HANDLE g_hCommonFolderPath; extern HANDLE g_hCustomFolderPath; +extern HANDLE hNetlib; + #ifdef _UNICODE #define COMMON_SCRIPTS_PATHT MIRANDA_PATHW L"\\Scripts" #define CUSTOM_SCRIPTS_PATHT MIRANDA_USERDATAW L"\\Scripts" @@ -84,6 +84,9 @@ LUAMOD_API int (luaopen_m_toptoolbar)(lua_State *L); #define MLUA_VARIABLES "m_variables" LUAMOD_API int (luaopen_m_variables)(lua_State *L); +int luaM_print(lua_State *L); +int luaM_atpanic(lua_State *L); + bool luaM_checkboolean(lua_State *L, int idx); WPARAM luaM_towparam(lua_State *L, int idx); LPARAM luaM_tolparam(lua_State *L, int idx); diff --git a/plugins/MirLua/src/version.h b/plugins/MirLua/src/version.h index f2af4804d5..e16ba2651e 100644 --- a/plugins/MirLua/src/version.h +++ b/plugins/MirLua/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 11 #define __RELEASE_NUM 2 -#define __BUILD_NUM 0 +#define __BUILD_NUM 1 #include -- cgit v1.2.3