* libuci - Library for the Unified Configuration Interface
* Copyright (C) 2008 Felix Fietkau <nbd@openwrt.org>
*
- * this program is free software; you can redistribute it and/or modify
- * it under the terms of the gnu lesser general public license version 2.1
- * as published by the free software foundation
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1
+ * as published by the Free Software Foundation
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
return;
if (value)
- size += strlen(section) + 1;
+ size += strlen(value) + 1;
h = uci_alloc_element(ctx, history, option, size);
ptr = uci_dataptr(h);
list = e->list.prev;
switch(e->type) {
case UCI_TYPE_SECTION:
- UCI_ASSERT(ctx, uci_validate_name(value));
+ UCI_ASSERT(ctx, uci_validate_str(value, false));
size = sizeof(struct uci_section);
s = uci_to_section(e);
section = e->name;
/* NB: p, section, option validated by uci_lookup */
UCI_INTERNAL(uci_lookup, ctx, &e, p, section, option);
- if (!internal)
- return uci_del_element(ctx, e);
- UCI_INTERNAL(uci_del_element, ctx, e);
-
- return 0;
+ ctx->internal = internal;
+ return uci_del_element(ctx, e);
}
int uci_set(struct uci_context *ctx, struct uci_package *p, char *section, char *option, char *value)
UCI_ASSERT(ctx, uci_validate_name(option));
UCI_ASSERT(ctx, value != NULL);
} else {
- UCI_ASSERT(ctx, uci_validate_name(value));
+ UCI_ASSERT(ctx, uci_validate_str(value, false));
}
/*
goto notfound;
s = uci_to_section(e);
- if (ctx->pctx)
+ if (ctx->pctx && ctx->pctx->merge)
ctx->pctx->section = s;
if (option) {
else
e = &s->e;
- if (!internal)
- return uci_set_element_value(ctx, &e, value);
-
- UCI_INTERNAL(uci_set_element_value, ctx, &e, value);
- return 0;
+ ctx->internal = internal;
+ return uci_set_element_value(ctx, &e, value);
notfound:
/*
uci_alloc_option(s, option, value);
else {
s = uci_alloc_section(p, value, section);
- if (ctx->pctx)
+ if (ctx->pctx && ctx->pctx->merge)
ctx->pctx->section = s;
}