Esempio n. 1
0
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);
}
Esempio n. 2
0
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;
}