Zdenek Prikryl 22e2d31
--- less-406/main.c.Foption	2007-06-17 18:56:04.000000000 +0200
Zdenek Prikryl 22e2d31
+++ less-406/main.c	2008-01-11 10:18:46.000000000 +0100
Zdenek Prikryl 22e2d31
@@ -33,6 +33,7 @@ public int	quitting;
Zdenek Prikryl 22e2d31
 public int	secure;
Zdenek Prikryl 22e2d31
 public int	dohelp;
Zdenek Prikryl 22e2d31
 public int	less_is_more;
Zdenek Prikryl 22e2d31
+public int	line_count;
Zdenek Prikryl 22e2d31
 
Zdenek Prikryl 22e2d31
 #if LOGFILE
Zdenek Prikryl 22e2d31
 public int	logfile = -1;
Zdenek Prikryl 22e2d31
@@ -280,6 +281,16 @@ main(argc, argv)
Zdenek Prikryl 22e2d31
 	{
Zdenek Prikryl 22e2d31
 		if (edit_first())  /* Edit first valid file in cmd line */
Zdenek Prikryl 22e2d31
 			quit(QUIT_ERROR);
Zdenek Prikryl 22e2d31
+		/*
Zdenek Prikryl 22e2d31
+		 * In case that we have only one file and -F, have to get a line
Zdenek Prikryl 22e2d31
+		 * count fot init(). If the line count is less then a height of a term,
Zdenek Prikryl 22e2d31
+		 * the content of the file is printed out and then less quits. Otherwise
Zdenek Prikryl 22e2d31
+		 * -F can not be used
Zdenek Prikryl 22e2d31
+		 */
Zdenek Prikryl 22e2d31
+		if (nifile() == 1 && quit_if_one_screen)
Zdenek Prikryl 22e2d31
+			line_count = get_line_count();
Zdenek Prikryl 22e2d31
+		else if (nifile() > 1) /* In case more than one file, -F can not be used */
Zdenek Prikryl 22e2d31
+			quit_if_one_screen = FALSE;
Zdenek Prikryl 22e2d31
 	}
Zdenek Prikryl 22e2d31
 
Zdenek Prikryl 22e2d31
 	init();
Zdenek Prikryl 22e2d31
--- less-406/screen.c.Foption	2007-06-17 18:56:04.000000000 +0200
Zdenek Prikryl 22e2d31
+++ less-406/screen.c	2008-01-11 10:20:00.000000000 +0100
Zdenek Prikryl 22e2d31
@@ -204,6 +204,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();
Zdenek Prikryl 22e2d31
@@ -233,6 +234,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;
Zdenek Prikryl 22e2d31
@@ -1534,7 +1536,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;
Zdenek Prikryl 22e2d31
+	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);
Zdenek Prikryl 22e2d31
@@ -1573,8 +1577,9 @@ deinit()
d039b45
 #if !MSDOS_COMPILER
d039b45
 	if (!no_keypad)
d039b45
 		tputs(sc_e_keypad, sc_height, putchr);
d039b45
-	if (!no_init)
Zdenek Prikryl 22e2d31
-		tputs(sc_deinit, sc_height, putchr);
Zdenek Prikryl 22e2d31
+	if (!no_init && !quit_if_one_screen) 
Zdenek Prikryl 22e2d31
+		tputs(sc_deinit, sc_height, putchr);	
Zdenek Prikryl 22e2d31
+	
d039b45
 #else
d039b45
 	/* Restore system colors. */
Zdenek Prikryl 22e2d31
 	SETCOLORS(sy_fg_color, sy_bg_color);
Zdenek Prikryl 22e2d31
--- less-406/funcs.h.Foption	2007-03-24 07:27:54.000000000 +0100
Zdenek Prikryl 22e2d31
+++ less-406/funcs.h	2008-01-11 09:36:16.000000000 +0100
Zdenek Prikryl 22e2d31
@@ -126,6 +126,7 @@
Zdenek Prikryl 22e2d31
 	public void forward ();
Zdenek Prikryl 22e2d31
 	public void backward ();
Zdenek Prikryl 22e2d31
 	public int get_back_scroll ();
Zdenek Prikryl 22e2d31
+	public int get_line_count ();
Zdenek Prikryl 22e2d31
 	public void del_ifile ();
Zdenek Prikryl 22e2d31
 	public IFILE next_ifile ();
Zdenek Prikryl 22e2d31
 	public IFILE prev_ifile ();
Zdenek Prikryl 22e2d31
--- less-406/forwback.c.Foption	2007-06-17 18:56:04.000000000 +0200
Zdenek Prikryl 22e2d31
+++ less-406/forwback.c	2008-01-11 09:37:15.000000000 +0100
Zdenek Prikryl 22e2d31
@@ -410,3 +410,24 @@ get_back_scroll()
Zdenek Prikryl 22e2d31
 		return (sc_height - 2);
Zdenek Prikryl 22e2d31
 	return (10000); /* infinity */
Zdenek Prikryl 22e2d31
 }
Zdenek Prikryl 22e2d31
+	
Zdenek Prikryl 22e2d31
+/*
Zdenek Prikryl 22e2d31
+ * Get line count of file
Zdenek Prikryl 22e2d31
+ */
Zdenek Prikryl 22e2d31
+	public int
Zdenek Prikryl 22e2d31
+get_line_count()
Zdenek Prikryl 22e2d31
+{
Zdenek Prikryl 22e2d31
+	int nlines = 0;
Zdenek Prikryl 22e2d31
+	POSITION pos;
Zdenek Prikryl 22e2d31
+	
Zdenek Prikryl 22e2d31
+	pos = position(TOP);
Zdenek Prikryl 22e2d31
+	
Zdenek Prikryl 0d1f5ae
+	while (pos != NULL_POSITION && nlines <= sc_height)
Zdenek Prikryl 22e2d31
+	{
Zdenek Prikryl 22e2d31
+		pos = forw_line(pos);
Zdenek Prikryl 22e2d31
+		nlines++;
Zdenek Prikryl 22e2d31
+	}
Zdenek Prikryl 22e2d31
+	
Zdenek Prikryl 22e2d31
+	return nlines;
Zdenek Prikryl 22e2d31
+}
Zdenek Prikryl 22e2d31
+