Hi Andrey,
Let me know if the attached patch looks ok for you.
Regards,
Avik
On Tuesday 14 February 2012 09:24 PM, Dmitry Antipov wrote:
On 02/14/2012 04:43 PM, Andrey Konovalov wrote:
Your fix seems ok for ubuntu/debian, but this would not work in
general case.
E.g. Fedora doesn't have /usr/bin/pager.
So this doesn't look like a generic solution that fits into
linux-linaro kernel.
I believe pager = "/bin/more" is more portable fallback
among more-or-less LSB-aware Linux distributions.
Dmitry
>From 4d979dc7600ff3f4d4ae3ea4408893811b2fff73 Mon Sep 17 00:00:00 2001
From: Avik Sil <avik....@linaro.org>
Date: Wed, 15 Feb 2012 17:06:50 +0530
Subject: [PATCH] Perf: Fallback to /bin/more if less is not found for perf
pager
Signed-off-by: Avik Sil <avik....@linaro.org>
---
tools/perf/util/pager.c | 31 ++++++++++++++++++++++++++++++-
1 files changed, 30 insertions(+), 1 deletions(-)
diff --git a/tools/perf/util/pager.c b/tools/perf/util/pager.c
index 1915de2..9ad92db 100644
--- a/tools/perf/util/pager.c
+++ b/tools/perf/util/pager.c
@@ -44,6 +44,32 @@ static void wait_for_pager_signal(int signo)
raise(signo);
}
+static int check_pager(const char *pager)
+{
+ char *env_path;
+ char *pager_path;
+ char *path;
+ struct stat stat_buf;
+
+ env_path = getenv("PATH");
+ pager_path = malloc(strlen(env_path) + strlen(pager) + 2);
+ if (pager_path == NULL)
+ return -1;
+ path = strtok(env_path, ":");
+ while (path) {
+ strcpy(pager_path, path);
+ strcat(pager_path, "/");
+ strcat(pager_path, pager);
+ if (!stat(pager_path, &stat_buf)) {
+ free(pager_path);
+ return 0;
+ }
+ path = strtok(NULL, ":");
+ }
+ free(pager_path);
+ return -1;
+}
+
void setup_pager(void)
{
const char *pager = getenv("PERF_PAGER");
@@ -58,7 +84,10 @@ void setup_pager(void)
if (!pager)
pager = getenv("PAGER");
if (!pager)
- pager = "less";
+ if (!check_pager("less"))
+ pager = "less";
+ else
+ pager = "/bin/more";
else if (!*pager || !strcmp(pager, "cat"))
return;
--
1.7.5.4
_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev