summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2016-02-02 18:12:54 +0100
committerFelix Fietkau <nbd@openwrt.org>2016-02-02 18:13:04 +0100
commitd4e42a9081e0b6fa5cbb072bcbfe01adccdad694 (patch)
tree95c2de48e0124e35f86f32cd9dbb14e3c91a1a5d
parent593e6c90b7a443f77236adfa3372f65c94cfb253 (diff)
downloaduci-d4e42a9081e0b6fa5cbb072bcbfe01adccdad694.tar.gz
cli: fix uci show output for anonymous sections (#21781)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
-rw-r--r--cli.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/cli.c b/cli.c
index e425554..f8b45db 100644
--- a/cli.c
+++ b/cli.c
@@ -87,9 +87,10 @@ static char *
uci_lookup_section_ref(struct uci_section *s)
{
struct uci_type_list *ti = type_list;
+ char *ret;
int maxlen;
- if (!s->anonymous || !(flags & CLI_FLAG_SHOW_EXT))
+ if (!(flags & CLI_FLAG_SHOW_EXT))
return s->e.name;
/* look up in section type list */
@@ -108,19 +109,25 @@ uci_lookup_section_ref(struct uci_section *s)
ti->name = s->type;
}
- maxlen = strlen(s->type) + 1 + 2 + 10;
- if (!typestr) {
- typestr = malloc(maxlen);
+ if (s->anonymous) {
+ maxlen = strlen(s->type) + 1 + 2 + 10;
+ if (!typestr) {
+ typestr = malloc(maxlen);
+ } else {
+ typestr = realloc(typestr, maxlen);
+ }
+
+ if (typestr)
+ sprintf(typestr, "@%s[%d]", ti->name, ti->idx);
+
+ ret = typestr;
} else {
- typestr = realloc(typestr, maxlen);
+ ret = s->e.name;
}
- if (typestr)
- sprintf(typestr, "@%s[%d]", ti->name, ti->idx);
-
ti->idx++;
- return typestr;
+ return ret;
}
static void uci_usage(void)