summaryrefslogtreecommitdiff
path: root/plugins/MirLua
diff options
context:
space:
mode:
authorAlexander Lantsev <aunsane@gmail.com>2016-01-14 20:53:02 +0000
committerAlexander Lantsev <aunsane@gmail.com>2016-01-14 20:53:02 +0000
commit069eaba45e1f12ba72939ae735e4fa493df5b02b (patch)
tree216f81af50c33194c50c4f333577dec1c62fdda4 /plugins/MirLua
parent55ca0ecfa502004ebb473cb5997d9985c0547d33 (diff)
MirLua: extended WriteSetting in m_database
git-svn-id: http://svn.miranda-ng.org/main/trunk@16091 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/MirLua')
-rw-r--r--plugins/MirLua/src/m_database.cpp70
-rw-r--r--plugins/MirLua/src/mlua_script.cpp2
2 files changed, 46 insertions, 26 deletions
diff --git a/plugins/MirLua/src/m_database.cpp b/plugins/MirLua/src/m_database.cpp
index 2c0f89a695..57846c99de 100644
--- a/plugins/MirLua/src/m_database.cpp
+++ b/plugins/MirLua/src/m_database.cpp
@@ -321,29 +321,56 @@ static int lua_WriteSetting(lua_State *L)
LPCSTR szSetting = luaL_checkstring(L, 3);
DBVARIANT dbv = { 0 };
- int type = lua_type(L, 4);
- switch (type)
+ if (lua_isnoneornil(L, 5))
{
- case LUA_TBOOLEAN:
- dbv.bVal = lua_toboolean(L, 4);
- dbv.type = DBVT_BYTE;
- break;
- case LUA_TNUMBER:
- dbv.dVal = lua_tonumber(L, 4);
- dbv.type = DBVT_DWORD;
- break;
- case LUA_TSTRING:
- dbv.pszVal = (char*)lua_tostring(L, 4);
- dbv.type = DBVT_UTF8;
- break;
- case LUA_TTABLE:
+ int type = lua_type(L, 4);
+ switch (type)
{
+ case LUA_TBOOLEAN:
+ dbv.type = DBVT_BYTE;
+ break;
+ case LUA_TNUMBER:
+ dbv.type = DBVT_DWORD;
+ break;
+ case LUA_TSTRING:
+ dbv.type = DBVT_UTF8;
+ break;
+ case LUA_TTABLE:
dbv.type = DBVT_BLOB;
- dbv.cpbVal = luaM_table_to_bytearray(L, 4, &(dbv.pbVal));
+ break;
+ default:
+ lua_pushboolean(L, false);
+ return 1;
}
+ }
+ else
+ dbv.type = luaL_checkinteger(L, 5);
+
+ switch (dbv.type)
+ {
+ case DBVT_BYTE:
+ dbv.bVal = lua_isboolean(L, 4)
+ ? lua_toboolean(L, 4)
+ : luaL_checknumber(L, 4);
+ break;
+ case DBVT_WORD:
+ dbv.wVal = luaL_checknumber(L, 4);
+ break;
+ case DBVT_DWORD:
+ dbv.dVal = luaL_checknumber(L, 4);
+ break;
+ case DBVT_UTF8:
+ dbv.pszVal = mir_strdup(luaL_checkstring(L, 4));
+ case DBVT_ASCIIZ:
+ dbv.pszVal = mir_utf8decodeA(luaL_checkstring(L, 4));
+ case DBVT_WCHAR:
+ dbv.pwszVal = mir_utf8decodeW(luaL_checkstring(L, 4));
+ break;
+ case DBVT_BLOB:
+ dbv.cpbVal = (WORD)luaM_table_to_bytearray(L, 4, &(dbv.pbVal));
break;
default:
- lua_pushinteger(L, 1);
+ lua_pushboolean(L, false);
return 1;
}
@@ -533,7 +560,7 @@ void MT<CONTACTINFO>::Init(lua_State *L, CONTACTINFO **ci)
hContact = (MCONTACT)lua_touserdata(L, 1);
break;
default:
- const char *msg = lua_pushfstring(L, "hContact expected, got %s", lua_typename(L, lua_type(L, 1)));
+ const char *msg = lua_pushfstring(L, "hContact expected, got %s", luaL_typename(L, 1));
luaL_argerror(L, 1, msg);
}
@@ -629,13 +656,6 @@ static int ci__index(lua_State *L)
/***********************************************/
-static int dbei__test(lua_State *L)
-{
- int type = lua_type(L, 1);
-
- return 0;
-}
-
LUAMOD_API int luaopen_m_database(lua_State *L)
{
luaL_newlib(L, databaseApi);
diff --git a/plugins/MirLua/src/mlua_script.cpp b/plugins/MirLua/src/mlua_script.cpp
index 27f972aaf4..3023d8c71e 100644
--- a/plugins/MirLua/src/mlua_script.cpp
+++ b/plugins/MirLua/src/mlua_script.cpp
@@ -97,7 +97,7 @@ void CMLuaScript::Unload()
if (lua_isfunction(L, -1))
luaM_pcall(L);
luaL_unref(L, LUA_REGISTRYINDEX, unloadRef);
- status == None;
+ status = None;
}
luaL_getsubtable(L, LUA_REGISTRYINDEX, "_LOADED");