X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuci.git;a=blobdiff_plain;f=cli.c;h=144cddefa285f0fbdfaa4d88514404a6686b6258;hp=cfbf26171531bb5d35a6e0d74136c7d71d709da4;hb=2e90d2637abcbea12f5f4070be7a158fb4637604;hpb=ef95525edc1ade7e729187b011de889b8f5f57c6;ds=sidebyside diff --git a/cli.c b/cli.c index cfbf261..144cdde 100644 --- a/cli.c +++ b/cli.c @@ -258,6 +258,7 @@ static int package_cmd(int cmd, char *tuple) { struct uci_element *e = NULL; struct uci_ptr ptr; + int ret = 0; if (uci_lookup_ptr(ctx, &ptr, tuple, true) != UCI_OK) { cli_perror(); @@ -272,8 +273,10 @@ static int package_cmd(int cmd, char *tuple) case CMD_COMMIT: if (flags & CLI_FLAG_NOCOMMIT) return 0; - if (uci_commit(ctx, &ptr.p, false) != UCI_OK) + if (uci_commit(ctx, &ptr.p, false) != UCI_OK) { cli_perror(); + ret = 1; + } break; case CMD_EXPORT: uci_export(ctx, stdout, ptr.p, true); @@ -282,7 +285,7 @@ static int package_cmd(int cmd, char *tuple) if (!(ptr.flags & UCI_LOOKUP_COMPLETE)) { ctx->err = UCI_ERR_NOTFOUND; cli_perror(); - return 1; + ret = 1; } switch(e->type) { case UCI_TYPE_PACKAGE: @@ -301,8 +304,9 @@ static int package_cmd(int cmd, char *tuple) break; } - uci_unload(ctx, ptr.p); - return 0; + if (ptr.p) + uci_unload(ctx, ptr.p); + return ret; } static int uci_do_import(int argc, char **argv) @@ -450,7 +454,7 @@ static int uci_do_section_cmd(int cmd, int argc, char **argv) ret = uci_add_list(ctx, &ptr); break; case CMD_REORDER: - if (!ptr.s) { + if (!ptr.s || !ptr.value) { ctx->err = UCI_ERR_NOTFOUND; cli_perror(); return 1; @@ -633,6 +637,11 @@ int main(int argc, char **argv) delimiter = optarg; break; case 'f': + if (input != stdin) { + perror("uci"); + return 1; + } + input = fopen(optarg, "r"); if (!input) { perror("uci");