fix lookup for section commands in the cli
authorFelix Fietkau <nbd@openwrt.org>
Mon, 18 Aug 2008 16:49:28 +0000 (18:49 +0200)
committerFelix Fietkau <nbd@openwrt.org>
Mon, 18 Aug 2008 16:49:28 +0000 (18:49 +0200)
cli.c

diff --git a/cli.c b/cli.c
index cd829384a80a1a65309f38051ac9fe3eb86efdb0..b48567faf90bce689491514b54315897c708c9a3 100644 (file)
--- a/cli.c
+++ b/cli.c
@@ -329,10 +329,12 @@ static int uci_do_section_cmd(int cmd, int argc, char **argv)
        struct uci_section *s = NULL;
        struct uci_element *e = NULL;
        struct uci_option *o = NULL;
+       char *package = NULL;
        char *section = NULL;
        char *option = NULL;
        char *value = NULL;
        int ret = UCI_OK;
+       char *str;
 
        if (argc != 2)
                return 255;
@@ -345,9 +347,20 @@ static int uci_do_section_cmd(int cmd, int argc, char **argv)
                        return 1;
        }
 
+       str = strdup(argv[1]);
+       if (!str)
+               return 1;
+
        if (value && (cmd != CMD_SET) && (cmd != CMD_ADD_LIST) && (cmd != CMD_RENAME))
                return 1;
 
+       if (uci_parse_tuple(ctx, str, &package, &section, &option, NULL) != UCI_OK) {
+               cli_perror();
+               return 1;
+       }
+       sprintf(argv[1], "%s.%s", package, section);
+       free(str);
+
        if (uci_lookup_ext(ctx, &e, argv[1]) != UCI_OK) {
                cli_perror();
                return 1;