From: Karl Palsson Date: Wed, 2 Sep 2015 11:24:29 +0000 (+0000) Subject: uci:set_list: Delete option if the list is empty X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fluci.git;a=commitdiff_plain;h=879d9ff2b8f80b7c8e4adadf0702154d9ae932f4 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 --- diff --git a/modules/luci-base/luasrc/model/uci.lua b/modules/luci-base/luasrc/model/uci.lua index 165913774..e9bac6ec0 100644 --- a/modules/luci-base/luasrc/model/uci.lua +++ b/modules/luci-base/luasrc/model/uci.lua @@ -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 } ) diff --git a/modules/luci-base/luasrc/model/uci.luadoc b/modules/luci-base/luasrc/model/uci.luadoc index 80464f7ce..f3aa609d5 100644 --- a/modules/luci-base/luasrc/model/uci.luadoc +++ b/modules/luci-base/luasrc/model/uci.luadoc @@ -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 ]]