+ return ret;
+}
+
+static int uci_batch(void)
+{
+ int ret = 0;
+
+ while (!feof(input)) {
+ struct uci_element *e, *tmp;
+
+ ret = uci_batch_cmd();
+ if (ret == 254)
+ return 0;
+ else if (ret == 255)
+ fprintf(stderr, "Unknown command\n");
+
+ /* clean up */
+ uci_foreach_element_safe(&ctx->root, tmp, e) {
+ uci_unload(ctx, uci_to_package(e));
+ }
+ }
+ return 0;
+}
+
+static int uci_cmd(int argc, char **argv)
+{
+ int cmd = 0;
+
+ if (!strcasecmp(argv[0], "batch") && !(flags & CLI_FLAG_BATCH))
+ return uci_batch();
+ else if (!strcasecmp(argv[0], "show"))
+ cmd = CMD_SHOW;
+ else if (!strcasecmp(argv[0], "changes"))
+ cmd = CMD_CHANGES;
+ else if (!strcasecmp(argv[0], "export"))
+ cmd = CMD_EXPORT;
+ else if (!strcasecmp(argv[0], "commit"))
+ cmd = CMD_COMMIT;
+ else if (!strcasecmp(argv[0], "get"))