tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: terminfo vs termcap



In article <20090605154831.GC24820%sirion.coris.org.uk@localhost>,
Julian Coleman  <jdc%coris.org.uk@localhost> wrote:
>Hi,
>
>> So I looked into what we have, and I think we can do quite a bit by 
>> providing libterminfo to read the terminfo db's and provide termcap 
>> compat functions and a basic tic compiler to convert termcap(5) and 
>> terminfo(5) sources into terminfo.dbs. curses(3) would have to be 
>> re-tooled around libterminfo of course.

That would be a regression, because then our curses library will not
be able to handle multiple terminals from a single process. That is
not too important, but nevertheless it is a regression.

>I did wonder about creating a terminfo compatible part of our libterm.  This
>would allow us to support those extra terminfo calls that are not in the
>current libterm.  The most useful one to me was tparm().
>
>I was thinking of still using termcap as the back end.  Basically, the
>compatible part would have a mapping between terminfo and termcap
>capabilities.  For example, if you called:
>
>  tigetstr("cud");
>
>it would translate internally to:
>
>  t_getstr(tc, "DO", NULL, l);
>
>(Functions without a termcap mapping would be extra).  That wouldn't involve
>any changes to the curses library.
>

I think that is probably the easiest way; the terminfo API is also ancient,
deficient and ugly:
    - can only handle one terminal at a time
    - does not use const, and tparm is just nastyness that could have used
      stdarg.h

The biggest advantages of terminfo were:
    - no size limitation in the api for a terminfo entry
    - more than 2 character names.
    - % delay strings (IIRC)
    - faster database lookups because each terminal description is in a single
      file

None of those limitations apply to our termcap implementation, at least I
cannot think of any:
    - we have the extension escape, for things that need more than 1K.
    - we don't really need this, the code seems to already support.
    - I don't think that there are actual devices alive today that need
      the delays.
    - we use termcap.db

I think that most fuctionality can be achieved having a map that
goes from terminfo names to termcap names, that is if we want to
supply/support the terminfo API. Is there any other reason to want/need
terminfo that I am missing?

christos



Home | Main Index | Thread Index | Old Index