snapshot of project "ncurses", label v4_1_980117

This commit is contained in:
Thomas E. Dickey 1998-01-18 01:42:49 -05:00
parent 3b8b4a453a
commit b11a2909fc
16 changed files with 137 additions and 74 deletions

View File

@ -37,26 +37,29 @@
O_ACTIVE
The field is visited during processing. If this
option is off, the field will not be reachable by
navigation keys.
navigation keys. Please notice that an invisible
field appears to be inactive also.
O_PUBLIC
The field contents are displayed as data is entered.
The field contents are displayed as data is entered.
O_EDIT
The field can be edited.
O_WRAP
Words that don't fit on a line are wrapped to the
Words that don't fit on a line are wrapped to the
next line. Words are blank-separated.
O_BLANK
The field is cleared whenever a character is entered
The field is cleared whenever a character is entered
at the first position.
O_AUTOSKIP
Skip to the next field when this one fills
O_NULLOK
Allow a blank field.
O_STATIC
Field buffers are fixed to field's original size.
O_PASSOK
@ -65,7 +68,7 @@
</PRE>
<H2>RETURN VALUE</H2><PRE>
Except for <STRONG>field_opts</STRONG>, each routine returns one of the
Except for <STRONG>field_opts</STRONG>, each routine returns one of the
following:
<STRONG>E_OK</STRONG> The routine succeeded.
@ -88,13 +91,13 @@
</PRE>
<H2>PORTABILITY</H2><PRE>
These routines emulate the System V forms library. They
These routines emulate the System V forms library. They
were not supported on Version 7 or BSD versions.
</PRE>
<H2>AUTHORS</H2><PRE>
Juergen Pfeifer. Manual pages and adaptation for new
Juergen Pfeifer. Manual pages and adaptation for new
curses by Eric S. Raymond.
@ -113,9 +116,6 @@
</PRE>
</BODY>

32
NEWS
View File

@ -1,8 +1,38 @@
-- $Id: NEWS,v 1.297 1998/01/10 20:52:01 tom Exp $
-- $Id: NEWS,v 1.299 1998/01/18 01:42:49 tom Exp $
This is a log of changes that ncurses has gone through since Zeyd
started working with Pavel Curtis' original work, pcurses, in 1992:
980117
+ correct initialization of color-pair (from 970524) in xmas.c,
which was using only one color-pair for all colors.
+ add multithread options for objects build on EMX, for compatibility
with XFree86.
+ split up an expression in MKlib_gen.sh to work around a problem on
OS/2 EMX, with 'ash' (Juan Jose Garcia Ripoll).
+ change terminfo entries xterm (xterm-xf86-v40), xterm-8bit rs1 to
use hard reset.
+ rename terminfo entry xterm-xf86-v39t to xterm-xf86-v40
+ remove bold/underline from sun console entries since they're not
implemented.
+ correct _tracef calls in _tracedump(), which did not separate
format from parameters.
+ correct getopt string for tic "-o" option, and add it to man-page
synopsis (reported by Darren Hiebert <darren@hmi.com>).
+ correct typo in panel/Makefile.in, reversed if-statement in
scrolling optimization (Alexander V. Lukyanov).
+ test for 'remove()', use 'unlink() if not found (patch by Philippe
De Muyter <phdm@macqel.be>).
> patches by Juergen Pfeifer:
+ Improve a feature of the forms driver. For invisible fields
(O_VISIBLE off) only the contents but not the attributes are cleared.
We now clear both. (Reported by Javier Kohan
<jkohan@adan.fceia.unr.edu.ar>)
+ The man page form_field_opts.3x makes now clear, that invisible
fields are also always inactive.
+ adjust ifdef's to compile the C++ binding with the just released
gcc-2.8.0 c++ and the corresponding new C++ libraries.
980110
+ correct "?" command in ncurses.c; it was performing non-screen writes
while the program was in screen mode. (It "worked" in 1.9.9e because

View File

@ -21,7 +21,7 @@
| WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
+----------------------------------------------------------------------------*/
// $Id: etip.h.in,v 1.1 1997/10/04 19:22:56 tom Exp $
// $Id: etip.h.in,v 1.2 1998/01/17 18:58:02 juergen Exp $
#ifndef _ETIP_H
#define _ETIP_H
@ -40,8 +40,10 @@
#endif
#ifdef __GNUG__
# if HAVE_TYPEINFO
# include <typeinfo>
# if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8))
# if HAVE_TYPEINFO
# include <typeinfo>
# endif
# endif
#endif

View File

@ -17,10 +17,10 @@ dnl RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF *
dnl CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN *
dnl CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *
dnl*****************************************************************************
dnl $Id: configure.in,v 1.115 1998/01/03 17:01:52 tom Exp $
dnl $Id: configure.in,v 1.117 1998/01/17 22:33:43 tom Exp $
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.12.971222)
AC_REVISION($Revision: 1.115 $)
AC_REVISION($Revision: 1.117 $)
AC_INIT(ncurses/lib_initscr.c)
AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
@ -580,9 +580,9 @@ unistd.h \
values.h \
)
# check for HPUX's ANSI compiler
case $cf_cv_system_name in
hpux*)
# check for HPUX's ANSI compiler
if test -z "$GCC"; then
AC_MSG_CHECKING([for HP/UX ANSI compiler])
cf_save_CFLAGS="$CFLAGS"
@ -596,6 +596,9 @@ hpux*)
fi
fi
;;
os2*)
CFLAGS="$CFLAGS -Zmt -D__ST_MT_ERRNO__"
;;
esac
# check for ISC (this may also define _POSIX_SOURCE)
@ -628,6 +631,7 @@ getttynam \
link \
memccpy \
poll \
remove \
select \
setbuf \
setbuffer \

