<p dir="ltr">Hi,<br>
On Mar 30, 2015 10:28 PM, "Mark Mentovai" <<a href="mailto:mark@moxienet.com">mark@moxienet.com</a>> wrote:<br>
><br>
> 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.<br>
><br>
> I found a change[1] in uci that’s responsible.<br>
></p>
<p dir="ltr">Sorry for the inconvenience caused.</p>
<p dir="ltr">> 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.<br>
><br>
> 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.<br>
><br>
> This behavior change appears to be unintentional, and as I mentioned, it’s broken a long-standing behavior that I rely on.<br>
><br>
> 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.<br>
></p>
<p dir="ltr">Not yet with my keyboard at hand, will look into these scripts tomorrow.</p>
<p dir="ltr">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().</p>
<p dir="ltr">Cheers.</p>
<p dir="ltr">                yousong<br></p>
<p dir="ltr">> I’m happy to contribute a patch, but I’m not sure what [1] intended, so I’m e-mailing to raise awareness first.<br>
><br>
> Mark<br>
><br>
> [1] <a href="http://nbd.name/gitweb.cgi?p=uci.git;a=commitdiff;h=32815cf4959c">http://nbd.name/gitweb.cgi?p=uci.git;a=commitdiff;h=32815cf4959c</a><br>
> [2] <a href="http://nbd.name/gitweb.cgi?p=uci.git;a=blob;f=cli.c;h=557472ecf421;hb=HEAD">http://nbd.name/gitweb.cgi?p=uci.git;a=blob;f=cli.c;h=557472ecf421;hb=HEAD</a><br>
> [3] <a href="https://dev.openwrt.org/changeset/45040/trunk">https://dev.openwrt.org/changeset/45040/trunk</a></p>