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 */
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)