Merged in master, stable-2.10, and stable-2.9.

Thanks,
Jérémie

On Wed, Feb 21, 2018 at 04:57:36PM -0500, Julien Desfossez wrote:
> All the commands currently ignore leftover arguments, this can lead to
> wrong usage of the commands and waste of time debugging. For example,
> this command enables the vpid context on all channels instead of only on
> the "mychan" channel:
> $ lttng add-context -u mychan -t vpid
> 
> The correct usage is:
> $ lttng add-context -u -c mychan -t vpid
> 
> We now output an error on leftover arguments:
> $ lttng add-context -u mychan -t vpid
> Error: Unknown argument: mychan
> Error: Command error
> 
> Some commands accept one leftover argument (create, start, stop,
> destroy), so we check if there are other leftovers:
> $ lttng create mysess allo
> Error: Unknown argument: allo
> Error: Command error
> 
> Only the snapshot command is not handled since it has a second level of
> command and does not consume the popt arguments.
> 
> Signed-off-by: Julien Desfossez <[email protected]>
> ---
>  src/bin/lttng/commands/add_context.c      | 8 ++++++++
>  src/bin/lttng/commands/create.c           | 8 ++++++++
>  src/bin/lttng/commands/destroy.c          | 9 +++++++++
>  src/bin/lttng/commands/disable_channels.c | 8 ++++++++
>  src/bin/lttng/commands/disable_events.c   | 8 ++++++++
>  src/bin/lttng/commands/enable_channels.c  | 9 +++++++++
>  src/bin/lttng/commands/enable_events.c    | 8 ++++++++
>  src/bin/lttng/commands/list.c             | 9 ++++++++-
>  src/bin/lttng/commands/load.c             | 8 ++++++++
>  src/bin/lttng/commands/save.c             | 9 ++++++++-
>  src/bin/lttng/commands/start.c            | 8 ++++++++
>  src/bin/lttng/commands/stop.c             | 8 ++++++++
>  src/bin/lttng/commands/view.c             | 8 ++++++++
>  13 files changed, 106 insertions(+), 2 deletions(-)
> 
> diff --git a/src/bin/lttng/commands/add_context.c 
> b/src/bin/lttng/commands/add_context.c
> index 209a9f4..d9121b0 100644
> --- a/src/bin/lttng/commands/add_context.c
> +++ b/src/bin/lttng/commands/add_context.c
> @@ -898,6 +898,7 @@ int cmd_add_context(int argc, const char **argv)
>       static poptContext pc;
>       struct ctx_type *type, *tmptype;
>       char *session_name = NULL;
> +     const char *leftover = NULL;
>  
>       if (argc < 2) {
>               ret = CMD_ERROR;
> @@ -944,6 +945,13 @@ int cmd_add_context(int argc, const char **argv)
>               }
>       }
>  
> +     leftover = poptGetArg(pc);
> +     if (leftover) {
> +             ERR("Unknown argument: %s", leftover);
> +             ret = CMD_ERROR;
> +             goto end;
> +     }
> +
>       ret = print_missing_or_multiple_domains(opt_kernel + opt_userspace +
>                       opt_jul + opt_log4j);
>       if (ret) {
> diff --git a/src/bin/lttng/commands/create.c b/src/bin/lttng/commands/create.c
> index d075f64..faf9f3e 100644
> --- a/src/bin/lttng/commands/create.c
> +++ b/src/bin/lttng/commands/create.c
> @@ -625,6 +625,7 @@ int cmd_create(int argc, const char **argv)
>  {
>       int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
>       char *opt_arg = NULL;
> +     const char *leftover = NULL;
>       static poptContext pc;
>  
>       pc = poptGetContext(NULL, argc, argv, long_options, 0);
> @@ -719,6 +720,13 @@ int cmd_create(int argc, const char **argv)
>       }
>       opt_session_name = (char*) poptGetArg(pc);
>  
> +     leftover = poptGetArg(pc);
> +     if (leftover) {
> +             ERR("Unknown argument: %s", leftover);
> +             ret = CMD_ERROR;
> +             goto end;
> +     }
> +
>       command_ret = create_session();
>       if (command_ret) {
>               success = 0;
> diff --git a/src/bin/lttng/commands/destroy.c 
> b/src/bin/lttng/commands/destroy.c
> index 02c7139..6878aaa 100644
> --- a/src/bin/lttng/commands/destroy.c
> +++ b/src/bin/lttng/commands/destroy.c
> @@ -174,6 +174,7 @@ int cmd_destroy(int argc, const char **argv)
>       int ret = CMD_SUCCESS , i, command_ret = CMD_SUCCESS, success = 1;
>       static poptContext pc;
>       char *session_name = NULL;
> +     const char *leftover = NULL;
>  
>       struct lttng_session *sessions;
>       int count;
> @@ -280,6 +281,14 @@ int cmd_destroy(int argc, const char **argv)
>               }
>       }
>  
> +     leftover = poptGetArg(pc);
> +     if (leftover) {
> +             ERR("Unknown argument: %s", leftover);
> +             ret = CMD_ERROR;
> +             success = 0;
> +             goto mi_closing;
> +     }
> +
>  mi_closing:
>       /* Mi closing */
>       if (lttng_opt_mi) {
> diff --git a/src/bin/lttng/commands/disable_channels.c 
> b/src/bin/lttng/commands/disable_channels.c
> index 775ff89..936884e 100644
> --- a/src/bin/lttng/commands/disable_channels.c
> +++ b/src/bin/lttng/commands/disable_channels.c
> @@ -216,6 +216,7 @@ int cmd_disable_channels(int argc, const char **argv)
>       int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
>       static poptContext pc;
>       char *session_name = NULL;
> +     const char *leftover = NULL;
>  
>       pc = poptGetContext(NULL, argc, argv, long_options, 0);
>       poptReadDefaultConfig(pc, 0);
> @@ -250,6 +251,13 @@ int cmd_disable_channels(int argc, const char **argv)
>               goto end;
>       }
>  
> +     leftover = poptGetArg(pc);
> +     if (leftover) {
> +             ERR("Unknown argument: %s", leftover);
> +             ret = CMD_ERROR;
> +             goto end;
> +     }
> +
>       if (!opt_session_name) {
>               session_name = get_session_name();
>               if (session_name == NULL) {
> diff --git a/src/bin/lttng/commands/disable_events.c 
> b/src/bin/lttng/commands/disable_events.c
> index 2696201..290e727 100644
> --- a/src/bin/lttng/commands/disable_events.c
> +++ b/src/bin/lttng/commands/disable_events.c
> @@ -328,6 +328,7 @@ int cmd_disable_events(int argc, const char **argv)
>       int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
>       static poptContext pc;
>       char *session_name = NULL;
> +     const char *leftover = NULL;
>       int event_type = -1;
>  
>       pc = poptGetContext(NULL, argc, argv, long_options, 0);
> @@ -398,6 +399,13 @@ int cmd_disable_events(int argc, const char **argv)
>               goto end;
>       }
>  
> +     leftover = poptGetArg(pc);
> +     if (leftover) {
> +             ERR("Unknown argument: %s", leftover);
> +             ret = CMD_ERROR;
> +             goto end;
> +     }
> +
>       if (!opt_session_name) {
>               session_name = get_session_name();
>               if (session_name == NULL) {
> diff --git a/src/bin/lttng/commands/enable_channels.c 
> b/src/bin/lttng/commands/enable_channels.c
> index cb9f44a..9c84d02 100644
> --- a/src/bin/lttng/commands/enable_channels.c
> +++ b/src/bin/lttng/commands/enable_channels.c
> @@ -400,6 +400,7 @@ int cmd_enable_channels(int argc, const char **argv)
>       static poptContext pc;
>       char *session_name = NULL;
>       char *opt_arg = NULL;
> +     const char *leftover = NULL;
>  
>       init_channel_config();
>  
> @@ -693,6 +694,14 @@ int cmd_enable_channels(int argc, const char **argv)
>               goto mi_closing;
>       }
>  
> +     leftover = poptGetArg(pc);
> +     if (leftover) {
> +             ERR("Unknown argument: %s", leftover);
> +             ret = CMD_ERROR;
> +             success = 0;
> +             goto mi_closing;
> +     }
> +
>       if (!opt_session_name) {
>               session_name = get_session_name();
>               if (session_name == NULL) {
> diff --git a/src/bin/lttng/commands/enable_events.c 
> b/src/bin/lttng/commands/enable_events.c
> index 97a36b3..05f20f7 100644
> --- a/src/bin/lttng/commands/enable_events.c
> +++ b/src/bin/lttng/commands/enable_events.c
> @@ -1264,6 +1264,7 @@ int cmd_enable_events(int argc, const char **argv)
>       int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
>       static poptContext pc;
>       char *session_name = NULL;
> +     const char *leftover = NULL;
>       int event_type = -1;
>  
>       pc = poptGetContext(NULL, argc, argv, long_options, 0);
> @@ -1363,6 +1364,13 @@ int cmd_enable_events(int argc, const char **argv)
>               goto end;
>       }
>  
> +     leftover = poptGetArg(pc);
> +     if (leftover) {
> +             ERR("Unknown argument: %s", leftover);
> +             ret = CMD_ERROR;
> +             goto end;
> +     }
> +
>       if (!opt_session_name) {
>               session_name = get_session_name();
>               if (session_name == NULL) {
> diff --git a/src/bin/lttng/commands/list.c b/src/bin/lttng/commands/list.c
> index a166fd2..898c0de 100644
> --- a/src/bin/lttng/commands/list.c
> +++ b/src/bin/lttng/commands/list.c
> @@ -1776,7 +1776,7 @@ end:
>  int cmd_list(int argc, const char **argv)
>  {
>       int opt, ret = CMD_SUCCESS;
> -     const char *session_name;
> +     const char *session_name, *leftover = NULL;
>       static poptContext pc;
>       struct lttng_domain domain;
>       struct lttng_domain *domains = NULL;
> @@ -1837,6 +1837,13 @@ int cmd_list(int argc, const char **argv)
>       session_name = poptGetArg(pc);
>       DBG2("Session name: %s", session_name);
>  
> +     leftover = poptGetArg(pc);
> +     if (leftover) {
> +             ERR("Unknown argument: %s", leftover);
> +             ret = CMD_ERROR;
> +             goto end;
> +     }
> +
>       if (opt_kernel) {
>               domain.type = LTTNG_DOMAIN_KERNEL;
>       } else if (opt_userspace) {
> diff --git a/src/bin/lttng/commands/load.c b/src/bin/lttng/commands/load.c
> index ad61849..07ef121 100644
> --- a/src/bin/lttng/commands/load.c
> +++ b/src/bin/lttng/commands/load.c
> @@ -163,6 +163,7 @@ int cmd_load(int argc, const char **argv)
>       poptContext pc;
>       struct lttng_load_session_attr *session_attr = NULL;
>       char *input_path = NULL;
> +     const char *leftover = NULL;
>  
>       pc = poptGetContext(NULL, argc, argv, load_opts, 0);
>       poptReadDefaultConfig(pc, 0);
> @@ -206,6 +207,13 @@ int cmd_load(int argc, const char **argv)
>               }
>       }
>  
> +     leftover = poptGetArg(pc);
> +     if (leftover) {
> +             ERR("Unknown argument: %s", leftover);
> +             ret = CMD_ERROR;
> +             goto end;
> +     }
> +
>       /* Mi check */
>       if (lttng_opt_mi) {
>               writer = mi_lttng_writer_create(fileno(stdout), lttng_opt_mi);
> diff --git a/src/bin/lttng/commands/save.c b/src/bin/lttng/commands/save.c
> index 4ba9024..924ddcb 100644
> --- a/src/bin/lttng/commands/save.c
> +++ b/src/bin/lttng/commands/save.c
> @@ -127,7 +127,7 @@ int cmd_save(int argc, const char **argv)
>  {
>       int ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success;
>       int opt;
> -     const char *session_name = NULL;
> +     const char *session_name = NULL, *leftover = NULL;
>       poptContext pc;
>       struct lttng_save_session_attr *attr;
>  
> @@ -164,6 +164,13 @@ int cmd_save(int argc, const char **argv)
>               }
>       }
>  
> +     leftover = poptGetArg(pc);
> +     if (leftover) {
> +             ERR("Unknown argument: %s", leftover);
> +             ret = CMD_ERROR;
> +             goto end;
> +     }
> +
>       attr = lttng_save_session_attr_create();
>       if (!attr) {
>               ret = CMD_FATAL;
> diff --git a/src/bin/lttng/commands/start.c b/src/bin/lttng/commands/start.c
> index 0287fc7..65b2229 100644
> --- a/src/bin/lttng/commands/start.c
> +++ b/src/bin/lttng/commands/start.c
> @@ -144,6 +144,7 @@ int cmd_start(int argc, const char **argv)
>  {
>       int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
>       static poptContext pc;
> +     const char *leftover = NULL;
>  
>       pc = poptGetContext(NULL, argc, argv, long_options, 0);
>       poptReadDefaultConfig(pc, 0);
> @@ -164,6 +165,13 @@ int cmd_start(int argc, const char **argv)
>  
>       opt_session_name = (char*) poptGetArg(pc);
>  
> +     leftover = poptGetArg(pc);
> +     if (leftover) {
> +             ERR("Unknown argument: %s", leftover);
> +             ret = CMD_ERROR;
> +             goto end;
> +     }
> +
>       /* Mi check */
>       if (lttng_opt_mi) {
>               writer = mi_lttng_writer_create(fileno(stdout), lttng_opt_mi);
> diff --git a/src/bin/lttng/commands/stop.c b/src/bin/lttng/commands/stop.c
> index 336d887..9d211d6 100644
> --- a/src/bin/lttng/commands/stop.c
> +++ b/src/bin/lttng/commands/stop.c
> @@ -172,6 +172,7 @@ int cmd_stop(int argc, const char **argv)
>  {
>       int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
>       static poptContext pc;
> +     const char *leftover = NULL;
>  
>       pc = poptGetContext(NULL, argc, argv, long_options, 0);
>       poptReadDefaultConfig(pc, 0);
> @@ -228,6 +229,13 @@ int cmd_stop(int argc, const char **argv)
>  
>       opt_session_name = (char*) poptGetArg(pc);
>  
> +     leftover = poptGetArg(pc);
> +     if (leftover) {
> +             ERR("Unknown argument: %s", leftover);
> +             ret = CMD_ERROR;
> +             goto end;
> +     }
> +
>       command_ret = stop_tracing();
>       if (command_ret) {
>               success = 0;
> diff --git a/src/bin/lttng/commands/view.c b/src/bin/lttng/commands/view.c
> index c9a5fdc..faca60d 100644
> --- a/src/bin/lttng/commands/view.c
> +++ b/src/bin/lttng/commands/view.c
> @@ -415,6 +415,7 @@ int cmd_view(int argc, const char **argv)
>  {
>       int opt, ret = CMD_SUCCESS;
>       static poptContext pc;
> +     const char *leftover = NULL;
>  
>       pc = poptGetContext(NULL, argc, argv, long_options, 0);
>       poptReadDefaultConfig(pc, 0);
> @@ -439,6 +440,13 @@ int cmd_view(int argc, const char **argv)
>  
>       opt_session_name = (char*) poptGetArg(pc);
>  
> +     leftover = poptGetArg(pc);
> +     if (leftover) {
> +             ERR("Unknown argument: %s", leftover);
> +             ret = CMD_ERROR;
> +             goto end;
> +     }
> +
>       ret = view_trace();
>  
>  end:
> -- 
> 2.7.4
> 
_______________________________________________
lttng-dev mailing list
[email protected]
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to