[OpenWrt-Devel] uci -P no longer working correctly

Yousong Zhou yszhou4tech at gmail.com
Mon Mar 30 11:27:34 EDT 2015

On Mar 30, 2015 10:28 PM, "Mark Mentovai" <mark at moxienet.com> wrote:
> In the latest OpenWrt trunk, I found that config_get has stopped loading
uncommitted uci changes from /tmp/.uci. I rely on this behavior, which had
worked well for years.
> I found a change[1] in uci that’s responsible.

Sorry for the inconvenience caused.

> The uci change makes uci_add_delta_path() reject any attempt to add
ctx->savedir to the delta search path. However, in light of cli.c’s
usage[2], there’s a problem: when processing a -P argument, it calls
uci_add_delta_path() to add the original value of ctx->savedir to the delta
search path before changing ctx->savedir.
> After this change, the uci command-line tool’s -P argument no longer acts
as documented. Instead of adding a path to the delta search path, it just
sets the default save directory.
> This behavior change appears to be unintentional, and as I mentioned,
it’s broken a long-standing behavior that I rely on.
> This change became a part of OpenWrt at r45040[3] and is exposed to
scripts that use /lib/functions.sh: that script sets LOAD_STATE=1, and its
config_load calls /lib/config/uci.sh’s uci_load, which adds a -P argument
to its “uci export” command when LOAD_STATE is nonempty.

Not yet with my keyboard at hand, will look into these scripts tomorrow.

The intention behind that check is that if a duplicate delta path was
added, it would cause the same delta file to be loaded multiple times.
IIRC, this behaviour was found while adding test cases about list type
option handling.  The relevant code is in function uci_load_delta().



> I’m happy to contribute a patch, but I’m not sure what [1] intended, so
I’m e-mailing to raise awareness first.
> Mark
> [1] http://nbd.name/gitweb.cgi?p=uci.git;a=commitdiff;h=32815cf4959c
> [2]
> [3] https://dev.openwrt.org/changeset/45040/trunk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20150330/a9d5d177/attachment.htm>
-------------- next part --------------
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org

More information about the openwrt-devel mailing list