perf help: Introduce exec_failed() to avoid code duplication
authorArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 27 Jun 2017 13:52:57 +0000 (10:52 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 27 Jun 2017 13:52:57 +0000 (10:52 -0300)
The warning(str_error_r(errno)) pattern can be replaced with a function,
do it.

And while at it use pr_warning(), we have way too many error reporting
facilities, time to drop some, starting with the one we got from the git
sources.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.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-lbak5npj1ri1uuvf1en3c0p0@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-help.c

index 492f8e1..e82fa0d 100644 (file)
@@ -108,10 +108,14 @@ out:
        return ret;
 }
 
-static void exec_woman_emacs(const char *path, const char *page)
+static void exec_failed(const char *cmd)
 {
        char sbuf[STRERR_BUFSIZE];
+       pr_warning("failed to exec '%s': %s", cmd, str_error_r(errno, sbuf, sizeof(sbuf)));
+}
 
+static void exec_woman_emacs(const char *path, const char *page)
+{
        if (!check_emacsclient_version()) {
                /* This works only with emacsclient version >= 22. */
                char *man_page;
@@ -122,8 +126,7 @@ static void exec_woman_emacs(const char *path, const char *page)
                        execlp(path, "emacsclient", "-e", man_page, NULL);
                        free(man_page);
                }
-               warning("failed to exec '%s': %s", path,
-                       str_error_r(errno, sbuf, sizeof(sbuf)));
+               exec_failed(path);
        }
 }
 
@@ -134,7 +137,6 @@ static void exec_man_konqueror(const char *path, const char *page)
        if (display && *display) {
                char *man_page;
                const char *filename = "kfmclient";
-               char sbuf[STRERR_BUFSIZE];
 
                /* It's simpler to launch konqueror using kfmclient. */
                if (path) {
@@ -155,33 +157,27 @@ static void exec_man_konqueror(const char *path, const char *page)
                        execlp(path, filename, "newTab", man_page, NULL);
                        free(man_page);
                }
-               warning("failed to exec '%s': %s", path,
-                       str_error_r(errno, sbuf, sizeof(sbuf)));
+               exec_failed(path);
        }
 }
 
 static void exec_man_man(const char *path, const char *page)
 {
-       char sbuf[STRERR_BUFSIZE];
-
        if (!path)
                path = "man";
        execlp(path, "man", page, NULL);
-       warning("failed to exec '%s': %s", path,
-               str_error_r(errno, sbuf, sizeof(sbuf)));
+       exec_failed(path);
 }
 
 static void exec_man_cmd(const char *cmd, const char *page)
 {
-       char sbuf[STRERR_BUFSIZE];
        char *shell_cmd;
 
        if (asprintf(&shell_cmd, "%s %s", cmd, page) > 0) {
                execl("/bin/sh", "sh", "-c", shell_cmd, NULL);
                free(shell_cmd);
        }
-       warning("failed to exec '%s': %s", cmd,
-               str_error_r(errno, sbuf, sizeof(sbuf)));
+       exec_failed(cmd);
 }
 
 static void add_man_viewer(const char *name)