Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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.novalocal


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent f9f33fdb
Loading
Loading
Loading
Loading
+16 −4
Original line number Original line Diff line number Diff line
@@ -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)
			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)
			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)