This patch fixes uci when showing only sections or options. The patch applies to OpenWrt and add a patch in package/uci/patches.
I send it here because I couldn't send it to nbd. > Please note that currently 'uci show config.section' is broken, so it > is not fully functionnal with the current trunk. I sent a patch for > uci to nbd concerning this issue. > As it is, it will just ignore parameters but still load modules. Best regards, Signed-off-by: Frédéric Moulins <[EMAIL PROTECTED]> diff --git a/package/uci/patches/100-fix_show_sections.patch b/package/uci/patches/100-fix_show_sections.patch new file mode 100644 --- /dev/null +++ b/package/uci/patches/100-fix_show_sections.patch @@ -0,0 +1,78 @@ +=================================================================== +--- uci-0.4.3.orig/cli.c 2008-06-13 13:39:05.000000000 +0200 ++++ uci-0.4.3/cli.c 2008-06-13 17:17:29.000000000 +0200 +@@ -91,6 +91,15 @@ + uci_perror(ctx, appname); + } + ++static void uci_show_option(struct uci_option *o) ++{ ++ printf("%s.%s.%s=%s\n", ++ o->section->package->e.name, ++ o->section->e.name, ++ o->e.name, ++ o->value); ++} ++ + static void uci_show_section(struct uci_section *p) + { + struct uci_element *e; +@@ -100,7 +109,7 @@ + sname = p->e.name; + printf("%s.%s=%s\n", cname, sname, p->type); + uci_foreach_element(&p->options, e) { +- printf("%s.%s.%s=%s\n", cname, sname, e->name, uci_to_option(e)->value); ++ uci_show_option(uci_to_option(e)); + } + } + +@@ -131,11 +140,21 @@ + } + } + +-static int package_cmd(int cmd, char *package) ++static int package_cmd(int cmd, char *tuple) + { + struct uci_package *p = NULL; ++ struct uci_element *e = NULL; ++ char *package = NULL; ++ char *section = NULL; ++ char *option = NULL; ++ char **ptr = NULL; + int ret; + ++ if (uci_parse_tuple(ctx, tuple, &package, §ion, &option, ptr) != UCI_OK) ++ return 1; ++ if (section && !section[0]) ++ return 1; ++ + ret = uci_load(ctx, package, &p); + + if (ret != UCI_OK) { +@@ -158,7 +177,24 @@ + uci_export(ctx, stdout, p, true); + break; + case CMD_SHOW: +- uci_show_package(p); ++ if (!section) { ++ uci_show_package(p); ++ return 0; ++ } ++ if (uci_lookup(ctx, &e, p, section, option) != UCI_OK) ++ return 1; ++ ++ switch(e->type) { ++ case UCI_TYPE_SECTION: ++ uci_show_section(uci_to_section(e)); ++ break; ++ case UCI_TYPE_OPTION: ++ uci_show_option(uci_to_option(e)); ++ break; ++ default: ++ /* should not happen */ ++ return 1; ++ } + break; + } + + _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel