On Mon, Jul 20, 2009 at 02:52:16PM +0100, Roy Marples wrote: > Hi List. > > curses(3) currently uses termcap(3) > I'm working on changing it to use my terminfo implementation instead, > and have come across some pitfalls. > > For whatever brain-dead reason, terminfo defines commonly used words as > macros, such as lines, columns and pad_char. There is also a macro > conflict with a NetBSD only extension, curses_color(3). term.h's "always" done that: define symbols pointing into the struct which correspond to the terminfo capability names. They're #define's simply so CUR can be redefined to point to a different instance of the struct. (There are programs which rely on this behavior...). For instance, Solaris' term.h has an ifdef to switch between two choices for CUR: #ifdef SINGLE ... #define CUR _first_term. #else ... #define CUR cur_term-> #endif On the other hand, its xpg4 header uses a different base: #define __TERM cur_term-> > I've prepared a patch for libcurses to fix this - renaming **lines to > **alines in the __window struct and pad_char to padchar. I've renamed > the function no_color_video to no_color_attributes and added a strong > alias to that from no_color_video so we're still binary compatible. > http://www.netbsd.org/~roy/curses-terminfo-clash.diff While you're at it, perhaps you should remove this comment (adjacent to your changes), since it's inaccurate (it's not a "bug" in xterm, but a design choice - the other choices merely are worse ;-): /* * Work round an xterm bug where inserting lines causes all the * inserted lines to be covered with the background colour we * set on the first line (even if we unset it for subsequent * lines). */ > This allows libcurses to compile using term.h, but retains everything > termcap. I'll be comitting this soonish, so any eyes or concerns should > be raised now. > > Thanks > > Roy -- Thomas E. Dickey http://invisible-island.net ftp://invisible-island.net
Attachment:
pgpX0aFF125vo.pgp
Description: PGP signature