From d463d0b8357764ca9018549fa624c428f56fcd87 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Wed, 27 Aug 2008 08:53:40 +0000 Subject: [PATCH] Renamed reworked UCI API to uci2 to allow a peaceful coexistence with the old one Minor bugfixes --- contrib/package/luci/Makefile | 5 +-- contrib/uci/Makefile | 2 +- contrib/uci/patches/200-revised-lua-api.patch | 45 ++++++++++--------- libs/cbi/luasrc/cbi.lua | 3 +- libs/http/luasrc/http/protocol.lua | 1 + libs/httpd/host/runluci | 6 +-- libs/httpd/luasrc/httpd/handler/luci.lua | 4 -- libs/sgi-webuci/root/usr/lib/boa/luci.lua | 4 +- libs/uci/luasrc/model/uci.lua | 2 +- .../model/cbi/admin_network/network.lua | 1 + 10 files changed, 36 insertions(+), 37 deletions(-) diff --git a/contrib/package/luci/Makefile b/contrib/package/luci/Makefile index d2fceedc9..0b178b08b 100644 --- a/contrib/package/luci/Makefile +++ b/contrib/package/luci/Makefile @@ -102,7 +102,6 @@ define Package/luci-core $(call Package/luci/libtemplate) DEPENDS:=+lua +luaposix +bitlib TITLE:=LuCI core libraries - SUBMENU:=!!! DISABLE Libraries -> libuci-lua !!! IT WILL BREAK LUCI !!! endef define Package/luci-core/install @@ -149,14 +148,14 @@ endef define Package/luci-uci $(call Package/luci/libtemplate) - DEPENDS+=+libuci @!PACKAGE_libuci-lua + DEPENDS+=+libuci TITLE:=High-Level UCI API endef define Package/luci-uci/install $(call Package/luci/install/template,$(1),libs/uci) $(INSTALL_DIR) $(1)/usr/lib/lua - $(CP) $(PKG_BUILD_DIR)/contrib/uci/dist/usr/lib/lua/uci.so $(1)/usr/lib/lua + $(CP) $(PKG_BUILD_DIR)/contrib/uci/dist/usr/lib/lua/uci2.so $(1)/usr/lib/lua endef diff --git a/contrib/uci/Makefile b/contrib/uci/Makefile index bce79ebc3..1363b786f 100644 --- a/contrib/uci/Makefile +++ b/contrib/uci/Makefile @@ -53,7 +53,7 @@ compile: $(UCI_DIR)/.patched $(MAKE) -C $(UCI_DIR) install DESTDIR=../dist prefix=/usr $(MAKE) -C $(UCI_DIR)/lua CC=$(CC) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" OS="$(OS)" $(MAKE) -C $(UCI_DIR)/lua install DESTDIR=../../dist luadir=$(LUA_LIBRARYDIR) - + mv dist$(LUA_LIBRARYDIR)/uci.so dist$(LUA_LIBRARYDIR)/uci2.so compile-all: compile diff --git a/contrib/uci/patches/200-revised-lua-api.patch b/contrib/uci/patches/200-revised-lua-api.patch index c31c1454c..c464941cf 100644 --- a/contrib/uci/patches/200-revised-lua-api.patch +++ b/contrib/uci/patches/200-revised-lua-api.patch @@ -1,12 +1,14 @@ Index: uci.git/lua/uci.c =================================================================== --- uci.git.orig/lua/uci.c 2008-08-26 12:31:34.000000000 +0200 -+++ uci.git/lua/uci.c 2008-08-27 00:30:46.000000000 +0200 -@@ -25,6 +25,7 @@ ++++ uci.git/lua/uci.c 2008-08-27 10:27:29.000000000 +0200 +@@ -24,7 +24,8 @@ + #include #include - #define MODNAME "uci" -+#define CURSOR_META "uci.cursor.meta" +-#define MODNAME "uci" ++#define MODNAME "uci2" ++#define CURSOR_META "uci2.cursor.meta" //#define DEBUG 1 #ifdef DEBUG @@ -286,7 +288,7 @@ Index: uci.git/lua/uci.c if (!p) break; -@@ -374,11 +429,12 @@ +@@ -374,11 +429,11 @@ static int uci_lua_delete(lua_State *L) { @@ -294,13 +296,13 @@ Index: uci.git/lua/uci.c struct uci_ptr ptr; char *s = NULL; int err = UCI_ERR_NOTFOUND; - +- - if (lookup_args(L, &ptr, &s)) + if (lookup_args(L, ctx, &ptr, &s)) goto error; err = uci_delete(ctx, &ptr); -@@ -387,7 +443,7 @@ +@@ -387,7 +442,7 @@ if (s) free(s); if (err) @@ -309,7 +311,7 @@ Index: uci.git/lua/uci.c lua_pushboolean(L, (err == 0)); return 1; } -@@ -395,6 +451,7 @@ +@@ -395,6 +450,7 @@ static int uci_lua_set(lua_State *L) { @@ -317,7 +319,7 @@ Index: uci.git/lua/uci.c bool istable = false; struct uci_ptr ptr; int err = UCI_ERR_MEM; -@@ -402,14 +459,14 @@ +@@ -402,14 +458,14 @@ int i, nargs; nargs = lua_gettop(L); @@ -335,7 +337,7 @@ Index: uci.git/lua/uci.c /* Format: uci.set("p", "s", "o", "v") */ if (lua_istable(L, nargs)) { if (lua_objlen(L, nargs) < 1) -@@ -422,7 +479,7 @@ +@@ -422,7 +478,7 @@ ptr.value = luaL_checkstring(L, nargs); } break; @@ -344,7 +346,7 @@ Index: uci.git/lua/uci.c /* Format: uci.set("p", "s", "v") */ ptr.value = ptr.option; ptr.option = NULL; -@@ -433,17 +490,23 @@ +@@ -433,17 +489,23 @@ } err = uci_lookup_ptr(ctx, &ptr, NULL, false); @@ -371,7 +373,7 @@ Index: uci.git/lua/uci.c if (istable) { for (i = 2; i <= lua_objlen(L, nargs); i++) { -@@ -458,7 +521,7 @@ +@@ -458,7 +520,7 @@ error: if (err) @@ -380,7 +382,7 @@ Index: uci.git/lua/uci.c lua_pushboolean(L, (err == 0)); return 1; } -@@ -472,6 +535,7 @@ +@@ -472,6 +534,7 @@ static int uci_lua_package_cmd(lua_State *L, enum pkg_cmd cmd) { @@ -388,7 +390,7 @@ Index: uci.git/lua/uci.c struct uci_element *e, *tmp; struct uci_ptr ptr; char *s = NULL; -@@ -479,10 +543,10 @@ +@@ -479,10 +542,10 @@ int nargs; nargs = lua_gettop(L); @@ -401,7 +403,7 @@ Index: uci.git/lua/uci.c goto err; uci_lookup_ptr(ctx, &ptr, NULL, false); -@@ -562,16 +626,16 @@ +@@ -562,16 +625,16 @@ } static void @@ -421,7 +423,7 @@ Index: uci.git/lua/uci.c if (!p) return; } -@@ -596,6 +660,7 @@ +@@ -596,6 +659,7 @@ static int uci_lua_changes(lua_State *L) { @@ -429,7 +431,7 @@ Index: uci.git/lua/uci.c const char *package = NULL; char **config = NULL; int nargs; -@@ -603,9 +668,9 @@ +@@ -603,9 +667,9 @@ nargs = lua_gettop(L); switch(nargs) { @@ -441,7 +443,7 @@ Index: uci.git/lua/uci.c break; default: luaL_error(L, "invalid argument count"); -@@ -613,13 +678,13 @@ +@@ -613,13 +677,13 @@ lua_newtable(L); if (package) { @@ -457,7 +459,7 @@ Index: uci.git/lua/uci.c } } -@@ -628,29 +693,53 @@ +@@ -628,29 +692,53 @@ } static int @@ -514,7 +516,7 @@ Index: uci.git/lua/uci.c { "load", uci_lua_load }, { "unload", uci_lua_unload }, { "get", uci_lua_get }, -@@ -663,25 +752,33 @@ +@@ -663,25 +751,33 @@ { "revert", uci_lua_revert }, { "changes", uci_lua_changes }, { "foreach", uci_lua_foreach }, @@ -527,7 +529,8 @@ Index: uci.git/lua/uci.c - int - luaopen_uci(lua_State *L) +-luaopen_uci(lua_State *L) ++luaopen_uci2(lua_State *L) { - ctx = uci_alloc_context(); - if (!ctx) diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua index 9393c46a4..12bf18c2a 100644 --- a/libs/cbi/luasrc/cbi.lua +++ b/libs/cbi/luasrc/cbi.lua @@ -29,10 +29,9 @@ module("luci.cbi", package.seeall) require("luci.template") require("luci.util") require("luci.http") -require("luci.model.uci") require("luci.uvl") -local uci = luci.model.uci +local uci = require("luci.model.uci") local class = luci.util.class local instanceof = luci.util.instanceof diff --git a/libs/http/luasrc/http/protocol.lua b/libs/http/luasrc/http/protocol.lua index c80380e97..fd0a046f6 100644 --- a/libs/http/luasrc/http/protocol.lua +++ b/libs/http/luasrc/http/protocol.lua @@ -672,6 +672,7 @@ end statusmsg = { [200] = "OK", [301] = "Moved Permanently", + [302] = "Found", [304] = "Not Modified", [400] = "Bad Request", [403] = "Forbidden", diff --git a/libs/httpd/host/runluci b/libs/httpd/host/runluci index 5a7e8fd6f..f150cae8d 100755 --- a/libs/httpd/host/runluci +++ b/libs/httpd/host/runluci @@ -17,9 +17,9 @@ vhost = luci.httpd.server.VHost() server:set_default_vhost(vhost) -if pcall(require, "uci") and pcall(require, "luci.model.uci") then - luci.model.uci.cursor = function(config, ...) - return uci.cursor(config or SYSROOT .. "/etc/config", ...) +if pcall(require, "uci2") and pcall(require, "luci.model.uci") then + luci.model.uci.cursor = function(config, save) + return uci2.cursor(config or SYSROOT .. "/etc/config", save or SYSROOT .. "/tmp/.uci") end end diff --git a/libs/httpd/luasrc/httpd/handler/luci.lua b/libs/httpd/luasrc/httpd/handler/luci.lua index ac3ed78d0..320ab4c10 100644 --- a/libs/httpd/luasrc/httpd/handler/luci.lua +++ b/libs/httpd/luasrc/httpd/handler/luci.lua @@ -93,9 +93,5 @@ function Luci.handle_get(self, request, sourcein, sinkerr) end end - headers["Expires"] = luci.http.protocol.date.to_http( os.time() ) - headers["Date"] = headers["Expires"] - headers["Cache-Control"] = "no-cache" - return Response(status, headers), iter end diff --git a/libs/sgi-webuci/root/usr/lib/boa/luci.lua b/libs/sgi-webuci/root/usr/lib/boa/luci.lua index c7ac16845..387d577d6 100644 --- a/libs/sgi-webuci/root/usr/lib/boa/luci.lua +++ b/libs/sgi-webuci/root/usr/lib/boa/luci.lua @@ -25,8 +25,8 @@ function init(path) if (root ~= '/') then -- Entering dummy mode luci.model.uci.cursor = function(config, ...) - return uci.cursor(config or root .. "/etc/config", ...) - end + return uci2.cursor(config or root .. "/etc/config", ...) + end luci.sys.hostname = function() return "" end luci.sys.loadavg = function() return 0,0,0,0,0 end diff --git a/libs/uci/luasrc/model/uci.lua b/libs/uci/luasrc/model/uci.lua index 333abf407..de885808a 100644 --- a/libs/uci/luasrc/model/uci.lua +++ b/libs/uci/luasrc/model/uci.lua @@ -23,7 +23,7 @@ See the License for the specific language governing permissions and limitations under the License. ]]-- -local uci = require "uci" +local uci = require "uci2" local util = require "luci.util" local table = require "table" diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/network.lua b/modules/admin-full/luasrc/model/cbi/admin_network/network.lua index c32aea891..fce84fe3f 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_network/network.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_network/network.lua @@ -39,6 +39,7 @@ end function s.parse(self, ...) TypedSection.parse(self, ...) if created then + m.uci:save("network") luci.http.redirect(luci.dispatcher.build_url("admin", "network", "network") .. "/" .. created) end -- 2.25.1