X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fuci.git;a=blobdiff_plain;f=lua%2Fuci.c;h=bdac3f6f5c13dd9892f5315bf9d7659fc23dd9c0;hp=2d3b9728b393efe8787c0933fe10231c6810b7ee;hb=64ef6b15fe3777b6c66e249ba770aec945d1d950;hpb=c0d8661d7ec87bd2cf06a496a0c4e50e61106747 diff --git a/lua/uci.c b/lua/uci.c index 2d3b972..bdac3f6 100644 --- a/lua/uci.c +++ b/lua/uci.c @@ -476,12 +476,8 @@ uci_lua_set(lua_State *L) goto error; } - err = uci_set(ctx, &ptr); - if (err) - goto error; - if (istable) { - for (i = 2; i <= lua_objlen(L, nargs); i++) { + for (i = 1; i <= lua_objlen(L, nargs); i++) { lua_rawgeti(L, nargs, i); ptr.value = luaL_checkstring(L, -1); err = uci_add_list(ctx, &ptr); @@ -489,8 +485,13 @@ uci_lua_set(lua_State *L) if (err) goto error; } + } else { + err = uci_set(ctx, &ptr); + if (err) + goto error; } + error: return uci_push_status(L, ctx, false); } @@ -691,6 +692,18 @@ uci_lua_get_savedir(lua_State *L) } static int +uci_lua_add_history(lua_State *L) +{ + struct uci_context *ctx; + int ret, offset = 0; + + ctx = find_context(L, &offset); + luaL_checkstring(L, 1 + offset); + ret = uci_add_history_path(ctx, lua_tostring(L, -1)); + return uci_push_status(L, ctx, false); +} + +static int uci_lua_set_savedir(lua_State *L) { struct uci_context *ctx; @@ -755,6 +768,7 @@ static const luaL_Reg uci[] = { { "revert", uci_lua_revert }, { "changes", uci_lua_changes }, { "foreach", uci_lua_foreach }, + { "add_history", uci_lua_add_history }, { "get_confdir", uci_lua_get_confdir }, { "set_confdir", uci_lua_set_confdir }, { "get_savedir", uci_lua_get_savedir },