X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Fclear.cpp;h=1637cf240360da58c3a66f0de0291523631fc78b;hb=HEAD;hp=61879d61d1d9fd06751c736f5fd813be57bf94f2;hpb=48a4000561343808724f7cb5fa8c131877489ccd;p=lttng-tools.git diff --git a/src/bin/lttng/commands/clear.cpp b/src/bin/lttng/commands/clear.cpp index 61879d61d..1637cf240 100644 --- a/src/bin/lttng/commands/clear.cpp +++ b/src/bin/lttng/commands/clear.cpp @@ -6,28 +6,29 @@ */ #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 int opt_clear_all; #ifdef LTTNG_EMBED_HELP static const char help_msg[] = #include -; + ; #endif /* Mi writer */ @@ -40,10 +41,10 @@ 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_clear_all, 1, 0, 0}, - {"list-options", 0, POPT_ARG_NONE, NULL, OPT_LIST_OPTIONS, NULL, NULL}, - {0, 0, 0, 0, 0, 0, 0} + { "help", 'h', POPT_ARG_NONE, nullptr, OPT_HELP, nullptr, nullptr }, + { "all", 'a', POPT_ARG_VAL, &opt_clear_all, 1, nullptr, nullptr }, + { "list-options", 0, POPT_ARG_NONE, nullptr, OPT_LIST_OPTIONS, nullptr, nullptr }, + { nullptr, 0, 0, nullptr, 0, nullptr, nullptr } }; /* @@ -51,12 +52,10 @@ static struct poptOption long_options[] = { */ static int clear_session(struct lttng_session *session) { - enum lttng_clear_handle_status status = - LTTNG_CLEAR_HANDLE_STATUS_OK; - struct lttng_clear_handle *handle = NULL; + enum lttng_clear_handle_status status = LTTNG_CLEAR_HANDLE_STATUS_OK; + struct lttng_clear_handle *handle = nullptr; enum lttng_error_code ret_code; bool printed_wait_msg = false; - char *session_name = NULL; int ret; ret = lttng_clear_session(session->name, &handle); @@ -66,13 +65,12 @@ static int clear_session(struct lttng_session *session) } do { - status = lttng_clear_handle_wait_for_completion(handle, - DEFAULT_DATA_AVAILABILITY_WAIT_TIME_US / USEC_PER_MSEC); + status = lttng_clear_handle_wait_for_completion( + handle, DEFAULT_DATA_AVAILABILITY_WAIT_TIME_US / USEC_PER_MSEC); switch (status) { case LTTNG_CLEAR_HANDLE_STATUS_TIMEOUT: if (!printed_wait_msg) { - _MSG("Waiting for clear of session \"%s\"", - session->name); + _MSG("Waiting for clear of session \"%s\"", session->name); printed_wait_msg = true; } _MSG("."); @@ -82,7 +80,7 @@ static int clear_session(struct lttng_session *session) break; default: ERR("Failed to wait for the completion of clear for session \"%s\"", - session->name); + session->name); ret = -1; goto error; } @@ -99,8 +97,7 @@ static int clear_session(struct lttng_session *session) goto error; } - MSG("%sSession \"%s\" cleared", printed_wait_msg ? "\n" : "", - session->name); + MSG("%sSession \"%s\" cleared", printed_wait_msg ? "\n" : "", session->name); printed_wait_msg = false; if (lttng_opt_mi) { @@ -117,7 +114,6 @@ error: MSG(""); } lttng_clear_handle_destroy(handle); - free(session_name); return ret; } @@ -153,16 +149,16 @@ error: int cmd_clear(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; - bool free_session_name = false; - struct lttng_session *sessions = NULL; + char *session_name = nullptr; + const char *arg_session_name = nullptr; + const char *leftover = nullptr; + 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) { @@ -189,16 +185,14 @@ int cmd_clear(int argc, const char **argv) } /* Open command element */ - ret = mi_lttng_writer_command_open(writer, - mi_lttng_element_command_clear); + ret = mi_lttng_writer_command_open(writer, mi_lttng_element_command_clear); 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; @@ -213,19 +207,22 @@ int cmd_clear(int argc, const char **argv) } if (!opt_clear_all) { - session_name = (char *) poptGetArg(pc); - if (!session_name) { + arg_session_name = poptGetArg(pc); + 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 = strdup(arg_session_name); + if (session_name == nullptr) { + PERROR("Failed to copy session name"); } - free_session_name = true; } - } else { - session_name = NULL; + + if (session_name == nullptr) { + command_ret = CMD_ERROR; + success = 0; + goto mi_closing; + } } leftover = poptGetArg(pc); @@ -254,10 +251,10 @@ int cmd_clear(int argc, const char **argv) } } else { /* 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 = clear_session(&sessions[i]); if (command_ret) { ERR("%s", lttng_strerror(command_ret)); @@ -285,8 +282,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; @@ -307,9 +304,7 @@ end: } free(sessions); - if (free_session_name) { - free(session_name); - } + free(session_name); /* Overwrite ret if an error occurred during clear_session/all */ ret = command_ret ? command_ret : ret;