[ltt-dev] [UST PATCH] Allow backward compatibility to ustctl <= 0.11 for some commands
Nils Carlson
nils.carlson at ludd.ltu.se
Thu Feb 24 14:59:15 EST 2011
Hi,
Any reason you want to ifdef these? The idea with the new api was to
make it nicer, but I wouldn't mind being backwards compatible as well.
If its ok with you I can pull this patch tomorrow and remove the
#ifdefs?
/Nils
On Feb 24, 2011, at 4:46 PM, Jason Wessel wrote:
> The rewrite of the ustctl broke all the existing scripts
> that make use of ustctl. This allows the original commands,
> examples, and external scripts to continue working properly.
>
> This covers the commands:
>
> --list-markers
> --list-trace-events
> --alloc-trace
> --start-trace
> --stop-trace
> --create-trace
> --destroy-trace
> --enable-marker
> --disable-marker
>
> Signed-off-by: Jason Wessel <jason.wessel at windriver.com>
> ---
> ustctl/ustctl.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++
> ++++++--
> 1 files changed, 71 insertions(+), 3 deletions(-)
>
> diff --git a/ustctl/ustctl.c b/ustctl/ustctl.c
> index c1bbe8c..5463a1c 100644
> --- a/ustctl/ustctl.c
> +++ b/ustctl/ustctl.c
> @@ -45,8 +45,40 @@ void usage(const char *process_name)
> list_cli_cmds(CLI_DESCRIPTIVE_LIST);
> }
>
> +#define DASH_DASH_COMPAT 1
> +#ifdef DASH_DASH_COMPAT
> +/*
> + * If DASH_DASH_COMPAT is defined allow the some of the ustctl
> command
> + * in version <= 0.11 commands to live on a while longer such that
> + * scripts do not immediately have to be changed.
> + */
> +enum command {
> + CREATE_TRACE=1000,
> + ALLOC_TRACE,
> + START_TRACE,
> + STOP_TRACE,
> + DESTROY_TRACE,
> + LIST_MARKERS,
> + LIST_TRACE_EVENTS,
> + ENABLE_MARKER,
> + DISABLE_MARKER,
> +};
> +
> +#endif /* DASH_DASH_COMPAT */
> +
> struct option options[] =
> {
> +#ifdef DASH_DASH_COMPAT
> + { "create-trace", 0, 0, CREATE_TRACE },
> + { "alloc-trace", 0, 0, ALLOC_TRACE },
> + { "start-trace", 0, 0, START_TRACE },
> + { "stop-trace", 0, 0, STOP_TRACE },
> + { "destroy-trace", 0, 0, DESTROY_TRACE },
> + { "list-markers", 0, 0, LIST_MARKERS },
> + { "list-trace-events", 0, 0, LIST_TRACE_EVENTS},
> + { "enable-marker", 0, 0, ENABLE_MARKER },
> + { "disable-marker", 0, 0, DISABLE_MARKER },
> +#endif /* DASH_DASH_COMPAT */
> {"help", 2, NULL, 'h'},
> {"list", 0, NULL, 'l'},
> {"extended-list", 0, NULL, 'e'},
> @@ -56,6 +88,7 @@ struct option options[] =
> int main(int argc, char *argv[])
> {
> struct cli_cmd *cli_cmd;
> + char **args = argv;
> int opt;
>
> if(argc <= 1) {
> @@ -85,20 +118,55 @@ int main(int argc, char *argv[])
> case 'e':
> list_cli_cmds(CLI_EXTENDED_LIST);
> exit(EXIT_FAILURE);
> +#ifdef DASH_DASH_COMPAT
> + case LIST_MARKERS:
> + case LIST_TRACE_EVENTS:
> + case CREATE_TRACE:
> + case ALLOC_TRACE:
> + case START_TRACE:
> + case STOP_TRACE:
> + case DESTROY_TRACE:
> + case ENABLE_MARKER:
> + case DISABLE_MARKER:
> + {
> + int i;
> + args = (char **)malloc(sizeof(char **) * argc + 3);
> + optind--;
> + args[optind] = strdup(&argv[optind][2]);
> + for (i = optind + 1; i < argc; i++) {
> + args[i] = argv[i];
> + }
> + if (opt >= CREATE_TRACE && opt <= DESTROY_TRACE) {
> + args[argc] = strdup("auto");
> + argc++;
> + }
> + if (opt >= ENABLE_MARKER && opt <= DISABLE_MARKER) {
> + args[argc] = args[argc - 2];
> + args[argc - 2] = args[argc - 1];
> + args[argc - 1] = strdup("auto");
> + argc++;
> + }
> + args[argc] = NULL;
> + goto do_cli;
> + }
> +#endif /* DASH_DASH_COMPAT */
> default:
> fprintf(stderr, "Unknown option\n");
> break;
> }
> }
>
> - cli_cmd = find_cli_cmd(argv[optind]);
> +#ifdef DASH_DASH_COMPAT
> +do_cli:
> +#endif /* DASH_DASH_COMPAT */
> + cli_cmd = find_cli_cmd(args[optind]);
> if (!cli_cmd) {
> fprintf(stderr, "No such command %s\n",
> - argv[optind]);
> + args[optind]);
> exit(EXIT_FAILURE);
> }
>
> - cli_dispatch_cmd(cli_cmd, argc - optind, &argv[optind]);
> + cli_dispatch_cmd(cli_cmd, argc - optind, &args[optind]);
>
> return 0;
> }
> --
> 1.6.6.2
>
>
> _______________________________________________
> ltt-dev mailing list
> ltt-dev at lists.casi.polymtl.ca
> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
More information about the lttng-dev
mailing list