+ Some terminals in the 1980s could support a variety of video at-
+ tributes, although the BSD curses library could do nothing with those.
+ System V (1983) provided an improved curses library. It defined the <B>A_</B>
+ symbols for use by applications to manipulate the other attributes.
+ There are few useful references for the chronology.
+
+ Goodheart's book <I>UNIX</I> <I>Curses</I> <I>Explained</I> (1991) describes SVr3 (1987),
+ commenting on several functions:
+
+ <B>o</B> the <B>attron</B>, <B>attroff</B>, <B>attrset</B> functions (and most of the functions
+ found in SVr4 but not in BSD curses) were introduced by System V,
+
+ <B>o</B> the alternate character set feature with <B>A_ALTCHARSET</B> was added in
+ SVr2 and improved in SVr3 (by adding <B>acs_map[]</B>),
+
+ <B>o</B> <B>start_color</B> and related color-functions were introduced by System
+ V.3.2,
+
+ <B>o</B> pads, soft-keys were added in SVr3, and
+
+ Goodheart did not mention the background character or the <B>cchar_t</B> type.
+ Those are respectively SVr4 and X/Open features. He did mention the <B>A_</B>
+ constants, but did not indicate their values. Those were not the same
+ in different systems, even for those marked as System V.
+
+ Different Unix systems used different sizes for the bit-fields in
+ <B>chtype</B> for <I>characters</I> and <I>colors</I>, and took into account the different
+ integer sizes (32-bit versus 64-bit).
+
+ This table showing the number of bits for <B>A_COLOR</B> and <B>A_CHARTEXT</B> was
+ gleaned from the curses header files for various operating systems and
+ architectures. The inferred architecture and notes reflect the format
+ and size of the defined constants as well as clues such as the alter-
+ nate character set implementation. A 32-bit library can be used on a
+ 64-bit system, but not necessarily the reverse.
+
+ <I>Year</I> <I>System</I> <I>Arch</I> <I>Color</I> <I>Char</I> <I>Notes</I>
+ ----------------------------------------------------------------
+ 1992 Solaris 5.2 32 6 17 SVr4 curses
+ 1992 HPUX 9 32 no 8 SVr2 curses
+ 1992 AIX 3.2 32 no 23 SVr2 curses
+ 1994 OSF/1 r3 32 no 23 SVr2 curses
+ 1995 HP-UX 10.00 32 6 16 SVr3 "curses_colr"
+ 1995 HP-UX 10.00 32 6 8 SVr4, X/Open curses
+ 1995 Solaris 5.4 32/64 7 16 X/Open curses
+ 1996 AIX 4.2 32 7 16 X/Open curses
+ 1996 OSF/1 r4 32 6 16 X/Open curses
+
+ 1997 HP-UX 11.00 32 6 8 X/Open curses
+ 2000 U/Win 32/64 7/31 16 uses <B>chtype</B>
+
+ Notes:
+
+ Regarding HP-UX,
+
+ <B>o</B> HP-UX 10.20 (1996) added support for 64-bit PA-RISC processors
+ in 1996.
+
+ <B>o</B> HP-UX 10.30 (1997) marked "curses_colr" obsolete. That version
+ of curses was dropped with HP-UX 11.30 in 2006.
+
+ Regarding OSF/1 (and Tru64),
+
+ <B>o</B> These used 64-bit hardware. Like ncurses, the OSF/1 curses in-
+ terface is not customized for 32-bit and 64-bit versions.
+
+ <B>o</B> Unlike other systems which evolved from AT&T code, OSF/1 provid-
+ ed a new implementation for X/Open curses.
+
+ Regarding Solaris,
+
+ <B>o</B> The initial release of Solaris was in 1992.
+
+ <B>o</B> The <I>xpg4</I> (X/Open) curses was developed by MKS from 1990 to 1995.
+ Sun's copyright began in 1996.
+
+ <B>o</B> Sun updated the X/Open curses interface after 64-bit support was
+ introduced in 1997, but did not modify the SVr4 curses inter-
+ face.
+
+ Regarding U/Win,
+
+ <B>o</B> Development of the curses library began in 1991, stopped in
+ 2000.
+
+ <B>o</B> Color support was added in 1998.
+
+ <B>o</B> The library uses only <B>chtype</B> (no <B>cchar_t</B>).
+
+ Once X/Open curses was adopted in the mid-1990s, the constraint of a
+ 32-bit interface with many colors and wide-characters for <B>chtype</B> became
+ a moot point. The <B>cchar_t</B> structure (whose size and members are not
+ specified in X/Open Curses) could be extended as needed.
+
+ Other interfaces are rarely used now:
+
+ <B>o</B> BSD curses was improved slightly in 1993/1994 using Keith Bostic's
+ modification to make the library 8-bit clean for <B>nvi</B>. He moved
+ <I>standout</I> attribute to a structure member.
+
+ The resulting 4.4BSD curses was replaced by ncurses over the next
+ ten years.
+
+ <B>o</B> U/Win is rarely used now.
+
+
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+ This implementation provides the <B>A_ITALIC</B> attribute for terminals which
+ have the <B>enter_italics_mode</B> (<B>sitm</B>) and <B>exit_italics_mode</B> (<B>ritm</B>) capa-
+ bilities. Italics are not mentioned in X/Open Curses. Unlike the oth-
+ er video attributes, <B>A_ITALIC</B> is unrelated to the <B>set_attributes</B> capa-
+ bilities. This implementation makes the assumption that <B>exit_attri-</B>
+ <B>bute_mode</B> may also reset italics.
+
+ Each of the functions added by XSI Curses has a parameter <I>opts</I>, which
+ X/Open Curses still (after more than twenty years) documents as re-
+ served for future use, saying that it should be <B>NULL</B>. This implementa-
+ tion uses that parameter in ABI 6 for the functions which have a color-
+ pair parameter to support <I>extended</I> <I>color</I> <I>pairs</I>:
+
+ <B>o</B> For functions which modify the color, e.g., <B>wattr_set</B>, if <I>opts</I> is
+ set it is treated as a pointer to <B>int</B>, and used to set the color
+ pair instead of the <B>short</B> <I>pair</I> parameter.
+
+ <B>o</B> For functions which retrieve the color, e.g., <B>wattr_get</B>, if <I>opts</I> is
+ set it is treated as a pointer to <B>int</B>, and used to retrieve the
+ color pair as an <B>int</B> value, in addition retrieving it via the stan-
+ dard pointer to <B>short</B> parameter.
+
+ The remaining functions which have <I>opts</I>, but do not manipulate color,
+ e.g., <B>wattr_on</B> and <B>wattr_off</B> are not used by this implementation except
+ to check that they are <B>NULL</B>.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are supported in the XSI Curses standard, Issue 4. The
+ standard defined the dedicated type for highlights, <B>attr_t</B>, which was
+ not defined in SVr4 curses. The functions taking <B>attr_t</B> arguments were
+ not supported under SVr4.
+
+ Very old versions of this library did not force an update of the screen
+ when changing the attributes. Use <B>touchwin</B> to force the screen to
+ match the updated attributes.
+
+ The XSI Curses standard states that whether the traditional functions
+ <B>attron</B>/<B>attroff</B>/<B>attrset</B> can manipulate attributes other than <B>A_BLINK</B>,
+ <B>A_BOLD</B>, <B>A_DIM</B>, <B>A_REVERSE</B>, <B>A_STANDOUT</B>, or <B>A_UNDERLINE</B> is "unspecified".
+ Under this implementation as well as SVr4 curses, these functions cor-
+ rectly manipulate all other highlights (specifically, <B>A_ALTCHARSET</B>,
+ <B>A_PROTECT</B>, and <B>A_INVIS</B>).
+
+ XSI Curses added these entry points:
+
+ <B>attr_get</B>, <B>attr_on</B>, <B>attr_off</B>, <B>attr_set</B>, <B>wattr_on</B>, <B>wattr_off</B>, <B>wat-</B>
+ <B>tr_get</B>, <B>wattr_set</B>
+
+ The new functions are intended to work with a new series of highlight
+ macros prefixed with <B>WA_</B>. The older macros have direct counterparts in
+ the newer set of names:
+
+ <I>Name</I> <I>Description</I>
+ ------------------------------------------------------------
+ <B>WA_NORMAL</B> Normal display (no highlight)
+ <B>WA_STANDOUT</B> Best highlighting mode of the terminal.
+ <B>WA_UNDERLINE</B> Underlining
+ <B>WA_REVERSE</B> Reverse video
+ <B>WA_BLINK</B> Blinking
+ <B>WA_DIM</B> Half bright
+ <B>WA_BOLD</B> Extra bright or bold
+ <B>WA_ALTCHARSET</B> Alternate character set
+
+ XSI curses does not assign values to these symbols, nor does it state
+ whether or not they are related to the similarly-named A_NORMAL, etc.:
+
+ <B>o</B> The XSI curses standard specifies that each pair of corresponding
+ <B>A_</B> and <B>WA_</B>-using functions operates on the same current-highlight
+ information.
+
+ <B>o</B> However, in some implementations, those symbols have unrelated val-
+ ues.
+
+ For example, the Solaris <I>xpg4</I> (X/Open) curses declares <B>attr_t</B> to be
+ an unsigned short integer (16-bits), while <B>chtype</B> is a unsigned in-
+ teger (32-bits). The <B>WA_</B> symbols in this case are different from
+ the <B>A_</B> symbols because they are used for a smaller datatype which
+ does not represent <B>A_CHARTEXT</B> or <B>A_COLOR</B>.
+
+ In this implementation (as in many others), the values happen to be
+ the same because it simplifies copying information between <B>chtype</B>
+ and <B>cchar_t</B> variables.
+
+ The XSI standard extended conformance level adds new highlights <B>A_HORI-</B>
+ <B>ZONTAL</B>, <B>A_LEFT</B>, <B>A_LOW</B>, <B>A_RIGHT</B>, <B>A_TOP</B>, <B>A_VERTICAL</B> (and corresponding
+ <B>WA_</B> macros for each). As of August 2013, no known terminal provides
+ these highlights (i.e., via the <B>sgr1</B> capability).
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All routines return the integer <B>OK</B> on success, or <B>ERR</B> on failure.