diff options
author | Elias Fleckenstein <54945686+EliasFleckenstein03@users.noreply.github.com> | 2020-11-04 16:57:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-04 16:57:47 +0100 |
commit | 3e16c3a78fff61c20e63ba730d15e94e3bb877b4 (patch) | |
tree | c070350db219f2c4241d22bc31949685c7b42fe9 /src/script/lua_api/l_settings.cpp | |
parent | 5d9ae5a91c544fc7fbd475decf47cef7e09ef8fc (diff) | |
parent | 6ccb5835ff55d85156be91473c598eca9d6cb9a6 (diff) | |
download | dragonfireclient-3e16c3a78fff61c20e63ba730d15e94e3bb877b4.tar.xz |
Merge branch 'master' into master
Diffstat (limited to 'src/script/lua_api/l_settings.cpp')
-rw-r--r-- | src/script/lua_api/l_settings.cpp | 105 |
1 files changed, 61 insertions, 44 deletions
diff --git a/src/script/lua_api/l_settings.cpp b/src/script/lua_api/l_settings.cpp index cc4b23ee4..33eb02392 100644 --- a/src/script/lua_api/l_settings.cpp +++ b/src/script/lua_api/l_settings.cpp @@ -25,20 +25,23 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "noise.h" #include "log.h" -#define SET_SECURITY_CHECK(L, name) \ - if (o->m_settings == g_settings && ScriptApiSecurity::isSecure(L) && \ - name.compare(0, 7, "secure.") == 0) { \ - throw LuaError("Attempt to set secure setting."); \ + +#define SET_SECURITY_CHECK(L, name) \ + if (o->m_settings == g_settings && ScriptApiSecurity::isSecure(L) && \ + name.compare(0, 7, "secure.") == 0) { \ + throw LuaError("Attempt to set secure setting."); \ } LuaSettings::LuaSettings(Settings *settings, const std::string &filename) : - m_settings(settings), m_filename(filename) + m_settings(settings), + m_filename(filename) { } LuaSettings::LuaSettings(const std::string &filename, bool write_allowed) : - m_filename(filename), m_is_own_settings(true), - m_write_allowed(write_allowed) + m_filename(filename), + m_is_own_settings(true), + m_write_allowed(write_allowed) { m_settings = new Settings(); m_settings->readConfigFile(filename.c_str()); @@ -50,7 +53,9 @@ LuaSettings::~LuaSettings() delete m_settings; } -void LuaSettings::create(lua_State *L, Settings *settings, const std::string &filename) + +void LuaSettings::create(lua_State *L, Settings *settings, + const std::string &filename) { LuaSettings *o = new LuaSettings(settings, filename); *(void **)(lua_newuserdata(L, sizeof(void *))) = o; @@ -58,19 +63,21 @@ void LuaSettings::create(lua_State *L, Settings *settings, const std::string &fi lua_setmetatable(L, -2); } + // garbage collector -int LuaSettings::gc_object(lua_State *L) +int LuaSettings::gc_object(lua_State* L) { - LuaSettings *o = *(LuaSettings **)(lua_touserdata(L, 1)); + LuaSettings* o = *(LuaSettings **)(lua_touserdata(L, 1)); delete o; return 0; } + // get(self, key) -> value -int LuaSettings::l_get(lua_State *L) +int LuaSettings::l_get(lua_State* L) { NO_MAP_LOCK_REQUIRED; - LuaSettings *o = checkobject(L, 1); + LuaSettings* o = checkobject(L, 1); std::string key = std::string(luaL_checkstring(L, 2)); if (o->m_settings->exists(key)) { @@ -84,10 +91,10 @@ int LuaSettings::l_get(lua_State *L) } // get_bool(self, key) -> boolean -int LuaSettings::l_get_bool(lua_State *L) +int LuaSettings::l_get_bool(lua_State* L) { NO_MAP_LOCK_REQUIRED; - LuaSettings *o = checkobject(L, 1); + LuaSettings* o = checkobject(L, 1); std::string key = std::string(luaL_checkstring(L, 2)); if (o->m_settings->exists(key)) { @@ -146,13 +153,13 @@ int LuaSettings::l_get_flags(lua_State *L) } // set(self, key, value) -int LuaSettings::l_set(lua_State *L) +int LuaSettings::l_set(lua_State* L) { NO_MAP_LOCK_REQUIRED; - LuaSettings *o = checkobject(L, 1); + LuaSettings* o = checkobject(L, 1); std::string key = std::string(luaL_checkstring(L, 2)); - const char *value = luaL_checkstring(L, 3); + const char* value = luaL_checkstring(L, 3); SET_SECURITY_CHECK(L, key); @@ -163,10 +170,10 @@ int LuaSettings::l_set(lua_State *L) } // set_bool(self, key, value) -int LuaSettings::l_set_bool(lua_State *L) +int LuaSettings::l_set_bool(lua_State* L) { NO_MAP_LOCK_REQUIRED; - LuaSettings *o = checkobject(L, 1); + LuaSettings* o = checkobject(L, 1); std::string key = std::string(luaL_checkstring(L, 2)); bool value = readParam<bool>(L, 3); @@ -196,10 +203,10 @@ int LuaSettings::l_set_np_group(lua_State *L) } // remove(self, key) -> success -int LuaSettings::l_remove(lua_State *L) +int LuaSettings::l_remove(lua_State* L) { NO_MAP_LOCK_REQUIRED; - LuaSettings *o = checkobject(L, 1); + LuaSettings* o = checkobject(L, 1); std::string key = std::string(luaL_checkstring(L, 2)); @@ -212,15 +219,16 @@ int LuaSettings::l_remove(lua_State *L) } // get_names(self) -> {key1, ...} -int LuaSettings::l_get_names(lua_State *L) +int LuaSettings::l_get_names(lua_State* L) { NO_MAP_LOCK_REQUIRED; - LuaSettings *o = checkobject(L, 1); + LuaSettings* o = checkobject(L, 1); std::vector<std::string> keys = o->m_settings->getNames(); lua_newtable(L); - for (unsigned int i = 0; i < keys.size(); i++) { + for (unsigned int i=0; i < keys.size(); i++) + { lua_pushstring(L, keys[i].c_str()); lua_rawseti(L, -2, i + 1); } @@ -229,10 +237,10 @@ int LuaSettings::l_get_names(lua_State *L) } // write(self) -> success -int LuaSettings::l_write(lua_State *L) +int LuaSettings::l_write(lua_State* L) { NO_MAP_LOCK_REQUIRED; - LuaSettings *o = checkobject(L, 1); + LuaSettings* o = checkobject(L, 1); if (!o->m_write_allowed) { throw LuaError("Settings: writing " + o->m_filename + @@ -246,10 +254,10 @@ int LuaSettings::l_write(lua_State *L) } // to_table(self) -> {[key1]=value1,...} -int LuaSettings::l_to_table(lua_State *L) +int LuaSettings::l_to_table(lua_State* L) { NO_MAP_LOCK_REQUIRED; - LuaSettings *o = checkobject(L, 1); + LuaSettings* o = checkobject(L, 1); std::vector<std::string> keys = o->m_settings->getNames(); @@ -262,7 +270,8 @@ int LuaSettings::l_to_table(lua_State *L) return 1; } -void LuaSettings::Register(lua_State *L) + +void LuaSettings::Register(lua_State* L) { lua_newtable(L); int methodtable = lua_gettop(L); @@ -271,7 +280,7 @@ void LuaSettings::Register(lua_State *L) lua_pushliteral(L, "__metatable"); lua_pushvalue(L, methodtable); - lua_settable(L, metatable); // hide metatable from Lua getmetatable() + lua_settable(L, metatable); // hide metatable from Lua getmetatable() lua_pushliteral(L, "__index"); lua_pushvalue(L, methodtable); @@ -281,10 +290,10 @@ void LuaSettings::Register(lua_State *L) lua_pushcfunction(L, gc_object); lua_settable(L, metatable); - lua_pop(L, 1); // drop metatable + lua_pop(L, 1); // drop metatable - luaL_openlib(L, 0, methods, 0); // fill methodtable - lua_pop(L, 1); // drop methodtable + luaL_openlib(L, 0, methods, 0); // fill methodtable + lua_pop(L, 1); // drop methodtable // Can be created from Lua (Settings(filename)) lua_register(L, className, create_object); @@ -292,33 +301,41 @@ void LuaSettings::Register(lua_State *L) // LuaSettings(filename) // Creates a LuaSettings and leaves it on top of the stack -int LuaSettings::create_object(lua_State *L) +int LuaSettings::create_object(lua_State* L) { NO_MAP_LOCK_REQUIRED; bool write_allowed = true; - const char *filename = luaL_checkstring(L, 1); + const char* filename = luaL_checkstring(L, 1); CHECK_SECURE_PATH_POSSIBLE_WRITE(L, filename, &write_allowed); - LuaSettings *o = new LuaSettings(filename, write_allowed); + LuaSettings* o = new LuaSettings(filename, write_allowed); *(void **)(lua_newuserdata(L, sizeof(void *))) = o; luaL_getmetatable(L, className); lua_setmetatable(L, -2); return 1; } -LuaSettings *LuaSettings::checkobject(lua_State *L, int narg) +LuaSettings* LuaSettings::checkobject(lua_State* L, int narg) { NO_MAP_LOCK_REQUIRED; luaL_checktype(L, narg, LUA_TUSERDATA); void *ud = luaL_checkudata(L, narg, className); if (!ud) luaL_typerror(L, narg, className); - return *(LuaSettings **)ud; // unbox pointer + return *(LuaSettings**) ud; // unbox pointer } const char LuaSettings::className[] = "Settings"; -const luaL_Reg LuaSettings::methods[] = {luamethod(LuaSettings, get), - luamethod(LuaSettings, get_bool), luamethod(LuaSettings, get_np_group), - luamethod(LuaSettings, get_flags), luamethod(LuaSettings, set), - luamethod(LuaSettings, set_bool), luamethod(LuaSettings, set_np_group), - luamethod(LuaSettings, remove), luamethod(LuaSettings, get_names), - luamethod(LuaSettings, write), luamethod(LuaSettings, to_table), {0, 0}}; +const luaL_Reg LuaSettings::methods[] = { + luamethod(LuaSettings, get), + luamethod(LuaSettings, get_bool), + luamethod(LuaSettings, get_np_group), + luamethod(LuaSettings, get_flags), + luamethod(LuaSettings, set), + luamethod(LuaSettings, set_bool), + luamethod(LuaSettings, set_np_group), + luamethod(LuaSettings, remove), + luamethod(LuaSettings, get_names), + luamethod(LuaSettings, write), + luamethod(LuaSettings, to_table), + {0,0} +}; |