static int __cmd_report(int argc, const char **argv) { int rec_argc, i = 0, j; const char **rec_argv; rec_argc = argc + 2; rec_argv = calloc(rec_argc + 1, sizeof(char *)); rec_argv[i++] = strdup("report"); rec_argv[i++] = strdup("-i"); rec_argv[i++] = strdup(file_name); for (j = 1; j < argc; j++, i++) rec_argv[i] = argv[j]; BUG_ON(i != rec_argc); return cmd_report(i, rec_argv, NULL); }
static int cmd_process_edit(struct commands *commands, struct cmd_ctx **ctxp, char key, struct re_printf *pf, void *data) { struct cmd_ctx *ctx; bool compl = (key == '\n'), del = false; int err; if (!ctxp) return EINVAL; ctx = *ctxp; err = editor_input(commands, ctx->mb, key, pf, &del, ctx->is_long); if (err) return err; if (ctx->is_long) { if (compl) { err = cmd_process_long(commands, (char *)ctx->mb->buf, ctx->mb->end, pf, data); } } else { if (compl || (ctx->cmd && ctx->cmd->flags & CMD_PROG)) err = cmd_report(ctx->cmd, pf, ctx->mb, compl, data); } if (del) *ctxp = mem_deref(*ctxp); return err; }