From e147a721736922db9f80f233e56dbd36e6e4a902 Mon Sep 17 00:00:00 2001
From: Denis Vlasenko <vda.linux@googlemail.com>
Date: Thu, 21 Dec 2006 13:26:54 +0000
Subject: less: how many different kinds of status line we need, three?! small
 fixes. [prev commit also added control char filtering on input (e.g. regexp
 input, filename input for 'E' etc)]

---
 miscutils/less.c | 83 +++++++++++++++++++++++++++-----------------------------
 1 file changed, 40 insertions(+), 43 deletions(-)

(limited to 'miscutils/less.c')

diff --git a/miscutils/less.c b/miscutils/less.c
index 068c3f393..d56f38df5 100644
--- a/miscutils/less.c
+++ b/miscutils/less.c
@@ -263,73 +263,70 @@ static void m_status_print(void)
 {
 	int percentage;
 
-	if (!line_pos) {
-		if (num_files > 1) {
-			printf(HIGHLIGHT"%s (file %i of %i) lines %i-%i/%i ",
-				filename, current_file, num_files,
-				line_pos + 1, line_pos + height - 1, num_flines + 1);
-		} else {
-			printf(HIGHLIGHT"%s lines %i-%i/%i ",
-				filename, line_pos + 1, line_pos + height - 1,
-				num_flines + 1);
-		}
-	} else {
-		printf(HIGHLIGHT" %s lines %i-%i/%i ", filename,
-			line_pos + 1, line_pos + height - 1, num_flines + 1);
-	}
-
+	printf(HIGHLIGHT"%s", filename);
+	if (num_files > 1)
+		printf(" (file %i of %i)", current_file, num_files);
+	printf(" lines %i-%i/%i ",
+			line_pos + 1, line_pos + height - 1,
+			num_flines + 1);
 	if (line_pos >= num_flines - height + 2) {
 		printf("(END) "NORMAL);
 		if (num_files > 1 && current_file != num_files)
-			printf(HIGHLIGHT"- Next: %s"NORMAL, files[current_file]);
-	} else {
-		percentage = calc_percent();
-		printf("%i%% "NORMAL, percentage);
+			printf(HIGHLIGHT"- Next: %s "NORMAL, files[current_file]);
+		return;
 	}
+	percentage = calc_percent();
+	printf("%i%% "NORMAL, percentage);
 }
 
+#if 0
 /* Print a status line if -m was specified */
 static void medium_status_print(void)
 {
 	int percentage;
-	percentage = calc_percent();
 
+	percentage = calc_percent();
 	if (!line_pos)
-		printf(HIGHLIGHT"%s %i%%"NORMAL, filename, percentage);
-	else if (line_pos == num_flines - height + 2)
-		print_hilite("(END)");
+		printf(HIGHLIGHT"%s %i%% "NORMAL, filename, percentage);
+	else if (line_pos >= num_flines - height + 2)
+		print_hilite("(END) ");
 	else
-		printf(HIGHLIGHT"%i%%"NORMAL, percentage);
+		printf(HIGHLIGHT"%i%% "NORMAL, percentage);
 }
 #endif
 
+#endif
+
 /* Print the status line */
 static void status_print(void)
 {
+	const char *p;
+
 	/* Change the status if flags have been set */
 #if ENABLE_FEATURE_LESS_FLAGS
-	if (option_mask32 & FLAG_M)
+	if (option_mask32 & (FLAG_M|FLAG_m)) {
 		m_status_print();
-	else if (option_mask32 & FLAG_m)
-		medium_status_print();
+		return;
+	}
+	//if (option_mask32 & FLAG_m) {
+	//	medium_status_print();
+	//	return;
+	//}
 	/* No flags set */
-	else {
 #endif
-		if (!line_pos) {
-			print_hilite(filename);
-			if (num_files > 1)
-				printf(HIGHLIGHT"(file %i of %i)"NORMAL,
-					current_file, num_files);
-		} else if (line_pos == num_flines - height + 2) {
-			print_hilite("(END) ");
-			if (num_files > 1 && current_file != num_files)
-				printf(HIGHLIGHT"- Next: %s"NORMAL, files[current_file]);
-		} else {
-			putchar(':');
-		}
-#if ENABLE_FEATURE_LESS_FLAGS
+	if (line_pos && line_pos < num_flines - height + 2) {
+		putchar(':');
+		return;
 	}
-#endif
+	p = "(END) ";
+	if (!line_pos)
+		p = filename;
+	if (num_files > 1) {
+		printf(HIGHLIGHT"%s (file %i of %i) "NORMAL,
+				p, current_file, num_files);
+		return;
+	}
+	print_hilite(p);
 }
 
 static char controls[] =
@@ -554,7 +551,7 @@ static void examine_file(void)
 	current_file = num_files + 1;
 	num_files++; */
 	files[0] = filename;
-	current_file = 1;
+	num_files = current_file = 1;
 	reinitialise();
 }
 
-- 
cgit v1.2.3-55-g6feb