screen.c.diff   [plain text]


--- screen.c.orig	2004-07-28 11:22:04.000000000 -0700
+++ screen.c	2004-07-28 11:35:02.000000000 -0700
@@ -225,6 +225,8 @@
 extern int no_back_scroll;
 extern int swindow;
 extern int no_init;
+extern int quit_at_eof;
+extern int more_mode;
 extern int no_keypad;
 extern int sigs;
 extern int wscroll;
@@ -1181,12 +1183,20 @@
 	sc_e_keypad = ltgetstr("ke", &sp);
 	if (sc_e_keypad == NULL)
 		sc_e_keypad = "";
+
+	/*
+	 * This loses for terminals with termcap entries with ti/te strings
+	 * that switch to/from an alternate screen, and we're in quit_at_eof
+	 * (eg, more(1)).
+	 */
+	if (!quit_at_eof && !more_mode) {
+		sc_init = ltgetstr("ti", &sp);
+		sc_deinit = ltgetstr("te", &sp);
+	}
 		
-	sc_init = ltgetstr("ti", &sp);
 	if (sc_init == NULL)
 		sc_init = "";
 
-	sc_deinit= ltgetstr("te", &sp);
 	if (sc_deinit == NULL)
 		sc_deinit = "";