X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Fsnapshot.c;h=d8a6b81486939fdb945ca91b96bc19a6be4c6ce3;hp=ce63e5e875c858fc749a1e63199605469c5fc87a;hb=4fc83d948cea6b10484e65f004a6c167e71ac440;hpb=1862dfe0f2d0a7a1ec9a2a127b5559d400db05ba diff --git a/src/bin/lttng/commands/snapshot.c b/src/bin/lttng/commands/snapshot.c index ce63e5e87..d8a6b8148 100644 --- a/src/bin/lttng/commands/snapshot.c +++ b/src/bin/lttng/commands/snapshot.c @@ -48,6 +48,12 @@ static int cmd_record(int argc, const char **argv); static const char *indent4 = " "; +#ifdef LTTNG_EMBED_HELP +static const char help_msg[] = +#include +; +#endif + enum { OPT_HELP = 1, OPT_LIST_OPTIONS, @@ -213,50 +219,6 @@ error: return ret; } -/* - * Delete output by ID (machine interface version). - */ -static int mi_del_output(uint32_t id, const char *name) -{ - int ret; - struct lttng_snapshot_output *output = NULL; - - assert(writer); - - output = lttng_snapshot_output_create(); - if (!output) { - ret = CMD_FATAL; - goto error; - } - - if (name) { - ret = lttng_snapshot_output_set_name(name, output); - } else if (id != UINT32_MAX) { - ret = lttng_snapshot_output_set_id(id, output); - } else { - ret = CMD_ERROR; - goto error; - } - if (ret < 0) { - ret = CMD_FATAL; - goto error; - } - - ret = lttng_snapshot_del_output(current_session_name, output); - if (ret < 0) { - goto error; - } - - ret = mi_lttng_snapshot_del_output(writer, id, name, current_session_name); - if (ret) { - ret = CMD_ERROR; - } - -error: - lttng_snapshot_output_destroy(output); - return ret; -} - /* * Delete output by ID. */ @@ -297,53 +259,12 @@ static int del_output(uint32_t id, const char *name) name, current_session_name); } -error: - lttng_snapshot_output_destroy(output); - return ret; -} - -/* - * Add output from the user URL (machine interface). - */ -static int mi_add_output(const char *url) -{ - int ret; - struct lttng_snapshot_output *output = NULL; - char name[NAME_MAX]; - const char *n_ptr; - - if (!url && (!opt_data_url || !opt_ctrl_url)) { - ret = CMD_ERROR; - goto error; - } - - output = create_output_from_args(url); - if (!output) { - ret = CMD_FATAL; - goto error; - } - - /* This call, if successful, populates the id of the output object. */ - ret = lttng_snapshot_add_output(current_session_name, output); - if (ret < 0) { - goto error; - } - - n_ptr = lttng_snapshot_output_get_name(output); - if (*n_ptr == '\0') { - int pret; - pret = snprintf(name, sizeof(name), DEFAULT_SNAPSHOT_NAME "-%" PRIu32, - lttng_snapshot_output_get_id(output)); - if (pret < 0) { - PERROR("snprintf add output name"); + if (lttng_opt_mi) { + ret = mi_lttng_snapshot_del_output(writer, id, name, + current_session_name); + if (ret) { + ret = CMD_ERROR; } - n_ptr = name; - } - - ret = mi_lttng_snapshot_add_output(writer, current_session_name, n_ptr, - output); - if (ret) { - ret = CMD_ERROR; } error: @@ -395,6 +316,13 @@ static int add_output(const char *url) lttng_snapshot_output_get_id(output), n_ptr, lttng_snapshot_output_get_ctrl_url(output), lttng_snapshot_output_get_maxsize(output)); + if (lttng_opt_mi) { + ret = mi_lttng_snapshot_add_output(writer, current_session_name, + n_ptr, output); + if (ret) { + ret = CMD_ERROR; + } + } error: lttng_snapshot_output_destroy(output); return ret; @@ -409,11 +337,7 @@ static int cmd_add_output(int argc, const char **argv) goto end; } - if (lttng_opt_mi) { - ret = mi_add_output(argv[1]); - } else { - ret = add_output(argv[1]); - } + ret = add_output(argv[1]); end: return ret; @@ -432,18 +356,10 @@ static int cmd_del_output(int argc, const char **argv) errno = 0; id = strtol(argv[1], &name, 10); - if (id == 0 && errno == 0) { - if (lttng_opt_mi) { - ret = mi_del_output(UINT32_MAX, name); - } else { - ret = del_output(UINT32_MAX, name); - } + if (id == 0 && (errno == 0 || errno == EINVAL)) { + ret = del_output(UINT32_MAX, name); } else if (errno == 0 && *name == '\0') { - if (lttng_opt_mi) { - ret = mi_del_output(id, NULL); - } else { - ret = del_output(id, NULL); - } + ret = del_output(id, NULL); } else { ERR("Argument %s not recognized", argv[1]); ret = -1; @@ -669,9 +585,6 @@ int cmd_snapshot(int argc, const char **argv) command_ret = handle_command(poptGetArgs(pc)); if (command_ret) { switch (-command_ret) { - case LTTNG_ERR_EPERM: - ERR("The session needs to be set in no output mode (--no-output)"); - break; case LTTNG_ERR_SNAPSHOT_NODATA: WARN("%s", lttng_strerror(command_ret)); @@ -726,7 +639,7 @@ end: free(session_name); } - /* Overwrite ret if an error occured during handle_command */ + /* Overwrite ret if an error occurred during handle_command */ ret = command_ret ? command_ret : ret; poptFreeContext(pc); return ret;