From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1862 invoked from network); 11 May 1997 07:22:14 -0000 Received: from euclid.skiles.gatech.edu (list@130.207.146.50) by ns1.primenet.com.au with SMTP; 11 May 1997 07:22:14 -0000 Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id CAA18064; Sun, 11 May 1997 02:58:41 -0400 (EDT) Resent-Date: Sun, 11 May 1997 02:58:41 -0400 (EDT) From: Zoltan Hidvegi Message-Id: <199705110457.AAA04374@hzoli.home> Subject: Re: test patches In-Reply-To: <970510121241.ZM9715@candle.brasslantern.com> from Bart Schaefer at "May 10, 97 12:12:41 pm" To: zsh-workers@math.gatech.edu (Zsh hacking and development) Date: Sun, 11 May 1997 00:57:15 -0400 (EDT) X-Mailer: ELM [version 2.4ME+ PL31 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Resent-Message-ID: <"r6g7N.0.BQ4.WuMTp"@euclid> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/3119 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu > } > 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