View File

@ -1,4 +1,4 @@
# $Id: dist.mk,v 1.73 1998/01/10 17:54:41 tom Exp $
# $Id: dist.mk,v 1.74 1998/01/17 13:59:58 tom Exp $
# Makefile for creating ncurses distributions.
#
# This only needs to be used directly as a makefile by developers, but
@ -10,7 +10,7 @@ SHELL = /bin/sh
# These define the major/minor/patch versions of ncurses.
NCURSES_MAJOR = 4
NCURSES_MINOR = 1
NCURSES_PATCH = 980110
NCURSES_PATCH = 980117
# We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)

View File

@ -21,7 +21,7 @@
+-----------------------------------------------------------------------------*/
#include "form.priv.h"
MODULE_ID("$Id: frm_driver.c,v 1.28 1997/10/21 13:24:19 juergen Exp $")
MODULE_ID("$Id: frm_driver.c,v 1.30 1998/01/17 23:21:14 juergen Exp $")
/*----------------------------------------------------------------------------
This is the core module of the form library. It contains the majority
@ -164,10 +164,8 @@ static int FE_Delete_Previous(FORM *);
/* Macro to set the attributes for a fields window */
#define Set_Field_Window_Attributes(field,win) \
{\
wbkgdset((win),(chtype)((field)->pad | (field)->back)); \
wattrset((win),(field)->fore); \
}
( wbkgdset((win),(chtype)((field)->pad | (field)->back)), \
wattrset((win),(field)->fore) )
/* Logic to decide whether or not a field really appears on the form */
#define Field_Really_Appears(field) \
@ -820,18 +818,23 @@ static bool Check_Char(FIELDTYPE * typ, int ch, TypeArgument *argp)
static int Display_Or_Erase_Field(FIELD * field, bool bEraseFlag)
{
WINDOW *win;
WINDOW *fwin;
if (!field)
return E_SYSTEM_ERROR;
win = derwin(Get_Form_Window(field->form),
fwin = Get_Form_Window(field->form);
win = derwin(fwin,
field->rows,field->cols,field->frow,field->fcol);
if (!win)
return E_SYSTEM_ERROR;
else
{
Set_Field_Window_Attributes(field,win);
if (field->opts & O_VISIBLE)
Set_Field_Window_Attributes(field,win);
else
wattr_set(win,wattr_get(fwin));
werase(win);
}

View File

@ -33,7 +33,8 @@ suppressed,
.TP 5
O_ACTIVE
The field is visited during processing. If this option is off, the field will
not be reachable by navigation keys.
not be reachable by navigation keys. Please notice that an invisible field
appears to be inactive also.
.TP 5
O_PUBLIC
The field contents are displayed as data is entered.

View File

@ -1,11 +1,16 @@
.\" $Id: tic.1m,v 1.17 1997/12/06 22:14:41 tom Exp $
.\" $Id: tic.1m,v 1.18 1998/01/17 21:11:30 tom Exp $
.TH tic 1M ""
.ds n 5
.ds d @DATADIR@/terminfo
.SH NAME
\fBtic\fR - the \fIterminfo\fR entry-description compiler
.SH SYNOPSIS
\fBtic\fR [\fB-v\fR[\fIn\fR]] [\fB-w\fR[\fIn\fR]] [\fB-1hcpICNRrsTu\fR] [\fB-e\fR \fInames\fR] \fIfile\fR
\fBtic\fR
[\fB-v\fR[\fIn\fR]]
[\fB-w\fR[\fIn\fR]]
[\fB-1hcpICNRrsTu\fR]
[\fB-e\fR \fInames\fR]
[\fB-o\fR \fIdir\fR] \fIfile\fR
.br
.SH DESCRIPTION
The command \fBtic\fR translates a \fBterminfo\fR file from source

View File

@ -1,6 +1,6 @@
######## TERMINAL TYPE DESCRIPTIONS SOURCE FILE
#
# Version 10.1.18
# Version 10.1.19
# terminfo syntax
#
# Eric S. Raymond (current maintainer)
@ -1985,13 +1985,13 @@ xterm-xf86-v33|xterm terminal emulator (X Window System),
kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
use=xterm-xf86-v32,
# This beta version will probably be released in XFree86 4.0 (T.Dickey).
# This beta version will probably be released in XFree86 4.0 in 1998.
# Besides providing printer support, it exploits a new feature that allows
# xterm to use terminfo-based descriptions with the titeInhibit resource.
xterm-xf86-v39t|xterm terminal emulator (X Window System),
xterm-xf86-v40|xterm terminal emulator (X Window System),
mc5i,
mc0=\E[i, mc4=\E[4i, mc5=\E[5i, rmcup=\E[?1047l\E[?1048l,
smcup=\E[?1048h\E[?1047h,
rs1=\Ec, smcup=\E[?1048h\E[?1047h,
use=xterm-xf86-v33,
# This is one of the variants from XFree86 3.3 (T.Dickey)
@ -2000,7 +2000,8 @@ xterm-16color|xterm with 16 colors like aixterm,
setab@, setaf@,
setb=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
setf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
use=xterm-xf86-v33,
use=xterm-xf86-v40,
# This is another variant, for XFree86 4.0 xterm (T.Dickey)
# This is an 8-bit version of xterm, which emulates DEC vt220 with ANSI color.
# To use it, your decTerminalID resource must be set to 200 or above.
@ -2039,7 +2040,7 @@ xterm-8bit|xterm terminal emulator, 8-bit controls (X Window System),
mc5=\2335i, meml=\El, memu=\Em, op=\23339;49m, rc=\E8,
rev=\2337m, ri=\215, rmacs=^O, rmam=\233?7l,
rmcup=\2332J\233?47l\E8, rmir=\2334l, rmkx=\233?1l\E>,
rmso=\23327m, rmul=\23324m, rs1=^O,
rmso=\23327m, rmul=\23324m, rs1=\Ec,
rs2=\E7\E[62"p\E G\233r\233m\233?7h\233?1;3;4;6l\2334l\E8\E>,
sc=\E7, setab=\2334%p1%dm, setaf=\2333%p1%dm,
setb=\2334%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
@ -2125,6 +2126,7 @@ color_xterm|cx|cx100|color_xterm color terminal emulator for X,
smul=\E[4m,
# From: Thomas Dickey <dickey@clark.net> 04 Oct 1997
# Updated: Özgür Kesim <kesim@math.fu-berlin.de> 02 Nov 1997
# Notes:
# rxvt 2.21b uses
# smacs=\E(B\E)U^N, rmacs=\E(B\E)0^O,
@ -2172,13 +2174,9 @@ rxvt-basic|rxvt terminal base (X Window System),
smcup=\E7\E[?47h, smir=\E[4h, smkx=\E=, smso=\E[7m,
smul=\E[4m, tbc=\E[3g,
rxvt|rxvt terminal emulator (X Window System),
sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017,
use=rxvt-basic,
rxvt-color|color-rxvt|color rxvt terminal emulator (X Window System),
colors#8, pairs#64,
op=\E[39;49m, setab=\E[%p1%{40}%+%dm,
setaf=\E[%p1%{30}%+%dm, use=rxvt,
setaf=\E[%p1%{30}%+%dm, sgr0=\E[m\017, use=rxvt-basic,
# From: David J. MacKenzie <djm@va.pubnix.com> 20 Apr 1995
# Here's a termcap entry I've been using for xterm_color, which comes
@ -2429,23 +2427,23 @@ oldsun|Sun Microsystems Workstation console,
rmso=\E[m, sgr0=\E[m, smso=\E[7m,
# From: Alexander Lukyanov <lav@video.yars.free.net>, 14 Nov 1995
# <lines> capability later corrected by J.T. Conklin <jtc@cygnus.com>
# SGR 1, 4 aren't supported - removed bold/underline (T.Dickey 17 Jan 1998)
sun-il|Sun Microsystems console with working insert-line,
am, km, msgr,
cols#80, lines#34,
bel=^G, bold=\E[1m, clear=^L, cr=^M, cub1=^H, cud1=^J,
cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
el=\E[K, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
il1=\E[L, ind=^J, kb2=\E[218z, kbs=^H, kcub1=\E[D,
kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177,
kend=\E[220z, kf1=\E[224z, kf10=\E[233z, kf11=\E[234z,
kf12=\E[235z, kf2=\E[225z, kf3=\E[226z, kf4=\E[227z,
kf5=\E[228z, kf6=\E[229z, kf7=\E[230z, kf8=\E[231z,
kf9=\E[232z, khome=\E[214z, knp=\E[222z, kopt=\E[194z,
kpp=\E[216z, kres=\E[193z, kund=\E[195z, rev=\E[7m,
rmso=\E[m, rmul=\E[m, rs2=\E[s,
bel=^G, bold@, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, ht=^I,
ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J,
kb2=\E[218z, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
kcuu1=\E[A, kdch1=\177, kend=\E[220z, kf1=\E[224z,
kf10=\E[233z, kf11=\E[234z, kf12=\E[235z, kf2=\E[225z,
kf3=\E[226z, kf4=\E[227z, kf5=\E[228z, kf6=\E[229z,
kf7=\E[230z, kf8=\E[231z, kf9=\E[232z, khome=\E[214z,
knp=\E[222z, kopt=\E[194z, kpp=\E[216z, kres=\E[193z,
kund=\E[195z, rev=\E[7m, rmso=\E[m, rmul@, rs2=\E[s,
sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
sgr0=\E[m, smso=\E[7m, smul=\E[4m, u8=\E[1t, u9=\E[11t,
sgr0=\E[m, smso=\E[7m, smul@, u8=\E[1t, u9=\E[11t,
# On a SparcStation 5, <il1>/<il> flake out on the last line.
# Unfortunately, without them the terminal has no way to scroll.
sun-ss5|Sun SparcStation 5 console,
@ -14681,6 +14679,12 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * revised entry for att7300
# 10.1.18 (Sat Jan 3 17:58:49 EST 1998)
# * use \0 rather than \200.
# * rename rxvt-color to rxvt to match rxvt 2.4.5 distribution.
# 10.1.19 (Sat Jan 17 14:24:57 EST 1998)
# * change xterm (xterm-xf86-v40), xterm-8bit rs1 to use hard reset.
# * rename xterm-xf86-v39t to xterm-xf86-v40
# * remove bold/underline from sun console entries since they're not
# implemented.
#
# The following sets edit modes for GNU EMACS
# Local Variables:

View File

@ -2,7 +2,7 @@
#
# MKlib_gen.sh -- generate sources from curses.h macro definitions
#
# ($Id: MKlib_gen.sh,v 1.10 1997/07/26 22:12:20 tom Exp $)
# ($Id: MKlib_gen.sh,v 1.11 1998/01/17 14:16:52 Juan.Jose.Garcia.Ripoll Exp $)
#
# The XSI Curses standard requires all curses entry points to exist as
# functions, even though many definitions would normally be shadowed
@ -31,8 +31,9 @@ AWK="$2"
ED1=sed1$$.sed
ED2=sed2$$.sed
ED3=sed3$$.sed
AW1=awk1$$.awk
TMP=gen$$.c
trap "rm -f $ED1 $ED2 $ED3 $TMP" 0 1 2 5 15
trap "rm -f $ED1 $ED2 $ED3 $AW1 $TMP" 0 1 2 5 15
(cat <<EOF
#include <ncurses_cfg.h>
@ -94,8 +95,7 @@ cat >$ED3 <<EOF3
:done
EOF3
sed -n -f $ED1 | sed -f $ED2 \
| $AWK '
cat >$AW1 <<\EOF1
BEGIN {
skip=0;
}
@ -219,7 +219,10 @@ BEGIN {
print "%%returnVoid;"
print "}";
}
' ) \
EOF1
sed -n -f $ED1 | sed -f $ED2 \
| $AWK -f $AW1 ) \
| sed \
-e '/^\([a-z_][a-z_]*\) /s//\1 gen_/' >$TMP
$preprocessor $TMP 2>/dev/null \

View File

@ -56,7 +56,7 @@
#include <term.h>
MODULE_ID("$Id: lib_doupdate.c,v 1.95 1997/12/27 23:43:53 tom Exp $")
MODULE_ID("$Id: lib_doupdate.c,v 1.96 1998/01/11 23:49:03 Alexander.V.Lukyanov Exp $")
/*
* This define controls the line-breakout optimization. Every once in a
@ -682,8 +682,8 @@ struct tms before, after;
nonempty = min(screen_lines, newscr->_maxy+1);
if (!SP->_scrolling) {
#if USE_HASHMAP /* still 5% slower 960928 */
if (SP->_scrolling) {
#if USE_HASHMAP
#if defined(TRACE) || defined(NCURSES_TEST)
if (_nc_optimize_enable & OPTIMIZE_HASHMAP)
#endif /*TRACE */

View File

@ -29,7 +29,7 @@
#include <curses.priv.h>
MODULE_ID("$Id: lib_tracedmp.c,v 1.9 1997/01/15 00:39:27 tom Exp $")
MODULE_ID("$Id: lib_tracedmp.c,v 1.10 1998/01/17 14:53:58 tom Exp $")
void _tracedump(const char *name, WINDOW *win)
{
@ -67,7 +67,7 @@ void _tracedump(const char *name, WINDOW *win)
}
ep[j] = '\'';
ep[j+1] = '\0';
_tracef(buf);
_tracef("%s", buf);
/* dump A_COLOR part, will screw up if there are more than 96 */
havecolors = FALSE;
@ -85,7 +85,7 @@ void _tracedump(const char *name, WINDOW *win)
ep[j] = ((win->_line[n].text[j] >> 8) & 0xff) + ' ';
ep[j] = '\'';
ep[j+1] = '\0';
_tracef(buf);
_tracef("%s", buf);
}
for (i = 0; i < 4; i++)
@ -108,7 +108,7 @@ void _tracedump(const char *name, WINDOW *win)
ep[j] = hex[(win->_line[n].text[j] & mask) >> ((i + 4) * 4)];
ep[j] = '\'';
ep[j+1] = '\0';
_tracef(buf);
_tracef("%s", buf);
}
}
}

View File

@ -37,7 +37,7 @@
#define S_ISDIR(mode) ((mode & S_IFMT) == S_IFDIR)
#endif
MODULE_ID("$Id: write_entry.c,v 1.20 1997/12/28 00:21:03 tom Exp $")
MODULE_ID("$Id: write_entry.c,v 1.21 1998/01/11 12:01:01 Philippe.De.Muyter Exp $")
static int total_written;
@ -286,7 +286,11 @@ static time_t start_time; /* time at start of writes */
strcpy(symlinkname, "../");
strcat(symlinkname, filename);
#endif /* USE_SYMLINKS */
#if HAVE_REMOVE
remove(linkname);
#else
unlink(linkname);
#endif
#if USE_SYMLINKS
if (symlink(symlinkname, linkname) < 0)
#else

View File

@ -1,4 +1,4 @@
# $Id: Makefile.in,v 1.24 1997/12/20 14:46:11 tom Exp $
# $Id: Makefile.in,v 1.25 1998/01/11 23:49:03 Alexander.V.Lukyanov Exp $
################################################################################
# Copyright 1996,1997 by Thomas E. Dickey <dickey@clark.net> #
# All Rights Reserved. #
@ -35,7 +35,7 @@ SHELL = /bin/sh
THIS = Makefile
MODEL = @DFT_LWR_MODEL@
INSTALL_PREFIX = @INSTALL_PREFIX
INSTALL_PREFIX = @INSTALL_PREFIX@
srcdir = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@

View File

@ -30,7 +30,7 @@
#include <dump_entry.h>
#include <term_entry.h>
MODULE_ID("$Id: tic.c,v 1.26 1997/11/30 01:40:54 tom Exp $")
MODULE_ID("$Id: tic.c,v 1.27 1998/01/17 21:09:28 tom Exp $")
const char *_nc_progname = "tic";
@ -318,7 +318,7 @@ bool check_only = FALSE;
* design decision to allow the numeric values for -w, -v options to
* be optional.
*/
while ((this_opt = getopt(argc, argv, "0123456789CILNR:TVce:orsvw")) != EOF) {
while ((this_opt = getopt(argc, argv, "0123456789CILNR:TVce:o:rsvw")) != EOF) {
if (isdigit(this_opt)) {
switch (last_opt) {
case 'v':

View File

@ -92,7 +92,7 @@
/******************************************************************************/
/*
* $Id: xmas.c,v 1.11 1997/10/18 20:08:39 tom Exp $
* $Id: xmas.c,v 1.12 1998/01/18 01:13:47 tom Exp $
*/
#include <test.priv.h>
@ -135,9 +135,16 @@ static void
set_color(WINDOW *win, chtype color)
{
if (has_colors()) {
init_pair(1, color, my_bg);
static bool *pairs;
int n = (color + 1);
if (pairs == 0)
pairs = (bool *)calloc(COLORS+1, sizeof(bool));
if (!pairs[n]) {
init_pair(n, color, my_bg);
pairs[n] = TRUE;
}
wattroff(win, A_COLOR);
wattron(win, COLOR_PAIR(1));
wattron(win, COLOR_PAIR(n));
}
}