Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: test patches



> } > There still doesn't appear to be a test in init.c for the case where
> } > the system supports TIOCGWINSZ but the rows and columns value in the
> } > shttyinfo.winsize structure are both zero.  In that case we ought to
> } > be using the row and column sizes from the termcap or terminfo entry?

The patch below implements this.  It does not work for non-interactive
shells since termcap initialisation is delayed in that case.  There is no
perfect solution for that: early termcap initialisaton can cause SIGTTOU on
some operating systems when the shell is backgrounded.  We cannot adjust
COLUMNS/LINES later when termcap is actually initialised since that will
unexpectedly change the values set by the user (for example the telnetd on
Solaris does not support window size and the li terminfo entry is 60 for
xterm, so one may want to set LINES to 24 on startup and does not want to
change it back to the wrong termcap value).

Zoltan


--- Src/globals.h	1997/05/05 07:17:48	3.1.2.9
+++ Src/globals.h	1997/05/04 05:18:36
@@ -644,6 +644,10 @@
 EXTERN int tclen[TC_COUNT];
  
 EXTERN char *tcstr[TC_COUNT];
+
+/* Values of the li and co entries */
+
+EXTERN int tclines, tccolumns;
  
 /* names of the strings we want */
 #ifdef GLOBALS
--- Src/init.c	1997/05/05 06:17:46	3.1.2.9
+++ Src/init.c	1997/05/11 04:12:59
@@ -360,6 +360,9 @@
 	/* check whether terminal has automargin (wraparound) capability */
 	hasam = tgetflag("am");
 
+	tclines = tgetnum("li");
+	tccolumns = tgetnum("co");
+
 	/* if there's no termcap entry for cursor up, use single line mode: *
 	 * this is flagged by termflags which is examined in zle_refresh.c  *
 	 */
@@ -519,8 +522,9 @@
     setiparam("COLUMNS", shttyinfo.winsize.ws_col);
     setiparam("LINES", shttyinfo.winsize.ws_row);
 #else
-    setiparam("COLUMNS", 80);
-    setiparam("LINES", 24);
+    /* Using zero below sets the defaults from termcap */
+    setiparam("COLUMNS", 0);
+    setiparam("LINES", 0);
 #endif
 
 #ifdef HAVE_GETRLIMIT
--- Src/params.c	1997/05/06 05:31:12	3.1.2.10
+++ Src/params.c	1997/05/11 04:05:43
@@ -1253,14 +1253,14 @@
 {
     if ((long *)pm->u.data == & columns) {
 	if(x <= 0)
-	    x = 80;
+	    x = tccolumns > 0 ? tccolumns : 80;
 	if (x > 2)
 	    termflags &= ~TERM_NARROW;
 	else
 	    termflags |= TERM_NARROW;
     } else if ((long *)pm->u.data == & lines) {
 	if(x <= 0)
-	    x = 24;
+	    x = tclines > 0 ? tclines : 24;
 	if (x > 2)
 	    termflags &= ~TERM_SHORT;
 	else



Messages sorted by: Reverse Date, Date, Thread, Author