sync with head.
for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.
this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")

Rename the old __waddbytes function to _cursesi_waddbytes and add a
parameter that controls whether or not certain characters in the
string are interpreted or not (things like tab being expanded).
Make __waddbytes a wrapper for _cursesi_waddbytes that passes all
parameters and sets the flag for character interpretation for backward
compatibility.
Fix an incipient bug in _cursesi_waddbytes where garbage would have
been written to the terminal if the terminal TABSIZE was set > 8 and
character interpretation is on.
Convert all internal __waddbytes calls to use _cursesi_waddbytes, fix
the function prototypes and add a new flag that will be used later.
Fix the addchstr family functions so that they call _cursesi_waddbytes
with character interpretation off as per SUSV2.

misc fixes and improvements:
-call setlocale(LC_CTYPE, "") before nl_langinfo(CODESET) if the
locale settings is (still) at "C" - otherwise the CODESET doesn't work
-fix the type of the WACS_* symbols -- this needs to be cchar_t*
-add safeguards where the return value of wcwidth() is used for
loop counters or indexing -- it can be -1
-use more common code in the widechar support case -- in particular
let the wchar functions do the work even if chtype ones were called
-implement wcursyncup/wsyncup/wsyncdown
-somewhat experimental: allow ACS_* variables to refer to WACS_*
table entries -- this way, programs using the old chtype using API
can use UTF8 line drawing on terminals which support UTF8 but not
ACS switching
-fix some logics bugs in UTF8 recognition and ALTCHARSET handling

Prepare curses for the possibility of changing from termcap to terminfo.
term.h #defines lines, pad_char and no_color_video macros which conflict
with existing curses code. We change lines to alines and nlines depending
on use, pad_char to padchar and no_color_video becomes no_color_attributes
but with a strong alias from no_color_video.

Keep pushed-back characters locally. Fixes problems where KEY_* symbols
are pushed back. Should fix the arrow keys part of PR pkg/37173.
While we are here, make getch() and get_wch() check for resize immediately,
instead of reading a key, checking for resize and then having to push-back
the just read key.

* commonalise adding a wide character so it can be reused
* make __waddbytes add wide characters if libcurses is built in wide
character mode.
* make waddch add wide characters if libcurses is built in wide character
mode.

Background characters and attributes don't need to be kept per character
cell, as they are merged when characters are added. Remove the per cell
storage and clarify the manual page. Pointed out by ruibiao@.

Revert most of rev 1.27 of addbytes.c and associated changes.
Posix requires that adding '\n' does clrtoeol() and 'x = 0'.
(Making "\r\n" erase the text that has just been displayed.)
Remove __NONL test from addbytes, __NONL is a property of the output device.

Remove __winlistp, add *screen to WINDOW and initialise in newwin().
Make delwin() remove window from list of windows on its screen.
Free win->lspace and win->lines for subwins (they only share text space).
Free things in the correct (and same) order if malloc() fails in __makenew().
Adjust delscreen() for delwin() removing itself from winlist.
Fixes potential massive corruptions if delwin() called on a main window.
NB: not responsible for the sysinst core dumps :-(

Apply patch (requested by jdc in ticket #1244):
Keep the cr->nl translation state in a separate variable, so that we can
do the translation ourselves (if the tty didn't do it for us).
Add debugging to track functions that change tty state.

Keep the cr->nl translation state in a separate variable, so that we can
do the translation ourselves (if the tty didn't do it for us).
Add debugging to track functions that change tty state.
Fixes PR 20834 by Stephen Borrill.

Rename variables refering to termcap capabilities from NN to __tc_nn. Case
adjusted to match termcap capability. A few other variable names renamed too
(ones related to or derived from termcap variables).

* Made erasechar and killchar into functions
* Modified __init_getch to use termcap handle that has been allocated
(_cursesi_genbuf) instead of refetching it.
* Make wgetstr support erase - this is not a full blown SUSv2 version
but it is a start.

* Added rcs id line to files missing it.
* Added code to __restartwin to restore meta and cursor visibility states
* Added code to __stopwin to disable meta.
* Added the *line group of functions for drawing character lines.

Added functions to replace what were previously macros in curses.h
(this is a requirement of SUSv2) - the old macro behaviour can be
restored by defining _CURSES_USE_MACROS.
Changed function prototypes to use ANSI style.
All externally visible functions now have ANSI style declarations.