uci:set_list: Delete option if the list is empty

Allows lists fetched with get_list to be modified and simply passed back
to set_list. Explicitly calling set_list() with an empty list is clearly
requesting that there be zero list items, ie, deletion of the option
altogether.

Signed-off-by: Karl Palsson <karlp@remake.is>
This commit is contained in:
Karl Palsson 2015-09-02 11:24:29 +00:00
parent f0083abed1
commit 879d9ff2b8
2 changed files with 6 additions and 2 deletions

View file

@ -139,6 +139,9 @@ end
function Cursor.set_list(self, config, section, option, value)
if config and section and option then
if not value or #value == 0 then
return self:delete(config, section, option)
end
return self:set(
config, section, option,
( type(value) == "table" and value or { value } )

View file

@ -104,14 +104,15 @@ Get the given option from the first section with the given type.
]]
---[[
Set given values as list.
Set given values as list. Setting a list option to an empty list
has the same effect as deleting the option.
@class function
@name Cursor.set_list
@param config UCI config
@param section UCI section name
@param option UCI option
@param value UCI value
@param value value or table. Raw values will become a single item table.
@return Boolean whether operation succeeded
]]