summaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-help.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2016-05-10 16:23:34 -0400
committerIngo Molnar <mingo@kernel.org>2016-05-11 10:56:58 -0400
commit38f5d8b32f36bcac1f54d4511a81e02ed8771a29 (patch)
tree86df6a818bbbea9f2c585716ccf72e7332c872c4 /tools/perf/builtin-help.c
parentd2950158d0d7bc376503393ca5f73f6f8d27c56b (diff)
parent452e84012595d681f254a3a0d733fb0b18ffaf42 (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.c18
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 } 100out:
98
99 strbuf_release(&buffer); 101 strbuf_release(&buffer);
100 return 0; 102 return ret;
101} 103}
102 104
103static void exec_woman_emacs(const char *path, const char *page) 105static void exec_woman_emacs(const char *path, const char *page)