Renamed reworked UCI API to uci2 to allow a peaceful coexistence with the old one
authorSteven Barth <steven@midlink.org>
Wed, 27 Aug 2008 08:53:40 +0000 (08:53 +0000)
committerSteven Barth <steven@midlink.org>
Wed, 27 Aug 2008 08:53:40 +0000 (08:53 +0000)
Minor bugfixes

contrib/package/luci/Makefile
contrib/uci/Makefile
contrib/uci/patches/200-revised-lua-api.patch
libs/cbi/luasrc/cbi.lua
libs/http/luasrc/http/protocol.lua
libs/httpd/host/runluci
libs/httpd/luasrc/httpd/handler/luci.lua
libs/sgi-webuci/root/usr/lib/boa/luci.lua
libs/uci/luasrc/model/uci.lua
modules/admin-full/luasrc/model/cbi/admin_network/network.lua

index d2fceedc91419b89882c4428851b91f8c5640168..0b178b08b7295a89b5e71b8387b97fbedfef758b 100644 (file)
@@ -102,7 +102,6 @@ define Package/luci-core
   $(call Package/luci/libtemplate)
   DEPENDS:=+lua +luaposix +bitlib
   TITLE:=LuCI core libraries
   $(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
 endef
 
 define Package/luci-core/install
@@ -149,14 +148,14 @@ endef
 
 define Package/luci-uci
   $(call Package/luci/libtemplate)
 
 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
   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
 
 
 endef
 
 
index bce79ebc3e4e07c629dfa1275b38d06c1ccf18d5..1363b786f5b578c5f15a71ec00930c9129ec0bfe 100644 (file)
@@ -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)
        $(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
 
 
 compile-all: compile
 
index c31c1454c2b7ec2270c5e1d5054b386fbcdc20e4..c464941cf1c946bb2adcebe99050f61b131cda4d 100644 (file)
@@ -1,12 +1,14 @@
 Index: uci.git/lua/uci.c
 ===================================================================
 --- uci.git.orig/lua/uci.c     2008-08-26 12:31:34.000000000 +0200
 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 <lauxlib.h>
  #include <uci.h>
  
  #include <uci.h>
  
- #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
  //#define DEBUG 1
  
  #ifdef DEBUG
@@ -286,7 +288,7 @@ Index: uci.git/lua/uci.c
                if (!p)
                        break;
  
                if (!p)
                        break;
  
-@@ -374,11 +429,12 @@
+@@ -374,11 +429,11 @@
  static int
  uci_lua_delete(lua_State *L)
  {
  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;
        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);
 -      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)
        if (s)
                free(s);
        if (err)
@@ -309,7 +311,7 @@ Index: uci.git/lua/uci.c
        lua_pushboolean(L, (err == 0));
        return 1;
  }
        lua_pushboolean(L, (err == 0));
        return 1;
  }
