X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=lua%2Fuci.c;h=67ec67181d6804bc875949623d6539dd904b6976;hb=e7fa4a3ed877978a95c25605aa5f1a8beb35b573;hp=d16a0fd818e3e48fa97409d9211977f9e6b10d15;hpb=93da237dc09c31ef3c6db462de0845addf8a87f6;p=project%2Fuci.git diff --git a/lua/uci.c b/lua/uci.c index d16a0fd..67ec671 100644 --- a/lua/uci.c +++ b/lua/uci.c @@ -121,11 +121,11 @@ lookup_args(lua_State *L, struct uci_context *ctx, int offset, struct uci_ptr *p case 2: ptr->section = luaL_checkstring(L, 2 + offset); ptr->package = luaL_checkstring(L, 1 + offset); - if (uci_lookup_ptr(ctx, ptr, NULL, false) != UCI_OK) + if (uci_lookup_ptr(ctx, ptr, NULL, true) != UCI_OK) goto error; break; case 1: - if (uci_lookup_ptr(ctx, ptr, s, false) != UCI_OK) + if (uci_lookup_ptr(ctx, ptr, s, true) != UCI_OK) goto error; break; default: @@ -266,7 +266,7 @@ uci_lua_foreach(lua_State *L) { struct uci_context *ctx; struct uci_package *p; - struct uci_element *e; + struct uci_element *e, *tmp; const char *package, *type; bool ret = false; int offset = 0; @@ -287,7 +287,7 @@ uci_lua_foreach(lua_State *L) if (!p) goto done; - uci_foreach_element(&p->sections, e) { + uci_foreach_element_safe(&p->sections, tmp, e) { struct uci_section *s = uci_to_section(e); i++; @@ -302,6 +302,11 @@ uci_lua_foreach(lua_State *L) if (lua_isboolean(L, -1) && !lua_toboolean(L, -1)) break; } + else + { + lua_error(L); + break; + } } done: @@ -324,7 +329,7 @@ uci_lua_get_any(lua_State *L, bool all) if (lookup_args(L, ctx, offset, &ptr, &s)) goto error; - uci_lookup_ptr(ctx, &ptr, NULL, false); + uci_lookup_ptr(ctx, &ptr, NULL, true); if (!all && !ptr.s) { err = UCI_ERR_INVAL; goto error; @@ -413,14 +418,13 @@ uci_lua_delete(lua_State *L) struct uci_ptr ptr; int offset = 0; char *s = NULL; - int err = UCI_ERR_NOTFOUND; ctx = find_context(L, &offset); if (lookup_args(L, ctx, offset, &ptr, &s)) goto error; - err = uci_delete(ctx, &ptr); + uci_delete(ctx, &ptr); error: if (s) @@ -460,7 +464,7 @@ uci_lua_rename(lua_State *L) goto error; } - err = uci_lookup_ptr(ctx, &ptr, NULL, false); + err = uci_lookup_ptr(ctx, &ptr, NULL, true); if (err) goto error; @@ -509,7 +513,7 @@ uci_lua_reorder(lua_State *L) goto error; } - err = uci_lookup_ptr(ctx, &ptr, NULL, false); + err = uci_lookup_ptr(ctx, &ptr, NULL, true); if (err) goto error; @@ -569,7 +573,7 @@ uci_lua_set(lua_State *L) goto error; } - err = uci_lookup_ptr(ctx, &ptr, NULL, false); + err = uci_lookup_ptr(ctx, &ptr, NULL, true); if (err) goto error; @@ -622,7 +626,6 @@ uci_lua_package_cmd(lua_State *L, enum pkg_cmd cmd) struct uci_element *e, *tmp; struct uci_ptr ptr; char *s = NULL; - int failed = 0; int nargs, offset = 0; ctx = find_context(L, &offset); @@ -633,11 +636,10 @@ uci_lua_package_cmd(lua_State *L, enum pkg_cmd cmd) if (lookup_args(L, ctx, offset, &ptr, &s)) goto err; - uci_lookup_ptr(ctx, &ptr, NULL, false); + uci_lookup_ptr(ctx, &ptr, NULL, true); uci_foreach_element_safe(&ctx->root, tmp, e) { struct uci_package *p = uci_to_package(e); - int ret = UCI_ERR_INVAL; if (ptr.p && (ptr.p != p)) continue; @@ -645,18 +647,15 @@ uci_lua_package_cmd(lua_State *L, enum pkg_cmd cmd) ptr.p = p; switch(cmd) { case CMD_COMMIT: - ret = uci_commit(ctx, &p, false); + uci_commit(ctx, &p, false); break; case CMD_SAVE: - ret = uci_save(ctx, p); + uci_save(ctx, p); break; case CMD_REVERT: - ret = uci_revert(ctx, &ptr); + uci_revert(ctx, &ptr); break; } - - if (ret != 0) - failed = 1; } err: @@ -684,10 +683,10 @@ uci_lua_revert(lua_State *L) static void uci_lua_add_change(lua_State *L, struct uci_element *e) { - struct uci_history *h; + struct uci_delta *h; const char *name; - h = uci_to_history(e); + h = uci_to_delta(e); if (!h->section) return; @@ -723,14 +722,14 @@ uci_lua_changes_pkg(lua_State *L, struct uci_context *ctx, const char *package) return; } - if (uci_list_empty(&p->history) && uci_list_empty(&p->saved_history)) + if (uci_list_empty(&p->delta) && uci_list_empty(&p->saved_delta)) goto done; lua_newtable(L); - uci_foreach_element(&p->saved_history, e) { + uci_foreach_element(&p->saved_delta, e) { uci_lua_add_change(L, e); } - uci_foreach_element(&p->history, e) { + uci_foreach_element(&p->delta, e) { uci_lua_add_change(L, e); } lua_setfield(L, -2, p->e.name); @@ -788,11 +787,11 @@ static int uci_lua_set_confdir(lua_State *L) { struct uci_context *ctx; - int ret, offset = 0; + int offset = 0; ctx = find_context(L, &offset); luaL_checkstring(L, 1 + offset); - ret = uci_set_confdir(ctx, lua_tostring(L, -1)); + uci_set_confdir(ctx, lua_tostring(L, -1)); return uci_push_status(L, ctx, false); } @@ -805,14 +804,14 @@ uci_lua_get_savedir(lua_State *L) } static int -uci_lua_add_history(lua_State *L) +uci_lua_add_delta(lua_State *L) { struct uci_context *ctx; - int ret, offset = 0; + int offset = 0; ctx = find_context(L, &offset); luaL_checkstring(L, 1 + offset); - ret = uci_add_history_path(ctx, lua_tostring(L, -1)); + uci_add_delta_path(ctx, lua_tostring(L, -1)); return uci_push_status(L, ctx, false); } @@ -820,13 +819,13 @@ static int uci_lua_load_plugins(lua_State *L) { struct uci_context *ctx; - int ret, offset = 0; + int offset = 0; const char *str = NULL; ctx = find_context(L, &offset); if (lua_isstring(L, -1)) str = lua_tostring(L, -1); - ret = uci_load_plugins(ctx, str); + uci_load_plugins(ctx, str); return uci_push_status(L, ctx, false); } @@ -834,11 +833,11 @@ static int uci_lua_set_savedir(lua_State *L) { struct uci_context *ctx; - int ret, offset = 0; + int offset = 0; ctx = find_context(L, &offset); luaL_checkstring(L, 1 + offset); - ret = uci_set_savedir(ctx, lua_tostring(L, -1)); + uci_set_savedir(ctx, lua_tostring(L, -1)); return uci_push_status(L, ctx, false); } @@ -897,7 +896,8 @@ static const luaL_Reg uci[] = { { "reorder", uci_lua_reorder }, { "changes", uci_lua_changes }, { "foreach", uci_lua_foreach }, - { "add_history", uci_lua_add_history }, + { "add_history", uci_lua_add_delta }, + { "add_delta", uci_lua_add_delta }, { "load_plugins", uci_lua_load_plugins }, { "get_confdir", uci_lua_get_confdir }, { "set_confdir", uci_lua_set_confdir },