X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=lua%2Fuci.c;fp=lua%2Fuci.c;h=ddb9c5cc23c1db81348f7a2091a2ca5e250d3d73;hb=7daf94275cce4c9dd74fe4eb846b0f4d40486f1d;hp=47d59c883ab9320b39304fdd46297576c3550fa1;hpb=fe45f97302cb9cab70b6dcadfc5fde260b2212e9;p=project%2Fuci.git diff --git a/lua/uci.c b/lua/uci.c index 47d59c8..ddb9c5c 100644 --- a/lua/uci.c +++ b/lua/uci.c @@ -910,6 +910,26 @@ uci_lua_set_savedir(lua_State *L) return uci_push_status(L, ctx, false); } +static int +uci_lua_list_configs(lua_State *L) +{ + struct uci_context *ctx; + char **configs = NULL; + char **ptr; + int i = 1; + + ctx = find_context(L, NULL); + if ((uci_list_configs(ctx, &configs) != UCI_OK) || !configs) + return uci_push_status(L, ctx, false); + lua_newtable(L); + for (ptr = configs; *ptr; ptr++) { + lua_pushstring(L, *ptr); + lua_rawseti(L, -2, i++); + } + free(configs); + return 1; +} + static int uci_lua_gc(lua_State *L) { @@ -971,6 +991,7 @@ static const luaL_Reg uci[] = { { "set_confdir", uci_lua_set_confdir }, { "get_savedir", uci_lua_get_savedir }, { "set_savedir", uci_lua_set_savedir }, + { "list_configs", uci_lua_list_configs }, { NULL, NULL }, };