Skip to content

Commit

Permalink
uci: refactor uci.changes() to match documentation
Browse files Browse the repository at this point in the history
When invoked with an explicit package name argument, retain the autoloaded
configuration within the context state.

Fixes: #188
Signed-off-by: Jo-Philipp Wich <[email protected]>
  • Loading branch information
jow- committed Feb 21, 2024
1 parent 3f9811d commit a275399
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions lib/uci.c
Original file line number Diff line number Diff line change
Expand Up @@ -1574,12 +1574,12 @@ change_to_uval(uc_vm_t *vm, struct uci_delta *d)
}

static uc_value_t *
changes_to_uval(uc_vm_t *vm, struct uci_context *ctx, const char *package)
changes_to_uval(uc_vm_t *vm, struct uci_context *ctx, const char *package,
bool unload)
{
uc_value_t *a = NULL, *c;
struct uci_package *p = NULL;
struct uci_element *e;
bool unload = false;

uci_foreach_element(&ctx->root, e) {
if (strcmp(e->name, package))
Expand All @@ -1588,10 +1588,10 @@ changes_to_uval(uc_vm_t *vm, struct uci_context *ctx, const char *package)
p = uci_to_package(e);
}

if (!p) {
unload = true;
if (!p)
uci_load(ctx, package, &p);
}
else
unload = false;

if (!p)
return NULL;
Expand Down Expand Up @@ -1631,7 +1631,8 @@ changes_to_uval(uc_vm_t *vm, struct uci_context *ctx, const char *package)
* delta directory and yet unsaved cursor changes.
*
* When the optional "config" parameter is specified, the requested
* configuration is implicitly loaded if it not already loaded into the cursor.
* configuration is implicitly loaded if it is not already loaded into the
* cursor.
*
* Returns a dictionary of change record arrays, keyed by configuration name.
*
Expand Down Expand Up @@ -1678,7 +1679,7 @@ uc_uci_changes(uc_vm_t *vm, size_t nargs)
if (conf && strcmp(configs[i], ucv_string_get(conf)))
continue;

chg = changes_to_uval(vm, *c, configs[i]);
chg = changes_to_uval(vm, *c, configs[i], !conf);

if (chg)
ucv_object_add(res, configs[i], chg);
Expand Down

0 comments on commit a275399

Please sign in to comment.