X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Fenable_events.cpp;fp=src%2Fbin%2Flttng%2Fcommands%2Fenable_events.cpp;h=2c20eea1997d11b4b862e559ccc9fc0a37317396;hp=1d81143ae562bd6589ad09b8c1e07b0dc59b6575;hb=5b915816f16e7cb3134dd7279abad79b31c2486c;hpb=3957512ed31ca945f8353d5812f317314c905640 diff --git a/src/bin/lttng/commands/enable_events.cpp b/src/bin/lttng/commands/enable_events.cpp index 1d81143ae..2c20eea19 100644 --- a/src/bin/lttng/commands/enable_events.cpp +++ b/src/bin/lttng/commands/enable_events.cpp @@ -35,7 +35,6 @@ #define LTTNG_SYMBOL_NAME_LEN_SCANF_IS_A_BROKEN_API "255" #endif -static char *opt_event_list; static int opt_event_type; static const char *opt_loglevel; static int opt_loglevel_type; @@ -430,7 +429,7 @@ static void warn_on_truncated_exclusion_names(const struct lttng_dynamic_pointer * Enabling event using the lttng API. * Note: in case of error only the last error code will be return. */ -static int enable_events(char *session_name) +static int enable_events(char *session_name, char *event_list) { int ret = CMD_SUCCESS, command_ret = CMD_SUCCESS; int error_holder = CMD_SUCCESS, warn = 0, error = 0, success = 1; @@ -812,7 +811,7 @@ static int enable_events(char *session_name) } /* Strip event list */ - event_name = strtok(opt_event_list, ","); + event_name = strtok(event_list, ","); while (event_name != NULL) { /* Copy name and type of the event */ strncpy(ev->name, event_name, LTTNG_SYMBOL_NAME_LEN); @@ -1222,6 +1221,8 @@ int cmd_enable_events(int argc, const char **argv) int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1; static poptContext pc; char *session_name = NULL; + char *event_list = NULL; + const char *arg_event_list = NULL; const char *leftover = NULL; int event_type = -1; @@ -1320,13 +1321,22 @@ int cmd_enable_events(int argc, const char **argv) } } - opt_event_list = (char*) poptGetArg(pc); - if (opt_event_list == NULL && opt_enable_all == 0) { - ERR("Missing event name(s).\n"); + arg_event_list = poptGetArg(pc); + if (arg_event_list == NULL && opt_enable_all == 0) { + ERR("Missing event name(s)."); ret = CMD_ERROR; goto end; } + if (opt_enable_all == 0) { + event_list = strdup(arg_event_list); + if (event_list == NULL) { + PERROR("Failed to copy event name(s)"); + ret = CMD_ERROR; + goto end; + } + } + leftover = poptGetArg(pc); if (leftover) { ERR("Unknown argument: %s", leftover); @@ -1345,7 +1355,7 @@ int cmd_enable_events(int argc, const char **argv) session_name = opt_session_name; } - command_ret = enable_events(session_name); + command_ret = enable_events(session_name, event_list); if (command_ret) { success = 0; goto mi_closing; @@ -1387,6 +1397,8 @@ end: free(session_name); } + free(event_list); + /* Overwrite ret if an error occurred in enable_events */ ret = command_ret ? command_ret : ret;