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

Reply via email to