Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Mar 1995 07:17:26 -0600 (CST)
From:      bob@obiwan.pmr.com (Bob Willcox)
To:        ache@astral.msk.su (Andrey A. Chernov Black Mage)
Cc:        freebsd-current@freefall.cdrom.com
Subject:   Re: tgetnum wierdness on -current
Message-ID:  <m0rtEff-00030WC@obiwan.pmr.com>
In-Reply-To: <bLPuaTlKE0@astral.msk.su> from "Andrey A. Chernov, Black Mage" at Mar 27, 95 09:33:13 am

next in thread | previous in thread | raw e-mail | index | archive | help
Andrey A. Chernov, Black Mage wrote:
> 
> Terminal entry can comes from various sources: /usr/share/misc/termcap
> ~/.termcap $TERMCAP f.e.
> To be shure just use one of the tests coming from lib/termlib/TEST,
> I think it is test1, compile it on -current with -ltermcap and
> run it on remote xterm. It just print out
> terminal entry, then seek li= there. If li=65, check various
> sources mentioned above, if all of them says li=24, there can be
> bug in tgetent, if all sources and output says li=24, there
> is bug in tgetnum.

Well, the termcap entry for xterm in -current does, indeed, specify
a line number of 65, so that is where the 65 is coming from and that
would seem to exonerate tgetnum.

> 
> >The application in question is files-2.2p1 that I am trying to port
> >to run on FreeBSD.  Whenever it receives a SIGWINCH signal it
> >terminates the current window by calling endwin() then reinstates
> >it by calling initscr().  It also calls wrefresh() for each of its
> >logical windows plus a number of other initializations.
> 
> It is right method when window changes.
> Please specify more detaily which ioctl failed in setterm().

It (the files program) does an endwin() followed by an

    ioctl(0, TIOCGWINSZ, &win_ws)

to get the new window sizes (which works). Then it does an initscr()
which calls setterm() which attempts an

    ioctl(STDERR_FILENO, TIOCGWINSZ, &win)

that fails.  setterm() then defaults to using the termcap values
for lines and columns.  The only significant difference appears to
be the file descriptor.  A file descriptor of 0 works, whereas, 2
does not.

Poking around a bit more in the source for files I see that it will
(under some circumstances that I have not yet nailed down) close
and reopen stderr.  Could this be the cause of the problem?  I
don't know stderr is opened to at the momemt (of the failure).
I will have to dig more into this.

-- 
Bob Willcox                ...!{rutgers|ames}!cs.utexas.edu!uudell!obiwan!bob
Austin, TX                                 or: @uudell.us.dell.com:obiwan!bob
512-258-4224 (home), 512-838-3914 (work)          or: obiwan%bob@uunet.uu.net



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?m0rtEff-00030WC>