summaryrefslogtreecommitdiffstats
path: root/src/lua
diff options
context:
space:
mode:
Diffstat (limited to 'src/lua')
-rw-r--r--src/lua/lua_config.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/lua/lua_config.c b/src/lua/lua_config.c
index ae1f9b0f0..3d3270984 100644
--- a/src/lua/lua_config.c
+++ b/src/lua/lua_config.c
@@ -429,6 +429,7 @@ lua_config_get_all_opt (lua_State * L)
const gchar *mname;
const ucl_object_t *obj, *cur, *cur_elt;
ucl_object_iter_t it = NULL;
+ gint i;
if (cfg) {
mname = luaL_checkstring (L, 2);
@@ -436,7 +437,8 @@ lua_config_get_all_opt (lua_State * L)
if (mname) {
obj = ucl_obj_get_key (cfg->rcl_obj, mname);
/* Flatten object */
- if (obj != NULL && ucl_object_type (obj) == UCL_OBJECT) {
+ if (obj != NULL && (ucl_object_type (obj) == UCL_OBJECT ||
+ ucl_object_type (obj) == UCL_ARRAY)) {
lua_newtable (L);
it = ucl_object_iterate_new (obj);
@@ -455,6 +457,18 @@ lua_config_get_all_opt (lua_State * L)
return 1;
}
+ else if (obj != NULL) {
+ lua_newtable (L);
+ i = 1;
+
+ LL_FOREACH (obj, cur) {
+ lua_pushnumber (L, i++);
+ ucl_object_push_lua (L, cur, true);
+ lua_settable (L, -3);
+ }
+
+ return 1;
+ }
}
}
lua_pushnil (L);