Subject: Re: CVS commit: src/lib/libcurses
To: Julian Coleman <jdc@netbsd.org>
From: Alan Barrett <apb@cequrux.com>
List: tech-userlevel
Date: 04/06/2003 10:11:11
[moving from source-changes to tech-userlevel]
On Sun, 06 Apr 2003, Julian Coleman wrote:
> Modified Files:
> src/lib/libcurses: color.c
>
> Log Message:
> Swap red/blue and yellow/cyan when working with Sb/Sf colour. Problem
> noticed when working on PR 21000.
Are you sure that swapping them in libcurses is the right thing, as
opposed to swapping them via termcap/terminfo entries?
In other words, where is the specification of the API for the terminfo
setb/setf capabilities, or for the termcap Sb/Sf capabilities, and what
does the specification say? Without checking the specification, it's
impossible to say whether the library was out of conformance, or whether
the termcap/terminfo database simply was not an accurate description
of the terminal's behaviour.
If you look at the terminfo man page (supplied by pkgsrc/devel/ncurses),
there's an example for the "ansi" terminal type that includes the following:
setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
That means:
emit "\E[4"
if p1 == 1 then emit "4"
elseif p1 == 3 then emit "6"
elseif p1 == 4 then emit "1"
elseif p1 == 6 then emit "3"
else emit p1 as a decimal number
endif
emit "m"
The existence of this example strongly suggests to me that the colours
are supposed to be swapped in the termcap/terminfo description, not in
the curses library. But I haven't seen a specification, so I don't
know.
--apb (Alan Barrett)