From: Aki Tuomi Date: Sat, 4 Jun 2016 05:14:45 +0000 (+0300) Subject: doveadm-server: Skip doveadm_print_init X-Git-Tag: 2.3.0.rc1~3391 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bd13998cde153abdb189593ad4229bf73bc2dd34;p=thirdparty%2Fdovecot%2Fcore.git doveadm-server: Skip doveadm_print_init Some commands need to do output that is not doable with doveadm_print, so we need to have a flag to indicate this. --- diff --git a/src/doveadm/client-connection-http.c b/src/doveadm/client-connection-http.c index 9cb636cbbd..b2af80f4e8 100644 --- a/src/doveadm/client-connection-http.c +++ b/src/doveadm/client-connection-http.c @@ -323,8 +323,11 @@ doveadm_http_server_command_execute(struct client_connection_http *conn) // create iostream doveadm_print_ostream = iostream_temp_create("/tmp/doveadm.", 0); + cctx.cmd = conn->cmd; + + if ((cctx.cmd->flags & CMD_FLAG_NO_PRINT) == 0) + doveadm_print_init(DOVEADM_PRINT_TYPE_JSON); - doveadm_print_init(DOVEADM_PRINT_TYPE_JSON); /* then call it */ doveadm_cmd_params_null_terminate_arrays(&conn->pargv); cctx.argv = array_get(&conn->pargv, (unsigned int*)&cctx.argc); @@ -332,7 +335,6 @@ doveadm_http_server_command_execute(struct client_connection_http *conn) lib_signals_reset_ioloop(); doveadm_exit_code = 0; - cctx.cmd = conn->cmd; cctx.cli = FALSE; cctx.local_ip = conn->client.local_ip; cctx.local_port = conn->client.local_port; @@ -351,7 +353,8 @@ doveadm_http_server_command_execute(struct client_connection_http *conn) io_loop_set_current(ioloop); io_loop_destroy(&ioloop); - doveadm_print_deinit(); + if ((cctx.cmd->flags & CMD_FLAG_NO_PRINT) == 0) + doveadm_print_deinit(); if (o_stream_nfinish(doveadm_print_ostream)<0) { i_info("Error writing output in command %s: %s", conn->cmd->name, diff --git a/src/doveadm/doveadm-cmd.h b/src/doveadm/doveadm-cmd.h index 6e2d2b878a..db04497952 100644 --- a/src/doveadm/doveadm-cmd.h +++ b/src/doveadm/doveadm-cmd.h @@ -30,7 +30,8 @@ typedef enum { typedef enum { CMD_FLAG_NONE = 0x0, - CMD_FLAG_HIDDEN = 0x1 + CMD_FLAG_HIDDEN = 0x1, + CMD_FLAG_NO_PRINT = 0x2, } doveadm_cmd_flag_t; struct doveadm_cmd_param {