X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fuci.git;a=blobdiff_plain;f=cli.c;h=b7ddd511676ed82fdfe9ce77c841bb6a8cc74ad0;hp=afe96e3c12589100d6800d6b28eb31b92147b8af;hb=8ea07e430df35634c09dc63d8c0cb644522bbe69;hpb=9487b850844e4fb873b90cf357c2d0367ebc065c diff --git a/cli.c b/cli.c index afe96e3..b7ddd51 100644 --- a/cli.c +++ b/cli.c @@ -15,8 +15,6 @@ #include "uci.h" static struct uci_context *ctx; -static char *buf = NULL; -static int buflen = 256; static void uci_usage(int argc, char **argv) { @@ -33,45 +31,41 @@ static void uci_usage(int argc, char **argv) static void uci_show_section(struct uci_section *p) { - struct uci_option *o; + struct uci_element *e; const char *cname, *sname; - cname = p->config->name; - sname = p->name; + cname = p->package->e.name; + sname = p->e.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); + uci_foreach_element(&p->options, e) { + printf("%s.%s.%s=%s\n", cname, sname, e->name, uci_to_option(e)->value); } } -static void foreach_section(const char *configname, const char *section, void (*callback)(struct uci_section *)) -{ - struct uci_config *cfg; - struct uci_section *p; - - if (uci_load(ctx, configname, &cfg) != UCI_OK) { - uci_perror(ctx, "uci_load"); - return; - } - - uci_foreach_entry(section, &cfg->sections, p) { - if (!section || !strcmp(p->name, section)) - callback(p); - } - uci_unload(ctx, configname); -} - static int uci_show(int argc, char **argv) { - char **configs = uci_list_configs(); + char *section = (argc > 2 ? argv[2] : NULL); + struct uci_package *package; + struct uci_element *e; + char **configs; char **p; + configs = uci_list_configs(ctx); if (!configs) return 0; for (p = configs; *p; p++) { - if ((argc < 2) || !strcmp(argv[1], *p)) - foreach_section(*p, (argc > 2 ? argv[2] : NULL), uci_show_section); + if ((argc < 2) || !strcmp(argv[1], *p)) { + if (uci_load(ctx, *p, &package) != UCI_OK) { + uci_perror(ctx, "uci_load"); + return 255; + } + uci_foreach_element( &package->sections, e) { + if (!section || !strcmp(e->name, section)) + uci_show_section(uci_to_section(e)); + } + uci_unload(ctx, *p); + } } return 0; @@ -79,7 +73,7 @@ static int uci_show(int argc, char **argv) static int uci_do_export(int argc, char **argv) { - char **configs = uci_list_configs(); + char **configs = uci_list_configs(ctx); char **p; if (!configs) @@ -87,13 +81,13 @@ static int uci_do_export(int argc, char **argv) for (p = configs; *p; p++) { if ((argc < 2) || !strcmp(argv[1], *p)) { - struct uci_config *cfg = NULL; + struct uci_package *package = NULL; int ret; - ret = uci_load(ctx, *p, &cfg); + ret = uci_load(ctx, *p, &package); if (ret) continue; - uci_export(ctx, stdout, cfg); + uci_export(ctx, stdout, package); uci_unload(ctx, *p); } } @@ -113,13 +107,13 @@ int main(int argc, char **argv) { int ret; - ctx = uci_alloc(); + ctx = uci_alloc_context(); if (argc < 2) uci_usage(argc, argv); ret = uci_cmd(argc - 1, argv + 1); if (ret == 255) uci_usage(argc, argv); - uci_free(ctx); + uci_free_context(ctx); return ret; }