diff options
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/common/c_internal.cpp | 44 | ||||
-rw-r--r-- | src/script/common/c_internal.h | 3 | ||||
-rw-r--r-- | src/script/lua_api/l_util.cpp | 2 | ||||
-rw-r--r-- | src/script/scripting_server.cpp | 5 | ||||
-rw-r--r-- | src/script/scripting_server.h | 2 |
5 files changed, 26 insertions, 30 deletions
diff --git a/src/script/common/c_internal.cpp b/src/script/common/c_internal.cpp index f792b6218..a7dcf9b5f 100644 --- a/src/script/common/c_internal.cpp +++ b/src/script/common/c_internal.cpp @@ -135,7 +135,27 @@ void script_run_callbacks_f(lua_State *L, int nargs, lua_remove(L, error_handler); } -void log_deprecated(lua_State *L, const std::string &message) +static void script_log(lua_State *L, const std::string &message, + std::ostream &log_to, bool do_error, int stack_depth) +{ + lua_Debug ar; + + log_to << message << " "; + if (lua_getstack(L, stack_depth, &ar)) { + FATAL_ERROR_IF(!lua_getinfo(L, "Sl", &ar), "lua_getinfo() failed"); + log_to << "(at " << ar.short_src << ":" << ar.currentline << ")"; + } else { + log_to << "(at ?:?)"; + } + log_to << std::endl; + + if (do_error) + script_error(L, LUA_ERRRUN, NULL, NULL); + else + infostream << script_get_backtrace(L) << std::endl; +} + +void log_deprecated(lua_State *L, const std::string &message, int stack_depth) { static bool configured = false; static bool do_log = false; @@ -152,24 +172,6 @@ void log_deprecated(lua_State *L, const std::string &message) } } - if (do_log) { - warningstream << message; - if (L) { // L can be NULL if we get called from scripting_game.cpp - lua_Debug ar; - - if (!lua_getstack(L, 2, &ar)) - FATAL_ERROR_IF(!lua_getstack(L, 1, &ar), "lua_getstack() failed"); - FATAL_ERROR_IF(!lua_getinfo(L, "Sl", &ar), "lua_getinfo() failed"); - warningstream << " (at " << ar.short_src << ":" << ar.currentline << ")"; - } - warningstream << std::endl; - - if (L) { - if (do_error) - script_error(L, LUA_ERRRUN, NULL, NULL); - else - infostream << script_get_backtrace(L) << std::endl; - } - } + if (do_log) + script_log(L, message, warningstream, do_error, stack_depth); } - diff --git a/src/script/common/c_internal.h b/src/script/common/c_internal.h index d2131d1ad..69b8a7fdc 100644 --- a/src/script/common/c_internal.h +++ b/src/script/common/c_internal.h @@ -103,4 +103,5 @@ int script_exception_wrapper(lua_State *L, lua_CFunction f); void script_error(lua_State *L, int pcall_result, const char *mod, const char *fxn); void script_run_callbacks_f(lua_State *L, int nargs, RunCallbacksMode mode, const char *fxn); -void log_deprecated(lua_State *L, const std::string &message); +void log_deprecated(lua_State *L, const std::string &message, + int stack_depth=1); diff --git a/src/script/lua_api/l_util.cpp b/src/script/lua_api/l_util.cpp index a58c3a196..ae3e5df3d 100644 --- a/src/script/lua_api/l_util.cpp +++ b/src/script/lua_api/l_util.cpp @@ -59,7 +59,7 @@ int ModApiUtil::l_log(lua_State *L) std::string name = luaL_checkstring(L, 1); text = luaL_checkstring(L, 2); if (name == "deprecated") { - log_deprecated(L, text); + log_deprecated(L, text, 2); return 0; } level = Logger::stringToLevel(name); diff --git a/src/script/scripting_server.cpp b/src/script/scripting_server.cpp index 2204c6884..cbf229640 100644 --- a/src/script/scripting_server.cpp +++ b/src/script/scripting_server.cpp @@ -121,8 +121,3 @@ void ServerScripting::InitializeModApi(lua_State *L, int top) ModApiStorage::Initialize(L, top); ModApiChannels::Initialize(L, top); } - -void log_deprecated(const std::string &message) -{ - log_deprecated(NULL, message); -} diff --git a/src/script/scripting_server.h b/src/script/scripting_server.h index 88cea143c..bf06ab197 100644 --- a/src/script/scripting_server.h +++ b/src/script/scripting_server.h @@ -51,5 +51,3 @@ public: private: void InitializeModApi(lua_State *L, int top); }; - -void log_deprecated(const std::string &message); |