{ NULL, NULL } /* Array closure */
};
-/*
- * usage
- */
-static void usage(FILE *ofp)
-{
- fprintf(ofp, "usage: lttng snapshot [OPTION] ACTION\n");
- fprintf(ofp, "\n");
- fprintf(ofp, "Actions:\n");
- fprintf(ofp, " add-output [-m <SIZE>] [-s <NAME>] [-n <NAME>] <URL> | -C <URL> -D <URL>\n");
- fprintf(ofp, " Setup and add an snapshot output for a session.\n");
- fprintf(ofp, "\n");
- fprintf(ofp, " del-output ID | NAME [-s <NAME>]\n");
- fprintf(ofp, " Delete an output for a session using the ID.\n");
- fprintf(ofp, "\n");
- fprintf(ofp, " list-output [-s <NAME>]\n");
- fprintf(ofp, " List the output of a session.\n");
- fprintf(ofp, "\n");
- fprintf(ofp, " record [-m <SIZE>] [-s <NAME>] [-n <NAME>] [<URL> | -C <URL> -D <URL>]\n");
- fprintf(ofp, " Snapshot a session's buffer(s) for all domains. If an URL is\n");
- fprintf(ofp, " specified, it is used instead of a previously added output.\n");
- fprintf(ofp, " Specifying only a name or/a size will override the current output value.\n");
- fprintf(ofp, " For instance, you can record a snapshot with a custom maximum size\n");
- fprintf(ofp, " or with a different name.\n");
- fprintf(ofp, "\n");
- fprintf(ofp, "Options:\n");
- fprintf(ofp, " -h, --help Show this help\n");
- fprintf(ofp, " --list-options Simple listing of options\n");
- fprintf(ofp, " -s, --session NAME Apply to session name\n");
- fprintf(ofp, " -n, --name NAME Name of the output or snapshot\n");
- fprintf(ofp, " -m, --max-size SIZE Maximum bytes size of the snapshot {+k,+M,+G}\n");
- fprintf(ofp, " -C, --ctrl-url URL Set control path URL. (Must use -D also)\n");
- fprintf(ofp, " -D, --data-url URL Set data path URL. (Must use -C also)\n");
- fprintf(ofp, "\n");
-}
-
/*
* Count and return the number of arguments in argv.
*/
int ret;
if (argc < 2 && (!opt_data_url || !opt_ctrl_url)) {
- usage(stderr);
ret = CMD_ERROR;
goto end;
}
long id;
if (argc < 2) {
- usage(stderr);
ret = CMD_ERROR;
goto end;
}
if (argv == NULL || (!opt_ctrl_url && opt_data_url) ||
(opt_ctrl_url && !opt_data_url)) {
- usage(stderr);
command_ret = CMD_ERROR;
goto end;
}
break;
}
default:
- usage(stderr);
ret = CMD_UNDEFINED;
goto end;
}
break;
case LTTNG_ERR_SNAPSHOT_NODATA:
WARN("%s", lttng_strerror(command_ret));
+
+ /* A warning is fine since the user has no control on
+ * whether or not applications (or the kernel) have
+ * produced any event between the start of the tracing
+ * session and the recording of the snapshot. MI wise
+ * the command is not a success since nothing was
+ * recorded.
+ */
+ command_ret = 0;
break;
default:
ERR("%s", lttng_strerror(command_ret));
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;