X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Frotate.cpp;fp=src%2Fbin%2Flttng%2Fcommands%2Frotate.cpp;h=27263da16b5b0441de69d0e64beb91157fb3d598;hp=339e39598891505d3b62eafffc123be901b445dd;hb=5b915816f16e7cb3134dd7279abad79b31c2486c;hpb=3957512ed31ca945f8353d5812f317314c905640 diff --git a/src/bin/lttng/commands/rotate.cpp b/src/bin/lttng/commands/rotate.cpp index 339e39598..27263da16 100644 --- a/src/bin/lttng/commands/rotate.cpp +++ b/src/bin/lttng/commands/rotate.cpp @@ -22,7 +22,6 @@ #include "../command.hpp" #include -static char *opt_session_name; static int opt_no_wait; static struct mi_writer *writer; @@ -163,14 +162,15 @@ int cmd_rotate(int argc, const char **argv) enum cmd_error_code cmd_ret = CMD_SUCCESS; int popt_ret; static poptContext pc; + const char *arg_session_name = NULL; char *session_name = NULL; - bool free_session_name = false; pc = poptGetContext(NULL, argc, argv, long_options, 0); popt_ret = poptReadDefaultConfig(pc, 0); if (popt_ret) { ERR("poptReadDefaultConfig"); - goto error; + cmd_ret = CMD_ERROR; + goto end; } while ((opt = poptGetNextOpt(pc)) != -1) { @@ -187,37 +187,43 @@ int cmd_rotate(int argc, const char **argv) } } - opt_session_name = (char*) poptGetArg(pc); - - if (!opt_session_name) { + arg_session_name = poptGetArg(pc); + if (arg_session_name == NULL) { session_name = get_session_name(); - if (!session_name) { - goto error; - } - free_session_name = true; } else { - session_name = opt_session_name; + session_name = strdup(arg_session_name); + if (session_name == NULL) { + PERROR("Failed to copy session name"); + } + } + + if (session_name == NULL) { + cmd_ret = CMD_ERROR; + goto end; } /* Mi check */ if (lttng_opt_mi) { writer = mi_lttng_writer_create(fileno(stdout), lttng_opt_mi); if (!writer) { - goto error; + cmd_ret = CMD_ERROR; + goto end; } /* Open rotate command */ ret = mi_lttng_writer_command_open(writer, mi_lttng_element_command_rotate); if (ret) { - goto error; + cmd_ret = CMD_ERROR; + goto end; } /* Open output element */ ret = mi_lttng_writer_open_element(writer, mi_lttng_element_command_output); if (ret) { - goto error; + cmd_ret = CMD_ERROR; + goto end; } } @@ -228,35 +234,34 @@ int cmd_rotate(int argc, const char **argv) /* Close output element */ ret = mi_lttng_writer_close_element(writer); if (ret) { - goto error; + cmd_ret = CMD_ERROR; + goto end; } /* Success ? */ ret = mi_lttng_writer_write_element_bool(writer, mi_lttng_element_command_success, cmd_ret == CMD_SUCCESS); if (ret) { - goto error; + cmd_ret = CMD_ERROR; + goto end; } /* Command element close */ ret = mi_lttng_writer_command_close(writer); if (ret) { - goto error; + cmd_ret = CMD_ERROR; + goto end; } } /* Mi clean-up */ if (writer && mi_lttng_writer_destroy(writer)) { - goto error; + cmd_ret = CMD_ERROR; + goto end; } end: + free(session_name); poptFreeContext(pc); - if (free_session_name) { - free(session_name); - } return cmd_ret; -error: - cmd_ret = CMD_ERROR; - goto end; }