diff options
author | Felix Fietkau <nbd@openwrt.org> | 2009-07-06 19:04:07 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2009-07-06 19:04:07 +0000 |
commit | 6fbd31d2386a669270a9588c549f935e9d1185c7 (patch) | |
tree | fb4d24c718a9e699929e7ac936c84e58ff57ecc5 /package/uci/trigger/lib | |
parent | 495d6c1bc0300f6cb801f652a10c54e7ddf64861 (diff) | |
download | upstream-6fbd31d2386a669270a9588c549f935e9d1185c7.tar.gz upstream-6fbd31d2386a669270a9588c549f935e9d1185c7.tar.bz2 upstream-6fbd31d2386a669270a9588c549f935e9d1185c7.zip |
ucitrigger: add options to force enable/disable specific triggers
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@16718 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/uci/trigger/lib')
-rw-r--r-- | package/uci/trigger/lib/trigger.lua | 56 |
1 files changed, 52 insertions, 4 deletions
diff --git a/package/uci/trigger/lib/trigger.lua b/package/uci/trigger/lib/trigger.lua index 6710211d00..104d27ae44 100644 --- a/package/uci/trigger/lib/trigger.lua +++ b/package/uci/trigger/lib/trigger.lua @@ -253,6 +253,17 @@ function add(ts) end end +function save_trigger(name) + if triggers.active[name] then + local slist = get_names(triggers.active[name]) + if #slist > 0 then + tctx:set("uci_trigger", name, "sections", slist) + end + else + tctx:delete("uci_trigger", name) + end +end + function set(data, cursor) assert(data ~= nil) if cursor == nil then @@ -296,10 +307,7 @@ function set(data, cursor) if section[".name"] then active[section[".name"]] = true end - local slist = get_names(triggers.active[t.id]) - if #slist > 0 then - tctx:set("uci_trigger", t.id, "sections", slist) - end + save_trigger(t.id) end tctx:save("uci_trigger") end @@ -335,6 +343,46 @@ function get_active() return slist end +function set_active(trigger, sections) + if triggers == nil then + load_state() + end + if not triggers.list[trigger] then + return + end + if triggers.active[trigger] == nil then + tctx:set("uci_trigger", trigger, "trigger") + triggers.active[trigger] = {} + end + local active = triggers.active[trigger] + if triggers.list[trigger].section_only or sections ~= nil then + for i, t in ipairs(sections) do + triggers.active[trigger][t] = true + end + end + save_trigger(trigger) + tctx:save("uci_trigger") +end + +function clear_active(trigger, sections) + if triggers == nil then + load_state() + end + if triggers.list[trigger] == nil or triggers.active[trigger] == nil then + return + end + local active = triggers.active[trigger] + if not triggers.list[trigger].section_only or sections == nil then + triggers.active[trigger] = nil + else + for i, t in ipairs(sections) do + triggers.active[trigger][t] = false + end + end + save_trigger(trigger) + tctx:save("uci_trigger") +end + function run(ts) if ts == nil then ts = get_active() |