diff options
author | Ingo Molnar <mingo@kernel.org> | 2016-05-10 16:23:34 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2016-05-11 10:56:58 -0400 |
commit | 38f5d8b32f36bcac1f54d4511a81e02ed8771a29 (patch) | |
tree | 86df6a818bbbea9f2c585716ccf72e7332c872c4 /tools/perf/builtin-help.c | |
parent | d2950158d0d7bc376503393ca5f73f6f8d27c56b (diff) | |
parent | 452e84012595d681f254a3a0d733fb0b18ffaf42 (diff) |
Merge tag 'perf-core-for-mingo-20160510' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:
User visible changes:
- Recording 'dwarf' callchains do not need DWARF unwinding support (He Kuang)
- Print recently added perf_event_attr.write_backward bit flag in -vv
verbose mode (Arnaldo Carvalho de Melo)
- Fix incorrect python db-export error message in 'perf script' (Chris Phlipot)
- Fix handling of zero-length symbols (Chris Phlipot)
- perf stat: Scale values by unit before metrics (Andi Kleen)
Infrastructure changes:
- Rewrite strbuf not to die(), making tools using it to check its
return value instead (Masami Hiramatsu)
- Support reading from backward ring buffer, add a 'perf test' entry
for it (Wang Nan)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'tools/perf/builtin-help.c')
-rw-r--r-- | tools/perf/builtin-help.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/tools/perf/builtin-help.c b/tools/perf/builtin-help.c index bc1de9b8fd67..f9830c902b78 100644 --- a/tools/perf/builtin-help.c +++ b/tools/perf/builtin-help.c | |||
@@ -61,6 +61,7 @@ static int check_emacsclient_version(void) | |||
61 | struct child_process ec_process; | 61 | struct child_process ec_process; |
62 | const char *argv_ec[] = { "emacsclient", "--version", NULL }; | 62 | const char *argv_ec[] = { "emacsclient", "--version", NULL }; |
63 | int version; | 63 | int version; |
64 | int ret = -1; | ||
64 | 65 | ||
65 | /* emacsclient prints its version number on stderr */ | 66 | /* emacsclient prints its version number on stderr */ |
66 | memset(&ec_process, 0, sizeof(ec_process)); | 67 | memset(&ec_process, 0, sizeof(ec_process)); |
@@ -71,7 +72,10 @@ static int check_emacsclient_version(void) | |||
71 | fprintf(stderr, "Failed to start emacsclient.\n"); | 72 | fprintf(stderr, "Failed to start emacsclient.\n"); |
72 | return -1; | 73 | return -1; |
73 | } | 74 | } |
74 | strbuf_read(&buffer, ec_process.err, 20); | 75 | if (strbuf_read(&buffer, ec_process.err, 20) < 0) { |
76 | fprintf(stderr, "Failed to read emacsclient version\n"); | ||
77 | goto out; | ||
78 | } | ||
75 | close(ec_process.err); | 79 | close(ec_process.err); |
76 | 80 | ||
77 | /* | 81 | /* |
@@ -82,8 +86,7 @@ static int check_emacsclient_version(void) | |||
82 | 86 | ||
83 | if (prefixcmp(buffer.buf, "emacsclient")) { | 87 | if (prefixcmp(buffer.buf, "emacsclient")) { |
84 | fprintf(stderr, "Failed to parse emacsclient version.\n"); | 88 | fprintf(stderr, "Failed to parse emacsclient version.\n"); |
85 | strbuf_release(&buffer); | 89 | goto out; |
86 | return -1; | ||
87 | } | 90 | } |
88 | 91 | ||
89 | version = atoi(buffer.buf + strlen("emacsclient")); | 92 | version = atoi(buffer.buf + strlen("emacsclient")); |
@@ -92,12 +95,11 @@ static int check_emacsclient_version(void) | |||
92 | fprintf(stderr, | 95 | fprintf(stderr, |
93 | "emacsclient version '%d' too old (< 22).\n", | 96 | "emacsclient version '%d' too old (< 22).\n", |
94 | version); | 97 | version); |
95 | strbuf_release(&buffer); | 98 | } else |
96 | return -1; | 99 | ret = 0; |
97 | } | 100 | out: |
98 | |||
99 | strbuf_release(&buffer); | 101 | strbuf_release(&buffer); |
100 | return 0; | 102 | return ret; |
101 | } | 103 | } |
102 | 104 | ||
103 | static void exec_woman_emacs(const char *path, const char *page) | 105 | static void exec_woman_emacs(const char *path, const char *page) |