-@@ -395,6 +451,7 @@
+@@ -395,6 +450,7 @@
  static int
  uci_lua_set(lua_State *L)
  {
  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;
        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);
        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)
                /* 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;
                        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;
                /* 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);
        }
  
        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++) {
  
        if (istable) {
                for (i = 2; i <= lua_objlen(L, nargs); i++) {
-@@ -458,7 +521,7 @@
+@@ -458,7 +520,7 @@
  
  error:
        if (err)
  
  error:
        if (err)
@@ -380,7 +382,7 @@ Index: uci.git/lua/uci.c
        lua_pushboolean(L, (err == 0));
        return 1;
  }
        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)
  {
  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;
        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);
        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);
                goto err;
  
        uci_lookup_ptr(ctx, &ptr, NULL, false);
-@@ -562,16 +626,16 @@
+@@ -562,16 +625,16 @@
  }
  
  static void
  }
  
  static void
@@ -421,7 +423,7 @@ Index: uci.git/lua/uci.c
                if (!p)
                        return;
        }
                if (!p)
                        return;
        }
-@@ -596,6 +660,7 @@
+@@ -596,6 +659,7 @@
  static int
  uci_lua_changes(lua_State *L)
  {
  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;
        const char *package = NULL;
        char **config = NULL;
        int nargs;
-@@ -603,9 +668,9 @@
+@@ -603,9 +667,9 @@
  
        nargs = lua_gettop(L);
        switch(nargs) {
  
        nargs = lua_gettop(L);
        switch(nargs) {
@@ -441,7 +443,7 @@ Index: uci.git/lua/uci.c
                break;
        default:
                luaL_error(L, "invalid argument count");
                break;
        default:
                luaL_error(L, "invalid argument count");
-@@ -613,13 +678,13 @@
+@@ -613,13 +677,13 @@
  
        lua_newtable(L);
        if (package) {
  
        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
  }
  
  static int
@@ -514,7 +516,7 @@ Index: uci.git/lua/uci.c
        { "load", uci_lua_load },
        { "unload", uci_lua_unload },
        { "get", uci_lua_get },
        { "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 },
        { "revert", uci_lua_revert },
        { "changes", uci_lua_changes },
        { "foreach", uci_lua_foreach },
@@ -527,7 +529,8 @@ Index: uci.git/lua/uci.c
  
 -
  int
  
 -
  int
- luaopen_uci(lua_State *L)
+-luaopen_uci(lua_State *L)
++luaopen_uci2(lua_State *L)
  {
 -      ctx = uci_alloc_context();
 -      if (!ctx)
  {
 -      ctx = uci_alloc_context();
 -      if (!ctx)
index 9393c46a47860a40aa4fe9ceeb12733f51f3367a..12bf18c2adfc9be39ee0269537814e50957d863b 100644 (file)
@@ -29,10 +29,9 @@ module("luci.cbi", package.seeall)
 require("luci.template")
 require("luci.util")
 require("luci.http")
 require("luci.template")
 require("luci.util")
 require("luci.http")
-require("luci.model.uci")
 require("luci.uvl")
 
 require("luci.uvl")
 
-local uci        = luci.model.uci
+local uci        = require("luci.model.uci")
 local class      = luci.util.class
 local instanceof = luci.util.instanceof
 
 local class      = luci.util.class
 local instanceof = luci.util.instanceof
 
index c80380e97d437e54f6280658a60f2db425375a73..fd0a046f6ba5e4f1bb028688695ee1c9b24bbf34 100644 (file)
@@ -672,6 +672,7 @@ end
 statusmsg = {
        [200] = "OK",
        [301] = "Moved Permanently",
 statusmsg = {
        [200] = "OK",
        [301] = "Moved Permanently",
+       [302] = "Found",
        [304] = "Not Modified",
        [400] = "Bad Request",
        [403] = "Forbidden",
        [304] = "Not Modified",
        [400] = "Bad Request",
        [403] = "Forbidden",
index 5a7e8fd6fc385402f60a7190dc4ae7f2242f17b0..f150cae8d637de42b28cf9ff32ccedc7f07099f4 100755 (executable)
@@ -17,9 +17,9 @@ vhost   = luci.httpd.server.VHost()
 
 server:set_default_vhost(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
 
        end
 end
 
index ac3ed78d0acdcfef1c2e8a42d1ec3dc763639752..320ab4c10e53f0f7dc4e0f34428e6081adbe4296 100644 (file)
@@ -93,9 +93,5 @@ function Luci.handle_get(self, request, sourcein, sinkerr)
                end
        end
 
                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
        return Response(status, headers), iter
 end
index c7ac1684520540a2f02ef7ae4252fabf943b34bd..387d577d6067fa6ef9e4545b808bce383eda74d3 100644 (file)
@@ -25,8 +25,8 @@ function init(path)
        if (root ~= '/') then
                -- Entering dummy mode
                luci.model.uci.cursor = function(config, ...)
        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
                
                luci.sys.hostname = function() return "" end
                luci.sys.loadavg  = function() return 0,0,0,0,0 end
index 333abf4072787293275a1f48b4fa66f432a31a4b..de885808ac507d051c5088087404ee7710a667e4 100644 (file)
@@ -23,7 +23,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 
 ]]--
 limitations under the License.
 
 ]]--
-local uci   = require "uci"
+local uci   = require "uci2"
 local util  = require "luci.util"
 local table = require "table"
 
 local util  = require "luci.util"
 local table = require "table"
 
index c32aea891f55b456507e6e023a99bb9e2acac64e..fce84fe3f40332e29426f2bb70919021259472d1 100644 (file)
@@ -39,6 +39,7 @@ end
 function s.parse(self, ...)
        TypedSection.parse(self, ...)
        if created then
 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
                luci.http.redirect(luci.dispatcher.build_url("admin", "network", "network")
                 .. "/" .. created)
        end