forked from Minki/linux
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.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
06466212a6
commit
5104ffb229
@ -454,11 +454,12 @@ static void handle_internal_command(int argc, const char **argv)
|
||||
|
||||
static void execv_dashed_external(const char **argv)
|
||||
{
|
||||
struct strbuf cmd = STRBUF_INIT;
|
||||
char *cmd;
|
||||
const char *tmp;
|
||||
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
|
||||
@ -467,7 +468,7 @@ static void execv_dashed_external(const char **argv)
|
||||
* restore it on error.
|
||||
*/
|
||||
tmp = argv[0];
|
||||
argv[0] = cmd.buf;
|
||||
argv[0] = cmd;
|
||||
|
||||
/*
|
||||
* if we fail because the command is not found, it is
|
||||
@ -475,15 +476,16 @@ static void execv_dashed_external(const char **argv)
|
||||
*/
|
||||
status = run_command_v_opt(argv, 0);
|
||||
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]);
|
||||
}
|
||||
exit(-status);
|
||||
}
|
||||
errno = ENOENT; /* as if we called execvp */
|
||||
|
||||
argv[0] = tmp;
|
||||
|
||||
strbuf_release(&cmd);
|
||||
zfree(&cmd);
|
||||
}
|
||||
|
||||
static int run_argv(int *argcp, const char ***argv)
|
||||
|
Loading…
Reference in New Issue
Block a user