diff options
author | Masami Hiramatsu <mhiramat@kernel.org> | 2016-05-10 01:47:17 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2016-05-10 10:56:14 -0400 |
commit | b72ca4039099e953f1ea2dbd58c201b14feb6605 (patch) | |
tree | 4d40c9077dbabedd468a00a63627ae6769a8449f /tools | |
parent | bf4d5f25c90bf2eca8671f2fc4e3d15919cd7f9c (diff) |
perf help: Make check_emacsclient_version to check strbuf APIs
Make check_emacsclient_version() to check the return value of strbuf
APIs so that it can handle errors in strbuf.
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20160510054716.6158.11755.stgit@devbox
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-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) |