free(e);
}
-static struct uci_option *
-uci_alloc_option(struct uci_section *s, const char *name, const char *value)
+struct uci_option *uci_alloc_option(struct uci_section *s, const char *name, const char *value)
{
struct uci_package *p = s->package;
struct uci_context *ctx = p->ctx;
return 0;
}
+int uci_add_named_section(struct uci_context *ctx, struct uci_package *p, const char *type, const char *name, struct uci_section **res)
+{
+ bool internal = ctx->internal;
+ struct uci_section *s;
+
+ UCI_HANDLE_ERR(ctx);
+ UCI_ASSERT(ctx, p != NULL);
+ s = uci_alloc_section(p, type, name);
+ uci_fixup_section(ctx, s);
+ *res = s;
+ if (!internal && p->has_delta)
+ uci_add_delta(ctx, &p->delta, UCI_CMD_ADD, s->e.name, NULL, type);
+
+ return 0;
+}
+
int uci_delete(struct uci_context *ctx, struct uci_ptr *ptr)
{
/* NB: pass on internal flag to uci_del_element */
*/
extern struct uci_context *uci_alloc_context(void);
+extern struct uci_option *uci_alloc_option(struct uci_section *s, const char *name, const char *value);
+
/**
* uci_free_context: Free the uci context including all of its data
*/
*/
extern int uci_add_section(struct uci_context *ctx, struct uci_package *p, const char *type, struct uci_section **res);
+extern int uci_add_named_section(struct uci_context *ctx, struct uci_package *p, const char *type, const char *name, struct uci_section **res);
+
/**
* uci_set: Set an element's value; create the element if necessary
* @ctx: uci context