From 7a2dc0e14c092dced95899f76da6d4181e0632af Mon Sep 17 00:00:00 2001 From: David Ahern Date: Sun, 29 Jul 2012 20:53:51 -0600 Subject: [PATCH] --- yaml --- r: 321417 b: refs/heads/master c: 56e6f602aa4432f7fe90a0d9ba379b2735b07b6b h: refs/heads/master i: 321415: c7f81a03ada13a45117dd805023e7f1adf4816dd v: v3 --- [refs] | 2 +- trunk/tools/perf/builtin-record.c | 2 -- trunk/tools/perf/util/header.c | 9 +++++++++ trunk/tools/perf/util/parse-options.c | 3 +++ 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 6ac2c4558b6b..10ef790dc845 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1a31fc904f1c897e4aaf7c3176e6aafa49f5d395 +refs/heads/master: 56e6f602aa4432f7fe90a0d9ba379b2735b07b6b diff --git a/trunk/tools/perf/builtin-record.c b/trunk/tools/perf/builtin-record.c index dc2b62565aa1..4db6e1ba54e3 100644 --- a/trunk/tools/perf/builtin-record.c +++ b/trunk/tools/perf/builtin-record.c @@ -844,8 +844,6 @@ int cmd_record(int argc, const char **argv, const char *prefix __used) struct perf_record *rec = &record; char errbuf[BUFSIZ]; - perf_header__set_cmdline(argc, argv); - evsel_list = perf_evlist__new(NULL, NULL); if (evsel_list == NULL) return -ENOMEM; diff --git a/trunk/tools/perf/util/header.c b/trunk/tools/perf/util/header.c index 3a6d20443330..74ea3c2f8138 100644 --- a/trunk/tools/perf/util/header.c +++ b/trunk/tools/perf/util/header.c @@ -174,6 +174,15 @@ perf_header__set_cmdline(int argc, const char **argv) { int i; + /* + * If header_argv has already been set, do not override it. + * This allows a command to set the cmdline, parse args and + * then call another builtin function that implements a + * command -- e.g, cmd_kvm calling cmd_record. + */ + if (header_argv) + return 0; + header_argc = (u32)argc; /* do not include NULL termination */ diff --git a/trunk/tools/perf/util/parse-options.c b/trunk/tools/perf/util/parse-options.c index 99d02aa57dbf..594f8fad5ecd 100644 --- a/trunk/tools/perf/util/parse-options.c +++ b/trunk/tools/perf/util/parse-options.c @@ -1,6 +1,7 @@ #include "util.h" #include "parse-options.h" #include "cache.h" +#include "header.h" #define OPT_SHORT 1 #define OPT_UNSET 2 @@ -413,6 +414,8 @@ int parse_options(int argc, const char **argv, const struct option *options, { struct parse_opt_ctx_t ctx; + perf_header__set_cmdline(argc, argv); + parse_options_start(&ctx, argc, argv, flags); switch (parse_options_step(&ctx, options, usagestr)) { case PARSE_OPT_HELP: