uci/lua: add explicit close() method
[project/uci.git] / cli.c
diff --git a/cli.c b/cli.c
index e425554..deb670b 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)
@@ -149,8 +156,6 @@ static void uci_usage(void)
                "\t-d <str>   set the delimiter for list values in uci show\n"
                "\t-f <file>  use <file> as input instead of stdin\n"
                "\t-m         when importing, merge data into an existing package\n"
-               "\t-n         name unnamed sections on export (default)\n"
-               "\t-N         don't name unnamed sections\n"
                "\t-p <path>  add a search path for config change files\n"
                "\t-P <path>  add a search path for config change files and use as default\n"
                "\t-q         quiet mode (don't print error messages)\n"
@@ -722,12 +727,6 @@ int main(int argc, char **argv)
                                ctx->flags &= ~UCI_FLAG_STRICT;
                                ctx->flags |= UCI_FLAG_PERROR;
                                break;
-                       case 'n':
-                               ctx->flags |= UCI_FLAG_EXPORT_NAME;
-                               break;
-                       case 'N':
-                               ctx->flags &= ~UCI_FLAG_EXPORT_NAME;
-                               break;
                        case 'p':
                                uci_add_delta_path(ctx, optarg);
                                break;
@@ -742,6 +741,10 @@ int main(int argc, char **argv)
                        case 'X':
                                flags &= ~CLI_FLAG_SHOW_EXT;
                                break;
+                       case 'n':
+                       case 'N':
+                               /* obsolete */
+                               break;
                        default:
                                uci_usage();
                                return 0;