« Return to Thread: terminfo implementation

Re: terminfo implementation

by Christos Zoulas-2 :: Rate this Message:

Reply to Author | View in Thread

In article <4A55BB7B.3040902@...>,
Roy Marples  <roy@...> wrote:

>Here's a new snapshot.
>http://www.netbsd.org/~roy/terminfo-20090709.tar.bz2
>
>It should now implement all documented ncurses terminfo capabilities.
>The tic(1) implementation is a lot faster than before and is 3 times
>quicker than ncurses tic :)
>Both tic(1) and infocmp(1) now sport the -x flag to control acceptance
>of non standard capabilities. If you have tried a previous snapshot,
>you'll need to rebuild your databases.
>
>In addition to the standard cap_long_name macros to access a cap quickly
>on cur_term, we have t_cap_long_name macros to access a cap quickly on
>any TERMINAL struct which would make any merge with our curses library a
>little less painless.
>
>It also has a termcap compatibility layer and is source and binary
>compatible with our current libtermcap provided that NO NetBSD
>extensions have been used. Only ul(1) and curses(3) use this in the tree
>according to my grep search. Whilst curses(3) does have an excuse to use
>them (see prior discussions for why) ul(1) does not so I'm pretty sure
>we can just drop them.
>
>On the whole, most people are generally positive about this.
>I've taken on board some comments by Joerg and changed some code
>accordingly, but more eyes would be better.
>

curterm.c:
        - there are more baud rates defined on NetBSD.
defs.c:
        - the arrays of constants should be sorted so the index functions
          can use binary search instead of of linear.
setupterm.c:
        - use errx(3) in the exit case so that the program name gets printed.
term.c:
        - what frees tp->_extras?
termcap.c:
        - sort arrays and use binary search.
tputs.c:
        - to support multiple terminals outc should be passed a second
          void * argument that can be used from the application to determine
          the terminal context. ie. the signature for ti_puts should be
          int ti_puts(const TERMINAL *term, const char *str, int affcnt,
              int (*outc)(int, void *), void *arg)

christos

 « Return to Thread: terminfo implementation