- free(str);
-}
-
-static void __uci_to_blob(struct blob_buf *b, struct uci_section *s,
- const struct config_param_list *p)
-{
- const struct blobmsg_policy *attr = NULL;
- struct uci_element *e;
- struct uci_option *o;
- void *array;
- int i;
-
- uci_foreach_element(&s->options, e) {
- for (i = 0; i < p->n_params; i++) {
- attr = &p->params[i];
- if (!strcmp(attr->name, e->name))
- break;
- }
-
- if (i == p->n_params)
- continue;
-
- o = uci_to_option(e);
-
- if (attr->type == BLOBMSG_TYPE_ARRAY) {
- if (!p->info)
- continue;
-
- array = blobmsg_open_array(b, attr->name);
- uci_array_to_blob(b, o, p->info[i].type);
- blobmsg_close_array(b, array);
- continue;
- }
-
- if (o->type == UCI_TYPE_LIST)
- continue;
-
- uci_attr_to_blob(b, o->v.string, attr->name, attr->type);
- }
-}
-
-static void uci_to_blob(struct blob_buf *b, struct uci_section *s,
- const struct config_param_list *p)
-{
- int i;
-
- __uci_to_blob(b, s, p);
- for (i = 0; i < p->n_next; i++)
- uci_to_blob(b, s, p->next[i]);