X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;ds=sidebyside;f=lua%2Fuci.c;h=1535f56437ee06ac41ea99ad5c15275e16cb1464;hb=cac9b1d765338466c1c77719c4119c565689b4c4;hp=c209caeef6b8742965f686492c869b6c9b2c348c;hpb=3a32fc4d0a93fb811cac661ac273fe75346e8410;p=project%2Fuci.git diff --git a/lua/uci.c b/lua/uci.c index c209cae..1535f56 100644 --- a/lua/uci.c +++ b/lua/uci.c @@ -94,12 +94,21 @@ static void uci_push_section(lua_State *L, struct uci_section *s) lua_newtable(L); lua_pushstring(L, s->type); - lua_setfield(L, -2, ".TYPE"); + lua_setfield(L, -2, ".type"); + lua_pushstring(L, s->e.name); + lua_setfield(L, -2, ".name"); uci_foreach_element(&s->options, e) { struct uci_option *o = uci_to_option(e); - lua_pushstring(L, o->value); - lua_setfield(L, -2, o->e.name); + switch(o->type) { + case UCI_TYPE_STRING: + lua_pushstring(L, o->v.string); + lua_setfield(L, -2, o->e.name); + break; + default: + /* nothing to do yet */ + break; + } } } @@ -199,6 +208,7 @@ uci_lua_get_any(lua_State *L, bool all) { struct uci_element *e = NULL; struct uci_package *p = NULL; + struct uci_option *o = NULL; const char *package = NULL; const char *section = NULL; const char *option = NULL; @@ -252,7 +262,15 @@ uci_lua_get_any(lua_State *L, bool all) lua_pushstring(L, uci_to_section(e)->type); break; case UCI_TYPE_OPTION: - lua_pushstring(L, uci_to_option(e)->value); + o = uci_to_option(e); + switch(o->type) { + case UCI_TYPE_STRING: + lua_pushstring(L, o->v.string); + break; + default: + /* nothing to do yet */ + break; + } break; default: err = UCI_ERR_INVAL; @@ -526,12 +544,12 @@ uci_lua_add_change(lua_State *L, struct uci_element *e) lua_getfield(L, -1, h->section); if (lua_isnil(L, -1)) { lua_pop(L, 1); - lua_createtable(L, 0, 0); + lua_newtable(L); lua_pushvalue(L, -1); /* copy for setfield */ lua_setfield(L, -3, h->section); } - name = (h->e.name ? h->e.name : ".TYPE"); + name = (h->e.name ? h->e.name : ".type"); if (h->value) lua_pushstring(L, h->value); else @@ -558,7 +576,7 @@ uci_lua_changes_pkg(lua_State *L, const char *package) if (uci_list_empty(&p->history) && uci_list_empty(&p->saved_history)) goto done; - lua_createtable(L, 0, 0); + lua_newtable(L); uci_foreach_element(&p->saved_history, e) { uci_lua_add_change(L, e); } @@ -590,7 +608,7 @@ uci_lua_changes(lua_State *L) luaL_error(L, "invalid argument count"); } - lua_createtable(L, 0, 0); + lua_newtable(L); if (package) { uci_lua_changes_pkg(L, package); } else {