add dynamically generated section names
[project/uci.git] / cli.c
diff --git a/cli.c b/cli.c
index 7dece62..322d170 100644 (file)
--- a/cli.c
+++ b/cli.c
@@ -28,15 +28,39 @@ static void uci_usage(int argc, char **argv)
        exit(255);
 }
 
+static void uci_show_section(struct uci_section *p)
+{
+       struct uci_option *o;
+       const char *cname, *sname;
+
+       cname = p->config->name;
+       sname = p->name;
+       printf("%s.%s=%s\n", cname, sname, p->type);
+       uci_foreach_entry(option, &p->options, o) {
+               printf("%s.%s.%s=%s\n", cname, sname, o->name, o->value);
+       }
+}
+
 static void uci_show_file(const char *name)
 {
-       uci_load(ctx, name);
+       struct uci_config *cfg;
+       struct uci_section *p;
+
+       if (uci_load(ctx, name, &cfg) != UCI_OK) {
+               uci_perror(ctx, "uci_load");
+               return;
+       }
+
+       uci_list_empty(&cfg->sections);
+       uci_foreach_entry(section, &cfg->sections, p) {
+               uci_show_section(p);
+       }
        uci_unload(ctx, name);
 }
 
 static int uci_show(int argc, char **argv)
 {
-       char **configs = uci_list_configs(ctx);
+       char **configs = uci_list_configs();
        char **p;
 
        if (!configs)