return NULL;
}
-int uci_lookup(struct uci_context *ctx, struct uci_element **res, struct uci_package *p, char *section, char *option)
+int uci_lookup(struct uci_context *ctx, struct uci_element **res, struct uci_package *p, const char *section, const char *option)
{
struct uci_element *e;
struct uci_section *s;
return 0;
}
-int uci_set_element_value(struct uci_context *ctx, struct uci_element **element, char *value)
+int uci_set_element_value(struct uci_context *ctx, struct uci_element **element, const char *value)
{
/* NB: UCI_INTERNAL use means without history tracking */
bool internal = ctx->internal;
s = uci_to_section(e);
section = e->name;
option = NULL;
+ /* matches the currently set value */
+ if (!strcmp(value, s->type))
+ return 0;
break;
case UCI_TYPE_OPTION:
UCI_ASSERT(ctx, value != NULL);
s = uci_to_option(e)->section;
section = s->e.name;
option = e->name;
+ /* matches the currently set value */
+ if (!strcmp(value, e->name))
+ return 0;
break;
default:
UCI_THROW(ctx, UCI_ERR_INVAL);
return 0;
}
-int uci_add_section(struct uci_context *ctx, struct uci_package *p, char *type, struct uci_section **res)
+int uci_add_section(struct uci_context *ctx, struct uci_package *p, const char *type, struct uci_section **res)
{
bool internal = ctx->internal;
struct uci_section *s;
return 0;
}
-int uci_delete(struct uci_context *ctx, struct uci_package *p, char *section, char *option)
+int uci_delete(struct uci_context *ctx, struct uci_package *p, const char *section, const char *option)
{
/* NB: pass on internal flag to uci_del_element */
bool internal = ctx->internal;
return uci_del_element(ctx, e);
}
-int uci_set(struct uci_context *ctx, struct uci_package *p, char *section, char *option, char *value, struct uci_element **result)
+int uci_set(struct uci_context *ctx, struct uci_package *p, const char *section, const char *option, const char *value, struct uci_element **result)
{
/* NB: UCI_INTERNAL use means without history tracking */
bool internal = ctx->internal;