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

Reply via email to