X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Fdestroy.cpp;h=83e23ab757e23a715776fbc42461e990531a3888;hb=ff01a57416330247403e58bf4e28d4771a46ce35;hp=ed09b650937055fd4e990a4335797cc18e6c3444;hpb=30eb3927304cbe2bf744604cd997a6e75b674945;p=lttng-tools.git diff --git a/src/bin/lttng/commands/destroy.cpp b/src/bin/lttng/commands/destroy.cpp index ed09b6509..83e23ab75 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, nullptr, OPT_HELP, nullptr, nullptr }, + { "all", 'a', POPT_ARG_VAL, &opt_destroy_all, 1, nullptr, nullptr }, + { "list-options", 0, POPT_ARG_NONE, nullptr, OPT_LIST_OPTIONS, nullptr, nullptr }, + { "no-wait", 'n', POPT_ARG_VAL, &opt_no_wait, 1, nullptr, nullptr }, + { nullptr, 0, 0, nullptr, 0, nullptr, nullptr } }; /* @@ -58,14 +58,14 @@ static struct poptOption long_options[] = { static int destroy_session(struct lttng_session *session) { int ret; - char *session_name = NULL; + char *session_name = nullptr; bool session_was_already_stopped; enum lttng_error_code ret_code; - struct lttng_destruction_handle *handle = NULL; + struct lttng_destruction_handle *handle = nullptr; enum lttng_destruction_handle_status status; bool newline_needed = false, printed_destroy_msg = false; enum lttng_rotation_state rotation_state; - char *stats_str = NULL; + char *stats_str = nullptr; ret = lttng_stop_tracing_no_wait(session->name); if (ret < 0 && ret != -LTTNG_ERR_TRACE_ALREADY_STOPPED) { @@ -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,14 +175,12 @@ 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; } @@ -195,13 +190,12 @@ static int destroy_session(struct lttng_session *session) /* 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,16 +261,17 @@ 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 *leftover = NULL; + char *session_name = nullptr; + const char *arg_session_name = nullptr; + const char *leftover = nullptr; - struct lttng_session *sessions = NULL; + struct lttng_session *sessions = nullptr; int count; - int found; + bool found; - pc = poptGetContext(NULL, argc, argv, long_options, 0); + pc = poptGetContext(nullptr, argc, argv, long_options, 0); poptReadDefaultConfig(pc, 0); while ((opt = poptGetNextOpt(pc)) != -1) { @@ -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,31 +335,35 @@ 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(); - if (session_name == NULL) { - command_ret = CMD_ERROR; - success = 0; - goto mi_closing; - } } else { - session_name = opt_session_name; + session_name = strdup(arg_session_name); + if (session_name == nullptr) { + PERROR("Failed to copy session name"); + } + } + + if (session_name == nullptr) { + command_ret = CMD_ERROR; + success = 0; + goto mi_closing; } /* Find the corresponding lttng_session struct */ - found = 0; + found = false; for (i = 0; i < count; i++) { if (strncmp(sessions[i].name, session_name, NAME_MAX) == 0) { - found = 1; + found = true; command_ret = destroy_session(&sessions[i]); 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 */