This is a log of changes that ncurses has gone through since I
started working with Pavel Curtis' original work, pcurses, in 1992:

### ncurses-1.9.9e -> 1.9.9?

* use autoconf 2.9
* fixes for NeXT, ISC and HPUX auto-configure
* fix for AIX 3.2.5 (must define _POSIX_SOURCE to get termios struct
  definitions via <termios.h>, modified macros in lib_raw.c to avoid
  K&R-style substitution)
* autogenerate development header-dependencies (config.h, *.priv.h)
* corrected single-column formatting of "use=" (e.g., in tic)
* modify tic to read full terminfo-names
* corrected divide-by-zero that caused hang (or worse) when redirecting output
* modify tic to generate directories only as-needed (and corrected instance
  of use of data from function that had already returned).
* split lib_kernel.c, lib_setup.c and names.c in order to reduce overhead for
  programs that use only termcap features.
* change ncurses 'a' test to run in raw mode.
* make TIOCGWINSZ configure test less stringent, in case user configures via
  terminal that cannot get screen size.
* implemented logic to support terminals with background color erase (e.g.,
  rxvt and the newer color xterm).
* improved screen update logic (off-by-one logic error; use clr_eos if possible)

### ncurses-1.9.8a -> 1.9.9e

* fixed broken wsyncup()/wysncdown(), as a result wnoutrefresh() now has
  copy-changed-lines behavior.
* added and documented wresize() function.
* more fixes to LOWER-RIGHT corner handling.
* changed the line-breakout optimization code to allow some lines to be
  emitted before the first check.
* added option for tic to use symbolic instead of hard links (for AFS)
* fix to restore auto-wrap mode.
* trace level can be controlled by environment variable.
* better handling of NULs in terminal descriptions.
* improved compatibility with observed SVR4 behavior.
* the refresh behavior of over-lapping windows is now more efficient and
  behaves like SVR4.
* use autoconf 2.7, which results in a working setup for SCO 5.0.
* support for ESCDELAY.
* small fixes for menu/form code.
* the test directory has its own configure.
* fixes to pads when optimizing scrolling.
* fixed several off-by-one bugs.
* fixes for termcap->terminfo translation; less restrictions more correct
  behavior.
  
### ncurses-1.9.7 -> 1.9.8a

* teach infocmp -i to recognize ECMA highlight sequences
* infocmp now dumps all SVr4 termcaps (not just the SVr4 ones) on -C
* support infocmp -RBSD.
* satisfy XSI Curses requirement that every macro be available as a function.
* This represents the last big change to the public interface of ncurses. The
  ABI_VERSION has now been set at 3.0 and should stay there barring any great
  catastrophies or acts of God.
* The C++ has been cleaned up in reaction to the changes to satisfy XSI's
  requirements.
* libncurses now gets linked to libcurses to help seamless emulation 
  (replacement) of a vendor's curses. --disable-overwrite turns this behavior
  off.

### ncurses-1.9.6 -> 1.9.7

