X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Fenable_rotation.cpp;h=77879d0afb352ca9db42101ff38702b903f0d6d6;hb=HEAD;hp=223d47ccafe583e2736b4ce30db1f043bdb45de1;hpb=c9e313bc594f40a86eed237dce222c0fc99c957f;p=lttng-tools.git diff --git a/src/bin/lttng/commands/enable_rotation.cpp b/src/bin/lttng/commands/enable_rotation.cpp index 223d47cca..77879d0af 100644 --- a/src/bin/lttng/commands/enable_rotation.cpp +++ b/src/bin/lttng/commands/enable_rotation.cpp @@ -6,6 +6,16 @@ */ #define _LGPL_SOURCE +#include "../command.hpp" + +#include +#include +#include + +#include + +#include +#include #include #include #include @@ -13,15 +23,6 @@ #include #include #include -#include -#include - -#include -#include -#include - -#include "../command.hpp" -#include static char *opt_session_name; static struct mi_writer *writer; @@ -29,7 +30,7 @@ static struct mi_writer *writer; #ifdef LTTNG_EMBED_HELP static const char help_msg[] = #include -; + ; #endif enum { @@ -41,12 +42,12 @@ enum { static struct poptOption long_options[] = { /* longName, shortName, argInfo, argPtr, value, descrip, argDesc */ - {"help", 'h', POPT_ARG_NONE, 0, OPT_HELP, 0, 0}, - {"list-options", 0, POPT_ARG_NONE, NULL, OPT_LIST_OPTIONS, NULL, NULL}, - {"session", 's', POPT_ARG_STRING, &opt_session_name, 0, 0, 0}, - {"timer", 0, POPT_ARG_INT, 0, OPT_TIMER, 0, 0}, - {"size", 0, POPT_ARG_INT, 0, OPT_SIZE, 0, 0}, - {0, 0, 0, 0, 0, 0, 0} + { "help", 'h', POPT_ARG_NONE, nullptr, OPT_HELP, nullptr, nullptr }, + { "list-options", 0, POPT_ARG_NONE, nullptr, OPT_LIST_OPTIONS, nullptr, nullptr }, + { "session", 's', POPT_ARG_STRING, &opt_session_name, 0, nullptr, nullptr }, + { "timer", 0, POPT_ARG_INT, nullptr, OPT_TIMER, nullptr, nullptr }, + { "size", 0, POPT_ARG_INT, nullptr, OPT_SIZE, nullptr, nullptr }, + { nullptr, 0, 0, nullptr, 0, nullptr, nullptr } }; static const char *schedule_type_str[] = { @@ -55,10 +56,11 @@ static const char *schedule_type_str[] = { }; static enum cmd_error_code add_schedule(const char *session_name, - enum lttng_rotation_schedule_type schedule_type, uint64_t value) + enum lttng_rotation_schedule_type schedule_type, + uint64_t value) { enum cmd_error_code ret = CMD_SUCCESS; - struct lttng_rotation_schedule *schedule = NULL; + struct lttng_rotation_schedule *schedule = nullptr; enum lttng_rotation_status status; const char *schedule_type_name; @@ -69,8 +71,7 @@ static enum cmd_error_code add_schedule(const char *session_name, ret = CMD_ERROR; goto end; } - status = lttng_rotation_schedule_periodic_set_period(schedule, - value); + status = lttng_rotation_schedule_periodic_set_period(schedule, value); break; case LTTNG_ROTATION_SCHEDULE_TYPE_SIZE_THRESHOLD: schedule = lttng_rotation_schedule_size_threshold_create(); @@ -78,8 +79,7 @@ static enum cmd_error_code add_schedule(const char *session_name, ret = CMD_ERROR; goto end; } - status = lttng_rotation_schedule_size_threshold_set_threshold( - schedule, value); + status = lttng_rotation_schedule_size_threshold_set_threshold(schedule, value); break; default: ERR("Unknown schedule type"); @@ -96,8 +96,7 @@ static enum cmd_error_code add_schedule(const char *session_name, ret = CMD_ERROR; goto end; default: - ERR("Unknown error occurred setting %s rotation schedule", - schedule_type_name); + ERR("Unknown error occurred setting %s rotation schedule", schedule_type_name); ret = CMD_ERROR; goto end; } @@ -109,32 +108,36 @@ static enum cmd_error_code add_schedule(const char *session_name, switch (schedule_type) { case LTTNG_ROTATION_SCHEDULE_TYPE_PERIODIC: MSG("Enabled %s rotations every %" PRIu64 " %s on session %s", - schedule_type_name, value, USEC_UNIT, session_name); + schedule_type_name, + value, + USEC_UNIT, + session_name); break; case LTTNG_ROTATION_SCHEDULE_TYPE_SIZE_THRESHOLD: MSG("Enabled %s rotations every %" PRIu64 " bytes written on session %s", - schedule_type_name, value, session_name); + schedule_type_name, + value, + session_name); break; default: abort(); } break; case LTTNG_ROTATION_STATUS_INVALID: - ERR("Invalid parameter for %s rotation schedule", - schedule_type_name); + ERR("Invalid parameter for %s rotation schedule", schedule_type_name); ret = CMD_ERROR; break; case LTTNG_ROTATION_STATUS_SCHEDULE_ALREADY_SET: ERR("A %s rotation schedule is already set on session %s", - schedule_type_name, - session_name); + schedule_type_name, + session_name); ret = CMD_ERROR; break; case LTTNG_ROTATION_STATUS_ERROR: default: ERR("Failed to enable %s rotation schedule on session %s", - schedule_type_name, - session_name); + schedule_type_name, + session_name); ret = CMD_ERROR; break; } @@ -142,8 +145,7 @@ static enum cmd_error_code add_schedule(const char *session_name, if (lttng_opt_mi) { int mi_ret; - mi_ret = mi_lttng_rotation_schedule_result(writer, - schedule, ret == CMD_SUCCESS); + mi_ret = mi_lttng_rotation_schedule_result(writer, schedule, ret == CMD_SUCCESS); if (mi_ret < 0) { ret = CMD_ERROR; goto end; @@ -165,13 +167,13 @@ int cmd_enable_rotation(int argc, const char **argv) int popt_ret, opt, ret = 0; enum cmd_error_code cmd_ret = CMD_SUCCESS; static poptContext pc; - char *session_name = NULL; - char *opt_arg = NULL; + char *session_name = nullptr; + char *opt_arg = nullptr; bool free_session_name = false; uint64_t timer_us = 0, size_bytes = 0; bool periodic_rotation = false, size_rotation = false; - pc = poptGetContext(NULL, argc, argv, long_options, 0); + pc = poptGetContext(nullptr, argc, argv, long_options, 0); popt_ret = poptReadDefaultConfig(pc, 0); if (popt_ret) { ERR("poptReadDefaultConfig"); @@ -179,6 +181,10 @@ int cmd_enable_rotation(int argc, const char **argv) } while ((opt = poptGetNextOpt(pc)) != -1) { + if (opt_arg) { + free(opt_arg); + opt_arg = nullptr; + } switch (opt) { case OPT_HELP: SHOW_HELP(); @@ -222,9 +228,9 @@ int cmd_enable_rotation(int argc, const char **argv) } } - if (opt_session_name == NULL) { + if (opt_session_name == nullptr) { session_name = get_session_name(); - if (session_name == NULL) { + if (session_name == nullptr) { goto error; } free_session_name = true; @@ -241,14 +247,13 @@ int cmd_enable_rotation(int argc, const char **argv) /* Open command element */ ret = mi_lttng_writer_command_open(writer, - mi_lttng_element_command_enable_rotation); + mi_lttng_element_command_enable_rotation); if (ret) { goto error; } /* 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) { goto error; } @@ -262,14 +267,13 @@ int cmd_enable_rotation(int argc, const char **argv) if (lttng_opt_mi) { ret = mi_lttng_writer_open_element(writer, - mi_lttng_element_rotation_schedule_results); + mi_lttng_element_rotation_schedule_results); if (ret) { goto error; } - ret = mi_lttng_writer_write_element_string(writer, - mi_lttng_element_session_name, - session_name); + ret = mi_lttng_writer_write_element_string( + writer, mi_lttng_element_session_name, session_name); if (ret) { goto error; } @@ -280,18 +284,16 @@ int cmd_enable_rotation(int argc, const char **argv) * Continue processing even on error as multiple schedules can * be specified at once. */ - cmd_ret = add_schedule(session_name, - LTTNG_ROTATION_SCHEDULE_TYPE_PERIODIC, - timer_us); + cmd_ret = + add_schedule(session_name, LTTNG_ROTATION_SCHEDULE_TYPE_PERIODIC, timer_us); } if (size_rotation) { enum cmd_error_code tmp_ret; /* Don't overwrite cmd_ret if it already indicates an error. */ - tmp_ret = add_schedule(session_name, - LTTNG_ROTATION_SCHEDULE_TYPE_SIZE_THRESHOLD, - size_bytes); + tmp_ret = add_schedule( + session_name, LTTNG_ROTATION_SCHEDULE_TYPE_SIZE_THRESHOLD, size_bytes); cmd_ret = cmd_ret ? cmd_ret : tmp_ret; } @@ -313,9 +315,8 @@ close_command: } /* Success ? */ - ret = mi_lttng_writer_write_element_bool(writer, - mi_lttng_element_command_success, - cmd_ret == CMD_SUCCESS); + ret = mi_lttng_writer_write_element_bool( + writer, mi_lttng_element_command_success, cmd_ret == CMD_SUCCESS); if (ret) { goto error; } @@ -333,6 +334,7 @@ end: if (free_session_name) { free(session_name); } + free(opt_arg); return cmd_ret; error: