|
Vojtech Vitek (V-Teq) |
47da4db |
From 21d56469fd4b4558d640ad82c78f2b9748341c11 Mon Sep 17 00:00:00 2001
|
|
Vojtech Vitek (V-Teq) |
47da4db |
From: "Vojtech Vitek (V-Teq)" <vvitek@redhat.com>
|
|
Vojtech Vitek (V-Teq) |
47da4db |
Date: Mon, 14 May 2012 17:31:20 +0200
|
|
Vojtech Vitek (V-Teq) |
47da4db |
Subject: [PATCH] Fix -F option behavior
|
|
Vojtech Vitek (V-Teq) |
47da4db |
|
|
Vojtech Vitek (V-Teq) |
47da4db |
Original patch written by Jindrich Novy <jnovy@redhat.com>.
|
|
Vojtech Vitek (V-Teq) |
47da4db |
|
|
Vojtech Vitek (V-Teq) |
47da4db |
Changes and improvements by Zdenek Prikryl <zprikryl@redhat.com>,
|
|
Vojtech Vitek (V-Teq) |
47da4db |
Vojtech Vitek <vvitek@redhat.com> and Colin Guthrie <colin@mageia.org>.
|
|
Jozef Mlich |
4dff135 |
Jozef Mlich <jmlich@redhat.com>
|
|
Vojtech Vitek (V-Teq) |
47da4db |
---
|
|
Jozef Mlich |
4dff135 |
diff -up ./less-466/forwback.c.Foption ./less-466/forwback.c
|
|
Jozef Mlich |
4dff135 |
--- ./less-466/forwback.c.Foption 2014-08-24 02:46:52.000000000 +0200
|
|
Jozef Mlich |
4dff135 |
+++ ./less-466/forwback.c 2014-09-18 13:54:28.804626580 +0200
|
|
Jozef Mlich |
4dff135 |
@@ -440,3 +440,24 @@ get_back_scroll()
|
|
Vojtech Vitek (V-Teq) |
47da4db |
return (sc_height - 2);
|
|
Vojtech Vitek (V-Teq) |
47da4db |
return (10000); /* infinity */
|
|
Vojtech Vitek (V-Teq) |
47da4db |
}
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+
|
|
Jozef Mlich |
4dff135 |
+
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+/*
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+ * Get line count of file up to the screen height + 1 char
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+ */
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+ public int
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+get_line_count()
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+{
|
|
Jozef Mlich |
4dff135 |
+ int nlines = 0;
|
|
Jozef Mlich |
4dff135 |
+ POSITION pos;
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+
|
|
Jozef Mlich |
4dff135 |
+ pos = ch_zero();
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+
|
|
Jozef Mlich |
4dff135 |
+ while (pos != NULL_POSITION && nlines <= sc_height)
|
|
Jozef Mlich |
4dff135 |
+ {
|
|
Jozef Mlich |
4dff135 |
+ pos = forw_line(pos);
|
|
Jozef Mlich |
4dff135 |
+ nlines++;
|
|
Jozef Mlich |
4dff135 |
+ }
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+
|
|
Jozef Mlich |
4dff135 |
+ return nlines;
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+}
|
|
Jozef Mlich |
4dff135 |
diff -up ./less-466/funcs.h.Foption ./less-466/funcs.h
|
|
Jozef Mlich |
4dff135 |
--- ./less-466/funcs.h.Foption 2014-08-24 02:46:54.000000000 +0200
|
|
Jozef Mlich |
4dff135 |
+++ ./less-466/funcs.h 2014-09-18 13:55:12.140010010 +0200
|
|
Jozef Mlich |
4dff135 |
@@ -139,6 +139,7 @@
|
|
Vojtech Vitek (V-Teq) |
47da4db |
public void forward ();
|
|
Vojtech Vitek (V-Teq) |
47da4db |
public void backward ();
|
|
Vojtech Vitek (V-Teq) |
47da4db |
public int get_back_scroll ();
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+ public int get_line_count ();
|
|
Vojtech Vitek (V-Teq) |
47da4db |
public void del_ifile ();
|
|
Vojtech Vitek (V-Teq) |
47da4db |
public IFILE next_ifile ();
|
|
Vojtech Vitek (V-Teq) |
47da4db |
public IFILE prev_ifile ();
|
|
Jozef Mlich |
4dff135 |
diff -up ./less-466/main.c.Foption ./less-466/main.c
|
|
Jozef Mlich |
4dff135 |
--- ./less-466/main.c.Foption 2014-08-24 02:46:51.000000000 +0200
|
|
Jozef Mlich |
4dff135 |
+++ ./less-466/main.c 2014-09-18 14:03:12.868331522 +0200
|
|
Jozef Mlich |
4dff135 |
@@ -54,8 +54,10 @@ static char consoleTitle[256];
|
|
Vojtech Vitek (V-Teq) |
e65760c |
#endif
|
|
Vojtech Vitek (V-Teq) |
e65760c |
|
|
Vojtech Vitek (V-Teq) |
e65760c |
extern int less_is_more;
|
|
Jozef Mlich |
4dff135 |
+public int line_count;
|
|
Vojtech Vitek (V-Teq) |
e65760c |
extern int missing_cap;
|
|
Vojtech Vitek (V-Teq) |
e65760c |
extern int know_dumb;
|
|
Jozef Mlich |
4dff135 |
+extern int quit_if_one_screen;
|
|
Jozef Mlich |
4dff135 |
extern int pr_type;
|
|
Jozef Mlich |
4dff135 |
|
|
Jozef Mlich |
4dff135 |
|
|
Jozef Mlich |
4dff135 |
@@ -273,10 +275,27 @@ main(argc, argv)
|
|
Vojtech Vitek (V-Teq) |
47da4db |
{
|
|
Vojtech Vitek (V-Teq) |
47da4db |
if (edit_stdin()) /* Edit standard input */
|
|
Vojtech Vitek (V-Teq) |
47da4db |
quit(QUIT_ERROR);
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+ if (quit_if_one_screen)
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+ line_count = get_line_count();
|
|
Jozef Mlich |
4dff135 |
+
|
|
Vojtech Vitek (V-Teq) |
47da4db |
} else
|
|
Zdenek Prikryl |
22e2d31 |
{
|
|
Zdenek Prikryl |
22e2d31 |
if (edit_first()) /* Edit first valid file in cmd line */
|
|
Zdenek Prikryl |
22e2d31 |
quit(QUIT_ERROR);
|
|
Jozef Mlich |
4dff135 |
+ /*
|
|
Jozef Mlich |
4dff135 |
+ * In case that we have only one file and -F, have to get a line
|
|
Jozef Mlich |
4dff135 |
+ * count fot init(). If the line count is less then a height of a term,
|
|
Jozef Mlich |
4dff135 |
+ * the content of the file is printed out and then less quits. Otherwise
|
|
Jozef Mlich |
4dff135 |
+ * -F can not be used
|
|
Jozef Mlich |
4dff135 |
+ */
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+ if (quit_if_one_screen)
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+ {
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+ if (nifile() == 1)
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+ line_count = get_line_count();
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+ else /* In case more than one file, -F can not be used */
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+ quit_if_one_screen = FALSE;
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+ }
|
|
Jozef Mlich |
4dff135 |
+
|
|
Zdenek Prikryl |
22e2d31 |
}
|
|
Zdenek Prikryl |
22e2d31 |
|
|
Zdenek Prikryl |
22e2d31 |
init();
|
|
Jozef Mlich |
4dff135 |
diff -up ./less-466/screen.c.Foption ./less-466/screen.c
|
|
Jozef Mlich |
4dff135 |
--- ./less-466/screen.c.Foption 2014-08-24 02:46:51.000000000 +0200
|
|
Jozef Mlich |
4dff135 |
+++ ./less-466/screen.c 2014-09-18 13:58:52.772962165 +0200
|
|
Jozef Mlich |
4dff135 |
@@ -203,6 +203,7 @@ public int missing_cap = 0; /* Some capa
|
|
Zdenek Prikryl |
22e2d31 |
|
|
Zdenek Prikryl |
22e2d31 |
static int attrmode = AT_NORMAL;
|
|
Zdenek Prikryl |
22e2d31 |
extern int binattr;
|
|
Zdenek Prikryl |
22e2d31 |
+extern int line_count;
|
|
Zdenek Prikryl |
22e2d31 |
|
|
Zdenek Prikryl |
22e2d31 |
#if !MSDOS_COMPILER
|
|
Zdenek Prikryl |
22e2d31 |
static char *cheaper();
|
|
Jozef Mlich |
4dff135 |
@@ -232,6 +233,7 @@ extern int wscroll;
|
|
|
2d88a3d |
extern int screen_trashed;
|
|
|
2d88a3d |
extern int tty;
|
|
|
2d88a3d |
extern int top_scroll;
|
|
|
2d88a3d |
+extern int quit_if_one_screen;
|
|
Ivana Varekova |
a7cfed4 |
extern int oldbot;
|
|
|
2d88a3d |
#if HILITE_SEARCH
|
|
|
2d88a3d |
extern int hilite_search;
|
|
Jozef Mlich |
4dff135 |
@@ -1533,7 +1535,9 @@ win32_deinit_term()
|
|
Zdenek Prikryl |
22e2d31 |
init()
|
|
Zdenek Prikryl |
22e2d31 |
{
|
|
Zdenek Prikryl |
22e2d31 |
#if !MSDOS_COMPILER
|
|
Zdenek Prikryl |
22e2d31 |
- if (!no_init)
|
|
Zdenek Prikryl |
22e2d31 |
+ if (quit_if_one_screen && line_count >= sc_height)
|
|
Zdenek Prikryl |
22e2d31 |
+ quit_if_one_screen = FALSE;
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+ if (!no_init && !quit_if_one_screen)
|
|
Zdenek Prikryl |
22e2d31 |
tputs(sc_init, sc_height, putchr);
|
|
Zdenek Prikryl |
22e2d31 |
if (!no_keypad)
|
|
Zdenek Prikryl |
22e2d31 |
tputs(sc_s_keypad, sc_height, putchr);
|
|
Jozef Mlich |
4dff135 |
@@ -1573,7 +1577,7 @@ deinit()
|
|
|
d039b45 |
#if !MSDOS_COMPILER
|
|
|
d039b45 |
if (!no_keypad)
|
|
|
d039b45 |
tputs(sc_e_keypad, sc_height, putchr);
|
|
|
d039b45 |
- if (!no_init)
|
|
Vojtech Vitek (V-Teq) |
47da4db |
+ if (!no_init && !quit_if_one_screen)
|
|
Vojtech Vitek (V-Teq) |
47da4db |
tputs(sc_deinit, sc_height, putchr);
|
|
|
d039b45 |
#else
|
|
|
d039b45 |
/* Restore system colors. */
|