Like we spoke the other day on IRC, the --mi patch needs more work for the output format so we come up with something standard and documented.
So I've merged the 3 other patches that do not uses --mi option. Cheers! David [email protected]: > 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"); > } > _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
