From: Felix Fietkau Date: Mon, 18 Aug 2008 20:14:14 +0000 (+0200) Subject: fix list parsing with anonymous sections X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=28d2cc2adde3f9ec077a77cf363045a17f116032;p=uci.git fix list parsing with anonymous sections --- diff --git a/file.c b/file.c index 0b4f14a..d551208 100644 --- a/file.c +++ b/file.c @@ -187,8 +187,20 @@ static void uci_parse_list(struct uci_context *ctx, char **str) return; error: UCI_THROW(ctx, ctx->err); - } else - UCI_INTERNAL(uci_add_list, ctx, pctx->package, pctx->section->e.name, name, value, NULL); + } else { + struct uci_option *o; + struct uci_element *e; + + e = uci_lookup_list(&pctx->section->options, name); + o = uci_to_option(e); + if (!o) { + o = uci_alloc_list(pctx->section, name); + } else { + if (o->type != UCI_TYPE_LIST) + uci_parse_error(ctx, *str, "conflicting list/option keywords"); + } + UCI_INTERNAL(uci_add_element_list, ctx, o, value); + } }