X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Fdestroy.cpp;h=6291dd36f1c0af7971e90793ddc8efdc3f70a0f1;hb=28ab034a2c3582d07d3423d2d746731f87d3969f;hp=2c51142bfd9a00565d6b38d67476405a8b4df4e8;hpb=21cf9b6b1843774306a76f4dccddddd706b64f79;p=lttng-tools.git diff --git a/src/bin/lttng/commands/destroy.cpp b/src/bin/lttng/commands/destroy.cpp index 2c51142bf..6291dd36f 100644 --- a/src/bin/lttng/commands/destroy.cpp +++ b/src/bin/lttng/commands/destroy.cpp @@ -6,30 +6,30 @@ */ #define _LGPL_SOURCE +#include "../command.hpp" + +#include +#include +#include + +#include + #include +#include #include #include #include #include #include #include -#include -#include - -#include "../command.h" - -#include -#include -#include -static char *opt_session_name; static int opt_destroy_all; static int opt_no_wait; #ifdef LTTNG_EMBED_HELP static const char help_msg[] = #include -; + ; #endif /* Mi writer */ @@ -42,11 +42,11 @@ enum { static struct poptOption long_options[] = { /* longName, shortName, argInfo, argPtr, value, descrip, argDesc */ - {"help", 'h', POPT_ARG_NONE, 0, OPT_HELP, 0, 0}, - {"all", 'a', POPT_ARG_VAL, &opt_destroy_all, 1, 0, 0}, - {"list-options", 0, POPT_ARG_NONE, NULL, OPT_LIST_OPTIONS, NULL, NULL}, - {"no-wait", 'n', POPT_ARG_VAL, &opt_no_wait, 1, 0, 0}, - {0, 0, 0, 0, 0, 0, 0} + { "help", 'h', POPT_ARG_NONE, 0, OPT_HELP, 0, 0 }, + { "all", 'a', POPT_ARG_VAL, &opt_destroy_all, 1, 0, 0 }, + { "list-options", 0, POPT_ARG_NONE, NULL, OPT_LIST_OPTIONS, NULL, NULL }, + { "no-wait", 'n', POPT_ARG_VAL, &opt_no_wait, 1, 0, 0 }, + { 0, 0, 0, 0, 0, 0, 0 } }; /* @@ -88,8 +88,7 @@ static int destroy_session(struct lttng_session *session) */ if (ret) { if (!printed_destroy_msg) { - _MSG("Destroying session %s", - session->name); + _MSG("Destroying session %s", session->name); newline_needed = true; printed_destroy_msg = true; fflush(stdout); @@ -125,8 +124,7 @@ static int destroy_session(struct lttng_session *session) do { status = lttng_destruction_handle_wait_for_completion( - handle, DEFAULT_DATA_AVAILABILITY_WAIT_TIME_US / - USEC_PER_MSEC); + handle, DEFAULT_DATA_AVAILABILITY_WAIT_TIME_US / USEC_PER_MSEC); switch (status) { case LTTNG_DESTRUCTION_HANDLE_STATUS_TIMEOUT: if (!printed_destroy_msg) { @@ -141,8 +139,8 @@ static int destroy_session(struct lttng_session *session) break; default: ERR("%sFailed to wait for the completion of the destruction of session \"%s\"", - newline_needed ? "\n" : "", - session->name); + newline_needed ? "\n" : "", + session->name); newline_needed = false; ret = -1; goto error; @@ -152,7 +150,7 @@ static int destroy_session(struct lttng_session *session) status = lttng_destruction_handle_get_result(handle, &ret_code); if (status != LTTNG_DESTRUCTION_HANDLE_STATUS_OK) { ERR("%sFailed to get the result of session destruction", - newline_needed ? "\n" : ""); + newline_needed ? "\n" : ""); ret = -1; newline_needed = false; goto error; @@ -162,11 +160,10 @@ static int destroy_session(struct lttng_session *session) goto error; } - status = lttng_destruction_handle_get_rotation_state( - handle, &rotation_state); + status = lttng_destruction_handle_get_rotation_state(handle, &rotation_state); if (status != LTTNG_DESTRUCTION_HANDLE_STATUS_OK) { ERR("%sFailed to get rotation state from destruction handle", - newline_needed ? "\n" : ""); + newline_needed ? "\n" : ""); newline_needed = false; goto skip_wait_rotation; } @@ -178,30 +175,27 @@ static int destroy_session(struct lttng_session *session) { const struct lttng_trace_archive_location *location; - status = lttng_destruction_handle_get_archive_location( - handle, &location); + status = lttng_destruction_handle_get_archive_location(handle, &location); if (status == LTTNG_DESTRUCTION_HANDLE_STATUS_OK) { - ret = print_trace_archive_location( - location, session->name); + ret = print_trace_archive_location(location, session->name); if (ret) { ERR("%sFailed to print the location of trace archive", - newline_needed ? "\n" : ""); + newline_needed ? "\n" : ""); newline_needed = false; goto skip_wait_rotation; } break; } - /* fall-through. */ } + /* fall-through. */ default: ERR("%sFailed to get the location of the rotation performed during the session's destruction", - newline_needed ? "\n" : ""); + newline_needed ? "\n" : ""); newline_needed = false; goto skip_wait_rotation; } skip_wait_rotation: - MSG("%sSession %s destroyed", newline_needed ? "\n" : "", - session->name); + MSG("%sSession %s destroyed", newline_needed ? "\n" : "", session->name); newline_needed = false; if (stats_str) { MSG("%s", stats_str); @@ -251,8 +245,8 @@ static int destroy_all_sessions(struct lttng_session *sessions, int count) if (ret < 0) { ERR("%s during the destruction of session \"%s\"", - lttng_strerror(ret), - sessions[i].name); + lttng_strerror(ret), + sessions[i].name); /* Continue to next session. */ error_occurred = true; } @@ -267,9 +261,10 @@ static int destroy_all_sessions(struct lttng_session *sessions, int count) int cmd_destroy(int argc, const char **argv) { int opt; - int ret = CMD_SUCCESS , i, command_ret = CMD_SUCCESS, success = 1; + int ret = CMD_SUCCESS, i, command_ret = CMD_SUCCESS, success = 1; static poptContext pc; char *session_name = NULL; + const char *arg_session_name = NULL; const char *leftover = NULL; struct lttng_session *sessions = NULL; @@ -303,16 +298,14 @@ int cmd_destroy(int argc, const char **argv) } /* Open command element */ - ret = mi_lttng_writer_command_open(writer, - mi_lttng_element_command_destroy); + ret = mi_lttng_writer_command_open(writer, mi_lttng_element_command_destroy); if (ret) { ret = CMD_ERROR; goto end; } /* Open output element */ - ret = mi_lttng_writer_open_element(writer, - mi_lttng_element_command_output); + ret = mi_lttng_writer_open_element(writer, mi_lttng_element_command_output); if (ret) { ret = CMD_ERROR; goto end; @@ -342,18 +335,22 @@ int cmd_destroy(int argc, const char **argv) success = 0; } } else { - opt_session_name = (char *) poptGetArg(pc); + arg_session_name = poptGetArg(pc); - if (!opt_session_name) { + if (!arg_session_name) { /* No session name specified, lookup default */ session_name = get_session_name(); + } else { + session_name = strdup(arg_session_name); if (session_name == NULL) { - command_ret = CMD_ERROR; - success = 0; - goto mi_closing; + PERROR("Failed to copy session name"); } - } else { - session_name = opt_session_name; + } + + if (session_name == NULL) { + command_ret = CMD_ERROR; + success = 0; + goto mi_closing; } /* Find the corresponding lttng_session struct */ @@ -365,8 +362,8 @@ int cmd_destroy(int argc, const char **argv) if (command_ret) { success = 0; ERR("%s during the destruction of session \"%s\"", - lttng_strerror(command_ret), - sessions[i].name); + lttng_strerror(command_ret), + sessions[i].name); } } } @@ -398,8 +395,8 @@ mi_closing: } /* Success ? */ - ret = mi_lttng_writer_write_element_bool(writer, - mi_lttng_element_command_success, success); + ret = mi_lttng_writer_write_element_bool( + writer, mi_lttng_element_command_success, success); if (ret) { ret = CMD_ERROR; goto end; @@ -419,10 +416,7 @@ end: ret = ret ? ret : -LTTNG_ERR_MI_IO_FAIL; } - if (opt_session_name == NULL) { - free(session_name); - } - + free(session_name); free(sessions); /* Overwrite ret if an error occurred during destroy_session/all */