git: 2a50a9de8340 - main - terminfo: add terminfo database

Cy Schubert Cy.Schubert at cschubert.com
Fri Feb 26 14:20:25 UTC 2021


In message <202102251327.11PDR4eC083842 at gitrepo.freebsd.org>, Baptiste 
Daroussi
n writes:
> The branch main has been updated by bapt:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=2a50a9de8340f08bd876e9e5993332ae
> 14376f80
>
> commit 2a50a9de8340f08bd876e9e5993332ae14376f80
> Author:     Baptiste Daroussin <bapt at FreeBSD.org>
> AuthorDate: 2021-02-23 16:17:32 +0000
> Commit:     Baptiste Daroussin <bapt at FreeBSD.org>
> CommitDate: 2021-02-25 13:25:32 +0000
>
>     terminfo: add terminfo database
>     
>     Tested by:      manu, jbeich
> ---
>  share/Makefile          |  1 +
>  share/terminfo/Makefile | 34 ++++++++++++++++++++++++++++++++++
>  2 files changed, 35 insertions(+)
>
> diff --git a/share/Makefile b/share/Makefile
> index c4e12b05f7db..d6854b230ae5 100644
> --- a/share/Makefile
> +++ b/share/Makefile
> @@ -26,6 +26,7 @@ SUBDIR=	${_colldef} \
>  	${_syscons} \
>  	tabset \
>  	termcap \
> +	terminfo \
>  	${_timedef} \
>  	${_vt} \
>  	${_zoneinfo}
> diff --git a/share/terminfo/Makefile b/share/terminfo/Makefile
> new file mode 100644
> index 000000000000..7bb11f3fdf24
> --- /dev/null
> +++ b/share/terminfo/Makefile
> @@ -0,0 +1,34 @@
> +PACKAGE=	runtime
> +
> +.PATH: ${SRCTOP}/contrib/ncurses/misc
> +TINFOBUILDDIR=	${.OBJDIR}/builddir
> +CLEANDIRS+=	builddir
> +
> +.include <src.tools.mk>
> +
> +.if !defined(_SKIP_BUILD)
> +all: terminfo
> +.endif
> +META_TARGETS+=	terminfo install-terminfo
> +
> +terminfo: terminfo.src
> +	mkdir -p ${TINFOBUILDDIR}
> +	${TIC_CMD} -x -o ${TINFOBUILDDIR} ${.ALLSRC}
> +
> +.if make(*install*)
> +TINFOS!=	 cd ${TINFOBUILDDIR} && find * -type f | LC_ALL=C sort
> +TINFOSDIRS=	${TINFOS:C/(.).*/\1/g:O:u}
> +.endif
> +
> +beforeinstall: install-terminfo
> +install-terminfo:
> +	mkdir -p ${DESTDIR}/usr/share/terminfo
> +	cd ${DESTDIR}/usr/share/terminfo; mkdir -p ${TINFOSDIRS}
> +.for f in ${TINFOS}
> +	${INSTALL} ${TAG_ARGS} \
> +	    -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \
> +	    ${TINFOBUILDDIR}/${f} ${DESTDIR}/usr/share/terminfo/${f}
> +.endfor
> +
> +.include <bsd.prog.mk>
> +
>

I think this had some unintended consequences, a POLA violation that should 
be documented. Our termcap didn't support alternate screen buffers while 
terminfo does. Termcap did through t_te and t_ti but we didn't use them. 
Terminfo as delivered from the ncurses factory does supply rmcup and smcup; 
our fullscreen apps such as nvi and top see them and use the alternate 
screen buffer.

The use of the alternate screen buffer is one of the things I hate about 
Linux. After running vi or top I expect the output to remain on the screen 
so I can use some bit of information in my next command. We now have this 
behaviour too.

The alternate screen buffer was added to xterm an ice age ago. Most modern 
terminal emulators support it. As much as I feel the need to yank out rmcup 
an smcup from our terminfo database, we are using a feature, as distasteful 
as it may feel. This change probably needs a relnotes=yes and an UPDATING 
entry advising users that they can either change $TERM to xterm1, vt100, or 
some other terminal definition that doesn't support rmcup and smcup, or 
learn to like it.

OTOH, maybe this is something we as a community don't really want and we 
remove the rmcup and smcup definitions from our terminfo database. 
Personally, I believe this is progress -- progress I'm not particularly 
enamoured with but progress nonetheless. But I think we need to discuss, 
come to some sort of decision and document it.

Thoughts?


-- 
Cheers,
Cy Schubert <Cy.Schubert at cschubert.com>
FreeBSD UNIX:  <cy at FreeBSD.org>   Web:  https://FreeBSD.org
NTP:           <cy at nwtime.org>    Web:  https://nwtime.org

	The need of the many outweighs the greed of the few.




More information about the dev-commits-src-all mailing list