diff options
| author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-07-06 19:04:07 +0000 | 
|---|---|---|
| committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-07-06 19:04:07 +0000 | 
| commit | 59bfb9d20e82ed7cf2c4f6b655e89a635ad82c06 (patch) | |
| tree | fb4d24c718a9e699929e7ac936c84e58ff57ecc5 /package/uci/trigger/lib | |
| parent | 6d07fcf44e6b21e87d44daf8a52ab7d3a7a1ac8a (diff) | |
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 6710211d0..104d27ae4 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() | 
