* luci/libs: uvl: invalid wrong "option not found in config" errors
authorJo-Philipp Wich <jow@openwrt.org>
Thu, 28 Aug 2008 21:44:14 +0000 (21:44 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Thu, 28 Aug 2008 21:44:14 +0000 (21:44 +0000)
libs/uvl/luasrc/uvl.lua
libs/uvl/luasrc/uvl/dependencies.lua

index 37e6b765d0e1fd358f78b243a21b51add5e4295f..4ff6e7f3c1e571b060bf115f208f9e7e2a45634c 100644 (file)
@@ -70,6 +70,7 @@ function UVL.__init__( self, schemedir )
        self.schemedir  = schemedir or default_schemedir
        self.packages   = { }
        self.beenthere  = { }
+       self.depseen    = { }
        self.uci                = luci.model.uci
        self.err                = luci.uvl.errors
        self.dep                = luci.uvl.dependencies
@@ -124,6 +125,7 @@ function UVL.validate_config( self, config, uci )
        local sc = { }
 
        self.beenthere = { }
+       self.depseen   = { }
 
        if not co:config() then
                return false, co:errors()
@@ -187,6 +189,7 @@ function UVL.validate_section( self, config, section, uci )
        local so = co:section( section )
 
        self.beenthere = { }
+       self.depseen   = { }
 
        if not co:config() then
                return false, co:errors()
@@ -232,6 +235,8 @@ end
 
 function UVL._validate_section( self, section )
 
+       self.beenthere[section:cid()] = true
+
        if section:config() then
                if section:scheme('named') == true and
                   section:config('.anonymous') == true
@@ -268,6 +273,8 @@ end
 
 function UVL._validate_option( self, option, nodeps )
 
+       self.beenthere[option:cid()] = true
+
        if not option:scheme() and not option:parent():scheme('dynamic') then
                return false, option:error(ERR.OPT_UNKNOWN(option))
 
index 8f960468a7bf31b445a62d5b59cc89a2ca9639c5..3aa3c73fa0f11b762ebcb12bef41552558c56e5d 100644 (file)
@@ -72,8 +72,8 @@ function check( self, object, nodeps )
 
        local derr = ERR.DEPENDENCY(object)
 
-       if not self.beenthere[object:cid()] then
-               self.beenthere[object:cid()] = true
+       if not self.depseen[object:cid()] then
+               self.depseen[object:cid()] = true
        else
                return false, derr:child(ERR.DEP_RECURSIVE(object))
        end