X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuci.git;a=blobdiff_plain;f=cli.c;h=144cddefa285f0fbdfaa4d88514404a6686b6258;hp=196a83ea35d42d16480bb7900c8007b8dbfb10c0;hb=af2665866061c63ba63335b43aa6ff5102d4e492;hpb=d3722382bdd467d1c705911450120be75426406f diff --git a/cli.c b/cli.c index 196a83e..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)