bin/80256: /rescue/vi doesn't work without terminal database in
/usr
Bruce Evans
bde at zeta.org.au
Sat Apr 23 18:50:27 PDT 2005
The following reply was made to PR bin/80256; it has been noted by GNATS.
From: Bruce Evans <bde at zeta.org.au>
To: "Simon L. Nielsen" <simon at FreeBSD.org>
Cc: freebsd-gnats-submit at FreeBSD.org
Subject: Re: bin/80256: /rescue/vi doesn't work without terminal database in
/usr
Date: Sun, 24 Apr 2005 11:40:39 +1000 (EST)
On Sat, 23 Apr 2005, Simon L. Nielsen wrote:
> On 2005.04.23 17:19:17 +0200, Brian Candler wrote:
> > I do note however from ncurses(3X):
> >=20
> > If the ncurses library has been configured with termcap sup=
> port,
> > ncurses will check for a terminal's description in termcap fo=
> rm if
> > it is not available in the terminfo database.
> >=20
> > This suggests a very simple solution (untested):
> >=20
> > --- lib/libncurses/pathnames.h.orig Sat Apr 23 17:17:01 2005
> > +++ lib/libncurses/pathnames.h Sat Apr 23 17:17:13 2005
> > @@ -34,5 +34,5 @@
> > * $FreeBSD: src/lib/libncurses/pathnames.h,v 1.1 1999/08/30 07:57:50 pe=
> ter Exp $
> > */
> > =20
> > -#define _PATH_DEF ".termcap /usr/share/misc/termcap"
> > +#define _PATH_DEF ".termcap /usr/share/misc/termcap /rescue/termcap"
> > #define _PATH_DEF_SEC "/usr/share/misc/termcap"
> >=20
> > and then bundle a few termcap entries in /rescue/termcap. Is there any
> > reason why that couldn't be done?
>
> Without knowing how the code in question works, that does sounds like
> a simple way to get working vi in a rescue environment.
Why not use the normal mechanism? Environment variables exist so that you
don't have to hard-code paths into utilities. From environ(7):
%%%
TERMCAP The string describing the terminal in TERM, or, if it begins
with a '/', the name of the termcap file. See TERMPATH
below, and termcap(5).
TERMPATH A sequence of pathnames of termcap files, separated by
colons or spaces, which are searched for terminal descrip-
tions in the order listed. Having no TERMPATH is equivalent
to a TERMPATH of ``$HOME/.termcap:/etc/termcap''. TERMPATH
is ignored if TERMCAP contains a full pathname.
%%%
Or you can use ".termcap" (maybe using a special $HOME for rescue) without
changing ther defaults.
There is also some documentation of TERMCAP and TERMPATH in termcap(5).
This gives a few less details than the above, and points to termcap(3).
termcap(3) used to have a few more details than the above, but has rotted
and now doesn't say anything about the environment variables. The details
are still in the Attic (libterm/Attic/termcap.3,v).
Bruce
More information about the freebsd-bugs
mailing list