blob: c003ef5ce869deca9a901d1d348d8c9c8d54a998 [file] [log] [blame]
From 24b5aae13f1fe1ae90eab5fbd8e62df72681d065 Mon Sep 17 00:00:00 2001
From: sah4009 <peter.deherdt@softathome.com>
Date: Mon, 16 Sep 2019 09:22:16 +0000
Subject: [PATCH] Lua 5.3 support
---
lua/CMakeLists.txt | 3 ++-
lua/ubus.c | 23 +++++++++++++++++++----
2 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/lua/CMakeLists.txt b/lua/CMakeLists.txt
index e4821bf..5dae67a 100644
--- a/lua/CMakeLists.txt
+++ b/lua/CMakeLists.txt
@@ -8,7 +8,7 @@ IF(NOT LUA_CFLAGS)
FIND_PROGRAM(PKG_CONFIG pkg-config)
IF(PKG_CONFIG)
EXECUTE_PROCESS(
- COMMAND pkg-config --silence-errors --cflags lua5.1
+ COMMAND pkg-config --silence-errors --cflags lua5.3
OUTPUT_VARIABLE LUA_CFLAGS
OUTPUT_STRIP_TRAILING_WHITESPACE
)
@@ -45,6 +45,7 @@ IF(BUILD_LUA)
PREFIX ""
)
TARGET_LINK_LIBRARIES(ubus_lua ubus)
+ TARGET_LINK_LIBRARIES(ubus_lua -llua)
INSTALL(TARGETS ubus_lua
LIBRARY DESTINATION ${LUAPATH}
diff --git a/lua/ubus.c b/lua/ubus.c
index 86dcc50..6d7ba00 100644
--- a/lua/ubus.c
+++ b/lua/ubus.c
@@ -23,6 +23,11 @@
#define MODNAME "ubus"
#define METANAME MODNAME ".meta"
+#if LUA_VERSION_NUM > 501
+#define luaL_optint luaL_optinteger
+#define lua_objlen lua_rawlen
+#endif
+
static lua_State *state;
struct ubus_lua_connection {
@@ -275,7 +280,7 @@ ubus_lua_objects_cb(struct ubus_context *c, struct ubus_object_data *o, void *p)
lua_State *L = (lua_State *)p;
lua_pushstring(L, o->path);
- lua_rawseti(L, -2, lua_objlen(L, -2) + 1);
+ lua_rawseti(L, -2, lua_rawlen(L, -2) + 1);
}
static int
@@ -572,11 +577,11 @@ static int ubus_lua_add(lua_State *L)
if (obj){
ubus_add_object(c->ctx, obj);
- /* allow future reference of ubus obj */
+ /* allow future reference of ubus obj */
lua_pushstring(state,"__ubusobj");
lua_pushlightuserdata(state, obj);
lua_settable(state,-3);
- }
+ }
}
lua_pop(L, 1);
}
@@ -973,11 +978,21 @@ luaopen_ubus(lua_State *L)
lua_setfield(L, -2, "__index");
/* fill metatable */
+#if LUA_VERSION_NUM > 501
+ luaL_setfuncs(L, ubus, 0);
+#else
luaL_register(L, NULL, ubus);
- lua_pop(L, 1);
+#endif
/* create module */
+#if LUA_VERSION_NUM > 501
+ lua_newtable(L);
+ luaL_setfuncs (L, ubus, 0);
+ lua_pushvalue(L, -1);
+ lua_setglobal(L, MODNAME);
+#else
luaL_register(L, MODNAME, ubus);
+#endif
/* set some enum defines */
lua_pushinteger(L, BLOBMSG_TYPE_ARRAY);
--
2.26.2