[lttng-dev] [PATCH lttng-tools v2 2/5] Refactor: embed mi in "list_output" to remove code duplication

Jérémie Galarneau jeremie.galarneau at efficios.com
Mon Apr 4 16:49:33 UTC 2016


Merged, thanks!

Jérémie

On Tue, Mar 22, 2016 at 2:12 PM, Jonathan Rajotte
<jonathan.rajotte-julien at efficios.com> wrote:
> Reduces the number of possible code paths and ensure a coherent return
> path.
>
> Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
> ---
>  src/bin/lttng/commands/snapshot.c | 83 +++++++++++++++------------------------
>  1 file changed, 32 insertions(+), 51 deletions(-)
>
> diff --git a/src/bin/lttng/commands/snapshot.c b/src/bin/lttng/commands/snapshot.c
> index 298bc6e..e9c60fb 100644
> --- a/src/bin/lttng/commands/snapshot.c
> +++ b/src/bin/lttng/commands/snapshot.c
> @@ -150,52 +150,6 @@ error_create:
>         return NULL;
>  }
>
> -static int mi_list_output(void)
> -{
> -       int ret;
> -       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;
> -       }
> -
> -       while ((s_iter = lttng_snapshot_output_list_get_next(list)) != NULL) {
> -               ret = mi_lttng_snapshot_list_output(writer, s_iter);
> -               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;
> @@ -209,6 +163,15 @@ static int list_output(void)
>
>         MSG("Snapshot output list for session %s", current_session_name);
>
> +       if (lttng_opt_mi) {
> +               ret = mi_lttng_snapshot_output_session_name(writer,
> +                               current_session_name);
> +               if (ret) {
> +                       ret = CMD_ERROR;
> +                       goto end;
> +               }
> +       }
> +
>         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.7.0
>



-- 
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com


More information about the lttng-dev mailing list