perf tools: Use asprintf() for simple string formatting/allocation

No need to use strbuf there, its just a simple alloc+formatting, which
asprintf does just fine.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-6q6cxfhk8c8ypg3tfpo0i2iy@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 06466212
...@@ -454,11 +454,12 @@ static void handle_internal_command(int argc, const char **argv) ...@@ -454,11 +454,12 @@ static void handle_internal_command(int argc, const char **argv)
static void execv_dashed_external(const char **argv) static void execv_dashed_external(const char **argv)
{ {
struct strbuf cmd = STRBUF_INIT; char *cmd;
const char *tmp; const char *tmp;
int status; int status;
strbuf_addf(&cmd, "perf-%s", argv[0]); if (asprintf(&cmd, "perf-%s", argv[0]) < 0)
goto do_die;
/* /*
* argv[0] must be the perf command, but the argv array * argv[0] must be the perf command, but the argv array
...@@ -467,7 +468,7 @@ static void execv_dashed_external(const char **argv) ...@@ -467,7 +468,7 @@ static void execv_dashed_external(const char **argv)
* restore it on error. * restore it on error.
*/ */
tmp = argv[0]; tmp = argv[0];
argv[0] = cmd.buf; argv[0] = cmd;
/* /*
* if we fail because the command is not found, it is * if we fail because the command is not found, it is
...@@ -475,15 +476,16 @@ static void execv_dashed_external(const char **argv) ...@@ -475,15 +476,16 @@ static void execv_dashed_external(const char **argv)
*/ */
status = run_command_v_opt(argv, 0); status = run_command_v_opt(argv, 0);
if (status != -ERR_RUN_COMMAND_EXEC) { if (status != -ERR_RUN_COMMAND_EXEC) {
if (IS_RUN_COMMAND_ERR(status)) if (IS_RUN_COMMAND_ERR(status)) {
do_die:
die("unable to run '%s'", argv[0]); die("unable to run '%s'", argv[0]);
}
exit(-status); exit(-status);
} }
errno = ENOENT; /* as if we called execvp */ errno = ENOENT; /* as if we called execvp */
argv[0] = tmp; argv[0] = tmp;
zfree(&cmd);
strbuf_release(&cmd);
} }
static int run_argv(int *argcp, const char ***argv) static int run_argv(int *argcp, const char ***argv)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment