projects
/
project
/
uci.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add initial work for option datatype abstraction
[project/uci.git]
/
lua
/
uci.c
diff --git
a/lua/uci.c
b/lua/uci.c
index
c209cae
..
1535f56
100644
(file)
--- 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_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);
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_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;
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_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;
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_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);
}
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
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;
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);
}
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");
}
luaL_error(L, "invalid argument count");
}
- lua_
createtable(L, 0, 0
);
+ lua_
newtable(L
);
if (package) {
uci_lua_changes_pkg(L, package);
} else {
if (package) {
uci_lua_changes_pkg(L, package);
} else {