Re: Cursing the tput utility - the penguin strikes again

From: Thomas Dickey <dickey_at_his.com>
Date: Thu, 23 Feb 2023 20:26:22 UTC
On Thu, Feb 23, 2023 at 03:14:16PM -0500, Kurt Hackenberg wrote:
> On Thu, Feb 23, 2023 at 04:45:21PM +0000, Frank Leonhardt wrote:
> 
> > So there's a tput utility for controlling the terminal in BSD.
> ...
> > Well use the tcap utility on non-BSD platforms and it suddenly doesn't
> > work. It turns out that the penguinistas thought using the "Cap Name"
> > instead of the "TCap Code" was a good idea. Some of the codes are the
> > same, some are not. In fact most are not.
> 
> The trouble is those are two different mechanisms, based on two different
> file formats, that do the same thing.
> 
> The two file formats are "termcap" and "terminfo", both from the default
> names of the system files that use them. Manual section 5 has pages about
> both. They're similar, but different enough to be incompatible.
> 
> The "TCap codes" are the names used in termcap format; the "Capnames" are
> the names used in terminfo format. (A "cap" is a terminal "capability".)
> 
> I think termcap came first, and then somebody invented terminfo as an
> improvement or a reimplementation of the same idea. I think termcap came
> from Berkeley Unix -- maybe invented for vi -- so FreeBSD more or less
> stayed with it. Maybe terminfo came from Bell Labs; I think Linux prefers
> it.

most do (FreeBSD's userland is an exception)

It's actually ncurses (and terminfo) underneath the facade.

related -

https://invisible-island.net/ncurses/tctest.html
 
> This is pointlessly incompatible, the result of haphazard evolution, and
> kind of a mess. It's all about 40 years old.
> 
> The library functions that use those terminal descriptions were in the
> library "curses" (from "cursor"), long ago superseded by "ncurses" (new
> curses). Probably the program tput uses the library ncurses. You might want
> to look at that library; maybe there's a compatibility layer. Or, as Daniel
> Tameling suggested, maybe there are two different version of ncurses.

just one -

https://invisible-island.net/ncurses/ncurses.faq.html#platform-portable

(but reading the FreeBSD sources would tell more)

-- 
Thomas E. Dickey <dickey@invisible-island.net>
https://invisible-island.net