From: Simon Marchi <[email protected]> The --mi option is used to ask lttng to print information in a format easily understandable by another program. Currently, only session printing is affected: it prints session names one per line.
The term mi stands for machine interface, and is stolen without any remorse from GDB's lexicon. Signed-off-by: Simon Marchi <[email protected]> --- src/bin/lttng/commands/list.c | 35 ++++++++++++++++++++++++++--------- 1 files changed, 26 insertions(+), 9 deletions(-) diff --git a/src/bin/lttng/commands/list.c b/src/bin/lttng/commands/list.c index 1c7085d..9e13e6b 100644 --- a/src/bin/lttng/commands/list.c +++ b/src/bin/lttng/commands/list.c @@ -30,6 +30,7 @@ static int opt_kernel; static char *opt_channel; static int opt_domain; static int opt_fields; +static int opt_mi; #if 0 /* Not implemented yet */ static char *opt_cmd_name; @@ -44,6 +45,7 @@ enum { OPT_HELP = 1, OPT_USERSPACE, OPT_LIST_OPTIONS, + OPT_MI, }; static struct lttng_handle *handle; @@ -63,6 +65,7 @@ static struct poptOption long_options[] = { {"domain", 'd', POPT_ARG_VAL, &opt_domain, 1, 0, 0}, {"fields", 'f', POPT_ARG_VAL, &opt_fields, 1, 0, 0}, {"list-options", 0, POPT_ARG_NONE, NULL, OPT_LIST_OPTIONS, NULL, NULL}, + {"mi", 0, POPT_ARG_NONE, &opt_mi, 0, NULL, NULL}, {0, 0, 0, 0, 0, 0, 0} }; @@ -80,6 +83,7 @@ static void usage(FILE *ofp) fprintf(ofp, "\n"); fprintf(ofp, " -h, --help Show this help\n"); fprintf(ofp, " --list-options Simple listing of options\n"); + fprintf(ofp, " --mi Prints data in a format suitable for parsing\n"); fprintf(ofp, " -k, --kernel Select kernel domain\n"); fprintf(ofp, " -u, --userspace Select user-space domain.\n"); fprintf(ofp, " -f, --fields List event fields.\n"); @@ -618,40 +622,53 @@ static int list_sessions(const char *session_name) ERR("%s", lttng_strerror(ret)); goto error; } else if (count == 0) { - MSG("Currently no available tracing session"); + if (!opt_mi) { + MSG("Currently no available tracing session"); + } goto end; } - if (session_name == NULL) { + if (session_name == NULL && !opt_mi) { MSG("Available tracing sessions:"); } for (i = 0; i < count; i++) { + if (session_name != NULL) { if (strncmp(sessions[i].name, session_name, NAME_MAX) == 0) { session_found = 1; - MSG("Tracing session %s: [%s%s]", session_name, + + if (opt_mi) { + MSG("%s", session_name); + } else { + MSG("Tracing session %s: [%s%s]", session_name, active_string(sessions[i].enabled), snapshot_string(sessions[i].snapshot_mode)); - MSG("%sTrace path: %s\n", indent4, sessions[i].path); + MSG("%sTrace path: %s\n", indent4, sessions[i].path); + } + break; } } else { - MSG(" %d) %s (%s) [%s%s]", i + 1, sessions[i].name, sessions[i].path, - active_string(sessions[i].enabled), - snapshot_string(sessions[i].snapshot_mode)); + if (opt_mi) { + MSG("%s", sessions[i].name); + } else { + MSG(" %d) %s (%s) [%s%s]", i + 1, sessions[i].name, sessions[i].path, + active_string(sessions[i].enabled), + snapshot_string(sessions[i].snapshot_mode)); + } } } free(sessions); - if (!session_found && session_name != NULL) { + if (!session_found && session_name != NULL && !opt_mi) { ERR("Session '%s' not found", session_name); ret = CMD_ERROR; goto error; } - if (session_name == NULL) { + if (session_name == NULL && !opt_mi) { MSG("\nUse lttng list <session_name> for more details"); } -- 1.7.1 _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
