luci-base: fix luci.model.uci.get_first()
[project/luci.git] / modules / luci-base / luasrc / model / uci.lua
index 3208f3b..0e3950c 100644 (file)
@@ -182,11 +182,11 @@ function foreach(self, config, stype, callback)
        end
 end
 
-function get(self, config, section, option)
+local function _get(self, operation, config, section, option)
        if section == nil then
                return nil
        elseif type(option) == "string" and option:byte(1) ~= 46 then
-               local rv, err = util.ubus("uci", "get", {
+               local rv, err = util.ubus("uci", operation, {
                        config  = config,
                        section = section,
                        option  = option
@@ -211,6 +211,14 @@ function get(self, config, section, option)
        end
 end
 
+function get(self, ...)
+       return _get(self, "get", ...)
+end
+
+function get_state(self, ...)
+       return _get(self, "state", ...)
+end
+
 function get_all(self, config, section)
        local rv, err = util.ubus("uci", "get", {
                config  = config,
@@ -234,7 +242,7 @@ end
 function get_first(self, config, stype, option, default)
        local rv = default
 
-       self:foreach(conf, stype, function(s)
+       self:foreach(config, stype, function(s)
                local val = not option and s[".name"] or s[option]
 
                if type(default) == "number" then
@@ -407,7 +415,7 @@ function apply(self, configlist, command)
                return { "/sbin/luci-reload", unpack(configlist) }
        else
                return os.execute("/sbin/luci-reload %s >/dev/null 2>&1"
-                       % table.concat(configlist, " "))
+                       % util.shellquote(table.concat(configlist, " ")))
        end
 end