Fix skipping directories in uci_list_config_files
[project/uci.git] / cli.c
diff --git a/cli.c b/cli.c
index e425554..f8b45db 100644 (file)
--- 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)