{
struct uci_element *e;
struct uci_section *s;
- struct uci_option *o;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, res != NULL);
/* NB: UCI_INTERNAL use means without history tracking */
bool internal = ctx->internal;
struct uci_element *e;
- struct uci_section *s = NULL;
- struct uci_option *o = NULL;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, p != NULL);
/* NB: pass on internal flag to uci_del_element */
bool internal = ctx->internal;
struct uci_element *e;
- struct uci_section *s = NULL;
- struct uci_option *o = NULL;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, p != NULL);
struct uci_element *e = NULL;
struct uci_section *s = NULL;
struct uci_option *o = NULL;
- struct uci_history *h;
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, p != NULL);
goto notfound;
s = uci_to_section(e);
+ if (ctx->pctx)
+ ctx->pctx->section = s;
+
if (option) {
e = uci_lookup_list(ctx, &s->options, option);
if (!e)
goto notfound;
o = uci_to_option(e);
- } else if (internal && ctx->pctx) {
- ctx->pctx->section = s;
}
/*
uci_add_history(ctx, p, UCI_CMD_ADD, section, option, value);
if (s)
uci_alloc_option(s, option, value);
- else
- uci_alloc_section(p, value, section);
+ else {
+ s = uci_alloc_section(p, value, section);
+ if (ctx->pctx)
+ ctx->pctx->section = s;
+ }
return 0;
}
int uci_unload(struct uci_context *ctx, struct uci_package *p)
{
- struct uci_element *e;
-
UCI_HANDLE_ERR(ctx);
UCI_ASSERT(ctx, p != NULL);