* corrected return values of setupterm()
* Fixed some bugs in tput (it does padding now)
* fixed a bug in tic that made it do the wrong thing on entries with more than
  one `use' capability.
* corrected the screen-size calculation at startup time to alter the
  numeric capabilities as per SVr4, not just LINES and COLS.
* toe(1) introduced; does what infocmp -T used to.
* tic(1) can now translate AIX box1 and font[0123] capabilities.
* tic uses much less core, the dotic.sh kluge can go away now.
* fix read_entry() and write_entry() to pass through cancelled capabilities OK.
* Add $HOME/.terminfo as source/target directory for terminfo entries.
* termcap compilation now automatically dumps an entry to $HOME/.terminfo.
* added -h option to toe(1).
* added -R option to tic(1) and infocmp(1).
* added fallback-entry-list feature.
* added -i option to infocmp(1).
* do a better job at detecting if we're on SCO.

### ncurses-1.9.5 -> 1.9.6

* handling of TERMCAP environment variables now works correctly.
* various changes to shorten termcap translations to less that 1024 chars.
* tset(1) added
* mouse support for xterm.
* most data tables are now const and accordingly live in shareable text space.
* Obey the XPG4/SVr4 practice that echo() is initally off.
* tic is much better at translating XENIX and AIX termcap entries now.
* tic can interpret ko capabilities now.
* integrated Juergen Pfeifer's forms library.
* taught write_entry() how not to write more than it needs to; this change
  reduces the size of the terminfo tree by a full 26%!
* infocmp -T option added.
* better warnings about historical tic quirks from tic.

### ncurses 1.9.4 -> 1.9.5

* menus library is now included with documentation.
* lib_mvcur has been carefully profiled and tuned.
* Fixed a ^Z-handling bug that was tanking lynx(1).
* HJ Lu's patches for ELF shared libraries under Linux
* terminfo.src 9.8.2
* tweaks for compiling in seperate directories.
* Thomas Dickey's patches to support NeXT's brain-dead linker
* Eric Raymond's patches to fix problems with long termcap entries.
* more support for shared libraries under SunOS and IRIX.

### ncurses 1.9.3 -> 1.9.4

* fixed an undefined-order-of-evaluation bug in lib_acs.c
* systematically gave non-API public functions and data an _nc_ prefix.
* integrated Juergen Pfeifer's menu code into the distribution.
* totally rewrote the knight test game's interface

### ncurses 1.9.2c -> 1.9.3

* fixed the TERMCAP_FILE Support.
* fixed off-by-one errors in scrolling code
* added tracemunch to the test tools
* took steps to cut the running time of make install.data

### ncurses 1.9.2c -> 1.9.2d

* revised 'configure' script to produce libraries for normal, debug,
  profile and shared object models. 

### ncurses 1.9.1 -> 1.9.2

* use 'autoconf' to implement 'configure' script.
* panels support added
* tic now checks for excessively long termcap entries when doing translation
* first cut at eliminating namespace pollution.

### ncurses 1.8.9 -> 1.9

* cleanup gcc warnings for the following: use size_t where 'int' is not
  appropriate, fixed some shadowed variables, change attr_t to compatible with
  chtype, use attr_t in some places where it was confused with 'int'.
* use chtype/attr_t casts as appropriate to ensure portability of masking
  operations.
* added-back waddchnstr() to lib_addstr.c (it had been deleted).
* supplied missing prototypes in curses.h
* include <termcap.h> in lib_termcap.c to ensure that the prototypes
  are consistent (they weren't).
* corrected prototype of tputs in <termcap.h>
* rewrote varargs parsing in lib_tparm.c (to avoid referencing memory
  that may be out of bounds on the stack) -- Purify found this.
* ensure that TRACE is defined in lib_trace.c (to solve prototype
  warnings from gcc).
* corrected scrolling-region size in 'mvcur_wrap()'
* more spelling fixes
* use 'calloc()' to allocate WINDOW struct in lib_newwin.c (Purify).
* set default value for SP->_ofp in lib_set_term.c (otherwise SunOS dumps
  core in init_acs()).
* include <errno.h> in write_entry.c (most "braindead" includes declare errno
  in that file).

### ncurses 1.8.8 -> 1.8.9

* compile (mostly) clean with gcc 2.5.8 -Wall -Wstrict-prototypes
  -Wmissing-prototypes -Wconversion and using __attribute__ to flush out
  non-portable use of "%x" for pointers, or for chtype data (which is declared
  as a long).
* modified doupdate to ensure that typahead was turned on before attempting
  select-call (otherwise, some implementations hang).
* added trace mask TRACE_FIFO, use this in lib_getch.c to allow finer
  resolution of traces.
* improved bounds checking on several critical functions.
* the data directory has been replaced by the new master terminfo file.
* -F file-comparison option added to infocmp.
* compatibility with XSI Curses is now documented in the man bages.
* wsyncup/wsyncdown functions are reliable now; subwindow code in general
  is much less flaky.
* capabilities ~msgr, tilde_glitch, insert_padding, generic_type, no_pad_char,
  memory_above, memory_below, and hard_copy are now used properly.
* cursor-movement optimization has been completely rewritten.
* vertical-movement optimization now uses hardware scrolling, il, dl.

### ncurses 1.8.7 -> 1.8.8
* untic no longer exists, infocmp replaces it.
* tic can understand termcap now, especially if it is called captoinfo.
* The Linux Standard Console terminfo entry is called linux insead of console.
  It also uses the kernel's new method of changing charsets.
* initscr() will EXIT upon error (as the docs say) This wil mostly happen if
  you try to run on an undefined terminal.
* I can get things running on AIX but tic can't compile terminfo. I have to
  compile entries on another machine. Volunteers to hunt this bug are welcome.
* wbkgd() and wbkgdset() can be used to set a windows background to color.
  wclear()/werase() DO NOT use the current attribute to clear the screen.
  This is the way SVR4 curses works. PDCurses 2.1 is broken in this respect,
  though PDCurses 2.2 has been fixed.
* cleaned up the test/ directory.    
* test/worm will segfault after quite a while.
* many spelling corrections courtesy of Thomas E. Dickey 

### ncurses 1.8.6 -> 1.8.7
* cleaned up programs in test/ directory.
* fixed wbkgdset() macro.
* modified getstr() to stop it from advancing cursor in noecho mode.
* modified linux terminfo entry to work with the latest kernel to get
  the correct alternate character set.
* also added a linux-mono entry for those running on monochrome screens.
* changed initscr() so that it behaves like the man page says it does.
  this fixes the problem with programs in test/ crashing with SIGSEV if
  a terminal is undefined.
* modified addch() to avoid using any term.h #define's
* removed duplicate tgoto() in lib_tparm.c
* modified dump_entry.c so that infocmp deals correctly with ',' in acsc
* modified delwin() to correctly handle deleting subwindows.
* fixed Makefile.dist to stop installing an empty curses.h
* fixed a couple of out-of-date notes in man pages.

### ncurses 1.8.5 -> 1.8.6
* Implemented wbkgd(), bkgd(), bkgdset(), and wbkgdset().
* The handling of attributes has been improved and now does not turn off color
  if other attributes are turned off.
* scrolling code is improved. Scrolling in subwindows is still broken.
* Fixes to several bugs that manifest them on platforms other than Linux. 
* The default to meta now depends on the status of the terminal when ncurses
  is started.
* The interface to the tracing facility has changed.  Instead of the pair of
  functions traceon() and traceoff(), there is just one function trace() which
  takes a trace mask argument.  The trace masks, defined in curses.h, are
  as follows:

	#define TRACE_DISABLE	0x00	/* turn off tracing */
	#define TRACE_ORDINARY	0x01	/* ordinary trace mode */
	#define TRACE_CHARPUT	0x02	/* also trace all character outputs */
	#define TRACE_MAXIMUM	0x0f	/* maximum trace level */

  More trace masks may be added, or these may be changed, in future releases.
* The pad code has been improved and the pad test code in test/ncurses.c has 
  been improved.
* The prototype ansi entry has been changed to work with a wider variety
  of emulators.
* Fix to the prototype ansi entry that enables it to work with PC emulators
  that treat trailing ";m" in a highlight sequence as ";0m"; this doesn't
  break operation with any emulators.
* There are now working infocmp, captoinfo, tput, and tclear utilities.
* tic can now compile entries in termcap syntax.
* Core-dump bug in pnoutrefresh fixed.
* We now recognize and compile all the nonstandard capabilities in Ross
  Ridge's mytinfo package (rendering it obsolete).
* General cleanup and documentation improvements.
* Fixes and additions to the installation-documentation files.
* Take cursor to normal mode on endwin.

### ncurses 1.8.4 -> 1.8.5
* serious bugs in updating screen which caused erratic non-display,
  fixed.
* fixed initialization for getch() related variable which cause
  unpredictable results.
* fixed another doupdate bug which only appeared if you have
  parm_char.
* implemented redrawln() and redrawwin().
* implemented winsnstr() and related functions.
* cleaned up insertln() and deleteln() and implemented (w)insdeln().
* changed Makefile.dist so that installation of man pages will
  take note of the terminfo directory.
* fixed Configure (removed the mysterious 'X').
* Eric S. Raymond fixed the script.* files so that they work with
  stock awk.

#### ncurses 1.8.3 -> 1.8.4 #### ####
* fixed bug in refreshing the screen after return from shell_mode.
  There are still problems but they don't manifest themselves on
  my machine (Linux 0.99.14f).
* added wgetnstr() and modified things accordingly.
* fixed the script.src script.test to work with awk not just gawk.
* Configure can now take an argument of the target system.
* added test/ncurses.c which replaces several other programs and
  performs more testing.
[Thanks to Eric S Raymond for the last 4]
* more fixes to lib_overlay.c and added test/over.c to illustrate
  how it works.
* fixed ungetch() to take int instead of ch.
* fixes to cure wgetch() if flushinp() is called.

One note I forgot to mention in 1.8.3 is that tracing is off by
default starting in the version. If you want tracing output, put
traceon(); in your code and link with -ldcurses.

#### ncurses 1.8.2 -> ncurses 1.8.3 #### ####
MAJOR CHANGES:
1) The order of capabilities has been changed in order to achieve
binary compatibility with SVR4 terminfo database. This has the
unfortunate effect of breaking application currently linked with
ncurses. To ensure correct behavior, recompile all such programs.
Most programs using color or newer capabilities will break, others
will probably continue to work ok.

2) Pavel Curtis has renounced his copyright to the public domain. 
This means that his original sources (posted to comp.sources.unix,
volume 1) are now in the public domain.  The current sources are
NOT in the public domain, they are copyrighted by me.  I'm
entertaining ideas on what the new terms ncurses is released under.

3) Eric S. Raymond has supplied a complete set of man pages for
ncurses in ?roff format. They will eventually replace most of the 
current docs. Both sets are included in this release.

Other changes and notes from 1.8.2 include:
* SIGSEGV during scrolling no longer occurs.
* Other problems with scrolling and use of idl have been corrected.
* lib_getch.c has been re-written and should perform flawlessly.
  please use test/getch.c and any other programs to test this.
* ripoffline() is implemented (Thanks to Eric) and slk_ functions
  changed accordingly.
* I've added support for terminals that scroll if you write in the
  bottom-right corner.
* fixed more bugs in pads code. If anybody has a program that uses
  pads I'd love a copy.
* correct handling for terminal with back_color_erase capability
  (such as Linux console, and most PC terminals)
* ^Z handling apparently didn't work (I should never trust code
  sent me to me without extensive testing). It now seems to be
  fixed. Let me know if you have problems.
* I've added support for Apollo and NeXT, but it may still be
  incomplete, especially when dealing with the lack of POSIX
  features.
* scrolling should be more efficient on terminals with idl
  capabilities. Please see src/lib_scroll.c for more notes.
* The line drawing routines were offset by 1 at both ends. This
  is now fixed.
* added a few missing prototypes and macros (e.g. setterm())
* fixed code in src/lib_overlay.c which used to crash.
* added a few more programs in test/ The ones from the PDCurses
  package are useful, especially if you have SVR4 proper. I'm
  interested in the results you get on such a systems (Eric? ;-).
  They already exposed certain bugs in ncurses.
* See src/README for porting notes.
* The C++ code should really replace ncurses.h instead of working
  around it. It should avoid name-space clashes with nterm.h (use
  rows instead of lines, etc.)
* The C++ should compile ok. I've added explicit rules to the
  Makefile because no C++ defaults are documented on the suns.
* The docs say that echo() and nocbreak() are mutually exclusive.
  At the moment ncurses will switch to cbreak() if the case above
  occurs. Should it continue to do so? How about echo() and noraw()?
* PDCurses seem to assume that wclear() will use current attribute
  when clearing the screen. According to Eric this is not the case
  with SVR4.
* I have discovered, to my chagrin, SunOS 4.x (and probably other systems)
  * doesn't have vsscanf and God knows what else!  I've will do a vsscanf().
* I've also found out that the src/script.* rely on gawk and will not
  work with stock awk or even with nawk. Any changes are welcome.
* Linux is more tolerant of NULL dereferences than most systems. This
  fact was exposed by hanoi. 
* ncurses still seems inefficient in drawing the screen on a serial
  link between Linux and suns. The padding may be the culprit.
* There seems to be one lingering problem with doupdate() after shelling
  out. Despite the fact the it is sending out the correct information
  to the terminal, nothing takes effect until you press ^L or another
  refresh takes place. And yes, output does get flushed.

#### ncurses 1.8.1 -> ncurses 1.8.2 #### Nov 28, 1993 ####

* added support for SVR4 and BSDI's BSD/386.
* major update and fix to scrolling routine.
* MORE fixes to stuff in lib_getch.c.
* cleaned-up configuration options and can now generate
	Config.* files through an awk script.
* changed setupterm() so it can be called more than once,
	add added set_curterm(), del_curterm().
* a few minor cleanups.
* added more prototypes in curses.h

#### ncurses 1.8 -> ncurses 1.8.1 #### Nov 4, 1993 ####

* added support for NeXTStep 3.0
* added termcap emulation (not well tested).
* more complete C++ interface to ncurses.
* fixed overlay(), overwrite(), and added copywin().
* a couple of bug fixes.
* a few code cleanups.

#### ncurses 0.7.2/0.7.3 -> ncurses 1.8 #### Aug 31, 1993 ####

* The annoying message "can't open file." was due to missing
  terminfo entry for the used terminal. It has now been
  replaced by a hopefully more helpful message.
* Problems with running on serial lines are now fixed.
* Added configuration files for SunOS, Linux, HP/UX, Ultrix,
  386bsd/BSDI (if you have others send'em to me)
* Cleaner Makefile.
* The documentation in manual.doc is now more uptodate.
* update optimization and support for hp terminals, and 386bsd
  console driver(s).
* mvcur optimization for terminals without cursor addressing
  (doesn't work on Linux)
* if cursor moved since last update, getch() will refresh the
  screen before working.
* getch() & alarm() can now live together. in 0.7.3 a signal
  interrupted getch() (bug or feature?) now the getch is
  restarted.
* scanw() et all were sick, now fixed.
* support for 8-bit input (use meta()).
* added default screen size to all terminfos.
* added c++ Ncursesw class.
* several minor bug fixes.

#### ncurses 0.7.2 -> ncurses 0.7.3 #### May 27, 1993 ####

* Config file to cope with different platforms (386BSD, BSDI, Ultrix, SunOS)
* more fixes to lib_getch.c
* changes related to Config

#### ncurses 0.7 -> ncurses 0.7.2 #### May 22, 1993 ####

* docs updated slightly (color usage is now documented).
* yet another fix for getch(), this one fixes problems with ESC being swallowed
  if another character is typed before the 1 second timeout.
* Hopefully, addstr() and addch() are 8-bit clean.
* fixed lib_tparm.c to use stdarg.h (should run on suns now)
* order of capabilities changed to reflect that specified in SYSV
  this will allow for binary-compatibility with existing terminfo dbs.
* added halfdelay()
* fixed problems with asc_init()
* added A_PROTECT and A_INVIS
* cleaned up vidputs()
* general cleanup of the code
* more attention to portability to other systems
* added terminfos for hp70092 (wont work until changes to lib_update.c are
  made) and 386BSD pcvt drivers.

Thanks to Hellmuth Michaelis for his help.
optimization code is slated for the next major release, stay tuned!

#### ncurses 0.6/0.61 -> ncurses 0.7 #### April 1, 1993
Please note that the next release will be called 1.8. If you want to know about
the rationale drop me a line.

Included are several test programs in test/.
I've split up the panels library, reversi, tetris, sokoban. They are now
available separately from netcom.com:pub/zmbenhal/

* color and ACS support is now fully compatible with SYSV at the terminfo
  level.
* Capabilities now includes as many SYSV caps I could find.
* tigetflag,tigetnum,tigetstr functions added.
* boolnames, boolfnames, boolcodes numnames, numfnames, numcodes,
  strnames, strfnames, strcodes arrays are now added.
* keyname() is added.
* All function keys can be defined in terminfo entries.
* fixed lin_tparm.c to behave properly.
* terminfo entries for vt* and xterm are included (improvements are welcome)
* more automation in handling caps and keys.
* included fixes from 0.6.1
* added a few more missing functions.
* fixed a couple of minor bugs.
* updated docs JUST a little (still miles behind in documenting the newer
	features).

#### ncurses 0.6 -> ncurses 0.61 ####

1) Included the missing data/console.

2) allow attributes when drawing boxes.

3) corrected usage of win->_delay value.

4) fixed a bug in lib_getch.c. if it didn't recognize a sequence it would
	simply return the last character in the sequence. The correct
	behavior is to return the entire sequence one character at a time.

#### ncurses0.5 -> ncurses0.6 #### March 1, 1993 ####
* removed _numchngd from struct _win_st and made appropriate changes.
* rewritten kgetch() to remove problems with interaction between alarm and 
  read(). It caused SIGSEGV every now and then.
* fixed a bug that miscounted the numbers of columns when updating.
  (in lib_doupdate.c(ClrUpdate() -- iterate to columns not columns-1)
* fixed a bug that cause the lower-right corner to be incorrect.
  (in lib_doupdate.c(putChar() -- check against columns not columns-1)
* made resize() and cleanup() static to lib_newterm.c
* added notimeout().
* added timeout() define in curses.h
* added more function prototypes and fixed napms.
* added use_env().
* moved screen size detection to lib_setup.c.
* fixed newterm() to confirm to prototype.
* removed SIGWINCH support as SYSV does not define its semantics.
* cleaned-up lib_touch.c
* added waddnstr() and relatives.
* added slk_* support.
* fixed a bug in wdeleteln().
* added PANEL library.
* modified Makefile for smoother installation.
* terminfo.h is really term.h

#### ncurses 0.4 -> ncurses 0.5 #### Feb 14, 1993 ####
* changed _win_st structure to allow support for missing functionality.
* Addition of terminfo support for all KEY_*.
* Support for nodelay(), timeout(), notimeout().
* fixed a bug with the keypad char reading that did not return ESC until
  another key is pressed.
* nl mapping no longer occur on output (as should be)
  fixed bug '\n' no causing a LF.
* fixed bug that reset terminal colors regardless of whether we use color
  or not.
* Better support for ACS (not quite complete).
* fixed bug in wvline().
* added curs_set().
* changed from signal() to sigaction().
* re-included the contents of important.patch into source.

#### ncurses 0.3 -> ncurses 0.4 #### Feb 3, 1993 ####
* Addition of more KEY_* definitions.
* Addition of function prototypes.
* Addition of several missing functions.
* No more crashes if screen size is undefined (use SIGWINCH handler).
* added a handler to cleanup after SIGSEGV (hopefully never needed).
* changed SRCDIR from /etc/term to /usr/lib/terminfo.
* renamed compile/dump to tic/untic.
* New scrolling code.
* fixed bug that reversed the sense of nl() and nonl().

#### ncurses 0.2 -> ncurses 0.3  #### Jan 20, 1993 ####
* more support for color and graphics see test/ for examples.  
* fixed various files to allow correct update after shelling out.
* more fixes for updates.
* no more core dumps if you don't have a terminfo entry.
* support for LINES and COLUMNS environment variables.
* support for SIGWINCH signal.
* added a handler for SIGINT for clean exits.

#### ncurses 0.1 -> ncurses 0.2 #### Aug 14, 1992 ####
* support for color.
* support for PC graphic characters.
* lib_trace.c updated to use stdarg.h and vprintf routines.
* added gdc.c (Great Digital Clock) as an example of using color.

#### ncurses -> ncurses 0.1 #### Jul 31, 1992 ####
* replacing sgtty stuff by termios stuff.
* ANSIfication of some functions.
* Disabling cost analysis 'cause it's incorrect.
* A quick hack for a terminfo entry.
