Commit ede395d2 authored by Masami Hiramatsu's avatar Masami Hiramatsu Committed by Arnaldo Carvalho de Melo

perf help: Use strerror_r instead of strerror

Use strerror_r instead of strerror in error messages for thread-safety.
Signed-off-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Naohiro Aota <naota@elisp.net>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20140814022253.3545.82136.stgit@kbuild-fedora.novalocalSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent f9f33fdb
...@@ -103,6 +103,8 @@ static int check_emacsclient_version(void) ...@@ -103,6 +103,8 @@ static int check_emacsclient_version(void)
static void exec_woman_emacs(const char *path, const char *page) static void exec_woman_emacs(const char *path, const char *page)
{ {
char sbuf[STRERR_BUFSIZE];
if (!check_emacsclient_version()) { if (!check_emacsclient_version()) {
/* This works only with emacsclient version >= 22. */ /* This works only with emacsclient version >= 22. */
struct strbuf man_page = STRBUF_INIT; struct strbuf man_page = STRBUF_INIT;
...@@ -111,16 +113,19 @@ static void exec_woman_emacs(const char *path, const char *page) ...@@ -111,16 +113,19 @@ static void exec_woman_emacs(const char *path, const char *page)
path = "emacsclient"; path = "emacsclient";
strbuf_addf(&man_page, "(woman \"%s\")", page); strbuf_addf(&man_page, "(woman \"%s\")", page);
execlp(path, "emacsclient", "-e", man_page.buf, NULL); execlp(path, "emacsclient", "-e", man_page.buf, NULL);
warning("failed to exec '%s': %s", path, strerror(errno)); warning("failed to exec '%s': %s", path,
strerror_r(errno, sbuf, sizeof(sbuf)));
} }
} }
static void exec_man_konqueror(const char *path, const char *page) static void exec_man_konqueror(const char *path, const char *page)
{ {
const char *display = getenv("DISPLAY"); const char *display = getenv("DISPLAY");
if (display && *display) { if (display && *display) {
struct strbuf man_page = STRBUF_INIT; struct strbuf man_page = STRBUF_INIT;
const char *filename = "kfmclient"; const char *filename = "kfmclient";
char sbuf[STRERR_BUFSIZE];
/* It's simpler to launch konqueror using kfmclient. */ /* It's simpler to launch konqueror using kfmclient. */
if (path) { if (path) {
...@@ -139,24 +144,31 @@ static void exec_man_konqueror(const char *path, const char *page) ...@@ -139,24 +144,31 @@ static void exec_man_konqueror(const char *path, const char *page)
path = "kfmclient"; path = "kfmclient";
strbuf_addf(&man_page, "man:%s(1)", page); strbuf_addf(&man_page, "man:%s(1)", page);
execlp(path, filename, "newTab", man_page.buf, NULL); execlp(path, filename, "newTab", man_page.buf, NULL);
warning("failed to exec '%s': %s", path, strerror(errno)); warning("failed to exec '%s': %s", path,
strerror_r(errno, sbuf, sizeof(sbuf)));
} }
} }
static void exec_man_man(const char *path, const char *page) static void exec_man_man(const char *path, const char *page)
{ {
char sbuf[STRERR_BUFSIZE];
if (!path) if (!path)
path = "man"; path = "man";
execlp(path, "man", page, NULL); execlp(path, "man", page, NULL);
warning("failed to exec '%s': %s", path, strerror(errno)); warning("failed to exec '%s': %s", path,
strerror_r(errno, sbuf, sizeof(sbuf)));
} }
static void exec_man_cmd(const char *cmd, const char *page) static void exec_man_cmd(const char *cmd, const char *page)
{ {
struct strbuf shell_cmd = STRBUF_INIT; struct strbuf shell_cmd = STRBUF_INIT;
char sbuf[STRERR_BUFSIZE];
strbuf_addf(&shell_cmd, "%s %s", cmd, page); strbuf_addf(&shell_cmd, "%s %s", cmd, page);
execl("/bin/sh", "sh", "-c", shell_cmd.buf, NULL); execl("/bin/sh", "sh", "-c", shell_cmd.buf, NULL);
warning("failed to exec '%s': %s", cmd, strerror(errno)); warning("failed to exec '%s': %s", cmd,
strerror_r(errno, sbuf, sizeof(sbuf)));
} }
static void add_man_viewer(const char *name) static void add_man_viewer(const char *name)
......
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