diff options
Diffstat (limited to 'src/script/lua_api/l_settings.cpp')
-rw-r--r-- | src/script/lua_api/l_settings.cpp | 105 |
1 files changed, 44 insertions, 61 deletions
diff --git a/src/script/lua_api/l_settings.cpp b/src/script/lua_api/l_settings.cpp index 33eb02392..cc4b23ee4 100644 --- a/src/script/lua_api/l_settings.cpp +++ b/src/script/lua_api/l_settings.cpp @@ -25,23 +25,20 @@ 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()); @@ -53,9 +50,7 @@ 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; @@ -63,21 +58,19 @@ void LuaSettings::create(lua_State *L, Settings *settings, 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)) { @@ -91,10 +84,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)) { @@ -153,13 +146,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); @@ -170,10 +163,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); @@ -203,10 +196,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)); @@ -219,16 +212,15 @@ 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); } @@ -237,10 +229,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 + @@ -254,10 +246,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(); @@ -270,8 +262,7 @@ 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); @@ -280,7 +271,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); @@ -290,10 +281,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); @@ -301,41 +292,33 @@ 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}}; |