From 8e610b4279bab6b20fd1b92e418f4d28d5c28f5c Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Tue, 22 Mar 2016 14:12:05 -0400 Subject: [PATCH] Refactor: embed mi in "list_output" to remove code duplication MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reduces the number of possible code paths and ensure a coherent return path. Signed-off-by: Jonathan Rajotte Signed-off-by: Jérémie Galarneau --- src/bin/lttng/commands/snapshot.c | 77 ++++++++++++------------------- 1 file changed, 29 insertions(+), 48 deletions(-) diff --git a/src/bin/lttng/commands/snapshot.c b/src/bin/lttng/commands/snapshot.c index 298bc6ef3..e9c60fbbb 100644 --- a/src/bin/lttng/commands/snapshot.c +++ b/src/bin/lttng/commands/snapshot.c @@ -150,65 +150,28 @@ error_create: return NULL; } -static int mi_list_output(void) +static int list_output(void) { - int ret; + int ret, output_seen = 0; struct lttng_snapshot_output *s_iter; struct lttng_snapshot_output_list *list; - assert(writer); - ret = lttng_snapshot_list_output(current_session_name, &list); if (ret < 0) { goto error; } - ret = mi_lttng_snapshot_output_session_name(writer, current_session_name); - if (ret) { - ret = CMD_ERROR; - goto end; - } + MSG("Snapshot output list for session %s", current_session_name); - while ((s_iter = lttng_snapshot_output_list_get_next(list)) != NULL) { - ret = mi_lttng_snapshot_list_output(writer, s_iter); + if (lttng_opt_mi) { + ret = mi_lttng_snapshot_output_session_name(writer, + current_session_name); if (ret) { ret = CMD_ERROR; goto end; } } - - /* Close snapshot snapshots element */ - ret = mi_lttng_writer_close_element(writer); - if (ret) { - ret = CMD_ERROR; - goto end; - } - - /* Close snapshot session element */ - ret = mi_lttng_writer_close_element(writer); - if (ret) { - ret = CMD_ERROR; - } -end: - lttng_snapshot_output_list_destroy(list); -error: - return ret; -} - -static int list_output(void) -{ - int ret, output_seen = 0; - struct lttng_snapshot_output *s_iter; - struct lttng_snapshot_output_list *list; - - ret = lttng_snapshot_list_output(current_session_name, &list); - if (ret < 0) { - goto error; - } - - MSG("Snapshot output list for session %s", current_session_name); - while ((s_iter = lttng_snapshot_output_list_get_next(list)) != NULL) { MSG("%s[%" PRIu32 "] %s: %s (max-size: %" PRId64 ")", indent4, lttng_snapshot_output_get_id(s_iter), @@ -216,8 +179,30 @@ static int list_output(void) lttng_snapshot_output_get_ctrl_url(s_iter), lttng_snapshot_output_get_maxsize(s_iter)); output_seen = 1; + if (lttng_opt_mi) { + ret = mi_lttng_snapshot_list_output(writer, s_iter); + if (ret) { + ret = CMD_ERROR; + goto end; + } + } } + if (lttng_opt_mi) { + /* Close snapshot snapshots element */ + ret = mi_lttng_writer_close_element(writer); + if (ret) { + ret = CMD_ERROR; + goto end; + } + + /* Close snapshot session element */ + ret = mi_lttng_writer_close_element(writer); + if (ret) { + ret = CMD_ERROR; + } + } +end: lttng_snapshot_output_list_destroy(list); if (!output_seen) { @@ -473,11 +458,7 @@ static int cmd_list_output(int argc, const char **argv) { int ret; - if (lttng_opt_mi) { - ret = mi_list_output(); - } else { - ret = list_output(); - } + ret = list_output(); return ret; } -- 2.34.1