tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: tn3270, mset and map3270
In article <4B87EC62.1070900%NetBSD.org@localhost>
roy%NetBSD.org@localhost writes:
> On 26/02/2010 14:30, ITOH Yasufumi wrote:
> > In article<4B866EA0.5030407%NetBSD.org@localhost>
> > roy%NetBSD.org@localhost writes:
> >
> >> What makes you think that terminfo(5) doesn't allow this also?
> >
> > I knew some implementations have extension to allow custom
> > capabilities, but is not portable.
>
> This does not matter.
An interface is what provides compatibility and portability.
> > Interesting enough, the extension is something like adding termcap
> > entry in the terminfo, and inconsistent with the original idea of
> > terminfo.
> >
> > The idea of terminfo(5) (terminfo(4) might be more precise, since
> > UNIX System V reordered section number) is to use a fixed array of
> > capabilities to speed-up loading database, so basically there is
> > no room for custom capabilities.
> >
> > To use custom capabilities, we can use termcap almost everywhere.
>
> Things have moved on.
> Both ncurses and my implementation allow extensions.
The extension does no benefit to users, at least for now.
One reason is it is not portable.
See below for other reasons.
> > Do you have any benefit to use terminfo for programs that are
> > already written to use termcap?
> > Since our new termcap library is fast, I don't see any benefit to
> > rewrite termcap programs for terminfo. It just causes loss of
> > features such as $TERMCAP.
>
> My terminfo implemenation is faster still as it uses hash tables for
> termcap and terminfo lookups. As the termcap design is to do a string
> lookup per capability it's always going to be slow. terminfo allows
> calling known capabilities directly or by going the string lookup route
> like termcap. It's still quite quick thanks to hash tables.
This conflicts with the basic idea of terminfo: capability names are
not required at run time. They are only used when compiling a database
source into binary.
Furture, this is a duplication of feature. Use only one from the table and
string lookup. Table lookup is terminfo, string lookup is termcap.
> As to re-tooling code in terminfo vs termcap?
> Less code for termcap applications for staters, which means smaller
> binaries and less memory requirements. Here's a good example of one of
OK. terminfo has no functional benefit.
> our applications converted to terminfo
> http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/arch/atari/stand/edahdi/edahdi.c.diff?r1=1.9&r2=1.10&only_with_tag=MAIN&f=h
>
> As you can see, it's a lot less code and easier to see what's going on.
> clear_screen means a lot more than "cl".
On termcap, "cl" in programs and "cl" in database.
This is simple and has no confusion here.
On terminfo,
variable name capability name
------------- ---------------
clear_screen clear
columns cols
lines lines
etc. As you can see, it is a lot more confusing and prone to mistake.
Users manage to use it since the names are checked on compile time
by C compiler and tic.
However, some terminfo implementations accept extended
capabilities, and users cannot detect their mistake.
For this reason, not accepting extended capabilities
is benefit of normal users.
> Recent updates to my implemation allow
> $TERMINFO="term|alias|term description, cols#80, foo=bar"
> $TERMCAP="term|alias|term description:co#80:foo=bar"
Having more function is not always users' benefit.
Two ways to do the similar thing is not a good design,
since it is confusing.
TERMINFO is undocumented feature of ncurses library;
TERMCAP is compatible with most termcap-capable environments, including
all versions of NetBSD release.
I think we'd better to choose TERMCAP from them.
> What makes you think termcap(3) has gone away?
> We provide a termcap wrapper on top of terminfo :)
So the possible implementations are as follows:
1. have termcap and terminfo libraries/databases separately
terminfo programs:
terminfo database -> program
termcap programs:
termcap database -> program
2. implement terminfo as an emulation on termcap
terminfo programs:
termcap database -> (cap to info) -> program
termcap programs:
termcap database -> program
3. implement termcap as an emulation on terminfo
terminfo programs:
terminfo database ------------------+
termcap database -> (cap to info) -+-> program
termcap programs:
terminfo database ------------------+
termcap database -> (cap to info) -+-> (info to cap) -> program
Hence my proposal (2 (or 1)).
Why you are going to most complex implementation (3)?
Regards,
--
ITOH Yasufumi
- References:
- Re: tn3270, mset and map3270
- Re: tn3270, mset and map3270
- Re: tn3270, mset and map3270
- Re: tn3270, mset and map3270
- Re: tn3270, mset and map3270
- Re: tn3270, mset and map3270
- Re: tn3270, mset and map3270
- Re: tn3270, mset and map3270
- Re: tn3270, mset and map3270
- Re: tn3270, mset and map3270
- Re: tn3270, mset and map3270
- Re: tn3270, mset and map3270
- Re: tn3270, mset and map3270
- Re: tn3270, mset and map3270
- Re: tn3270, mset and map3270
Home |
Main Index |
Thread Index |
Old Index