diff -urNd -urNd ncurses-5.3/ANNOUNCE ncurses-5.3.20030906.orig/ANNOUNCE --- ncurses-5.3/ANNOUNCE Sat Oct 12 18:36:19 2002 +++ ncurses-5.3.20030906.orig/ANNOUNCE Tue May 13 20:08:22 2003 @@ -23,8 +23,8 @@ manual pages are provided for the library and tools. The ncurses distribution is available via anonymous FTP at the GNU - distribution site [1]ftp://ftp.gnu.org/pub/gnu/ncurses. - It is also available at [2]ftp://invisible-island.net/ncurses. + distribution site [1]ftp://ftp.gnu.org/gnu/ncurses/ . + It is also available at [2]ftp://invisible-island.net/ncurses/ . Release Notes @@ -268,60 +268,60 @@ cdk Curses Development Kit - [3]http://invisible-island.net/cdk. - [4]http://www.vexus.ca/CDK.html + [3]http://invisible-island.net/cdk/ + [4]http://www.vexus.ca/products/CDK/ ded directory-editor - [5]http://invisible-island.net/ded. + [5]http://invisible-island.net/ded/ dialog the underlying application used in Slackware's setup, and the basis for similar applications on GNU/Linux. - [6]http://invisible-island.net/dialog. + [6]http://invisible-island.net/dialog/ lynx the character-screen WWW browser - [7]http://lynx.isc.org/release. + [7]http://lynx.isc.org/release/ Midnight Commander file manager - [8]www.gnome.org/mc/. + [8]http://www.ibiblio.org/mc/ mutt mail utility - [9]http://www.mutt.org. + [9]http://www.mutt.org/ ncftp file-transfer utility - [10]http://www.ncftp.com. + [10]http://www.ncftp.com/ nvi New vi versions 1.50 are able to use ncurses versions 1.9.7 and later. - [11]http://www.bostic.com/vi/. + [11]http://www.bostic.com/vi/ tin newsreader, supporting color, MIME - [12]http://www.tin.org. + [12]http://www.tin.org/ taper tape archive utility - [13]http://members.iinet.net.au/~yusuf/taper/. + [13]http://taper.e-survey.net.au/ vh-1.6 Volks-Hypertext browser for the Jargon File - [14]http://www.bg.debian.org/Packages/unstable/text/vh.html. + [14]http://www.debian.org/Packages/unstable/text/vh.html as well as some that use ncurses for the terminfo support alone: minicom terminal emulator - [15]http://www.pp.clinet.fi/~walker/minicom.html. + [15]http://www.netsonic.fi/~walker/minicom.html vile vi-like-emacs - [16]http://invisible-island.net/vile. + [16]http://invisible-island.net/vile/ The ncurses distribution includes a selection of test programs (including a few games). @@ -342,7 +342,7 @@ and testing of this package. Beta versions of ncurses and patches to the current release are made - available at [23]ftp://invisible-island.net/ncurses. + available at [23]ftp://invisible-island.net/ncurses/ . Future Plans @@ -357,35 +357,35 @@ The distribution includes and uses a version of the terminfo-format terminal description file maintained by Eric Raymond. - [24]http://earthspace.net/~esr/terminfo. + [24]http://www.tuxedo.org/~esr/terminfo/ . You can find lots of information on terminal-related topics not - covered in the terminfo file at [25]Richard Shuford's archive. + covered in the terminfo file at [25]Richard Shuford's archive . References - 1. ftp://ftp.gnu.org/pub/gnu/ncurses - 2. ftp://invisible-island.net/ncurses - 3. http://invisible-island.net/cdk/cdk.html - 4. http://www.vexus.ca/CDK.html - 5. http://invisible-island.net/ded/ded.html - 6. http://invisible-island.net/dialog/dialog.html + 1. ftp://ftp.gnu.org/gnu/ncurses/ + 2. ftp://invisible-island.net/ncurses/ + 3. http://invisible-island.net/cdk/ + 4. http://www.vexus.ca/products/CDK/ + 5. http://invisible-island.net/ded/ + 6. http://invisible-island.net/dialog/ 7. http://lynx.isc.org/release/ - 8. file://localhost/usr/build/ncurses/ncurses-5.2-20021012/doc/html/www.gnome.org/mc/ + 8. http://www.ibiblio.org/mc/ 9. http://www.mutt.org/ 10. http://www.ncftp.com/ 11. http://www.bostic.com/vi/ 12. http://www.tin.org/ - 13. http://members.iinet.net.au/~yusuf/taper/ - 14. http://www.bg.debian.org/Packages/unstable/text/vh.html - 15. http://www.pp.clinet.fi/~walker/minicom.html - 16. http://invisible-island.net/vile/vile.html + 13. http://taper.e-survey.net.au/ + 14. http://www.debian.org/Packages/unstable/text/vh.html + 15. http://www.netsonic.fi/~walker/minicom.html + 16. http://invisible-island.net/vile/ 17. mailto:zmbenhal@netcom.com - 18. http://www.ccil.org/~esr/home.html + 18. http://www.tuxedo.org/~esr/ 19. mailto:dickey@herndon4.his.com 20. http://www.familiepfeifer.de/Contact.aspx?Lang=en 21. mailto:dickey@herndon4.his.com 22. mailto:bug-ncurses@gnu.org - 23. ftp://invisible-island.net/ncurses - 24. http://earthspace.net/~esr/terminfo + 23. ftp://invisible-island.net/ncurses/ + 24. http://www.tuxedo.org/~esr/terminfo/ 25. http://www.cs.utk.edu/~shuford/terminal_index.html diff -urNd -urNd ncurses-5.3/Ada95/gen/Makefile.in ncurses-5.3.20030906.orig/Ada95/gen/Makefile.in --- ncurses-5.3/Ada95/gen/Makefile.in Sat Jul 13 07:02:28 2002 +++ ncurses-5.3.20030906.orig/Ada95/gen/Makefile.in Tue May 13 20:08:22 2003 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 1998 Free Software Foundation, Inc. # +# Copyright (c) 1998-2002,2003 Free Software Foundation, Inc. # # # # Permission is hereby granted, free of charge, to any person obtaining a # # copy of this software and associated documentation files (the "Software"), # @@ -30,7 +30,7 @@ # Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en # # Version Control -# $Revision: 1.41 $ +# $Revision: 1.43 $ # .SUFFIXES: @@ -53,6 +53,7 @@ AWK = @AWK@ LN_S = @LN_S@ +CC = @CC@ HOST_CC = @BUILD_CC@ CFLAGS = @CFLAGS@ @@ -171,9 +172,9 @@ install \ install.libs :: $(ADA_OBJECTS) @echo installing package $(ALIB) in $(ADA_OBJECTS) - @chmod a-wx $(ADA_SRCDIR)/*.ali + @-chmod a-wx $(ADA_SRCDIR)/*.ali @$(top_srcdir)/tar-copy.sh '$(ALIB)[-.]*.ali' $(ADA_SRCDIR) $(ADA_OBJECTS) - @chmod u+x $(ADA_SRCDIR)/*.ali + @-chmod u+x $(ADA_SRCDIR)/*.ali uninstall \ uninstall.libs :: diff -urNd -urNd ncurses-5.3/Ada95/src/Makefile.in ncurses-5.3.20030906.orig/Ada95/src/Makefile.in --- ncurses-5.3/Ada95/src/Makefile.in Sat Jul 13 07:02:23 2002 +++ ncurses-5.3.20030906.orig/Ada95/src/Makefile.in Tue May 13 20:08:22 2003 @@ -30,7 +30,7 @@ # Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en # # Version Control -# $Revision: 1.26 $ +# $Revision: 1.27 $ # .SUFFIXES: @@ -214,19 +214,19 @@ $(ABASE)-terminfo.o: \ - $(ABASE)-terminfo.ads \ + $(srcdir)/$(ABASE)-terminfo.ads \ $(srcdir)/$(ABASE)-terminfo.adb $(BASEDEPS) $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-terminfo.adb $(ABASE)-termcap.o: \ - $(ABASE)-termcap.ads \ + $(srcdir)/$(ABASE)-termcap.ads \ $(srcdir)/$(ABASE)-termcap.adb $(BASEDEPS) $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-termcap.adb $(ABASE)-putwin.o: \ - $(ABASE)-putwin.ads \ + $(srcdir)/$(ABASE)-putwin.ads \ $(srcdir)/$(ABASE)-putwin.adb $(BASEDEPS) $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-putwin.adb diff -urNd -urNd ncurses-5.3/INSTALL ncurses-5.3.20030906.orig/INSTALL --- ncurses-5.3/INSTALL Sun Sep 1 17:42:11 2002 +++ ncurses-5.3.20030906.orig/INSTALL Fri Sep 12 16:42:40 2003 @@ -1,4 +1,4 @@ --- $Id: INSTALL,v 1.56 2002/09/01 22:42:11 tom Exp $ +-- $Id: INSTALL,v 1.65 2003/08/30 22:44:10 tom Exp $ --------------------------------------------------------------------- How to install Ncurses/Terminfo on your system --------------------------------------------------------------------- @@ -168,6 +168,11 @@ databases are SVr4-compatible, but most seem to be. Exceptions include DEC's Digital Unix (formerly known as OSF/1). + If you run the test programs WITHOUT installing terminfo, ncurses may + read the termcap file and cache that in $HOME/.terminfo, which will + thereafter be used instead of the terminfo database. See the comments + on "--enable-getcap-cache", to see why this is a Bad Thing. + It is possible to configure ncurses to use other terminfo database formats. A few are provided as examples in the include-directory (see --with-caps). @@ -312,10 +317,6 @@ Compile without scroll-hints code. This option is ignored when hashmap scrolling is configured, which is the default. - --enable-add-ons=DIR... - This is used to check if this package is a glibc add-on. This is used - only by the glibc makefiles. - --enable-assertions For testing, compile-in assertion code. This is used only for a few places where ncurses cannot easily recover by returning an error code. @@ -454,6 +455,11 @@ --enable-xmc-glitch Compile-in support experimental xmc (magic cookie) code. + --with-abi-version=NUM + Override the ABI version, which is used in shared library filenames. + Normally this is the same as the release version; some ports have + special requirements for compatibility. + --with-ada-compiler=CMD Specify the Ada95 compiler command (default "gnatmake") @@ -472,7 +478,7 @@ --with-build-cc=XXX If cross-compiling, specify a host C compiler, which is needed to - compile a few utilties which generate source modules for ncurses. + compile a few utilities which generate source modules for ncurses. If you do not give this option, the configure script checks if the $BUILD_CC variable is set, and otherwise defaults to gcc or cc. @@ -482,7 +488,7 @@ host compiler. --with-build-cppflags=XXX - If cross-compiling, specify the host C preprocesor-flags. You might + If cross-compiling, specify the host C preprocessor-flags. You might need to do this if the target compiler has unusual flags which confuse the host compiler. @@ -544,9 +550,17 @@ NOTE: a few systems build shared libraries with fixed pathnames; this option probably will not work for those configurations. - --with-libtool - Generate libraries with libtool. If this option is selected, then - it overrides all other library model specifications. + --with-libtool[=XXX] + Generate libraries with libtool. If this option is selected, then it + overrides all other library model specifications. Note that libtool + must already be installed, uses makefile rules dependent on GNU make, + and does not promise to follow the version numbering convention of + other shared libraries on your system. However, if the --with-shared + option does not succeed, you may get better results with this option. + + If a parameter value is given, it must be the full pathname of the + particular version of libtool, e.g., + /usr/bin/libtool-1.2.3 --with-manpage-format=XXX Tell the configure script how you would like to install man-pages. The @@ -609,6 +623,9 @@ This is normally chosen automatically based on the type of system which you are building on. We use it for testing the configure script. + --with-sysmouse + use FreeBSD sysmouse interface provide mouse support on the console. + --with-system-type=XXX For testing, override the derived host system-type which is used to decide things such as the linker commands used to build shared @@ -673,7 +690,7 @@ you may encounter when building a system with different versions of ncurses: - 5.3 (pre-release) + 5.3 (October 12, 2002) Interface changes: + change type for bool used in headers to NCURSES_BOOL, which usually @@ -895,31 +912,34 @@ IF YOU ARE A SYSTEM INTEGRATOR: ------------------------------ - Beginning with 1.9.9, the ncurses distribution includes both a tset - utility and /usr/share/tabset directory. If you are installing ncurses, - it is no longer either necessary or desirable to install tset-jv. - Configuration and Installation: - Configure with --prefix=/usr to make the install productions put - libraries and headers in the correct locations (overwriting any - previous curses libraries and headers). This will put the terminfo - hierarchy under /usr/share/terminfo; you may want to override this with - --datadir=/usr/share/misc; terminfo and tabset are installed under the - data directory. + On platforms where ncurses is assumed to be installed in /usr/lib, + the configure script uses "/usr" as a default: - Please configure the ncurses library in a pure-terminfo mode; that - is, with the --disable-termcap option. This will make the ncurses - library smaller and faster. The ncurses library includes a termcap - emulation that queries the terminfo database, so even applications - that use raw termcap to query terminal characteristics will win - (providing you recompile and relink them!). + Linux, FreeBSD, NetBSD, OpenBSD, Cygwin - If you must configure with termcap fallback enabled, you may also - wish to use the --enable-getcap option. This option speeds up - termcap-based startups, at the expense of not allowing personal - termcap entries to reference the terminfo tree. See the code in - ncurses/tinfo/read_termcap.c for details. + For other platforms, the default is "/usr/local". See the discussion + of the "--disable-overwrite" option. + + The location of the terminfo is set indirectly by the "--datadir" + configure option, e.g., /usr/share/terminfo, given a datadir of + /usr/share. You may want to override this if you are installing + ncurses libraries in nonstandard locations, but wish to share the + terminfo database. + + Normally the ncurses library is configured in a pure-terminfo mode; + that is, with the --disable-termcap option. This makes the ncurses + library smaller and faster. The ncurses library includes a termcap + emulation that queries the terminfo database, so even applications that + use raw termcap to query terminal characteristics will win (providing + you recompile and relink them!). + + If you must configure with termcap fallback enabled, you may also wish + to use the --enable-getcap option. This speeds up termcap-based + startups, at the expense of not allowing personal termcap entries to + reference the terminfo tree. See comments in + ncurses/tinfo/read_termcap.c for further details. Note that if you have $TERMCAP set, ncurses will use that value to locate termcap data. In particular, running from xterm will @@ -939,11 +959,11 @@ Naming the Console Terminal - In various Linuxes (and possibly elsewhere) there has been a practice - of designating the system console driver type as `console'. Please - do not do this any more! It complicates peoples' lives, because it - can mean that several different terminfo entries from different - operating systems all logically want to be called `console'. + In various systems there has been a practice of designating the system + console driver type as `console'. Please do not do this! It + complicates peoples' lives, because it can mean that several different + terminfo entries from different operating systems all logically want to + be called `console'. Please pick a name unique to your console driver and set that up in the /etc/inittab table or local equivalent. Send the entry to the diff -urNd -urNd ncurses-5.3/MANIFEST ncurses-5.3.20030906.orig/MANIFEST --- ncurses-5.3/MANIFEST Sun Sep 1 17:08:22 2002 +++ ncurses-5.3.20030906.orig/MANIFEST Sun Jul 20 14:02:09 2003 @@ -166,13 +166,11 @@ ./Ada95/src/terminal_interface.ads ./INSTALL ./MANIFEST -./Makefile.glibc ./Makefile.in ./Makefile.os2 ./NEWS ./README ./README.emx -./README.glibc ./TO-DO ./aclocal.m4 ./announce.html.in @@ -394,6 +392,7 @@ ./doc/html/man/form_win.3x.html ./doc/html/man/infocmp.1m.html ./doc/html/man/infotocap.1m.html +./doc/html/man/key_defined.3x.html ./doc/html/man/keybound.3x.html ./doc/html/man/keyok.3x.html ./doc/html/man/menu.3x.html @@ -593,6 +592,7 @@ ./man/form_win.3x ./man/infocmp.1m ./man/infotocap.1m +./man/key_defined.3x ./man/keybound.3x ./man/keyok.3x ./man/make_sed.sh @@ -673,6 +673,7 @@ ./misc/chkdef.cmd ./misc/cleantic.cmd ./misc/cmpdef.cmd +./misc/csort ./misc/emx.src ./misc/form.def ./misc/form.ref @@ -706,6 +707,7 @@ ./ncurses/base/MKunctrl.awk ./ncurses/base/README ./ncurses/base/define_key.c +./ncurses/base/key_defined.c ./ncurses/base/keybound.c ./ncurses/base/keyok.c ./ncurses/base/lib_addch.c @@ -736,7 +738,6 @@ ./ncurses/base/lib_initscr.c ./ncurses/base/lib_insch.c ./ncurses/base/lib_insdel.c -./ncurses/base/lib_insstr.c ./ncurses/base/lib_instr.c ./ncurses/base/lib_isendwin.c ./ncurses/base/lib_leaveok.c @@ -861,6 +862,7 @@ ./ncurses/tty/tty_display.h ./ncurses/tty/tty_input.h ./ncurses/tty/tty_update.c +./ncurses/widechar/charable.c ./ncurses/widechar/lib_box_set.c ./ncurses/widechar/lib_cchar.c ./ncurses/widechar/lib_erasewchar.c @@ -869,9 +871,9 @@ ./ncurses/widechar/lib_hline_set.c ./ncurses/widechar/lib_in_wch.c ./ncurses/widechar/lib_in_wchnstr.c -./ncurses/widechar/lib_ins_nwstr.c ./ncurses/widechar/lib_ins_wch.c ./ncurses/widechar/lib_inwstr.c +./ncurses/widechar/lib_slk_wset.c ./ncurses/widechar/lib_unget_wch.c ./ncurses/widechar/lib_vid_attr.c ./ncurses/widechar/lib_vline_set.c @@ -913,12 +915,6 @@ ./progs/toe.c ./progs/tput.c ./progs/tset.c -./sysdeps/unix/sysv/linux/Makefile -./sysdeps/unix/sysv/linux/alpha/configure -./sysdeps/unix/sysv/linux/configure -./sysdeps/unix/sysv/linux/edit_man.sed -./sysdeps/unix/sysv/linux/edit_man.sh -./sysdeps/unix/sysv/linux/run_tic.sh ./tack/COPYING ./tack/HISTORY ./tack/Makefile.in @@ -945,6 +941,7 @@ ./tar-copy.sh ./test/Makefile.in ./test/README +./test/aclocal.m4 ./test/blue.c ./test/bs.6 ./test/bs.c @@ -952,8 +949,15 @@ ./test/cardfile.dat ./test/configure ./test/configure.in +./test/demo_defkey.c +./test/demo_forms.c +./test/demo_keyok.c +./test/demo_menus.c +./test/demo_panels.c ./test/ditto.c ./test/dots.c +./test/edit_field.c +./test/edit_field.h ./test/filter.c ./test/firework.c ./test/firstlast.c @@ -961,8 +965,11 @@ ./test/gdc.c ./test/hanoi.c ./test/hashtest.c +./test/ins_wide.c +./test/inserts.c ./test/keynames.c ./test/knight.c +./test/listused.sh ./test/lrtest.c ./test/modules ./test/ncurses.c diff -urNd -urNd ncurses-5.3/NEWS ncurses-5.3.20030906.orig/NEWS --- ncurses-5.3/NEWS Sat Oct 12 17:35:42 2002 +++ ncurses-5.3.20030906.orig/NEWS Fri Sep 12 16:42:59 2003 @@ -1,4 +1,4 @@ --- $Id: NEWS,v 1.714 2002/10/12 22:35:42 tom Exp $ +-- $Id: NEWS,v 1.766 2003/09/06 22:40:56 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. @@ -6,6 +6,531 @@ Changes through 1.9.9e are recorded by Zeyd M. Ben-Halim. Changes since 1.9.9e are recorded by Thomas Dickey. +20030906 + + modify configure script to avoid using "head -1", which does not + work if POSIXLY_CORRECT (sic) is set. + + modify run_tic.in to avoid using wrong shared libraries when + cross-compiling (Dan Kegel). + +20030830 + + alter configure script help message to make it clearer that + --with-build-cc does not specify a cross-compiler (suggested by Dan + Kegel ). + + modify configure script to accommodate libtool 1.5, as well as add an + parameter to the "--with-libtool" option which can specify the + pathname of libtool (report by Chris Zubrzycki). We note that + libtool 1.5 has more than one bug in its C++ support, so it is not + able to install libncurses++, for instance, if $DESTDIR or the option + --with-install-prefix is used. + +20030823 + > Philippe Blain: + + move assignments to SP->_cursrow, SP->_curscol into online_mvcur(). + + make baudrate computation in delay_output() consistent with the + assumption in _nc_mvcur_init(), i.e., a byte is 9 bits. + +20030816 + + modify logic in waddch_literal() to take into account zh_TW.Big5 + whose multibyte sequences may contain "printable" characters, e.g., + a "g" in the sequence "\247g" (Debian #204889, cf: 20030621). + + improve storage used by _nc_safe_strcpy() by ensuring that the size + is reset based on the initialization call, in case it were called + after other strcpy/strcat calls (report by Philippe Blain). + > Philippe Blain: + + remove an unused ifdef for REAL_ATTR & WANT_CHAR + + correct a place where _cup_cost was used rather than _cuu_cost + +20030809 + + fix a small memory leak in _nc_free_termtype(). + + close trace-file if trace() is called with a zero parameter. + + free memory allocated for soft-key strings, in delscreen(). + + fix an allocation size in safe_sprintf.c for the "*" format code. + + correct safe_sprintf.c to not return a null pointer if the format + happens to be an empty string. This applies to the "configure + --enable-safe-sprintf" option (Redhat #101486). + +20030802 + + modify casts used for ABSENT_BOOLEAN and CANCELLED_BOOLEAN (report by + Daniel Jacobowitz). + > Philippe Blain: + + change padding for change_scroll_region to not be proportional to + the size of the scroll-region. + + correct error-return in _nc_safe_strcat(). + +20030726 + + correct limit-checks in _nc_scroll_window() (report and test-case by + Thomas Graf cf: 20011020). + + re-order configure checks for _XOPEN_SOURCE to avoid conflict with + _GNU_SOURCE check. + +20030719 + + use clr_eol in preference to blanks for bce terminals, so select and + paste will have fewer trailing blanks, e.g., when using xterm + (request by Vincent Lefevre). + + correct prototype for wunctrl() in manpage. + + add configure --with-abi-version option (discussion with Charles + Wilson). + > cygwin changes from Charles Wilson: + + aclocal.m4: on cygwin, use autodetected prefix for import + and static lib, but use "cyg" for DLL. + + include/ncurses_dll.h: correct the comments to reflect current + status of cygwin/mingw port. Fix compiler warning. + + misc/run_tic.in: ensure that tic.exe can find the uninstalled + DLL, by adding the lib-directory to the PATH variable. + + misc/terminfo.src (nxterm|xterm-color): make xterm-color + primary instead of nxterm, to match XFree86's xterm.terminfo + usage and to prevent circular links. + (rxvt): add additional codes from rxvt.org. + (rxvt-color): new alias + (rxvt-xpm): new alias + (rxvt-cygwin): like rxvt, but with special acsc codes. + (rxvt-cygwin-native): ditto. rxvt may be run under XWindows, or + with a "native" MSWin GUI. Each takes different acsc codes, + which are both different from the "normal" rxvt's acsc. + (cygwin): cygwin-in-cmd.exe window. Lots of fixes. + (cygwinDBG): ditto. + + mk-1st.awk: use "cyg" for the DLL prefix, but "lib" for import + and static libs. + +20030712 + + update config.guess, config.sub + + add triples for configuring shared libraries with the Debian + GNU/FreeBSD packages (patch by Robert Millan ). + +20030705 + + modify CF_GCC_WARNINGS so it only applies to gcc, not g++. Some + platforms have installed g++ along with the native C compiler, which + would not accept gcc warning options. + + add -D_XOPEN_SOURCE=500 when configuring with --enable-widec, to + get mbstate_t declaration on HPUX 11.11 (report by David Ellement). + + add _nc_pathlast() to get rid of casts in _nc_basename() calls. + + correct a sign-extension in wadd_wch() and wecho_wchar() from + 20030628 (report by Tomohiro KUBOTA). + + work around omission of btowc() and wctob() from wide-character + support (sic) in NetBSD 1.6 using mbtowc() and wctomb() (report by + Gabor Z Papp). + + add portability note to curs_get_wstr.3x (Debian #199957). + +20030628 + + rewrite wadd_wch() and wecho_wchar() to call waddch() and wechochar() + respectively, to avoid calling waddch_noecho() with wide-character + data, since that function assumes its input is 8-bit data. + Similarly, modify waddnwstr() to call wadd_wch(). + + remove logic from waddnstr() which transformed multibyte character + strings into wide-characters. Rewrite of waddch_literal() from + 20030621 assumes its input is raw multibyte data rather than wide + characters (report by Tomohiro KUBOTA). + +20030621 + + write getyx() and related 2-return macros in terms of getcury(), + getcurx(), etc. + + modify waddch_literal() in case an application passes bytes of a + multibyte character directly to waddch(). In this case, waddch() + must reassemble the bytes into a wide-character (report by Tomohiro + KUBOTA ). + +20030614 + + modify waddch_literal() in case a multibyte value occupies more than + two cells. + + modify PutAttrChar() to compute the number of character cells that + are used in multibyte values. This fixes a problem displaying + double-width characters (report/test by Mitsuru Chinen + ). + + add a null-pointer check for result of keyname() in _tracechar() + + modify _tracechar() to work around glibc sprintf bug. + +20030607 + + add a call to setlocale() in cursesmain.cc, making demo display + properly in a UTF-8 locale. + + add a fallback definition in curses.priv.h for MB_LEN_MAX (prompted + by discussion with Gabor Z Papp). + + use macros NCURSES_ACS() and NCURSES_WACS() to hide cast needed to + appease -Wchar-subscript with g++ 3.3 (Debian #195732). + + fix a redefinition of $RANLIB in the configure script when libtool + is used, which broke configure on Mac OS X (report by Chris Zubrzycki + ). + + simplify ifdef for bool declaration in curses.h.in (suggested by + Albert Chin-A-Young). + + remove configure script check to allow -Wconversion for older + versions of gcc (suggested by Albert Chin-A-Young). + +20030531 + + regenerated html manpages. + + modify ifdef's in curses.h.in that disabled use of __attribute__() + for g++, since recent versions implement the cases which ncurses uses + (Debian #195230). + + modify _nc_get_token() to handle a case where an entry has no + description, and capabilities begin on the same line as the entry + name. + + fix a typo in ncurses_dll.h reported by gcc 3.3. + + add an entry for key_defined.3x to man_db.renames. + +20030524 + + modify setcchar() to allow converting control characters to complex + characters (report/test by Mitsuru Chinen ). + + add tkterm entry -TD + + modify parse_entry.c to allow a terminfo entry with a leading + 2-character name (report by Don Libes). + + corrected acsc in screen.teraterm, which requires a PC-style mapping. + + fix trace statements in read_entry.c to use lseek() rather than + tell(). + + fix signed/unsigned warnings from Sun's compiler (gcc should give + these warnings, but it is unpredictable). + + modify configure script to omit -Winline for gcc 3.3, since that + feature is broken. + + modify manlinks.sed to add a few functions that were overlooked since + they return function pointers: field_init, field_term, form_init, + form_term, item_init, item_term, menu_init and menu_term. + +20030517 + + prevent recursion in wgetch() via wgetnstr() if the connection cannot + be switched between cooked/raw modes because it is not a TTY (report + by Wolfgang Gutjahr ). + + change parameter of define_key() and key_defined() to const (prompted + by Debian #192860). + + add a check in test/configure for ncurses extensions, since there + are some older versions, etc., which would not compile with the + current test programs. + + corrected demo in test/ncurses.c of wgetn_wstr(), which did not + convert wchar_t string to multibyte form before printing it. + + corrections to lib_get_wstr.c: + + null-terminate buffer passed to setcchar(), which occasionally + failed. + + map special characters such as erase- and kill-characters into + key-codes so those will work as expected even if they are not + mentioned in the terminfo. + + modify PUTC() and Charable() macros to make wide-character line + drawing work for POSIX locale on Linux console (cf: 20021221). + +20030510 + + make typography for program options in manpages consistent (report + by Miloslav Trmac ). + + correct dependencies in Ada95/src/Makefile.in, so the builds with + "--srcdir" work (report by Warren L Dodge). + + correct missing definition of $(CC) in Ada95/gen/Makefile.in + (reported by Warren L Dodge ). + + fix typos and whitespace in manpages (patch by jmc + ). + +20030503 + + fix form_driver() cases for REQ_CLR_EOF, REQ_CLR_EOL, REQ_DEL_CHAR, + REQ_DEL_PREV and REQ_NEW_LINE, which did not ensure the cursor was at + the editing position before making modifications. + + add test/demo_forms and associated test/edit_field.c demos. + + modify test/configure.in to use test/modules for the list of objects + to compile rather than using the list of programs. + +20030419 + + modify logic of acsc to use the original character if no mapping is + defined, noting that Solaris does this. + + modify ncurses 'b' test to avoid using the acs_map[] array since + 20021231 changes it to no longer contain information from the acsc + string. + + modify makefile rules in c++, progs, tack and test to ensure that + the compiler flags (e.g., $CFLAGS or $CCFLAGS) are used in the link + command (report by Jose Luis Rico Botella ). + + modify soft-key initialization to use A_REVERSE if A_STANDOUT would + not be shown when colors are used, i.e., if ncv#1 is set in the + terminfo as is done in "screen". + +20030412 + + add a test for slk_color(), in ncurses.c + + fix some issues reported by valgrind in the slk_set() and slk_wset() + code, from recent rewrite. + + modify ncurses 'E' test to use show previous label via slk_label(), + as in 'e' test. + + modify wide-character versions of NewChar(), NewChar2() macros to + ensure that the whole struct is initialized. + +20030405 + + modify setupterm() to check if the terminfo and terminal-modes have + already been read. This ensures that it does not reinvoke + def_prog_mode() when an application calls more than one function, + such as tgetent() and initscr() (report by Olaf Buddenhagen). + +20030329 + + add 'E' test to ncurses.c, to exercise slk_wset(). + + correct handling of carriage-return in wgetn_wstr(), used in demo of + slk_wset(). + + first draft of slk_wset() function. + +20030322 + + improved warnings in tic when suppressing items to fit in termcap's + 1023-byte limit. + + built a list in test/README showing which externals are being used + by either programs in the test-directory or via internal library + calls. + + adjust include-options in CF_ETIP_DEFINES to avoid missing + ncurses_dll.h, fixing special definitions that may be needed for + etip.h (reported by Greg Schafer ). + +20030315 + + minor fixes for cardfile.c, to make it write the updated fields to + a file when ^W is given. + + add/use _nc_trace_bufcat() to eliminate some fixed buffer limits in + trace code. + +20030308 + + correct a case in _nc_remove_string(), used by define_key(), to avoid + infinite loop if the given string happens to be a substring of other + strings which are assigned to keys (report by John McCutchan). + + add key_defined() function, to tell which keycode a string is bound + to (discussion with John McCutchan ). + + correct keybound(), which reported definitions in the wrong table, + i.e., the list of definitions which are disabled by keyok(). + + modify demo_keydef.c to show the details it changes, and to check + for errors. + +20030301 + + restructured test/configure script, make it work for libncursesw. + + add description of link_fieldtype() to manpage (report by + L Dee Holtsclaw ). + +20030222 + + corrected ifdef's relating to configure check for wchar_t, etc. + + if the output is a socket or other non-tty device, use 1 millisecond + for the cost in mvcur; previously it was 9 milliseconds because the + baudrate was not known. + + in _nc_get_tty_mode(), initialize the TTY buffer on error, since + glibc copies uninitialized data in that case, as noted by valgrind. + + modify tput to use the same parameter analysis as tparm() does, to + provide for user-defined strings, e.g., for xterm title, a + corresponding capability might be + title=\E]2;%p1%s^G, + + modify MKlib_gen.sh to avoid passing "#" tokens through the C + preprocessor. This works around Mac OS X's preprocessor, which + insists on adding a blank on each side of the token (report/analysis + by Kevin Murphy ). + +20030215 + + add configure check for wchar_t and wint_t types, rather than rely + on preprocessor definitions. Also work around for gcc fixinclude + bug which creates a shadow copy of curses.h if it sees these symbols + apparently typedef'd. + + if database is disabled, do not generate run_tic.sh + + minor fixes for memory-leak checking when termcap is read. + +20030208 + + add checking in tic for incomplete line-drawing character mapping. + + update configure script to reflect fix for AC_PROG_GCC_TRADITIONAL, + which is broken in autoconf 2.5x for Mac OS X 10.2.3 (report by + Gerben Wierda ). + + make return value from _nc_printf_string() consistent. Before, + depending on whether --enable-safe-sprintf was used, it might not be + cached for reallocating. + +20030201 + + minor fixes for memory-leak checking in lib_tparm.c, hardscroll.c + + correct a potentially-uninitialized value if _read_termtype() does + not read as much data as expected (report by Wolfgang Rohdewald + ). + + correct several places where the aclocal.m4 macros relied on cache + variable names which were incompatible (as usual) between autoconf + 2.13 and 2.5x, causing the test for broken-linker to give incorrect + results (reports by Gerben Wierda and Thomas Esser + ). + + do not try to open gpm mouse driver if standard output is not a tty; + the gpm library does not make this check (from bug report for dialog + by David Oliveira ). + +20030125 + + modified emx.src to correspond more closely to terminfo.src, added + emx-base to the latter -TD + + add configure option for FreeBSD sysmouse, --with-sysmouse, and + implement support for that in lib_mouse.c, lib_getch.c + +20030118 + + revert 20030105 change to can_clear_with(), does not work for the + case where the update is made on cells which are blanks with + attributes, e.g., reverse. + + improve ifdef's to guard against redefinition of wchar_t and wint_t + in curses.h (report by Urs Jansen). + +20030111 + + improve mvcur() by checking if it is safe to move when video + attributes are set (msgr), and if not, reset/restore attributes + within that function rather than doing it separately in the GoTo() + function in tty_update.c (suggested by Philippe Blain). + + add a message in run_tic.in to explain more clearly what does not + work when attempting to create a symbolic link for /usr/lib/terminfo + on OS/2 and other platforms with no symbolic links (report by John + Polterak). + + change several sed scripts to avoid using "\+" since it is not a BRE + (basic regular expression). One instance caused terminfo.5 to be + misformatted on FreeBSD (from a FreeBSD bug report by Kazuo Horikawa + ). + + correct misspelled 'wint_t' in curs_get_wch.3x (Michael Elkins). + +20030105 + + improve description of terminfo operators, especially static/dynamic + variables (comments by Mark I Manning IV ). + + demonstrate use of FIELDTYPE by modifying test/ncurses 'r' test to + use the predefined TYPE_ALPHA field-type, and by defining a + specialized type for the middle initial/name. + + fix MKterminfo.sh, another workaround for POSIXLY_CORRECT misfeature + of sed 4.0 + > Philippe Blain: + + optimize can_clear_with() a little by testing first if the parameter + is indeed a "blank". + + simplify ClrBottom() a little by allowing it to use clr_eos to clear + sections as small as one line. + + improve ClrToEOL() by checking if clr_eos is available before trying + to use it. + + use tputs() rather than putp() in a few cases in tty_update.c since + the corresponding delays are proportional to the number of lines + affected: repeat_char, clr_eos, change_scroll_region. + +20021231 + + rewrite of lib_acs.c conflicts with copying of SCREEN acs_map to/from + global acs_map[] array; removed the lines that did the copying. + +20021228 + + change some overlooked tputs() calls in scrolling code to use putp() + (report by Philippe Blain). + + modify lib_getch.c to avoid recursion via wgetnstr() when the input + is not a tty and consequently mode-changes do not work (report by + ). + + rewrote lib_acs.c to allow PutAttrChar() to decide how to render + alternate-characters, i.e., to work with Linux console and UTF-8 + locale. + + correct line/column reference in adjust_window(), needed to make + special windows such as curscr track properly when resizing (report + by Lucas Gonze ). + > Philippe Blain: + + correct the value used for blank in ClrBottom() (broken in 20000708). + + correct an off-by-one in GoTo() parameter in _nc_scrolln(). + +20021221 + + change several tputs() calls in scrolling code to use putp(), to + enable padding which may be needed for some terminals (patch by + by Philippe Blain). + + use '%' as sed substitute delimiter in run_tic script to avoid + problems with pathname delimiters such as ':' and '@' (report by John + Polterak). + + implement a workaround so that line-drawing works with screen's + crippled UTF-8 support (tested with 3.9.13). This only works with + the wide-character support (--enable-widec); the normal library will + simply suppress line-drawing when running in a UTF-8 locale in screen. + +20021214 + + allow BUILD_CC and related configure script variables to be + overridden from the environment. + + make build-tools variables in ncurses/Makefile.in consistent with + the configure script variables (report by Maciej W Rozycki). + + modify ncurses/modules to allow + configure --disable-leaks --disable-ext-funcs + to build (report by Gary Samuelson). + + fix a few places in configure.in which lacked quotes (report by + Gary Samuelson ). + + correct handling of multibyte characters in waddch_literal() which + force wrapping because they are started too late on the line (report + by Sam Varshavchik). + + small fix for CF_GNAT_VERSION to ignore the help-message which + gnatmake adds to its version-message. + > Maciej W Rozycki : + + use AC_CHECK_TOOL to get proper values for AR and LD for cross + compiling. + + use $cross_compiling variable in configure script rather than + comparing $host_alias and $target alias, since "host" is + traditionally misused in autoconf to refer to the target platform. + + change configure --help message to use "build" rather than "host" + when referring to the --with-build-XXX options. + +20021206 + + modify CF_GNAT_VERSION to print gnatmake's version, and to allow for + possible gnat versions such as 3.2 (report by Chris Lingard + ). + + modify #define's for CKILL and other default control characters in + tset to use the system's default values if they are defined. + + correct interchanged defaults for kill and interrupt characters + in tset, which caused it to report unnecessarily (Debian #171583). + + repair check for missing C++ compiler, which is broken in autoconf + 2.5x by hardcoding it to g++ (report by Martin Mokrejs). + + update config.guess, config.sub (2002-11-30) + + modify configure script to skip --with-shared, etc., when the + --with-libtool option is given, since they would be ignored anyway. + + fix to allow "configure --with-libtool --with-termlib" to build. + + modify configure script to show version number of libtool, to help + with bug reports. libtool still gets confused if the installed + ncurses libraries are old, since it ignores the -L options at some + point (tested with libtool 1.3.3 and 1.4.3). + + reorder configure script's updating of $CPPFLAGS and $CFLAGS to + prevent -I options in the user's environment from introducing + conflicts with the build -I options (may be related to reports by + Patrick Ash and George Goffe). + + rename test/define_key.c to test/demo_defkey.c, test/keyok.c to + test/demo_keyok.c to allow building these with libtool. + +20021123 + + add example program test/define_key.c for define_key(). + + add example program test/keyok.c for keyok(). + + add example program test/ins_wide.c for wins_wch() and wins_wstr(). + + modify wins_wch() and wins_wstr() to interpret tabs by using the + winsch() internal function. + + modify setcchar() to allow for wchar_t input strings that have + more than one spacing character. + +20021116 + + fix a boundary check in lib_insch.c (patch by Philippe Blain). + + change type for *printw functions from NCURSES_CONST to const + (prompted by comment by Pedro Palhoto Matos , + but really from a note on X/Open's website stating that either is + acceptable, and the latter will be used in a future revision). + + add xterm-1002, xterm-1003 terminfo entries to demonstrate changes in + lib_mouse.c (20021026) -TD + + add screen-bce, screen-s entries from screen 3.9.13 (report by + Adam Lazur ) -TD + + add mterm terminfo entries -TD + +20021109 + + split-out useful fragments in terminfo for vt100 and vt220 numeric + keypad, i.e., vt100+keypad, vt100+pfkeys, vt100+fnkeys and + vt220+keypad. The last as embedded in various entries had ka3 and + kb2 interchanged (report/discussion with Leonard den Ottolander + ). + + add check in tic for keypads consistent with vt100 layout. + + improve checks in tic for color capabilities + +20021102 + + check for missing/empty/illegal terminfo name in _nc_read_entry() + (report by Martin Mokrejs, where $TERM was set to an empty string). + + rewrote lib_insch.c, combining it with lib_insstr.c so both handle + tab and other control characters consistently (report by Philippe + Blain). + + remove an #undef for KEY_EVENT from curses.tail used in the + experimental NCURSES_WGETCH_EVENTS feature. The #undef confuses + dpkg's build script (Debian #165897). + + fix MKlib_gen.sh, working around the ironically named POSIXLY_CORRECT + feature of GNU sed 4.0 (reported by Ervin Nemeth ). + +20021026 + + implement logic in lib_mouse.c to handle position reports which are + generated when XFree86 xterm is initialized with private modes 1002 + or 1003. These are returned to the application as the + REPORT_MOUSE_POSITION mask, which was not implemented. Tested both + with ncurses 'a' menu (prompted by discussion with Larry Riedel + ). + + modify lib_mouse.c to look for "XM" terminfo string, which allows + one to override the escape sequence used to enable/disable mouse + mode. In particular this works for XFree86 xterm private modes + 1002 and 1003. If "XM" is missing (note that this is an extended + name), lib_mouse uses the conventional private mode 1000. + + correct NOT_LOCAL() macro in lib_mvcur.c to refer to screen_columns + where it used screen_lines (report by Philippe Blain). + + correct makefile rules for the case when both --with-libtool and + --with-gpm are given (report by Mr E_T ). + + add note to terminfo manpage regarding the differences between + setaf/setab and setf/setb capabilities (report by Pavel Roskin). + +20021019 + + remove redundant initialization of TABSIZE in newterm(), since it is + already done in setupterm() (report by Philippe Blain). + + add test/inserts.c, to test winnstr() and winsch(). + + replace 'sort' in dist.mk with script that sets locale to POSIX. + + update URLs in announce.html.in (patch by Frederic L W Meunier). + + remove glibc add-on files, which are no longer needed (report by + Frederic L W Meunier). + 20021012 5.3 release for upload to ftp.gnu.org + modify ifdef's in etip.h.in to allow the etip.h header to compile with gcc 3.2 (patch by Dimitar Zhekov ). diff -urNd -urNd ncurses-5.3/README ncurses-5.3.20030906.orig/README --- ncurses-5.3/README Sat Aug 12 18:31:21 2000 +++ ncurses-5.3.20030906.orig/README Tue May 13 20:08:22 2003 @@ -1,4 +1,4 @@ --- $Id: README,v 1.20 2000/08/12 23:31:21 tom Exp $ +-- $Id: README,v 1.21 2003/02/08 19:36:39 tom Exp $ ------------------------------------------------------------------------------- README file for the ncurses package @@ -43,6 +43,14 @@ libform.so (shared) libform_g.a (debug enabled) +If you configure using the --enable-widec option, a "w" is appended to the +library names (e.g., libncursesw.a), and the resulting libraries support +wide-characters, e.g., via a UTF-8 locale. The corresponding header files +are compatible with the non-wide-character configuration; wide-character +features are provided by ifdef's in the header files. The wide-character +library interfaces are not binary-compatible with the non-wide-character +version. + The ncurses libraries implement the curses API. The panel, menu and forms libraries implement clones of the SVr4 panel, menu and forms APIs. The source code for these lives in the `ncurses', `panel', `menu', and `form' directories diff -urNd -urNd ncurses-5.3/aclocal.m4 ncurses-5.3.20030906.orig/aclocal.m4 --- ncurses-5.3/aclocal.m4 Sat Sep 21 18:59:01 2002 +++ ncurses-5.3.20030906.orig/aclocal.m4 Fri Sep 12 16:42:59 2003 @@ -1,5 +1,5 @@ dnl*************************************************************************** -dnl Copyright (c) 1998-2000,2001,2002 Free Software Foundation, Inc. * +dnl Copyright (c) 1998-2002,2003 Free Software Foundation, Inc. * dnl * dnl Permission is hereby granted, free of charge, to any person obtaining a * dnl copy of this software and associated documentation files (the * @@ -26,22 +26,24 @@ dnl authorization. * dnl*************************************************************************** dnl -dnl Author: Thomas E. Dickey 1996,1997,1998,1999,2000,2001 +dnl Author: Thomas E. Dickey 1995-2003 dnl -dnl $Id: aclocal.m4,v 1.285 2002/09/21 23:59:01 tom Exp $ +dnl $Id: aclocal.m4,v 1.313 2003/09/06 23:46:28 tom Exp $ dnl Macros used in NCURSES auto-configuration script. dnl dnl See http://invisible-island.net/autoconf/ for additional information. dnl dnl --------------------------------------------------------------------------- dnl --------------------------------------------------------------------------- +dnl CF_ADA_INCLUDE_DIRS version: 4 updated: 2002/12/01 00:12:15 +dnl ------------------- dnl Construct the list of include-options for the C programs in the Ada95 dnl binding. AC_DEFUN([CF_ADA_INCLUDE_DIRS], [ -ACPPFLAGS="$ACPPFLAGS -I. -I../../include" +ACPPFLAGS="-I. -I../../include $ACPPFLAGS" if test "$srcdir" != "."; then - ACPPFLAGS="$ACPPFLAGS -I\$(srcdir)/../../include" + ACPPFLAGS="-I\$(srcdir)/../../include $ACPPFLAGS" fi if test "$GCC" != yes; then ACPPFLAGS="$ACPPFLAGS -I\$(includedir)" @@ -57,6 +59,8 @@ AC_SUBST(ACPPFLAGS) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_ADD_CFLAGS version: 5 updated: 2002/12/01 00:12:15 +dnl ------------- dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS dnl The second parameter if given makes this macro verbose. AC_DEFUN([CF_ADD_CFLAGS], @@ -88,11 +92,13 @@ if test -n "$cf_new_cppflags" ; then ifelse($2,,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)]) - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" + CPPFLAGS="$cf_new_cppflags $CPPFLAGS" fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_ANSI_CC_CHECK version: 9 updated: 2001/12/30 17:53:34 +dnl ---------------- dnl This is adapted from the macros 'fp_PROG_CC_STDC' and 'fp_C_PROTOTYPES' dnl in the sharutils 4.2 distribution. AC_DEFUN([CF_ANSI_CC_CHECK], @@ -143,6 +149,8 @@ fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_ANSI_CC_REQD version: 3 updated: 1997/09/06 13:40:44 +dnl --------------- dnl For programs that must use an ANSI compiler, obtain compiler options that dnl will make it recognize prototypes. We'll do preprocessor checks in other dnl macros, since tools such as unproto can fake prototypes, but only part of @@ -159,6 +167,8 @@ fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_BOOL_DECL version: 6 updated: 2001/12/02 01:39:28 +dnl ------------ dnl Test if 'bool' is a builtin type in the configured C++ compiler. Some dnl older compilers (e.g., gcc 2.5.8) don't support 'bool' directly; gcc dnl 2.6.3 does, in anticipation of the ANSI C++ standard. @@ -185,6 +195,8 @@ fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_BOOL_SIZE version: 10 updated: 2002/02/23 20:38:31 +dnl ------------ dnl Test for the size of 'bool' in the configured C++ compiler (e.g., a type). dnl Don't bother looking for bool.h, since it's been deprecated. dnl @@ -251,6 +263,8 @@ fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_CFG_DEFAULTS version: 6 updated: 2003/07/12 15:15:19 +dnl --------------- dnl Determine the default configuration into which we'll install ncurses. This dnl can be overridden by the user's command-line options. There's two items to dnl look for: @@ -267,7 +281,7 @@ if test "x$prefix" = "xNONE" ; then case "$cf_cv_system_name" in # non-vendor systems don't have a conflict - openbsd*|netbsd*|freebsd*|linux*|cygwin*) + openbsd*|netbsd*|freebsd*|linux*|cygwin*|k*bsd*-gnu) prefix=/usr ;; *) prefix=$ac_default_prefix @@ -303,6 +317,8 @@ fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_CGETENT version: 3 updated: 2000/08/12 23:18:52 +dnl ---------- dnl Check if the terminal-capability database functions are available. If not, dnl ncurses has a much-reduced version. AC_DEFUN([CF_CGETENT],[ @@ -324,6 +340,8 @@ test "$cf_cv_cgetent" = yes && AC_DEFINE(HAVE_BSD_CGETENT) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_CHECK_CACHE version: 7 updated: 2001/12/19 00:50:10 +dnl -------------- dnl Check if we're accidentally using a cache from a different machine. dnl Derive the system name, as a check for reusing the autoconf cache. dnl @@ -354,6 +372,8 @@ fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_CHECK_ERRNO version: 9 updated: 2001/12/30 18:03:23 +dnl -------------- dnl Check for data that is usually declared in or , e.g., dnl the 'errno' variable. Define a DECL_xxx symbol if we must declare it dnl ourselves. @@ -383,6 +403,8 @@ CF_CHECK_EXTERN_DATA($1,int) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_CHECK_EXTERN_DATA version: 3 updated: 2001/12/30 18:03:23 +dnl -------------------- dnl Check for existence of external data in the current set of libraries. If dnl we can modify it, it's real enough. dnl $1 = the name to check @@ -406,6 +428,8 @@ ])dnl dnl --------------------------------------------------------------------------- +dnl CF_CPP_PARAM_INIT version: 4 updated: 2001/04/07 22:31:18 +dnl ----------------- dnl Check if the C++ compiler accepts duplicate parameter initialization. This dnl is a late feature for the standard and is not in some recent compilers dnl (1999/9/11). @@ -439,6 +463,8 @@ test "$cf_cv_cpp_param_init" = yes && AC_DEFINE(CPP_HAS_PARAM_INIT) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_CPP_VSCAN_FUNC version: 5 updated: 2001/12/02 01:39:28 +dnl ----------------- dnl Check if the g++ compiler supports vscan function (not a standard feature). AC_DEFUN([CF_CPP_VSCAN_FUNC], [ @@ -515,9 +541,13 @@ esac ])dnl dnl --------------------------------------------------------------------------- +dnl CF_DIRNAME version: 4 updated: 2002/12/21 19:25:52 +dnl ---------- dnl "dirname" is not portable, so we fake it with a shell script. -AC_DEFUN([CF_DIRNAME],[$1=`echo $2 | sed -e 's:/[[^/]]*$::'`])dnl +AC_DEFUN([CF_DIRNAME],[$1=`echo $2 | sed -e 's%/[[^/]]*$%%'`])dnl dnl --------------------------------------------------------------------------- +dnl CF_DIRS_TO_MAKE version: 3 updated: 2002/02/23 20:38:31 +dnl --------------- AC_DEFUN([CF_DIRS_TO_MAKE], [ DIRS_TO_MAKE="lib" @@ -537,12 +567,16 @@ AC_SUBST(DIRS_TO_MAKE) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_ERRNO version: 5 updated: 1997/11/30 12:44:39 +dnl -------- dnl Check if 'errno' is declared in AC_DEFUN([CF_ERRNO], [ CF_CHECK_ERRNO(errno) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_ETIP_DEFINES version: 3 updated: 2003/03/22 19:13:43 +dnl --------------- dnl Test for conflicting definitions of exception in gcc 2.8.0, etc., between dnl math.h and builtin.h, only for ncurses AC_DEFUN([CF_ETIP_DEFINES], @@ -554,7 +588,7 @@ do for cf_excp in "" MATH_EXCEPTION do - CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu" + CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu -I${srcdir}/include" test -n "$cf_math" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_math}" test -n "$cf_excp" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_excp}" AC_TRY_COMPILE([ @@ -571,6 +605,8 @@ CXXFLAGS="$cf_save_CXXFLAGS" ]) dnl --------------------------------------------------------------------------- +dnl CF_FUNC_MEMMOVE version: 5 updated: 2000/08/12 23:18:52 +dnl --------------- dnl Check for memmove, or a bcopy that can handle overlapping copy. If neither dnl is found, add our own version of memmove to the list of objects. AC_DEFUN([CF_FUNC_MEMMOVE], @@ -600,6 +636,8 @@ fi ])])dnl dnl --------------------------------------------------------------------------- +dnl CF_FUNC_POLL version: 2 updated: 2000/02/06 01:38:04 +dnl ------------ dnl See if the poll function really works. Some platforms have poll(), but dnl it does not work for terminals or files. AC_DEFUN([CF_FUNC_POLL],[ @@ -627,6 +665,8 @@ test "$cf_cv_working_poll" = "yes" && AC_DEFINE(HAVE_WORKING_POLL) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_FUNC_TERMIOS version: 2 updated: 2000/07/22 23:37:24 +dnl --------------- dnl Some old/broken variations define tcgetattr() only as a macro in dnl termio(s).h AC_DEFUN([CF_FUNC_TERMIOS],[ @@ -654,6 +694,8 @@ test "$cf_cv_have_tcgetattr" = yes && AC_DEFINE(HAVE_TCGETATTR) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_FUNC_VSSCANF version: 3 updated: 2001/12/19 00:50:10 +dnl --------------- dnl Check for vsscanf() function, which is in c9x but generally not in earlier dnl versions of C. It is in the GNU C library, and can often be simulated by dnl other functions. @@ -697,6 +739,8 @@ ])dnl dnl --------------------------------------------------------------------------- +dnl CF_GCC_ATTRIBUTES version: 9 updated: 2002/12/21 19:25:52 +dnl ----------------- dnl Test for availability of useful gcc __attribute__ directives to quiet dnl compiler warnings. Though useful, not all are supported -- and contrary dnl to documentation, unrecognized directives cause older compilers to barf. @@ -761,8 +805,6 @@ if AC_TRY_EVAL(ac_compile); then test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute) cat conftest.h >>confdefs.h -# else -# sed -e 's/__attr.*/\/*nothing*\//' conftest.h >>confdefs.h fi done else @@ -772,17 +814,35 @@ fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_GCC_VERSION version: 3 updated: 2003/09/06 19:16:57 +dnl -------------- +dnl Find version of gcc +AC_DEFUN([CF_GCC_VERSION],[ +AC_REQUIRE([AC_PROG_CC]) +GCC_VERSION=none +if test "$GCC" = yes ; then + AC_MSG_CHECKING(version of $CC) + GCC_VERSION="`${CC} --version|sed -e '2,$d' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`" + test -z "$GCC_VERSION" && GCC_VERSION=unknown + AC_MSG_RESULT($GCC_VERSION) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GCC_WARNINGS version: 15 updated: 2003/07/05 18:42:30 +dnl --------------- dnl Check if the compiler supports useful warning options. There's a few that dnl we don't use, simply because they're too noisy: dnl dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x) dnl -Wredundant-decls (system headers make this too noisy) dnl -Wtraditional (combines too many unrelated messages, only a few useful) -dnl -Wwrite-strings (too noisy, but should review occasionally) +dnl -Wwrite-strings (too noisy, but should review occasionally). This +dnl is enabled for ncurses using "--enable-const". dnl -pedantic dnl AC_DEFUN([CF_GCC_WARNINGS], [ +AC_REQUIRE([CF_GCC_VERSION]) if test "$GCC" = yes then cat > conftest.$ac_ext <&1 | grep '[[0-9]].[[0-9]][[0-9]]*' |\ - sed -e 's/[[^0-9 \.]]//g' | $AWK '{print $[1];}'` -case $cf_cv_gnat_version in +AC_MSG_CHECKING(for gnat version) +cf_gnat_version=`${cf_ada_make-gnatmake} -v 2>&1 | grep '[[0-9]].[[0-9]][[0-9]]*' |\ + sed -e '2,$d' -e 's/[[^0-9 \.]]//g' -e 's/^[[ ]]*//' -e 's/ .*//'` +AC_MSG_RESULT($cf_gnat_version) + +case $cf_gnat_version in 3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*) cf_cv_prog_gnat_correct=yes ;; - *) echo Unsupported GNAT version $cf_cv_gnat_version. Required is 3.11 or better. Disabling Ada95 binding. + *) echo Unsupported GNAT version $cf_gnat_version. Required is 3.11 or better. Disabling Ada95 binding. cf_cv_prog_gnat_correct=no ;; esac -case $cf_cv_gnat_version in - 3.1*|[[4-9]].*) +case $cf_gnat_version in + 3.[[1-9]]*|[[4-9]].*) cf_compile_generics=generics cf_generic_objects="\$(GENOBJS)" ;; @@ -867,6 +945,8 @@ esac ]) dnl --------------------------------------------------------------------------- +dnl CF_GNU_SOURCE version: 3 updated: 2000/10/29 23:30:53 +dnl ------------- dnl Check if we must define _GNU_SOURCE to get a reasonable value for dnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect dnl (or misfeature) of glibc2, which breaks portability of many applications, @@ -895,6 +975,8 @@ test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" ])dnl dnl --------------------------------------------------------------------------- +dnl CF_GPP_LIBRARY version: 8 updated: 2003/02/02 01:41:46 +dnl -------------- dnl If we're trying to use g++, test if libg++ is installed (a rather common dnl problem :-). If we have the compiler but no library, we'll be able to dnl configure, but won't be able to build the c++ demo program. @@ -909,7 +991,7 @@ cf_gpp_libname=g++ ;; esac -if test "$ac_cv_prog_gxx" = yes; then +if test "$GXX" = yes; then AC_MSG_CHECKING([for lib$cf_gpp_libname]) cf_save="$LIBS" LIBS="$LIBS -l$cf_gpp_libname" @@ -937,20 +1019,37 @@ fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_GXX_VERSION version: 3 updated: 2003/09/06 19:16:21 +dnl -------------- +dnl Check for version of g++ +AC_DEFUN([CF_GXX_VERSION],[ +AC_REQUIRE([AC_PROG_CPP]) +GXX_VERSION=none +if test "$GXX" = yes; then + AC_MSG_CHECKING(version of g++) + GXX_VERSION="`${CXX-g++} --version|sed -e '2,$d'`" + AC_MSG_RESULT($GXX_VERSION) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_HELP_MESSAGE version: 3 updated: 1998/01/14 10:56:23 +dnl --------------- dnl Insert text into the help-message, for readability, from AC_ARG_WITH. AC_DEFUN([CF_HELP_MESSAGE], [AC_DIVERT_HELP([$1])dnl ])dnl dnl --------------------------------------------------------------------------- +dnl CF_INCLUDE_DIRS version: 4 updated: 2002/12/01 00:12:15 +dnl --------------- dnl Construct the list of include-options according to whether we're building dnl in the source directory or using '--srcdir=DIR' option. If we're building dnl with gcc, don't append the includedir if it happens to be /usr/include, dnl since that usually breaks gcc's shadow-includes. AC_DEFUN([CF_INCLUDE_DIRS], [ -CPPFLAGS="$CPPFLAGS -I. -I../include" +CPPFLAGS="-I. -I../include $CPPFLAGS" if test "$srcdir" != "."; then - CPPFLAGS="$CPPFLAGS -I\$(srcdir)/../include" + CPPFLAGS="-I\$(srcdir)/../include $CPPFLAGS" fi if test "$GCC" != yes; then CPPFLAGS="$CPPFLAGS -I\$(includedir)" @@ -966,6 +1065,8 @@ AC_SUBST(CPPFLAGS) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_ISASCII version: 3 updated: 2000/08/12 23:18:52 +dnl ---------- dnl Check if we have either a function or macro for 'isascii()'. AC_DEFUN([CF_ISASCII], [ @@ -979,6 +1080,8 @@ test "$cf_cv_have_isascii" = yes && AC_DEFINE(HAVE_ISASCII) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_LIBUTF8 version: 2 updated: 2002/01/19 22:51:32 +dnl ---------- dnl Check for libutf8 AC_DEFUN([CF_LIBUTF8], [ @@ -998,6 +1101,8 @@ fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_LIB_PREFIX version: 7 updated: 2001/01/12 01:23:48 +dnl ------------- dnl Compute the library-prefix for the given host system dnl $1 = variable to set AC_DEFUN([CF_LIB_PREFIX], @@ -1011,6 +1116,8 @@ AC_SUBST(LIB_PREFIX) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_LIB_RULES version: 29 updated: 2003/07/19 16:05:52 +dnl ------------ dnl Append definitions and rules for the given models to the subdirectory dnl Makefiles, and the recursion rule for the top-level Makefile. If the dnl subdirectory is a library-source directory, modify the LIBRARIES list in @@ -1054,8 +1161,10 @@ esac fi # cygwin needs import library, and has unique naming convention + # use autodetected ${cf_prefix} for import lib and static lib, but + # use 'cyg' prefix for shared lib. if test $cf_cv_shlib_version = cygdll ; then - SHARED_LIB="../lib/${cf_prefix}${cf_dir}\$(ABI_VERSION).dll" + SHARED_LIB="../lib/cyg${cf_dir}\$(ABI_VERSION).dll" IMPORT_LIB="../lib/${cf_prefix}${cf_dir}.dll.a" LIBS_TO_MAKE="$LIBS_TO_MAKE \$(SHARED_LIB) \$(IMPORT_LIB)" continue @@ -1070,7 +1179,7 @@ termlib+*) #(vi ;; *) #(vi - cf_item=`echo $LIBS_TO_MAKE |sed -e s/$LIB_NAME/$TINFO_NAME/g` + cf_item=`echo $LIBS_TO_MAKE |sed -e s%$LIB_NAME%$TINFO_NAME%g` LIBS_TO_MAKE="$cf_item $LIBS_TO_MAKE" ;; esac @@ -1128,7 +1237,7 @@ ldconfig="$LDCONFIG" \ overwrite=$WITH_OVERWRITE \ depend="$cf_depend" \ - target="$target" \ + host="$host" \ $srcdir/$cf_dir/modules >>$cf_dir/Makefile for cf_subdir2 in $cf_subdirs lib do @@ -1364,6 +1473,8 @@ ])dnl dnl --------------------------------------------------------------------------- +dnl CF_LIB_SUFFIX version: 12 updated: 2002/01/20 01:43:41 +dnl ------------- dnl Compute the library file-suffix from the given model name dnl $1 = model name dnl $2 = variable to set @@ -1387,6 +1498,8 @@ test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}" ])dnl dnl --------------------------------------------------------------------------- +dnl CF_LIB_TYPE version: 4 updated: 2000/10/20 22:57:49 +dnl ----------- dnl Compute the string to append to -library from the given model name dnl $1 = model name dnl $2 = variable to set @@ -1403,6 +1516,8 @@ test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}" ])dnl dnl --------------------------------------------------------------------------- +dnl CF_LINK_DATAONLY version: 6 updated: 2003/02/02 01:41:46 +dnl ---------------- dnl Some systems have a non-ANSI linker that doesn't pull in modules that have dnl only data (i.e., no functions), for example NeXT. On those systems we'll dnl have to provide wrappers for global tables to ensure they're linked @@ -1418,7 +1533,7 @@ EOF if AC_TRY_EVAL(ac_compile) ; then mv conftest.o data.o && \ - ( $AR $AR_OPTS conftest.a data.o ) 2>&5 1>/dev/null + ( $AR $AR_OPTS conftest.a data.o ) 2>&AC_FD_CC 1>/dev/null fi rm -f conftest.$ac_ext data.o cat >conftest.$ac_ext <&5 1>/dev/null + ( $AR $AR_OPTS conftest.a func.o ) 2>&AC_FD_CC 1>/dev/null fi rm -f conftest.$ac_ext func.o - ( eval $ac_cv_prog_RANLIB conftest.a ) 2>&5 >/dev/null + ( eval $RANLIB conftest.a ) 2>&AC_FD_CC >/dev/null cf_saveLIBS="$LIBS" LIBS="conftest.a $LIBS" AC_TRY_RUN([ @@ -1464,6 +1579,8 @@ ])dnl dnl --------------------------------------------------------------------------- +dnl CF_LINK_FUNCS version: 5 updated: 2003/02/02 01:41:46 +dnl ------------- dnl Most Unix systems have both link and symlink, a few don't have symlink. dnl A few non-Unix systems implement symlink, but not link. dnl A few non-systems implement neither (or have nonfunctional versions). @@ -1473,7 +1590,7 @@ remove \ unlink ) -if test "$ac_cv_prog_cc_cross" = yes ; then +if test "$cross_compiling" = yes ; then AC_CHECK_FUNCS( \ link \ symlink ) @@ -1519,6 +1636,8 @@ fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_MAKEFLAGS version: 9 updated: 2001/12/30 18:17:27 +dnl ------------ dnl Some 'make' programs support $(MAKEFLAGS), some $(MFLAGS), to pass 'make' dnl options to lower-levels. It's very useful for "make -n" -- if we have it. dnl (GNU 'make' does both, something POSIX 'make', which happens to make the @@ -1556,6 +1675,8 @@ AC_SUBST(cf_cv_makeflags) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_MAKE_TAGS version: 2 updated: 2000/10/04 09:18:40 +dnl ------------ dnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have dnl a monocase filesystem. AC_DEFUN([CF_MAKE_TAGS],[ @@ -1583,6 +1704,8 @@ AC_SUBST(MAKE_LOWER_TAGS) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_MANPAGE_FORMAT version: 6 updated: 2002/01/19 22:51:32 +dnl ----------------- dnl Option to allow user to override automatic configuration of manpage format. dnl There are several special cases. AC_DEFUN([CF_MANPAGE_FORMAT], @@ -1635,6 +1758,8 @@ AC_MSG_RESULT($MANPAGE_FORMAT) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_MANPAGE_RENAMES version: 6 updated: 2002/01/19 22:51:32 +dnl ------------------ dnl The Debian people have their own naming convention for manpages. This dnl option lets us override the name of the file containing renaming, or dnl disable it altogether. @@ -1680,6 +1805,8 @@ AC_SUBST(MANPAGE_RENAMES) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_MANPAGE_SYMLINKS version: 3 updated: 2002/01/19 22:51:32 +dnl ------------------- dnl Some people expect each tool to make all aliases for manpages in the dnl man-directory. This accommodates the older, less-capable implementations dnl of 'man', and is optional. @@ -1695,6 +1822,8 @@ AC_MSG_RESULT($MANPAGE_SYMLINKS) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_MANPAGE_TBL version: 3 updated: 2002/01/19 22:51:32 +dnl -------------- dnl This option causes manpages to be run through tbl(1) to generate tables dnl correctly. AC_DEFUN([CF_MANPAGE_TBL], @@ -1709,6 +1838,8 @@ AC_MSG_RESULT($MANPAGE_TBL) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_MAN_PAGES version: 23 updated: 2002/12/21 22:46:07 +dnl ------------ dnl Try to determine if the man-pages on the system are compressed, and if dnl so, what format is used. Use this information to construct a script that dnl will install man-pages. @@ -1888,7 +2019,7 @@ ;; esac cat >>man/edit_man.sh < -#ifdef HAVE_LIBUTF8_H -#include -#endif], - [mbstate_t state], - [cf_cv_mbstate_t=no], - [AC_TRY_COMPILE([ -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif], - [mbstate_t value], - [cf_cv_mbstate_t=yes], - [cf_cv_mbstate_t=unknown])])]) - -if test "$cf_cv_mbstate_t" = yes ; then - AC_DEFINE(NEED_WCHAR_H) -fi - -if test "$cf_cv_mbstate_t" != unknown ; then - AC_DEFINE(HAVE_MBSTATE_T) -fi -])dnl -dnl --------------------------------------------------------------------------- +dnl CF_MIXEDCASE_FILENAMES version: 2 updated: 2000/10/04 09:18:40 +dnl ---------------------- dnl Check if the file-system supports mixed-case filenames. If we're able to dnl create a lowercase name and see it as uppercase, it doesn't support that. AC_DEFUN([CF_MIXEDCASE_FILENAMES], @@ -2017,6 +2121,8 @@ test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_MKSTEMP version: 3 updated: 2001/11/08 20:59:59 +dnl ---------- dnl Check for a working mkstemp. This creates two files, checks that they are dnl successfully created and distinct (AmigaOS apparently fails on the last). AC_DEFUN([CF_MKSTEMP],[ @@ -2065,6 +2171,8 @@ fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_OBJ_SUBDIR version: 4 updated: 2002/02/23 20:38:31 +dnl ------------- dnl Compute the object-directory name from the given model name AC_DEFUN([CF_OBJ_SUBDIR], [ @@ -2083,6 +2191,8 @@ esac ])dnl dnl --------------------------------------------------------------------------- +dnl CF_PATHSEP version: 3 updated: 2001/01/12 01:23:53 +dnl ---------- dnl Provide a value for the $PATH and similar separator AC_DEFUN([CF_PATHSEP], [ @@ -2094,6 +2204,8 @@ AC_SUBST(PATHSEP) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_PATH_SYNTAX version: 9 updated: 2002/09/17 23:03:38 +dnl -------------- dnl Check the argument to see that it looks like a pathname. Rewrite it if it dnl begins with one of the prefix/exec_prefix variables, and then again if the dnl result begins with 'NONE'. This is necessary to work around autoconf's @@ -2123,6 +2235,41 @@ esac ])dnl dnl --------------------------------------------------------------------------- +dnl CF_PREDEFINE version: 1 updated: 2003/07/26 17:53:56 +dnl ------------ +dnl Add definitions to CPPFLAGS to ensure they're predefined for all compiles. +dnl +dnl $1 = symbol to test +dnl $2 = value (if any) to use for a predefinition +AC_DEFUN([CF_PREDEFINE], +[ +AC_MSG_CHECKING(if we must define $1) +AC_TRY_COMPILE([#include +],[ +#ifndef $1 +make an error +#endif],[cf_result=no],[cf_result=yes]) +AC_MSG_RESULT($cf_result) + +if test "$cf_result" = yes ; then + CPPFLAGS="$CPPFLAGS ifelse($2,,-D$1,[-D$1=$2])" +elif test "x$2" != "x" ; then + AC_MSG_CHECKING(checking for compatible value versus $2) + AC_TRY_COMPILE([#include +],[ +#if $1-$2 < 0 +make an error +#endif],[cf_result=yes],[cf_result=no]) + AC_MSG_RESULT($cf_result) + if test "$cf_result" = no ; then + # perhaps we can override it - try... + CPPFLAGS="$CPPFLAGS -D$1=$2" + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_EXT version: 8 updated: 2002/12/21 19:25:52 +dnl ----------- dnl Compute $PROG_EXT, used for non-Unix ports, such as OS/2 EMX. AC_DEFUN([CF_PROG_EXT], [ @@ -2134,7 +2281,7 @@ CFLAGS="$CFLAGS -Zmt" CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__" CXXFLAGS="$CXXFLAGS -Zmt" - LDFLAGS=`echo "$LDFLAGS -Zmt -Zcrtdll" | sed "s/-Zexe//g"` + LDFLAGS=`echo "$LDFLAGS -Zmt -Zcrtdll" | sed -e "s%-Zexe%%g"` PROG_EXT=".exe" ;; cygwin*) @@ -2145,6 +2292,8 @@ test -n "$PROG_EXT" && AC_DEFINE_UNQUOTED(PROG_EXT,"$PROG_EXT") ])dnl dnl --------------------------------------------------------------------------- +dnl CF_PROG_INSTALL version: 5 updated: 2002/12/21 22:46:07 +dnl --------------- dnl Force $INSTALL to be an absolute-path. Otherwise, edit_man.sh and the dnl misc/tabset install won't work properly. Usually this happens only when dnl using the fallback mkinstalldirs script @@ -2156,11 +2305,13 @@ *) CF_DIRNAME(cf_dir,$INSTALL) test -z "$cf_dir" && cf_dir=. - INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's:^.*/::'` + INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'` ;; esac ])dnl dnl --------------------------------------------------------------------------- +dnl CF_REGEX version: 3 updated: 1997/11/01 14:26:01 +dnl -------- dnl Attempt to determine if we've got one of the flavors of regular-expression dnl code that we can support. AC_DEFUN([CF_REGEX], @@ -2193,6 +2344,8 @@ esac ])dnl dnl --------------------------------------------------------------------------- +dnl CF_SHARED_OPTS version: 29 updated: 2003/07/12 15:15:19 +dnl -------------- dnl Attempt to determine the appropriate CC/LD options for creating a shared dnl library. dnl @@ -2303,7 +2456,7 @@ MK_SHARED_LIB='$(LD) -shared -rdata_shared -soname `basename $[@]` -o $[@]' cf_cv_rm_so_locs=yes ;; - linux*|gnu*) + linux*|gnu*|k*bsd*-gnu) if test "$DFT_LWR_MODEL" = "shared" ; then LOCAL_LDFLAGS="-Wl,-rpath,`pwd`/lib" LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" @@ -2364,7 +2517,7 @@ ;; sco3.2v5*) # (also uw2* and UW7) hops 13-Apr-98 # tested with osr5.0.5 - if test "$ac_cv_prog_gcc" != yes; then + if test "$GCC" != yes; then CC_SHARED_OPTS='-belf -KPIC' fi MK_SHARED_LIB='$(LD) -dy -G -h `basename $[@] .$(REL_VERSION)`.$(ABI_VERSION) -o [$]@' @@ -2378,7 +2531,7 @@ ;; sunos4*) # tested with SunOS 4.1.1 and gcc 2.7.0 - if test "$ac_cv_prog_gcc" != yes; then + if test "$GCC" != yes; then CC_SHARED_OPTS='-KPIC' fi MK_SHARED_LIB='$(LD) -assert pure-text -o $[@]' @@ -2386,7 +2539,7 @@ ;; solaris2*) # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2 - if test "$ac_cv_prog_gcc" != yes; then + if test "$GCC" != yes; then CC_SHARED_OPTS='-KPIC' fi MK_SHARED_LIB='$(LD) -dy -G -h `basename $[@] .$(REL_VERSION)`.$(ABI_VERSION) -o $[@]' @@ -2402,7 +2555,7 @@ ;; sysv5uw7*|unix_sv*) # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc) - if test "$ac_cv_prog_gcc" != yes; then + if test "$GCC" != yes; then CC_SHARED_OPTS='-KPIC' fi MK_SHARED_LIB='$(LD) -d y -G -o [$]@' @@ -2449,6 +2602,8 @@ AC_SUBST(INSTALL_LIB) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_SIZECHANGE version: 8 updated: 2000/11/04 12:22:16 +dnl ------------- dnl Check for definitions & structures needed for window size-changing dnl FIXME: check that this works with "snake" (HP-UX 10.x) AC_DEFUN([CF_SIZECHANGE], @@ -2517,6 +2672,8 @@ fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_SRC_MODULES version: 14 updated: 2002/01/19 22:51:32 +dnl -------------- dnl For each parameter, test if the source-directory exists, and if it contains dnl a 'modules' file. If so, add to the list $cf_cv_src_modules which we'll dnl use in CF_LIB_RULES. @@ -2614,6 +2771,8 @@ fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_STDCPP_LIBRARY version: 5 updated: 2000/08/12 23:18:52 +dnl ----------------- dnl Check for -lstdc++, which is GNU's standard C++ library. AC_DEFUN([CF_STDCPP_LIBRARY], [ @@ -2642,10 +2801,14 @@ fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_STRIP_G_OPT version: 3 updated: 2002/12/21 19:25:52 +dnl -------------- dnl Remove "-g" option from the compiler options AC_DEFUN([CF_STRIP_G_OPT], -[$1=`echo ${$1} | sed -e 's/-g //' -e 's/-g$//'`])dnl +[$1=`echo ${$1} | sed -e 's%-g %%' -e 's%-g$%%'`])dnl dnl --------------------------------------------------------------------------- +dnl CF_STRUCT_SIGACTION version: 3 updated: 2000/08/12 23:18:52 +dnl ------------------- dnl Check if we need _POSIX_SOURCE defined to use struct sigaction. We'll only dnl do this if we've found the sigaction function. dnl @@ -2671,6 +2834,8 @@ fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_STRUCT_TERMIOS version: 5 updated: 2000/11/04 12:22:46 +dnl ----------------- dnl Some machines require _POSIX_SOURCE to completely define struct termios. dnl If so, define SVR4_TERMIO AC_DEFUN([CF_STRUCT_TERMIOS],[ @@ -2705,6 +2870,8 @@ fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_SUBST version: 2 updated: 1997/09/06 23:41:28 +dnl -------- dnl Shorthand macro for substituting things that the user may override dnl with an environment variable. dnl @@ -2721,6 +2888,8 @@ $2=${cf_cv_subst_$2} ])dnl dnl --------------------------------------------------------------------------- +dnl CF_SUBST_NCURSES_VERSION version: 7 updated: 2003/06/07 16:22:51 +dnl ------------------------ dnl Get the version-number for use in shared-library naming, etc. AC_DEFUN([CF_SUBST_NCURSES_VERSION], [ @@ -2739,12 +2908,13 @@ dnl We need these values in the generated makefiles AC_SUBST(cf_cv_rel_version) AC_SUBST(cf_cv_abi_version) -AC_SUBST(cf_cv_cc_bool_type) AC_SUBST(cf_cv_builtin_bool) AC_SUBST(cf_cv_header_stdbool_h) AC_SUBST(cf_cv_type_of_bool)dnl ])dnl dnl --------------------------------------------------------------------------- +dnl CF_SYS_TIME_SELECT version: 4 updated: 2000/10/04 09:18:40 +dnl ------------------ dnl Check if we can include with ; this breaks on dnl older SCO configurations. AC_DEFUN([CF_SYS_TIME_SELECT], @@ -2766,6 +2936,8 @@ test "$cf_cv_sys_time_select" = yes && AC_DEFINE(HAVE_SYS_TIME_SELECT) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_TYPEOF_CHTYPE version: 4 updated: 2000/10/04 09:18:40 +dnl ---------------- dnl Determine the type we should use for chtype (and attr_t, which is treated dnl as the same thing). We want around 32 bits, so on most machines want a dnl long, but on newer 64-bit machines, probably want an int. If we're using @@ -2835,6 +3007,8 @@ ])dnl dnl --------------------------------------------------------------------------- +dnl CF_TYPE_SIGACTION version: 3 updated: 2000/08/12 23:18:52 +dnl ----------------- dnl AC_DEFUN([CF_TYPE_SIGACTION], [ @@ -2849,6 +3023,8 @@ test "$cf_cv_type_sigaction" = yes && AC_DEFINE(HAVE_TYPE_SIGACTION) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_UNSIGNED_LITERALS version: 2 updated: 1998/02/07 22:10:16 +dnl -------------------- dnl Test if the compiler supports 'U' and 'L' suffixes. Only old compilers dnl won't, but they're still there. AC_DEFUN([CF_UNSIGNED_LITERALS], @@ -2862,6 +3038,8 @@ AC_MSG_RESULT($cf_cv_unsigned_literals) ])dnl dnl --------------------------------------------------------------------------- +dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59 +dnl -------- dnl Make an uppercase version of a variable dnl $1=uppercase($2) AC_DEFUN([CF_UPPER], @@ -2869,11 +3047,184 @@ $1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` ])dnl dnl --------------------------------------------------------------------------- +dnl CF_VERBOSE version: 2 updated: 1997/09/05 10:45:14 +dnl ---------- dnl Use AC_VERBOSE w/o the warnings AC_DEFUN([CF_VERBOSE], [test -n "$verbose" && echo " $1" 1>&AC_FD_MSG ])dnl dnl --------------------------------------------------------------------------- +dnl CF_WCHAR_TYPE version: 1 updated: 2003/03/22 19:13:43 +dnl ------------- +dnl Check if type wide-character type $1 is declared, and if so, which header +dnl file is needed. The second parameter is used to set a shell variable when +dnl the type is not found. The first parameter sets a shell variable for the +dnl opposite sense. +AC_DEFUN([CF_WCHAR_TYPE], +[ +# This is needed on Tru64 5.0 to declare $1 +AC_CACHE_CHECK(if we must include wchar.h to declare $1,cf_cv_$1,[ +AC_TRY_COMPILE([ +#include +#ifdef HAVE_LIBUTF8_H +#include +#endif], + [$1 state], + [cf_cv_$1=no], + [AC_TRY_COMPILE([ +#include +#include +#ifdef HAVE_LIBUTF8_H +#include +#endif], + [$1 value], + [cf_cv_$1=yes], + [cf_cv_$1=unknown])])]) + +if test "$cf_cv_$1" = yes ; then + AC_DEFINE(NEED_WCHAR_H) + NEED_WCHAR_H=1 +fi + +ifelse($2,,,[ +# if we do not find $1 in either place, use substitution to provide a fallback. +if test "$cf_cv_$1" = unknown ; then + $2=1 +fi +]) +ifelse($3,,,[ +# if we find $1 in either place, use substitution to provide a fallback. +if test "$cf_cv_$1" != unknown ; then + $3=1 +fi +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_DBMALLOC version: 2 updated: 2002/12/29 21:11:45 +dnl ---------------- +dnl Configure-option for dbmalloc +AC_DEFUN([CF_WITH_DBMALLOC],[ +AC_MSG_CHECKING(if you want to link with dbmalloc for testing) +AC_ARG_WITH(dbmalloc, + [ --with-dbmalloc test: use Conor Cahill's dbmalloc library], + [with_dbmalloc=$withval], + [with_dbmalloc=no]) +AC_MSG_RESULT($with_dbmalloc) +if test $with_dbmalloc = yes ; then + AC_CHECK_LIB(dbmalloc,debug_malloc) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_DMALLOC version: 2 updated: 2002/12/29 21:11:45 +dnl --------------- +dnl Configure-option for dmalloc +AC_DEFUN([CF_WITH_DMALLOC],[ +AC_MSG_CHECKING(if you want to link with dmalloc for testing) +AC_ARG_WITH(dmalloc, + [ --with-dmalloc test: use Gray Watson's dmalloc library], + [with_dmalloc=$withval], + [with_dmalloc=no]) +AC_MSG_RESULT($with_dmalloc) +if test $with_dmalloc = yes ; then + AC_CHECK_LIB(dmalloc,dmalloc_debug) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_LIBTOOL version: 8 updated: 2003/09/06 19:15:56 +dnl --------------- +dnl Provide a configure option to incorporate libtool. Define several useful +dnl symbols for the makefile rules. +AC_DEFUN([CF_WITH_LIBTOOL], +[ +LIBTOOL= + +# common library maintenance symbols that are convenient for libtool scripts: +LIB_CREATE='$(AR) -cr' +LIB_OBJECT='$(OBJECTS)' +LIB_SUFFIX=.a +LIB_PREP="$RANLIB" + +# symbols used to prop libtool up to enable it to determine what it should be +# doing: +LIB_CLEAN= +LIB_COMPILE= +LIB_LINK= +LIB_INSTALL= +LIB_UNINSTALL= + +AC_MSG_CHECKING(if you want to build libraries with libtool) +AC_ARG_WITH(libtool, + [ --with-libtool generate libraries with libtool], + [with_libtool=$withval], + [with_libtool=no]) +AC_MSG_RESULT($with_libtool) +if test "$with_libtool" != "no"; then + if test "$with_libtool" != "yes" ; then + CF_PATH_SYNTAX(with_libtool) + LIBTOOL=$with_libtool + else + AC_PATH_PROG(LIBTOOL,libtool) + fi + if test -z "$LIBTOOL" ; then + AC_MSG_ERROR(Cannot find libtool) + fi + + LIB_CREATE='$(LIBTOOL) --mode=link $(CC) -rpath $(DESTDIR)$(libdir) -version-info `cut -f1 $(srcdir)/VERSION` -o' + LIB_OBJECT='$(OBJECTS:.o=.lo)' + LIB_SUFFIX=.la + LIB_CLEAN='$(LIBTOOL) --mode=clean' + LIB_COMPILE='$(LIBTOOL) --mode=compile' + LIB_LINK='$(LIBTOOL) --mode=link' + LIB_INSTALL='$(LIBTOOL) --mode=install' + LIB_UNINSTALL='$(LIBTOOL) --mode=uninstall' + LIB_PREP=: + + # Show the version of libtool + AC_MSG_CHECKING(version of libtool) + + # Save the version in a cache variable - this is not entirely a good + # thing, but the version string from libtool is very ugly, and for + # bug reports it might be useful to have the original string. + cf_cv_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '2,$d' -e 's/^[[^1-9]]*//' -e 's/[[^0-9.]].*//'` + AC_MSG_RESULT($cf_cv_libtool_version) + if test -z "$cf_cv_libtool_version" ; then + AC_MSG_ERROR(This is not libtool) + fi + + # special hack to add --tag option for C++ compiler + case $cf_cv_libtool_version in + 1.[[5-9]]*|[[2-9]]*) + LIBTOOL_CXX="$LIBTOOL --tag=CXX" + ;; + *) + LIBTOOL_CXX="$LIBTOOL" + ;; + esac +else + LIBTOOL="" + LIBTOOL_CXX="" +fi + +test -z "$LIBTOOL" && ECHO_LT= + +AC_SUBST(LIBTOOL) +AC_SUBST(LIBTOOL_CXX) + +AC_SUBST(LIB_CREATE) +AC_SUBST(LIB_OBJECT) +AC_SUBST(LIB_SUFFIX) +AC_SUBST(LIB_PREP) + +AC_SUBST(LIB_CLEAN) +AC_SUBST(LIB_COMPILE) +AC_SUBST(LIB_LINK) +AC_SUBST(LIB_INSTALL) +AC_SUBST(LIB_UNINSTALL) + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_PATH version: 6 updated: 1998/10/11 00:40:17 +dnl ------------ dnl Wrapper for AC_ARG_WITH to ensure that user supplies a pathname, not just dnl defaulting to yes/no. dnl @@ -2891,6 +3242,8 @@ AC_SUBST($3)dnl ])dnl dnl --------------------------------------------------------------------------- +dnl CF_WITH_PATHLIST version: 5 updated: 2001/12/10 01:28:30 +dnl ---------------- dnl Process an option specifying a list of colon-separated paths. dnl dnl $1 = option name @@ -2930,3 +3283,33 @@ AC_SUBST($3)dnl ])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_SYSMOUSE version: 2 updated: 2003/03/22 19:13:43 +dnl ---------------- +dnl If we can compile with sysmouse, make it available unless it is not wanted. +AC_DEFUN([CF_WITH_SYSMOUSE],[ +# not everyone has "test -c" +if test -c /dev/sysmouse 2>/dev/null ; then +AC_MSG_CHECKING(if you want to use sysmouse) +AC_ARG_WITH(sysmouse, + [ --with-sysmouse use sysmouse (FreeBSD console)], + [cf_with_sysmouse=$withval], + [cf_with_sysmouse=maybe]) + if test "$cf_with_sysmouse" != no ; then + AC_TRY_COMPILE([ +#include +#if (__FreeBSD_version >= 400017) +#include +#include +#else +#include +#endif +],[ + struct mouse_info the_mouse; + ioctl(0, CONS_MOUSECTL, &the_mouse); +],[cf_with_sysmouse=yes],[cf_with_sysmouse=no]) + fi +AC_MSG_RESULT($cf_with_sysmouse) +test "$cf_with_sysmouse" = yes && AC_DEFINE(USE_SYSMOUSE) +fi +])dnl diff -urNd -urNd ncurses-5.3/announce.html.in ncurses-5.3.20030906.orig/announce.html.in --- ncurses-5.3/announce.html.in Sat Oct 12 18:35:32 2002 +++ ncurses-5.3.20030906.orig/announce.html.in Tue May 13 20:08:22 2003 @@ -1,11 +1,12 @@ -Announcing ncurses @VERSION@ Pre-Release +Announcing ncurses @VERSION@ + @@ -35,9 +36,9 @@ The ncurses distribution is available via anonymous FTP at the GNU distribution site -ftp://ftp.gnu.org/pub/gnu/ncurses. +ftp://ftp.gnu.org/gnu/ncurses/ .
It is also available at -ftp://invisible-island.net/ncurses. +ftp://invisible-island.net/ncurses/ .

Release Notes

@@ -317,61 +318,61 @@
cdk
Curses Development Kit
-http://invisible-island.net/cdk. +http://invisible-island.net/cdk/
-http://www.vexus.ca/CDK.html +http://www.vexus.ca/products/CDK/
ded
directory-editor
-http://invisible-island.net/ded. +http://invisible-island.net/ded/
dialog
the underlying application used in Slackware's setup, and the basis for similar applications on GNU/Linux.
-http://invisible-island.net/dialog. +http://invisible-island.net/dialog/
lynx
the character-screen WWW browser
-http://lynx.isc.org/release. +http://lynx.isc.org/release/
Midnight Commander
file manager
-www.gnome.org/mc/. +http://www.ibiblio.org/mc/
mutt
mail utility
-http://www.mutt.org. +http://www.mutt.org/
ncftp
file-transfer utility
-http://www.ncftp.com. +http://www.ncftp.com/
nvi
New vi versions 1.50 are able to use ncurses versions 1.9.7 and later.
-http://www.bostic.com/vi/. +http://www.bostic.com/vi/
tin
newsreader, supporting color, MIME
-http://www.tin.org. +http://www.tin.org/
taper
tape archive utility
-http://members.iinet.net.au/~yusuf/taper/. +http://taper.e-survey.net.au/
vh-1.6
Volks-Hypertext browser for the Jargon File
-http://www.bg.debian.org/Packages/unstable/text/vh.html. +http://www.debian.org/Packages/unstable/text/vh.html as well as some that use ncurses for the terminfo support alone:
minicom
terminal emulator
-http://www.pp.clinet.fi/~walker/minicom.html. +http://www.netsonic.fi/~walker/minicom.html
vile
vi-like-emacs
-http://invisible-island.net/vile. +http://invisible-island.net/vile/

@@ -382,7 +383,7 @@ The original developers of ncurses are Zeyd Ben-Halim and -Eric S. Raymond. +Eric S. Raymond. Ongoing work is being done by Thomas Dickey and @@ -404,7 +405,7 @@ testing of this package.

Beta versions of ncurses and patches to the current release are made available at -ftp://invisible-island.net/ncurses. +ftp://invisible-island.net/ncurses/ .

Future Plans

    @@ -418,12 +419,12 @@ The distribution includes and uses a version of the terminfo-format terminal description file maintained by Eric Raymond. -http://earthspace.net/~esr/terminfo.

    +http://www.tuxedo.org/~esr/terminfo/ .

    You can find lots of information on terminal-related topics not covered in the terminfo file at Richard Shuford's -archive. +archive . -Announcing ncurses 5.3 Pre-Release +Announcing ncurses 5.3 + @@ -35,9 +36,9 @@ The ncurses distribution is available via anonymous FTP at the GNU distribution site -ftp://ftp.gnu.org/pub/gnu/ncurses. +ftp://ftp.gnu.org/gnu/ncurses/ .
    It is also available at -ftp://invisible-island.net/ncurses. +ftp://invisible-island.net/ncurses/ .

    Release Notes

    @@ -317,61 +318,61 @@
    cdk
    Curses Development Kit
    -http://invisible-island.net/cdk. +http://invisible-island.net/cdk/
    -http://www.vexus.ca/CDK.html +http://www.vexus.ca/products/CDK/
    ded
    directory-editor
    -http://invisible-island.net/ded. +http://invisible-island.net/ded/
    dialog
    the underlying application used in Slackware's setup, and the basis for similar applications on GNU/Linux.
    -http://invisible-island.net/dialog. +http://invisible-island.net/dialog/
    lynx
    the character-screen WWW browser
    -http://lynx.isc.org/release. +http://lynx.isc.org/release/
    Midnight Commander
    file manager
    -www.gnome.org/mc/. +http://www.ibiblio.org/mc/
    mutt
    mail utility
    -http://www.mutt.org. +http://www.mutt.org/
    ncftp
    file-transfer utility
    -http://www.ncftp.com. +http://www.ncftp.com/
    nvi
    New vi versions 1.50 are able to use ncurses versions 1.9.7 and later.
    -http://www.bostic.com/vi/. +http://www.bostic.com/vi/
    tin
    newsreader, supporting color, MIME
    -http://www.tin.org. +http://www.tin.org/
    taper
    tape archive utility
    -http://members.iinet.net.au/~yusuf/taper/. +http://taper.e-survey.net.au/
    vh-1.6
    Volks-Hypertext browser for the Jargon File
    -http://www.bg.debian.org/Packages/unstable/text/vh.html. +http://www.debian.org/Packages/unstable/text/vh.html as well as some that use ncurses for the terminfo support alone:
    minicom
    terminal emulator
    -http://www.pp.clinet.fi/~walker/minicom.html. +http://www.netsonic.fi/~walker/minicom.html
    vile
    vi-like-emacs
    -http://invisible-island.net/vile. +http://invisible-island.net/vile/

    @@ -382,7 +383,7 @@ The original developers of ncurses are Zeyd Ben-Halim and -Eric S. Raymond. +Eric S. Raymond. Ongoing work is being done by Thomas Dickey and @@ -404,7 +405,7 @@ testing of this package.

    Beta versions of ncurses and patches to the current release are made available at -ftp://invisible-island.net/ncurses. +ftp://invisible-island.net/ncurses/ .

    Future Plans

      @@ -418,12 +419,12 @@ The distribution includes and uses a version of the terminfo-format terminal description file maintained by Eric Raymond. -http://earthspace.net/~esr/terminfo.

      +http://www.tuxedo.org/~esr/terminfo/ .

      You can find lots of information on terminal-related topics not covered in the terminfo file at Richard Shuford's -archive. +archive . @@ -192,7 +192,7 @@ mode. You can use other tic options such as -f and -x. The trace option isn't identical to SVr4's. Under SVr4, - instead of following the -v with a trace level n, you + instead of following the -v with a trace level n, you repeat it n times. diff -urNd -urNd ncurses-5.3/doc/html/man/curs_addch.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_addch.3x.html --- ncurses-5.3/doc/html/man/curs_addch.3x.html Sat Aug 31 16:59:20 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/curs_addch.3x.html Sun Jul 20 14:02:08 2003 @@ -2,7 +2,7 @@ @@ -77,7 +77,7 @@ sor one character left; at the left edge of a window it does nothing. Newline does a clrtoeol, then moves the cursor to the window left margin on the next line, - scrolling the window if on the last line). Tabs are con- + scrolling the window if on the last line. Tabs are con- sidered to be at every eighth column. The tab interval may be altered by setting the TABSIZE variable. @@ -91,7 +91,7 @@ passed to addch or related functions by logical-ORing them into the character. (Thus, text, including attributes, can be copied from one place to another using inch and - addch.). See the curs_attr(3x) page for values of prede- + addch.) See the curs_attr(3x) page for values of prede- fined video attribute constants that can be usefully OR'ed into characters. diff -urNd -urNd ncurses-5.3/doc/html/man/curs_beep.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_beep.3x.html --- ncurses-5.3/doc/html/man/curs_beep.3x.html Sat Jun 22 16:25:17 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/curs_beep.3x.html Sun Jul 20 14:02:08 2003 @@ -1,7 +1,7 @@ diff -urNd -urNd ncurses-5.3/doc/html/man/curs_deleteln.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_deleteln.3x.html --- ncurses-5.3/doc/html/man/curs_deleteln.3x.html Sat Jun 22 16:25:19 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/curs_deleteln.3x.html Sun Jul 20 14:02:08 2003 @@ -1,7 +1,7 @@ @@ -73,7 +73,7 @@ and move the remaining lines up. The bottom n lines are cleared. The current cursor position remains the same. - The insertln and winsertln routines, insert a blank line + The insertln and winsertln routines insert a blank line above the current line and the bottom line is lost. diff -urNd -urNd ncurses-5.3/doc/html/man/curs_extend.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_extend.3x.html --- ncurses-5.3/doc/html/man/curs_extend.3x.html Sat Jun 22 16:25:19 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/curs_extend.3x.html Sun Jul 20 14:02:08 2003 @@ -1,7 +1,7 @@ @@ -70,10 +70,10 @@ standard names which may be compiled into the terminfo description, i.e., via the terminfo or termcap interfaces. Normally these names are available for use, since the - essential descision is made by using the -x option of tic + essential decision is made by using the -x option of tic to compile extended terminal definitions. However you can disable this feature to ensure compatiblity with other - implementations of curses + implementations of curses. diff -urNd -urNd ncurses-5.3/doc/html/man/curs_get_wch.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_get_wch.3x.html --- ncurses-5.3/doc/html/man/curs_get_wch.3x.html Sat Jun 22 16:25:19 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/curs_get_wch.3x.html Sun Jul 20 14:02:08 2003 @@ -1,7 +1,7 @@ @@ -52,10 +52,10 @@

      SYNOPSIS

              #include <curses.h>
       
      -       int get_wch(win_t *wch);
      -       int wget_wch(WINDOW *win, win_t *wch);
      -       int mvget_wch(int y, int x, win_t *wch);
      -       int mvwget_wch(WINDOW *win, int y, int x, win_t *wch);
      +       int get_wch(wint_t *wch);
      +       int wget_wch(WINDOW *win, wint_t *wch);
      +       int mvget_wch(int y, int x, wint_t *wch);
      +       int mvwget_wch(WINDOW *win, int y, int x, wint_t *wch);
              int unget_wch(const wchar_t wch);
       
       
      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_getcchar.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_getcchar.3x.html
      --- ncurses-5.3/doc/html/man/curs_getcchar.3x.html	Sat Jun 22 16:25:20 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/curs_getcchar.3x.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_getch.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_getch.3x.html
      --- ncurses-5.3/doc/html/man/curs_getch.3x.html	Sat Jun 22 16:25:20 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/curs_getch.3x.html	Sun Jul 20 14:02:08 2003
      @@ -2,7 +2,7 @@
       
       
       
      @@ -89,7 +89,7 @@
              token for that function key is returned instead of the raw
              characters.    Possible   function  keys  are  defined  in
              <curses.h> as macros with  values  outside  the  range  of
      -       8-bit  characters  whose  names  begin  with KEY_. Thus, a
      +       8-bit  characters  whose  names  begin  with KEY_. Thus, a
              variable intended to hold the return value of  a  function
              key must be of short size or larger.
       
      @@ -114,103 +114,103 @@
              that  not  all  of  these are necessarily supported on any
              particular terminal.
       
      -           Name            Key name
      +            Name            Key name
       
      -           KEY_BREAK       Break key
      -           KEY_DOWN        The four arrow keys ...
      -           KEY_UP
      -           KEY_LEFT
      -           KEY_RIGHT
      -           KEY_HOME        Home key (upward+left arrow)
      -           KEY_BACKSPACE   Backspace
      -           KEY_F0          Function keys; space for 64  keys
      -                           is reserved.
      -           KEY_F(n)        For 0 <= n <= 63
      -           KEY_DL          Delete line
      -           KEY_IL          Insert line
      -           KEY_DC          Delete character
      -           KEY_IC          Insert char or enter insert mode
      -           KEY_EIC         Exit insert char mode
      -           KEY_CLEAR       Clear screen
      -           KEY_EOS         Clear to end of screen
      -           KEY_EOL         Clear to end of line
      -           KEY_SF          Scroll 1 line forward
      -           KEY_SR          Scroll 1 line backward (reverse)
      -           KEY_NPAGE       Next page
      -           KEY_PPAGE       Previous page
      -           KEY_STAB        Set tab
      -           KEY_CTAB        Clear tab
      -           KEY_CATAB       Clear all tabs
      -           KEY_ENTER       Enter or send
      -           KEY_SRESET      Soft (partial) reset
      -           KEY_RESET       Reset or hard reset
      -           KEY_PRINT       Print or copy
      -           KEY_LL          Home down or bottom (lower left).
      -           KEY_A1          Upper left of keypad
      -           KEY_A3          Upper right of keypad
      -           KEY_B2          Center of keypad
      -           KEY_C1          Lower left of keypad
      -           KEY_C3          Lower right of keypad
      -           KEY_BTAB        Back tab key
      -           KEY_BEG         Beg(inning) key
      -           KEY_CANCEL      Cancel key
      +            KEY_BREAK       Break key
      +            KEY_DOWN        The four arrow keys ...
      +            KEY_UP
      +            KEY_LEFT
      +            KEY_RIGHT
      +            KEY_HOME        Home key (upward+left arrow)
      +            KEY_BACKSPACE   Backspace
      +            KEY_F0          Function keys; space for 64 keys
      +                            is reserved.
      +            KEY_F(n)        For 0 <= n <= 63
      +            KEY_DL          Delete line
      +            KEY_IL          Insert line
      +            KEY_DC          Delete character
      +            KEY_IC          Insert char or enter insert mode
      +            KEY_EIC         Exit insert char mode
      +            KEY_CLEAR       Clear screen
      +            KEY_EOS         Clear to end of screen
      +            KEY_EOL         Clear to end of line
      +            KEY_SF          Scroll 1 line forward
      +            KEY_SR          Scroll 1 line backward (reverse)
      +            KEY_NPAGE       Next page
      +            KEY_PPAGE       Previous page
      +            KEY_STAB        Set tab
      +            KEY_CTAB        Clear tab
      +            KEY_CATAB       Clear all tabs
      +            KEY_ENTER       Enter or send
      +            KEY_SRESET      Soft (partial) reset
      +            KEY_RESET       Reset or hard reset
      +            KEY_PRINT       Print or copy
      +            KEY_LL          Home down or bottom (lower left)
      +            KEY_A1          Upper left of keypad
      +            KEY_A3          Upper right of keypad
      +            KEY_B2          Center of keypad
      +            KEY_C1          Lower left of keypad
      +            KEY_C3          Lower right of keypad
      +            KEY_BTAB        Back tab key
      +            KEY_BEG         Beg(inning) key
      +            KEY_CANCEL      Cancel key
       
      -           KEY_CLOSE       Close key
      -           KEY_COMMAND     Cmd (command) key
      -           KEY_COPY        Copy key
      -           KEY_CREATE      Create key
      -           KEY_END         End key
      -           KEY_EXIT        Exit key
      -           KEY_FIND        Find key
      -           KEY_HELP        Help key
      -           KEY_MARK        Mark key
      -           KEY_MESSAGE     Message key
      -           KEY_MOUSE       Mouse event read
      -           KEY_MOVE        Move key
      -           KEY_NEXT        Next object key
      -           KEY_OPEN        Open key
      -           KEY_OPTIONS     Options key
      -           KEY_PREVIOUS    Previous object key
      -           KEY_REDO        Redo key
      -           KEY_REFERENCE   Ref(erence) key
      -           KEY_REFRESH     Refresh key
      -           KEY_REPLACE     Replace key
      -           KEY_RESIZE      Screen resized
      -           KEY_RESTART     Restart key
      -           KEY_RESUME      Resume key
      -           KEY_SAVE        Save key
      -           KEY_SBEG        Shifted beginning key
      -           KEY_SCANCEL     Shifted cancel key
      -           KEY_SCOMMAND    Shifted command key
      -           KEY_SCOPY       Shifted copy key
      -           KEY_SCREATE     Shifted create key
      -           KEY_SDC         Shifted delete char key
      -           KEY_SDL         Shifted delete line key
      -           KEY_SELECT      Select key
      -           KEY_SEND        Shifted end key
      -           KEY_SEOL        Shifted clear line key
      -           KEY_SEXIT       Shifted exit key
      -           KEY_SFIND       Shifted find key
      -           KEY_SHELP       Shifted help key
      -           KEY_SHOME       Shifted home key
      -           KEY_SIC         Shifted input key
      -           KEY_SLEFT       Shifted left arrow key
      -           KEY_SMESSAGE    Shifted message key
      -           KEY_SMOVE       Shifted move key
      -           KEY_SNEXT       Shifted next key
      -           KEY_SOPTIONS    Shifted options key
      -           KEY_SPREVIOUS   Shifted prev key
      -           KEY_SPRINT      Shifted print key
      -           KEY_SREDO       Shifted redo key
      -           KEY_SREPLACE    Shifted replace key
      -           KEY_SRIGHT      Shifted right arrow
      -           KEY_SRSUME      Shifted resume key
      -           KEY_SSAVE       Shifted save key
      -           KEY_SSUSPEND    Shifted suspend key
      -           KEY_SUNDO       Shifted undo key
      +            KEY_CLOSE       Close key
      +            KEY_COMMAND     Cmd (command) key
      +            KEY_COPY        Copy key
      +            KEY_CREATE      Create key
      +            KEY_END         End key
      +            KEY_EXIT        Exit key
      +            KEY_FIND        Find key
      +            KEY_HELP        Help key
      +            KEY_MARK        Mark key
      +            KEY_MESSAGE     Message key
      +            KEY_MOUSE       Mouse event read
      +            KEY_MOVE        Move key
      +            KEY_NEXT        Next object key
      +            KEY_OPEN        Open key
      +            KEY_OPTIONS     Options key
      +            KEY_PREVIOUS    Previous object key
      +            KEY_REDO        Redo key
      +            KEY_REFERENCE   Ref(erence) key
      +            KEY_REFRESH     Refresh key
      +            KEY_REPLACE     Replace key
      +            KEY_RESIZE      Screen resized
      +            KEY_RESTART     Restart key
      +            KEY_RESUME      Resume key
      +            KEY_SAVE        Save key
      +            KEY_SBEG        Shifted beginning key
      +            KEY_SCANCEL     Shifted cancel key
      +            KEY_SCOMMAND    Shifted command key
      +            KEY_SCOPY       Shifted copy key
      +            KEY_SCREATE     Shifted create key
      +            KEY_SDC         Shifted delete char key
      +            KEY_SDL         Shifted delete line key
      +            KEY_SELECT      Select key
      +            KEY_SEND        Shifted end key
      +            KEY_SEOL        Shifted clear line key
      +            KEY_SEXIT       Shifted exit key
      +            KEY_SFIND       Shifted find key
      +            KEY_SHELP       Shifted help key
      +            KEY_SHOME       Shifted home key
      +            KEY_SIC         Shifted input key
      +            KEY_SLEFT       Shifted left arrow key
      +            KEY_SMESSAGE    Shifted message key
      +            KEY_SMOVE       Shifted move key
      +            KEY_SNEXT       Shifted next key
      +            KEY_SOPTIONS    Shifted options key
      +            KEY_SPREVIOUS   Shifted prev key
      +            KEY_SPRINT      Shifted print key
      +            KEY_SREDO       Shifted redo key
      +            KEY_SREPLACE    Shifted replace key
      +            KEY_SRIGHT      Shifted right arrow
      +            KEY_SRSUME      Shifted resume key
      +            KEY_SSAVE       Shifted save key
      +            KEY_SSUSPEND    Shifted suspend key
      +            KEY_SUNDO       Shifted undo key
       
      -           KEY_SUSPEND     Suspend key
      -           KEY_UNDO        Undo key
      +            KEY_SUSPEND     Suspend key
      +            KEY_UNDO        Undo key
       
              Keypad is arranged like this:
       
      @@ -247,7 +247,7 @@
              according  to  whether  they treat these control keys spe-
              cially (and ignore the terminfo), or use the terminfo def-
              initions.   Ncurses  uses  the terminfo definition.  If it
      -       says that  KEY_ENTER  is  control/M,  getch,  will  return
      +       says  that  KEY_ENTER  is  control/M,  getch  will  return
              KEY_ENTER when you press control/M.
       
              When  using  getch, wgetch, mvgetch, or mvwgetch, nocbreak
      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_getstr.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_getstr.3x.html
      --- ncurses-5.3/doc/html/man/curs_getstr.3x.html	Sat Jun 22 16:37:28 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/curs_getstr.3x.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      @@ -109,7 +109,7 @@
              SVr3  and early SVr4 curses implementations did not reject
              function keys; the SVr4.0 documentation claimed that "spe-
              cial  keys"  (such  as  function keys, "home" key, "clear"
      -       key, etc.) are interpreted" without  giving  details.   It
      +       key, etc.) are "interpreted", without giving details.   It
              lied.   In  fact,  the  `character'  value appended to the
              string by those implementations was  predictable  but  not
              useful  (being,  in  fact, the low-order eight bits of the
      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_getyx.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_getyx.3x.html
      --- ncurses-5.3/doc/html/man/curs_getyx.3x.html	Sat Oct 12 18:27:50 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/curs_getyx.3x.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      @@ -74,7 +74,7 @@
       
       

      RETURN VALUE

      -       The return values of these  macros  are  undefined  (i.e.,
      +       The return values of these  macros  are  undefined  (i.e.,
              they  should not be used as the right-hand side of assign-
              ment statements).
       
      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_initscr.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_initscr.3x.html
      --- ncurses-5.3/doc/html/man/curs_initscr.3x.html	Sat Jul 27 19:39:31 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/curs_initscr.3x.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_inopts.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_inopts.3x.html
      --- ncurses-5.3/doc/html/man/curs_inopts.3x.html	Sat Aug 31 16:59:27 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/curs_inopts.3x.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      @@ -172,9 +172,9 @@
       
              The timeout and wtimeout routines  set  blocking  or  non-
              blocking  read  for a given window.  If delay is negative,
      -       blocking  read  is  used  (i.e.,  waits  indefinitely  for
      +       blocking  read  is  used  (i.e.,  waits  indefinitely  for
              input).   If delay is zero, then non-blocking read is used
      -       (i.e., read returns ERR if no input is waiting).  If delay
      +       (i.e., read returns ERR if no input is waiting).  If delay
              is  positive, then read blocks for delay milliseconds, and
              returns ERR if there is still no input.  Hence, these rou-
              tines  provide the same functionality as nodelay, plus the
      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_insch.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_insch.3x.html
      --- ncurses-5.3/doc/html/man/curs_insch.3x.html	Sat Jun 22 16:25:23 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/curs_insch.3x.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      @@ -59,7 +59,7 @@
       
       

      DESCRIPTION

      -       These routines, insert the character ch before the charac-
      +       These routines insert the character ch before the  charac-
              ter  under the cursor.  All characters to the right of the
              cursor are moved one space to the right, with  the  possi-
              bility  of the rightmost character on the line being lost.
      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_mouse.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_mouse.3x.html
      --- ncurses-5.3/doc/html/man/curs_mouse.3x.html	Sat Jul 27 19:39:34 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/curs_mouse.3x.html	Sun Jul 20 14:02:08 2003
      @@ -2,7 +2,7 @@
       
       
       
      @@ -213,29 +213,36 @@
              than  xterm  and  there  is  no gpm daemon running on your
              machine, mouse events will not be visible  to  ncurses(3x)
              (and the wmousemask function will always return 0).
      +       If  the  terminfo entry contains a XM string, this is used
      +       in the xterm mouse driver to control the way the  terminal
      +       is initialized for mouse operation.  The default, if XM is
      +       not found, corresponds to private mode 1000 of xterm:
      +
      +           \E[?1000%?%p1%{1}%=%th%el%;
      +
              The z member in the event structure is not presently used.
      -       It is intended for use with touch screens  (which  may  be
      +       It  is  intended  for use with touch screens (which may be
              pressure-sensitive)   or   with   3D-mice/trackballs/power
              gloves.
       
       
       

      BUGS

      -       Mouse events under xterm will not in fact be ignored  dur-
      -       ing  cooked mode, if they have been enabled by wmousemask.
      -       Instead, the xterm mouse report sequence  will  appear  in
      +       Mouse  events under xterm will not in fact be ignored dur-
      +       ing cooked mode, if they have been enabled by  wmousemask.
      +       Instead,  the  xterm  mouse report sequence will appear in
              the string read.
       
              Mouse events under xterm will not be detected correctly in
      -       a window with its keypad bit off, since  they  are  inter-
      -       preted  as  a  variety  of  function  key.   Your terminfo
      -       description must have kmous set to "\E[M"  (the  beginning
      +       a  window  with  its keypad bit off, since they are inter-
      +       preted as  a  variety  of  function  key.   Your  terminfo
      +       description  must  have kmous set to "\E[M" (the beginning
              of the response from xterm for mouse clicks).
       
      -       Because  there  are  no  standard  terminal responses that
      -       would serve to identify terminals which support the  xterm
      -       mouse  protocol,  ncurses assumes that if your $TERM envi-
      -       ronment variable contains "xterm", or kmous is defined  in
      +       Because there are  no  standard  terminal  responses  that
      +       would  serve to identify terminals which support the xterm
      +       mouse protocol, ncurses assumes that if your  $TERM  envi-
      +       ronment  variable contains "xterm", or kmous is defined in
              the terminal description, then the terminal may send mouse
              events.
       
      @@ -246,13 +253,6 @@
       
       
       
      -
      -
      -
      -
      -
      -
      -
       
       
       
      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_outopts.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_outopts.3x.html
      --- ncurses-5.3/doc/html/man/curs_outopts.3x.html	Sat Jun 22 16:25:25 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/curs_outopts.3x.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      @@ -100,7 +100,7 @@
       
              If  immedok is called with TRUE as argument, any change in
              the window image, such  as  the  ones  caused  by  waddch,
      -       wclrtobot, wscrl, etc., automatically cause a call to wre-
      +       wclrtobot, wscrl, etc., automatically cause a call to wre-
              fresh.  However, it may degrade performance  considerably,
              due  to  repeated  calls  to  wrefresh.  It is disabled by
              default.
      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_pad.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_pad.3x.html
      --- ncurses-5.3/doc/html/man/curs_pad.3x.html	Sat Jun 22 16:25:25 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/curs_pad.3x.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      @@ -70,7 +70,7 @@
              sarily associated with a particular part  of  the  screen.
              Pads can be used when a large window is needed, and only a
              part of the window will be on  the  screen  at  one  time.
      -       Automatic refreshes of pads (e.g., from scrolling or echo-
      +       Automatic refreshes of pads (e.g., from scrolling or echo-
              ing of input) do not occur.  It is not legal to call  wre-
              fresh  with a pad as an argument; the routines prefresh or
              pnoutrefresh should be called instead.   Note  that  these
      @@ -106,7 +106,7 @@
              The pechochar routine is functionally equivalent to a call
              to  addch  followed by a call to refresh, a call to waddch
              followed by a call to wrefresh, or a call to  waddch  fol-
      -       lowed  by  a  call  to prefresh. The knowledge that only a
      +       lowed  by  a  call  to prefresh. The knowledge that only a
              single character is being output is taken into  considera-
              tion  and, for non-control characters, a considerable per-
              formance gain  might  be  seen  by  using  these  routines
      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_print.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_print.3x.html
      --- ncurses-5.3/doc/html/man/curs_print.3x.html	Sat Jun 22 16:25:26 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/curs_print.3x.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_printw.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_printw.3x.html
      --- ncurses-5.3/doc/html/man/curs_printw.3x.html	Sat Jul 27 19:39:35 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/curs_printw.3x.html	Tue May 13 20:08:22 2003
      @@ -27,7 +27,7 @@
         * sale, use or other dealings in this Software without prior written       *
         * authorization.                                                           *
         ****************************************************************************
      -  * @Id: curs_printw.3x,v 1.12 2002/07/20 15:01:43 tom Exp @
      +  * @Id: curs_printw.3x,v 1.13 2002/11/16 22:28:57 tom Exp @
       -->
       
       
      @@ -51,45 +51,48 @@
       

      SYNOPSIS

              #include <curses.h>
       
      -       int printw(char *fmt, ...);
      -       int wprintw(WINDOW *win, char *fmt, ...);
      -       int mvprintw(int y, int x, char *fmt, ...);
      -       int mvwprintw(WINDOW *win, int y, int x, char *fmt, ...);
      -       int vwprintw(WINDOW *win, char *fmt, va_list varglist);
      -       int vw_printw(WINDOW *win, char *fmt, va_list varglist);
      +       int printw(const char *fmt, ...);
      +       int wprintw(WINDOW *win, const char *fmt, ...);
      +       int mvprintw(int y, int x, const char *fmt, ...);
      +       int mvwprintw(WINDOW *win, int y, int x, const char  *fmt,
      +       ...);
      +       int  vwprintw(WINDOW  *win,  const char *fmt, va_list var-
      +       glist);
      +       int vw_printw(WINDOW *win, const char *fmt,  va_list  var-
      +       glist);
       
       
       

      DESCRIPTION

      -       The printw, wprintw, mvprintw and mvwprintw  routines  are
      -       analogous  to  printf  [see  printf(3S)].   In effect, the
      +       The  printw,  wprintw, mvprintw and mvwprintw routines are
      +       analogous to printf  [see  printf(3S)].   In  effect,  the
              string that would be output by printf is output instead as
              though waddstr were used on the given window.
       
      -       The  vwprintw  and  wv_printw  routines  are  analogous to
      -       vprintf [see printf(3S)] and perform  a  wprintw  using  a
      -       variable  argument list.  The third argument is a va_list,
      -       a  pointer  to  a  list  of  arguments,  as   defined   in
      +       The vwprintw  and  wv_printw  routines  are  analogous  to
      +       vprintf  [see  printf(3S)]  and  perform a wprintw using a
      +       variable argument list.  The third argument is a  va_list,
      +       a   pointer   to  a  list  of  arguments,  as  defined  in
              <stdarg.h>.
       
       
       

      RETURN VALUE

      -       Routines  that  return  an integer return ERR upon failure
      -       and OK (SVr4 only specifies "an integer value  other  than
      +       Routines that return an integer return  ERR  upon  failure
      +       and  OK  (SVr4 only specifies "an integer value other than
              ERR") upon successful completion.
       
       
       

      PORTABILITY

      -       The  XSI  Curses  standard,  Issue 4 describes these func-
      -       tions.  The function vwprintw is marked TO  BE  WITHDRAWN,
      -       and  is  to  be replaced by a function vw_printw using the
      +       The XSI Curses standard, Issue  4  describes  these  func-
      +       tions.   The  function vwprintw is marked TO BE WITHDRAWN,
      +       and is to be replaced by a function  vw_printw  using  the
              <stdarg.h> interface.  The Single Unix Specification, Ver-
      -       sion  2  states  that  vw_printw  is preferred to vwprintw
      -       since the latter  requires  including  <varargs.h>,  which
      -       cannot  be  used  in  the  same  file as <stdarg.h>.  This
      -       implementation uses  <stdarg.h>  for  both,  because  that
      +       sion 2 states that vw_printw   is  preferred  to  vwprintw
      +       since  the  latter  requires  including <varargs.h>, which
      +       cannot be used in  the  same  file  as  <stdarg.h>.   This
      +       implementation  uses  <stdarg.h>  for  both,  because that
              header is included in <curses.h>.
       
       
      @@ -99,9 +102,6 @@
       
       
       
      -
      -
      -
       
       
       
      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_scroll.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_scroll.3x.html
      --- ncurses-5.3/doc/html/man/curs_scroll.3x.html	Sat Jun 22 16:25:27 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/curs_scroll.3x.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_slk.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_slk.3x.html
      --- ncurses-5.3/doc/html/man/curs_slk.3x.html	Sat Jun 22 16:25:27 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/curs_slk.3x.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      @@ -115,7 +115,7 @@
              The  slk_clear  routine  clears  the  soft labels from the
              screen.
       
      -       The slk_restore routine, restores the soft labels  to  the
      +       The slk_restore routine restores the soft  labels  to  the
              screen after a slk_clear has been performed.
       
              The  slk_touch  routine  forces  all the soft labels to be
      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_termcap.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_termcap.3x.html
      --- ncurses-5.3/doc/html/man/curs_termcap.3x.html	Sat Jun 22 16:25:28 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/curs_termcap.3x.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      @@ -136,32 +136,86 @@
              will put out a literal "50" rather than  busy-waiting  for
              50 milliseconds.  Cope with it.
       
      +       Note  that termcap has nothing analogous to terminfo's sgr
      +       string.  One consequence of this is that termcap  applica-
      +       tions  assume me (terminfo sgr0) does not reset the alter-
      +       nate character set.  This implementation checks  for,  and
      +       modifies the data shown to the termcap interface to accom-
      +       modate termcap's limitation in this respect.
      +
       
       

      PORTABILITY

      -       The  XSI  Curses  standard,  Issue 4 describes these func-
      -       tions.  However, they are marked TO BE WITHDRAWN  and  may
      +       The XSI Curses standard, Issue  4  describes  these  func-
      +       tions.   However,  they are marked TO BE WITHDRAWN and may
              be removed in future versions.
       
      -       Neither  the  XSI  Curses  standard nor the SVr4 man pages
      -       documented the return values of tgetent correctly,  though
      -       all  three were in fact returned ever since SVr1.  In par-
      -       ticular, an omission in the XSI Curses  documentation  has
      -       been  misinterpreted  to  mean  that tgetent returns OK or
      +       Neither the XSI Curses standard nor  the  SVr4  man  pages
      +       documented  the return values of tgetent correctly, though
      +       all three were in fact returned ever since SVr1.  In  par-
      +       ticular,  an  omission in the XSI Curses documentation has
      +       been misinterpreted to mean that  tgetent  returns  OK  or
              ERR.  Because the purpose of these functions is to provide
      -       compatibility  with  the termcap library, that is a defect
      +       compatibility with the termcap library, that is  a  defect
              in XCurses, Issue 4, Version 2 rather than in ncurses.
       
      -       External variables are provided  for  support  of  certain
      -       termcap  applications.  However, termcap applications' use
      +       External  variables  are  provided  for support of certain
      +       termcap applications.  However, termcap applications'  use
              of those variables is poorly documented, e.g., not distin-
      -       guishing  between  input  and output.  In particular, some
      +       guishing between input and output.   In  particular,  some
              applications are reported to declare and/or modify ospeed.
       
       
       

      SEE ALSO

              curses(3x), terminfo(5), putc(3S).
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
       

      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_terminfo.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_terminfo.3x.html --- ncurses-5.3/doc/html/man/curs_terminfo.3x.html Sat Jul 27 19:39:37 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/curs_terminfo.3x.html Sun Jul 20 14:02:08 2003 @@ -1,7 +1,7 @@ diff -urNd -urNd ncurses-5.3/doc/html/man/curs_util.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_util.3x.html --- ncurses-5.3/doc/html/man/curs_util.3x.html Sat Oct 12 18:27:58 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/curs_util.3x.html Tue May 13 20:08:22 2003 @@ -27,7 +27,7 @@ * sale, use or other dealings in this Software without prior written * * authorization. * **************************************************************************** - * @Id: curs_util.3x,v 1.9 2002/09/01 19:44:37 tom Exp @ + * @Id: curs_util.3x,v 1.10 2002/12/21 22:21:37 tom Exp @ --> @@ -110,17 +110,18 @@ The delay_output routine inserts an ms millisecond pause in output. This routine should not be used extensively because padding characters are used rather than a CPU - pause. + pause. If no padding character is specified, this uses + napms to perform the delay. - The flushinp routine throws away any typeahead that has - been typed by the user and has not yet been read by the + The flushinp routine throws away any typeahead that has + been typed by the user and has not yet been read by the program.

      RETURN VALUE

      -       Except  for  flushinp,  routines  that  return  an integer
      -       return ERR upon failure and OK (SVr4  specifies  only  "an
      +       Except for  flushinp,  routines  that  return  an  integer
      +       return  ERR  upon  failure and OK (SVr4 specifies only "an
              integer value other than ERR") upon successful completion.
       
              flushinp always returns OK.
      @@ -130,22 +131,21 @@
       
       

      PORTABILITY

      -       The XSI Curses standard, Issue  4  describes  these  func-
      -       tions.   It  states  that unctrl and wunctrl will return a
      -       null pointer if unsuccessful,  but  does  not  define  any
      +       The  XSI  Curses  standard,  Issue 4 describes these func-
      +       tions.  It states that unctrl and wunctrl  will  return  a
      +       null  pointer  if  unsuccessful,  but  does not define any
              error conditions.
       
              The SVr4 documentation describes the action of filter only
      -       in the vaguest terms.  The  description  here  is  adapted
      -       from  the  XSI Curses standard (which erroneously fails to
      +       in  the  vaguest  terms.   The description here is adapted
      +       from the XSI Curses standard (which erroneously  fails  to
              describe the disabling of cuu).
       
       
       

      SEE ALSO

      -       curses(3x), curs_initscr(3x), curs_scr_dump(3x).
      -
      -
      +       curses(3x),       curs_initscr(3x),       curs_kernel(3x),
      +       curs_scr_dump(3x).
       
       
       
      diff -urNd -urNd ncurses-5.3/doc/html/man/curs_window.3x.html ncurses-5.3.20030906.orig/doc/html/man/curs_window.3x.html
      --- ncurses-5.3/doc/html/man/curs_window.3x.html	Sat Jun 22 16:25:29 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/curs_window.3x.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      diff -urNd -urNd ncurses-5.3/doc/html/man/define_key.3x.html ncurses-5.3.20030906.orig/doc/html/man/define_key.3x.html
      --- ncurses-5.3/doc/html/man/define_key.3x.html	Sat Jun 22 16:25:29 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/define_key.3x.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      @@ -51,7 +51,7 @@
       

      SYNOPSIS

              #include <curses.h>
       
      -       int define_key(char *definition, int keycode);
      +       int define_key(const char *definition, int keycode);
       
       
       
      diff -urNd -urNd ncurses-5.3/doc/html/man/form_field.3x.html ncurses-5.3.20030906.orig/doc/html/man/form_field.3x.html --- ncurses-5.3/doc/html/man/form_field.3x.html Sat Jun 22 16:25:31 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/form_field.3x.html Sun Jul 20 14:02:08 2003 @@ -2,7 +2,7 @@ @@ -69,7 +69,7 @@ The function field_count returns the count of fields in form. - The function move_field move the given field (which must + The function move_field moves the given field (which must be disconnected) to a specified location on the screen. diff -urNd -urNd ncurses-5.3/doc/html/man/form_field_buffer.3x.html ncurses-5.3.20030906.orig/doc/html/man/form_field_buffer.3x.html --- ncurses-5.3/doc/html/man/form_field_buffer.3x.html Sat Jun 22 16:25:31 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/form_field_buffer.3x.html Sun Jul 20 14:02:08 2003 @@ -2,7 +2,7 @@ diff -urNd -urNd ncurses-5.3/doc/html/man/form_field_just.3x.html ncurses-5.3.20030906.orig/doc/html/man/form_field_just.3x.html --- ncurses-5.3/doc/html/man/form_field_just.3x.html Sat Jun 22 16:25:32 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/form_field_just.3x.html Sun Jul 20 14:02:08 2003 @@ -2,7 +2,7 @@ @@ -68,7 +68,7 @@ The function field_just returns one of: NO_JUSTIFICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER. - The function set_field_just return one of the following: + The function set_field_just returns one of the following: E_OK The routine succeeded. diff -urNd -urNd ncurses-5.3/doc/html/man/form_field_new.3x.html ncurses-5.3.20030906.orig/doc/html/man/form_field_new.3x.html --- ncurses-5.3/doc/html/man/form_field_new.3x.html Sat Jun 22 16:25:32 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/form_field_new.3x.html Sun Jul 20 14:02:08 2003 @@ -2,7 +2,7 @@ @@ -115,8 +115,8 @@ It may be unwise to count on the set of attributes copied by dup_field(3x) being portable; the System V forms - library documents are not very explicit on what gets - copied and was not. + library documents are not very explicit about what gets + copied and what doesn't.
      diff -urNd -urNd ncurses-5.3/doc/html/man/form_field_opts.3x.html ncurses-5.3.20030906.orig/doc/html/man/form_field_opts.3x.html --- ncurses-5.3/doc/html/man/form_field_opts.3x.html Sat Jun 22 16:25:32 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/form_field_opts.3x.html Sun Jul 20 14:02:08 2003 @@ -2,7 +2,7 @@ @@ -75,7 +75,7 @@ O_VISIBLE The field is displayed. If this option is off, dis- - play of the field is suppressed, + play of the field is suppressed. O_ACTIVE The field is visited during processing. If this @@ -98,7 +98,7 @@ at the first position. O_AUTOSKIP - Skip to the next field when this one fills + Skip to the next field when this one fills. O_NULLOK diff -urNd -urNd ncurses-5.3/doc/html/man/form_field_validation.3x.html ncurses-5.3.20030906.orig/doc/html/man/form_field_validation.3x.html --- ncurses-5.3/doc/html/man/form_field_validation.3x.html Sat Jun 22 16:25:33 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/form_field_validation.3x.html Sun Jul 20 14:02:08 2003 @@ -1,7 +1,7 @@ @@ -53,12 +53,20 @@ FIELDTYPE *field_type(const FIELD *field); void *field_arg(const FIELD *field); + FIELDTYPE *TYPE_ALNUM; + FIELDTYPE *TYPE_ALPHA; + FIELDTYPE *TYPE_ENUM; + FIELDTYPE *TYPE_INTEGER; + FIELDTYPE *TYPE_NUMERIC; + FIELDTYPE *TYPE_REGEXP; + FIELDTYPE *TYPE_IPV4; +

      DESCRIPTION

              The  function  set_field_type  declares  a data type for a
              given form field.  This is the type checked by  validation
      -       functions.  The types are as follows:
      +       functions.  The predefined types are as follows:
       
              TYPE_ALNUM
                   Alphanumeric  data.  Requires a third int argument, a
      @@ -78,7 +86,7 @@
                   than  one  list  elements  with  that prefix). Please
                   notice that the string list is  not  copied,  only  a
                   reference to it is stored in the field. So you should
      -            avoid to use a list that lives in automatic variables
      +            avoid using a list that lives in automatic  variables
                   on the stack.
       
              TYPE_INTEGER
      @@ -86,9 +94,9 @@
                   Requires a third int argument controlling the  preci-
                   sion,  a  fourth  long  argument constraining minimum
                   value, and a fifth long constraining  maximum  value.
      -            If  the  maximum  value  is less or equal the minimum
      -            value, the range is simply  ignored.  On  return  the
      -            field  buffer  is  formatted  according to the printf
      +            If  the  maximum  value  is less than or equal to the
      +            minimum value, the range is simply ignored. On return
      +            the field buffer is formatted according to the printf
                   format  specification  ".*ld",  where  the   '*'   is
                   replaced  by  the precision argument.  For details of
                   the precision handling see printf's man-page.
      @@ -98,47 +106,48 @@
                   Requires  a third int argument controlling the preci-
                   sion, a fourth double argument  constraining  minimum
                   value, and a fifth double constraining maximum value.
      -            If your system supports locale's, the  decimal  point
      +            If your system supports locales,  the  decimal  point
                   character  to  be  used  must be the one specified by
      -            your locale.  If the maximum value is less  or  equal
      -            the  minimum  value,  the range is simply ignored. On
      -            return the field buffer is formatted according to the
      -            printf  format  specification ".*f", where the '*' is
      -            replaced by the precision argument.  For  details  of
      -            the precision handling see printf's man-page.
      +            your locale.  If the maximum value is  less  than  or
      +            equal  to  the  minimum  value,  the  range is simply
      +            ignored. On return  the  field  buffer  is  formatted
      +            according  to  the printf format specification ".*f",
      +            where the '*' is replaced by the precision  argument.
      +            For  details  of  the precision handling see printf's
      +            man-page.
       
              TYPE_REGEXP
      -            Regular  expression data.  Requires a regular expres-
      -            sion (char *) third argument; the data  is  valid  if
      -            the  regular  expression matches it.  Regular expres-
      -            sions  are  in  the   format   of   regcomp(3x)   and
      -            regexec(3x).  Please  notice that the regular expres-
      -            sion must match the whole  field.  If  you  have  for
      -            example  an  eight  character  wide  field, a regular
      -            expression "^[0-9]*$" always means that you  have  to
      -            fill  all eight positions with digits. If you want to
      -            allow fewer digits, you may use for example  "^[0-9]*
      +            Regular expression data.  Requires a regular  expres-
      +            sion  (char  *)  third argument; the data is valid if
      +            the regular expression matches it.   Regular  expres-
      +            sions   are   in   the   format  of  regcomp(3x)  and
      +            regexec(3x). Please notice that the  regular  expres-
      +            sion  must  match  the  whole  field. If you have for
      +            example an eight  character  wide  field,  a  regular
      +            expression  "^[0-9]*$"  always means that you have to
      +            fill all eight positions with digits. If you want  to
      +            allow  fewer digits, you may use for example "^[0-9]*
                   *$" which is good for trailing spaces (up to an empty
      -            field), or "^ *[0-9]* *$" which is good  for  leading
      +            field),  or  "^ *[0-9]* *$" which is good for leading
                   and trailing spaces around the digits.
       
              TYPE_IPV4
                   An Internet Protocol Version 4 address. This requires
      -            no additional argument. It is checked whether or  not
      -            the  buffer  has  the form a.b.c.d, where a,b,c and d
      +            no  additional argument. It is checked whether or not
      +            the buffer has the form a.b.c.d, where  a,b,c  and  d
                   are numbers between 0 and 255. Trailing blanks in the
      -            buffer  are  ignored. The address itself is not vali-
      +            buffer are ignored. The address itself is  not  vali-
                   dated. Please note that this is an ncurses extension.
      -            This  field type may not be available in other curses
      +            This field type may not be available in other  curses
                   implementations.
       
      -            It is possible to set up new programmer-defined field
      -            types.  See the form_fieldtype(3x) manual page.
      +       It  is  possible  to  set  up new programmer-defined field
      +       types.  See the form_fieldtype(3x) manual page.
       
       
       

      RETURN VALUE

      -       The  functions  field_type  and  field_arg  return NULL on
      +       The functions field_type  and  field_arg  return  NULL  on
              error. The function set_field_type returns one of the fol-
              lowing:
       
      @@ -148,6 +157,7 @@
                   System error occurred (see errno).
       
       
      +
       

      SEE ALSO

              curses(3x), form(3x).
      @@ -161,26 +171,17 @@
       
       

      PORTABILITY

      -       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.
       
       
       

      AUTHORS

      -       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
      +       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
              curses by Eric S. Raymond.
       
       
       
      -
      -
      -
      -
      -
      -
      -
      -
      -
       
       
       
      diff -urNd -urNd ncurses-5.3/doc/html/man/form_fieldtype.3x.html ncurses-5.3.20030906.orig/doc/html/man/form_fieldtype.3x.html
      --- ncurses-5.3/doc/html/man/form_fieldtype.3x.html	Sat Jun 22 16:25:33 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/form_fieldtype.3x.html	Sun Jul 20 14:02:08 2003
      @@ -2,7 +2,7 @@
       
       
       
      @@ -72,11 +72,11 @@
              The function new_fieldtype creates a new field type usable
              for data validation.  You supply it  with  field_check,  a
              predicate  to check the validity of an entered data string
      -       whenever the user attempt to leave a field.  The (FIELD *)
      -       argument  is passed in so the validation predicate can see
      -       the field's buffer, sizes and other attributes; the second
      -       argument  is an argument-block structure, about which more
      -       below.
      +       whenever the user attempts to leave a field.   The  (FIELD
      +       *)  argument  is passed in so the validation predicate can
      +       see the field's buffer, sizes and  other  attributes;  the
      +       second  argument  is  an  argument-block  structure, about
      +       which more below.
       
              You also supply new_fieldtype with char_check, a  function
              to  validate input characters as they are entered; it will
      @@ -86,20 +86,24 @@
              The  function free_fieldtype frees the space allocated for
              a given validation type.
       
      -       The function set_fieldtype associates  three  storage-man-
      -       agement functions with a field type.  The mak_arg function
      -       is automatically applied to the list of arguments you give
      -       set_field_type  when  attaching validation to a field; its
      -       job is to bundle these into  an  allocated  argument-block
      -       object which can later be passed to validation predicated.
      -       The other two hook arguments should copy  and  free  argu-
      -       ment-block  structures.   They  will be used by the forms-
      -       driver code. You must supply  the  mak_arg  function,  the
      -       other  two  are optional, you may supply NULL for them. In
      -       this case it is assumed,  that  mak_arg  doesn't  allocate
      +       The function set_fieldtype_arg associates  three  storage-
      +       management  functions  with  a  field  type.  The make_arg
      +       function is automatically applied to the list of arguments
      +       you  give  set_field_type  when  attaching validation to a
      +       field; its job is to bundle these into an allocated  argu-
      +       ment-block  object which can later be passed to validation
      +       predicated.  The other two hook arguments should copy  and
      +       free  argument-block structures.  They will be used by the
      +       forms-driver code.  You must supply the make_arg function,
      +       the  other two are optional, you may supply NULL for them.
      +       In this case it is assumed that make_arg does not allocate
              memory  but simply loads the argument into a single scalar
              value.
       
      +       The function link_fieldtype creates a new field type  from
      +       the  two  given  types.   They are connected by an logical
      +       'OR'.
      +
              The   form    driver    requests    REQ_NEXT_CHOICE    and
              REQ_PREV_CHOICE assume that the possible values of a field
              form an ordered set, and provide the forms user with a way
      @@ -158,10 +162,6 @@
       
       
       
      -
      -
      -
      -
       
       
       
      diff -urNd -urNd ncurses-5.3/doc/html/man/infocmp.1m.html ncurses-5.3.20030906.orig/doc/html/man/infocmp.1m.html
      --- ncurses-5.3/doc/html/man/infocmp.1m.html	Sat Oct 12 18:28:05 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/infocmp.1m.html	Sun Jul 20 14:02:08 2003
      @@ -2,7 +2,7 @@
       
       
       
      @@ -313,8 +313,8 @@
       
                   An   SGR0  designates  an  empty  highlight  sequence
                   (equivalent to {SGR:NORMAL}).
      -       -
      -       l    Set output format to terminfo.
      +
      +       -l   Set output format to terminfo.
       
              -p   Ignore padding specifications when comparing strings.
       
      @@ -387,13 +387,13 @@
       
              The -r option's notion of `termcap' capabilities is System
              V Release 4's.  Actual BSD curses  versions  will  have  a
      -       more  restricted  set.  To see only the 4.4BSD set, use -r
      -       -RBSD.
      +       more  restricted  set.  To see only the 4.4BSD set, use -r
      +       -RBSD.
       
       
       

      BUGS

      -       The -F option of infocmp(1m) should be a toe(1m) mode.
      +       The -F option of infocmp(1m) should be a toe(1m) mode.
       
       
       
      diff -urNd -urNd ncurses-5.3/doc/html/man/infotocap.1m.html ncurses-5.3.20030906.orig/doc/html/man/infotocap.1m.html --- ncurses-5.3/doc/html/man/infotocap.1m.html Sat Jun 22 16:25:36 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/infotocap.1m.html Sun Jul 20 14:02:08 2003 @@ -2,7 +2,7 @@ diff -urNd -urNd ncurses-5.3/doc/html/man/key_defined.3x.html ncurses-5.3.20030906.orig/doc/html/man/key_defined.3x.html --- ncurses-5.3/doc/html/man/key_defined.3x.html Wed Dec 31 18:00:00 1969 +++ ncurses-5.3.20030906.orig/doc/html/man/key_defined.3x.html Sun Jul 20 14:02:08 2003 @@ -0,0 +1,119 @@ + + + + +key_defined 3x + + + + +

      key_defined 3x

      +
      +
      +
      +
      +
      +

      NAME

      +       define_key - define a keycode
      +
      +
      +
      +

      SYNOPSIS

      +       #include <curses.h>
      +
      +       int key_defined(const char *definition);
      +
      +
      +
      +

      DESCRIPTION

      +       This is an extension to the curses library.  It permits an
      +       application to determine if a string is currently bound to
      +       any keycode.
      +
      +
      +
      +

      RETURN VALUE

      +       If  the  string  is bound to a keycode, its value (greater
      +       than zero) is returned.  If no keycode is bound,  zero  is
      +       returned.   If  the  string  conflicts with longer strings
      +       which are bound to keys, -1 is returned.
      +
      +
      +
      +

      PORTABILITY

      +       These routines are specific to  ncurses.   They  were  not
      +       supported  on  Version 7, BSD or System V implementations.
      +       It is recommended that any code depending on them be  con-
      +       ditioned using NCURSES_VERSION.
      +
      +
      +
      +

      SEE ALSO

      +       define_key(3x).
      +
      +
      +
      +

      AUTHOR

      +       Thomas Dickey.
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +Man(1) output converted with +man2html +
      + + diff -urNd -urNd ncurses-5.3/doc/html/man/keybound.3x.html ncurses-5.3.20030906.orig/doc/html/man/keybound.3x.html --- ncurses-5.3/doc/html/man/keybound.3x.html Sat Jun 22 16:25:36 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/keybound.3x.html Sun Jul 20 14:02:08 2003 @@ -1,7 +1,7 @@ @@ -63,10 +63,12 @@

      RETURN VALUE

      -       The  keycode  must  be  greater  than  zero,  else NULL is
      -       returned.  If it does not correspond  to  a  defined  key,
      -       then  NULL is returned.  Otherwise, the function returns a
      -       string, which must be freed by the caller.
      +       The keycode parameter must be greater than zero, else NULL
      +       is returned.  If it does not correspond to a defined  key,
      +       then  NULL  is  returned.   The count parameter is used to
      +       allow the application to iterate through multiple  defini-
      +       tions,  counting from zero.  When successful, the function
      +       returns a string which must be freed by the caller.
       
       
       
      @@ -88,8 +90,6 @@ - - diff -urNd -urNd ncurses-5.3/doc/html/man/menu_driver.3x.html ncurses-5.3.20030906.orig/doc/html/man/menu_driver.3x.html --- ncurses-5.3/doc/html/man/menu_driver.3x.html Sat Jun 22 16:25:37 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/menu_driver.3x.html Sun Jul 20 14:02:08 2003 @@ -1,7 +1,7 @@ diff -urNd -urNd ncurses-5.3/doc/html/man/menu_pattern.3x.html ncurses-5.3.20030906.orig/doc/html/man/menu_pattern.3x.html --- ncurses-5.3/doc/html/man/menu_pattern.3x.html Sat Jun 22 16:25:39 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/menu_pattern.3x.html Sun Jul 20 14:02:08 2003 @@ -1,7 +1,7 @@ diff -urNd -urNd ncurses-5.3/doc/html/man/ncurses.3x.html ncurses-5.3.20030906.orig/doc/html/man/ncurses.3x.html --- ncurses-5.3/doc/html/man/ncurses.3x.html Sat Aug 31 16:59:48 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/ncurses.3x.html Sun Jul 20 14:02:08 2003 @@ -2,7 +2,7 @@ @@ -354,6 +354,7 @@ is_linetouched curs_touch(3x) is_wintouched curs_touch(3x) isendwin curs_initscr(3x) + key_defined key_defined(3x)* key_name curs_util(3x) keybound keybound(3x)* keyname curs_util(3x) @@ -369,8 +370,8 @@ mouseinterval curs_mouse(3x)* mousemask curs_mouse(3x)* move curs_move(3x) - mvadd_wch curs_add_wch(3x) + mvadd_wch curs_add_wch(3x) mvadd_wchnstr curs_add_wchstr(3x) mvadd_wchstr curs_add_wchstr(3x) mvaddch curs_addch(3x) @@ -423,8 +424,8 @@ mvwaddstr curs_addstr(3x) mvwaddwstr curs_addwstr(3x) mvwchgat curs_attr(3x) - mvwdelch curs_delch(3x) + mvwdelch curs_delch(3x) mvwget_wch curs_get_wch(3x) mvwget_wstr curs_get_wstr(3x) mvwgetch curs_getch(3x) @@ -477,8 +478,8 @@ putwin curs_util(3x) qiflush curs_inopts(3x) raw curs_inopts(3x) - redrawwin curs_refresh(3x) + redrawwin curs_refresh(3x) refresh curs_refresh(3x) reset_prog_mode curs_kernel(3x) reset_shell_mode curs_kernel(3x) @@ -531,8 +532,8 @@ tgetflag curs_termcap(3x) tgetnum curs_termcap(3x) tgetstr curs_termcap(3x) - tgoto curs_termcap(3x) + tgoto curs_termcap(3x) tigetflag curs_terminfo(3x) tigetnum curs_terminfo(3x) tigetstr curs_terminfo(3x) @@ -585,8 +586,8 @@ wbkgrndset curs_bkgrnd(3x) wborder curs_border(3x) wborder_set curs_border_set(3x) - wchgat curs_attr(3x) + wchgat curs_attr(3x) wclear curs_clear(3x) wclrtobot curs_clear(3x) wclrtoeol curs_clear(3x) @@ -639,8 +640,8 @@ wstandout curs_attr(3x) wsyncdown curs_window(3x) wsyncup curs_window(3x) - wtimeout curs_inopts(3x) + wtimeout curs_inopts(3x) wtouchln curs_touch(3x) wunctrl curs_util(3x) wvline curs_border(3x) @@ -655,9 +656,9 @@ descriptions. All macros return the value of the w version, except - setscrreg, wsetscrreg, getyx, getbegyx, getmaxyx. The + setscrreg, wsetscrreg, getyx, getbegyx, and getmaxyx. The return values of setscrreg, wsetscrreg, getyx, getbegyx, - and getmaxyx are undefined (i.e., these should not be used + and getmaxyx are undefined (i.e., these should not be used as the right-hand side of assignment statements). Routines that return pointers return NULL on error. @@ -674,7 +675,7 @@ The debugging library checks this environment symbol when the application has redirected output to a file. The symbol's numeric value is used for the baudrate. - If no value is found ncurses uses 9600. This allows + If no value is found, ncurses uses 9600. This allows testers to construct repeatable test-cases that take into account costs that depend on baudrate. @@ -698,7 +699,6 @@ host which does not honor NAWS (Negotiations About Window Size), or because you are temporarily running as another user. - Either COLUMNS or LINES symbols may be specified independently. This is mainly useful to circumvent legacy misfeatures of terminal descriptions, e.g., @@ -838,7 +838,7 @@ The complete list of directories in order follows: - the last directory to which ncurses wrote, if any, - is searched first. + is searched first - the directory specified by the TERMINFO symbol @@ -910,8 +910,8 @@ The ncurses library extends the fixed set of function key capabilities of terminals by allowing the application designer to define additional key sequences at runtime. - See the define_key(3x) and keyok(3x) manual pages for - details. + See the define_key(3x) key_defined(3x), and keyok(3x) + manual pages for details. The ncurses library can exploit the capabilities of terminals which implement the ISO-6429 SGR 39 and SGR 49 diff -urNd -urNd ncurses-5.3/doc/html/man/panel.3x.html ncurses-5.3.20030906.orig/doc/html/man/panel.3x.html --- ncurses-5.3/doc/html/man/panel.3x.html Sat Jun 22 16:25:43 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/panel.3x.html Sun Jul 20 14:02:08 2003 @@ -1,7 +1,7 @@ @@ -81,7 +81,7 @@ of the stack. A window is associated with every panel. The panel rou- - tines enable you to create, move, hides, and show panels, + tines enable you to create, move, hide, and show panels, as well as position a panel at any desired location in the stack. diff -urNd -urNd ncurses-5.3/doc/html/man/term.5.html ncurses-5.3.20030906.orig/doc/html/man/term.5.html --- ncurses-5.3/doc/html/man/term.5.html Sat Aug 31 16:59:49 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/term.5.html Sun Jul 20 14:02:08 2003 @@ -1,7 +1,7 @@ diff -urNd -urNd ncurses-5.3/doc/html/man/term.7.html ncurses-5.3.20030906.orig/doc/html/man/term.7.html --- ncurses-5.3/doc/html/man/term.7.html Sat Jun 22 16:25:44 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/term.7.html Sun Jul 20 14:02:08 2003 @@ -1,7 +1,7 @@ @@ -126,10 +126,10 @@ ters or digits. You need to avoid using punctuation char- acters in root names, because they are used and inter- preted as filenames and shell meta-characters (such as !, - $, *, ? etc.) embedded in them may cause odd and unhelpful - behavior. The slash (/), or any other character that may - be interpreted by anyone's file system (\, $, [, ]), is - especially dangerous (terminfo is platform-independent, + $, *, ?, etc.) embedded in them may cause odd and unhelp- + ful behavior. The slash (/), or any other character that + may be interpreted by anyone's file system (\, $, [, ]), + is especially dangerous (terminfo is platform-independent, and choosing names with special characters could someday make life difficult for users of a future port). The dot (.) character is relatively safe as long as there is at @@ -169,23 +169,23 @@ another that has this suffix and uses magic cookies to support multiple attributes. - -am Enable auto-margin (right-margin wraparound) + -am Enable auto-margin (right-margin wraparound). - -m Mono mode - suppress color support + -m Mono mode - suppress color support. -na No arrow keys - termcap ignores arrow keys which are actually there on the terminal, so the user can use the arrow keys locally. - -nam No auto-margin - suppress am capability + -nam No auto-margin - suppress am capability. - -nl No labels - suppress soft labels + -nl No labels - suppress soft labels. - -nsl No status line - suppress status line + -nsl No status line - suppress status line. -pp Has a printer port which is used. - -rv Terminal in reverse video mode (black on white) + -rv Terminal in reverse video mode (black on white). -s Enable status line. @@ -223,10 +223,10 @@ compiled terminal capability data base /etc/inittab - tty line initialization (AT&T-like UNIXes). + tty line initialization (AT&T-like UNIXes) /etc/ttys - tty line initialization (BSD-like UNIXes). + tty line initialization (BSD-like UNIXes) diff -urNd -urNd ncurses-5.3/doc/html/man/terminfo.5.html ncurses-5.3.20030906.orig/doc/html/man/terminfo.5.html --- ncurses-5.3/doc/html/man/terminfo.5.html Sat Aug 31 16:59:51 2002 +++ ncurses-5.3.20030906.orig/doc/html/man/terminfo.5.html Tue May 13 20:08:22 2003 @@ -34,7 +34,7 @@ **************************************************************************** * @Id: terminfo.head,v 1.10 2002/08/17 23:37:10 tom Exp @ * Head of terminfo man page ends here - * @Id: terminfo.tail,v 1.35 2002/04/20 16:49:33 tom Exp @ + * @Id: terminfo.tail,v 1.38 2003/01/05 22:47:05 tom Exp @ * Beginning of terminfo.tail file *.TH --> @@ -1221,38 +1221,75 @@ The parameter mechanism uses a stack and special % codes to manipulate it. Typically a sequence will push one of the parameters onto the stack and then print it in some - format. Often more complex operations are necessary. + format. Print (e.g., "%d") is a special case. Other + operations, including "%t" pop their operand from the + stack. It is noted that more complex operations are often + necessary, e.g., in the sgr string. The % encodings have the following meanings: - %% outputs `%' - %[[:]flags][width[.precision]][doxXs] - as in printf, flags are [-+#] and space - %c print pop() like %c in printf() - %s print pop() like %s in printf() - %p[1-9] push i'th parm - %P[a-z] set dynamic variable [a-z] to pop() - %g[a-z] get dynamic variable [a-z] and push it - %P[A-Z] set static variable [a-z] to pop() - %g[A-Z] get static variable [a-z] and push it - %'c' char constant c - %{nn} integer constant nn - %l push strlen(pop) + %% outputs `%' - %+ %- %* %/ %m - arithmetic (%m is mod): push(pop() op pop()) - %& %| %^ bit operations: push(pop() op pop()) - %= %> %< logical operations: push(pop() op pop()) - %A, %O logical and & or operations (for conditionals) - %! %~ unary operations push(op pop()) - %i add 1 to first two parameters (for ANSI terminals) + %[[:]flags][width[.precision]][doxXs] + as in printf, flags are [-+#] and space - %? expr %t thenpart %e elsepart %; - if-then-else, %e elsepart is optional. - else-if's are possible a la Algol 68: - %? c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e c4 %t b4 %e %; - ci are conditions, bi are bodies. + %c print pop() like %c in printf + + %s print pop() like %s in printf + + %p[1-9] + push i'th parameter + + %P[a-z] + set dynamic variable [a-z] to pop() + + + %g[a-z] + get dynamic variable [a-z] and push it + + %P[A-Z] + set static variable [a-z] to pop() + + %g[A-Z] + get static variable [a-z] and push it + + The terms "static" and "dynamic" are misleading. + Historically, these are simply two different sets of + variables, whose values are not reset between calls + to tparm. However, that fact is not documented in + other implementations. Relying on it will adversely + impact portability to other implementations. + + %'c' char constant c + + %{nn} + integer constant nn + + %l push strlen(pop) + + %+ %- %* %/ %m + arithmetic (%m is mod): push(pop() op pop()) + + %& %| %^ + bit operations: push(pop() op pop()) + + %= %> %< + logical operations: push(pop() op pop()) + + %A, %O + logical and & or operations (for conditionals) + + %! %~ + unary operations push(op pop()) + + %i add 1 to first two parameters (for ANSI terminals) + + %? expr %t thenpart %e elsepart %; + if-then-else, %e elsepart is optional. else-if's are + possible a la Algol 68: + %? c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e c4 %t b4 %e %; + ci are conditions, bi are bodies. Binary operations are in postfix form with the operands in the usual order. That is, to get x-5 one would use @@ -1531,6 +1568,7 @@ tparm parameter attribute escape sequence + none none \E[0m p1 standout \E[0;1;7m p2 underline \E[0;4m @@ -1568,7 +1606,6 @@ ;5 if p4 %?%p4%|%t;5%; ;7 if p1 or p3 %?%p1%p3%|%t;7%; ;8 if p7 %?%p7%|%t;8%; - m always m ^N or ^O if p9 ^N, else ^O %?%p9%t^N%e^O%; @@ -1622,170 +1659,168 @@ rmkx. Otherwise the keypad is assumed to always transmit. The codes sent by the left arrow, right arrow, up arrow, down arrow, and home keys can be given as kcub1, kcuf1, - kcuu1, kcud1, and khome respectively. If there are - function keys such as f0, f1, ..., f10, the codes they - send can be given as kf0, kf1, ..., kf10. If these keys - have labels other than the default f0 through f10, the - labels can be given as lf0, lf1, ..., lf10. The codes - transmitted by certain other special keys can be given: - kll (home down), kbs (backspace), ktbc (clear all tabs), - kctab (clear the tab stop in this column), kclr (clear - screen or erase key), kdch1 (delete character), kdl1 - (delete line), krmir (exit insert mode), kel (clear to end - of line), ked (clear to end of screen), kich1 (insert - character or enter insert mode), kil1 (insert line), knp - (next page), kpp (previous page), kind (scroll for- - ward/down), kri (scroll backward/up), khts (set a tab stop - in this column). In addition, if the keypad has a 3 by 3 - array of keys including the four arrow keys, the other - five keys can be given as ka1, ka3, kb2, kc1, and kc3. - These keys are useful when the effects of a 3 by 3 direc- - tional pad are needed. - - Strings to program function keys can be given as pfkey, - pfloc, and pfx. A string to program screen labels should - be specified as pln. Each of these strings takes two - parameters: the function key number to program (from 0 to - 10) and the string to program it with. Function key num- - bers out of this range may program undefined keys in a - terminal dependent manner. The difference between the - capabilities is that pfkey causes pressing the given key - to be the same as the user typing the given string; pfloc + kcuu1, kcud1, and khome respectively. If there are func- + tion keys such as f0, f1, ..., f10, the codes they send + can be given as kf0, kf1, ..., kf10. If these keys have + labels other than the default f0 through f10, the labels + can be given as lf0, lf1, ..., lf10. The codes transmit- + ted by certain other special keys can be given: kll (home + down), kbs (backspace), ktbc (clear all tabs), kctab + (clear the tab stop in this column), kclr (clear screen or + erase key), kdch1 (delete character), kdl1 (delete line), + krmir (exit insert mode), kel (clear to end of line), ked + (clear to end of screen), kich1 (insert character or enter + insert mode), kil1 (insert line), knp (next page), kpp + (previous page), kind (scroll forward/down), kri (scroll + backward/up), khts (set a tab stop in this column). In + addition, if the keypad has a 3 by 3 array of keys includ- + ing the four arrow keys, the other five keys can be given + as ka1, ka3, kb2, kc1, and kc3. These keys are useful + when the effects of a 3 by 3 directional pad are needed. + Strings to program function keys can be given as pfkey, + pfloc, and pfx. A string to program screen labels should + be specified as pln. Each of these strings takes two + parameters: the function key number to program (from 0 to + 10) and the string to program it with. Function key num- + bers out of this range may program undefined keys in a + terminal dependent manner. The difference between the + capabilities is that pfkey causes pressing the given key + to be the same as the user typing the given string; pfloc causes the string to be executed by the terminal in local; - and pfx causes the string to be transmitted to the com- + and pfx causes the string to be transmitted to the com- puter. The capabilities nlab, lw and lh define the number of pro- - grammable screen labels and their width and height. If - there are commands to turn the labels on and off, give - them in smln and rmln. smln is normally output after one + grammable screen labels and their width and height. If + there are commands to turn the labels on and off, give + them in smln and rmln. smln is normally output after one or more pln sequences to make sure that the change becomes visible. Tabs and Initialization - If the terminal has hardware tabs, the command to advance - to the next tab stop can be given as ht (usually control - I). A ``back-tab'' command which moves leftward to the + If the terminal has hardware tabs, the command to advance + to the next tab stop can be given as ht (usually control + I). A ``back-tab'' command which moves leftward to the preceding tab stop can be given as cbt. By convention, if - the teletype modes indicate that tabs are being expanded - by the computer rather than being sent to the terminal, - programs should not use ht or cbt even if they are pre- - sent, since the user may not have the tab stops properly - set. If the terminal has hardware tabs which are ini- + the teletype modes indicate that tabs are being expanded + by the computer rather than being sent to the terminal, + programs should not use ht or cbt even if they are pre- + sent, since the user may not have the tab stops properly + set. If the terminal has hardware tabs which are ini- tially set every n spaces when the terminal is powered up, - the numeric parameter it is given, showing the number of - spaces the tabs are set to. This is normally used by the - tset command to determine whether to set the mode for - hardware tab expansion, and whether to set the tab stops. - If the terminal has tab stops that can be saved in non- - volatile memory, the terminfo description can assume that + the numeric parameter it is given, showing the number of + spaces the tabs are set to. This is normally used by the + tset command to determine whether to set the mode for + hardware tab expansion, and whether to set the tab stops. + If the terminal has tab stops that can be saved in non- + volatile memory, the terminfo description can assume that they are properly set. - Other capabilities include is1, is2, and is3, initializa- - tion strings for the terminal, iprog, the path name of a - program to be run to initialize the terminal, and if, the - name of a file containing long initialization strings. - These strings are expected to set the terminal into modes - consistent with the rest of the terminfo description. + Other capabilities include is1, is2, and is3, initializa- + tion strings for the terminal, iprog, the path name of a + program to be run to initialize the terminal, and if, the + name of a file containing long initialization strings. + These strings are expected to set the terminal into modes + consistent with the rest of the terminfo description. They are normally sent to the terminal, by the init option - of the tput program, each time the user logs in. They - will be printed in the following order: run the program - iprog; output is1; is2; set the margins using mgc, smgl - and smgr; set tabs using tbc and hts; print the file if; + of the tput program, each time the user logs in. They + will be printed in the following order: run the program + iprog; output is1; is2; set the margins using mgc, smgl + and smgr; set tabs using tbc and hts; print the file if; and finally output is3. - Most initialization is done with is2. Special terminal + Most initialization is done with is2. Special terminal modes can be set up without duplicating strings by putting - the common sequences in is2 and special cases in is1 and - is3. A pair of sequences that does a harder reset from a - totally unknown state can be analogously given as rs1, - rs2, rf, and rs3, analogous to is2 and if. These strings - are output by the reset program, which is used when the - terminal gets into a wedged state. Commands are normally - placed in rs1, rs2 rs3 and rf only if they produce annoy- - ing effects on the screen and are not necessary when log- - ging in. For example, the command to set the vt100 into - 80-column mode would normally be part of is2, but it - causes an annoying glitch of the screen and is not nor- - mally needed since the terminal is usually already in 80 + the common sequences in is2 and special cases in is1 and + is3. A pair of sequences that does a harder reset from a + totally unknown state can be analogously given as rs1, + rs2, rf, and rs3, analogous to is2 and if. These strings + are output by the reset program, which is used when the + terminal gets into a wedged state. Commands are normally + placed in rs1, rs2 rs3 and rf only if they produce annoy- + ing effects on the screen and are not necessary when log- + ging in. For example, the command to set the vt100 into + 80-column mode would normally be part of is2, but it + causes an annoying glitch of the screen and is not nor- + mally needed since the terminal is usually already in 80 column mode. If there are commands to set and clear tab stops, they can - be given as tbc (clear all tab stops) and hts (set a tab - stop in the current column of every row). If a more com- - plex sequence is needed to set the tabs than can be - described by this, the sequence can be placed in is2 or + be given as tbc (clear all tab stops) and hts (set a tab + stop in the current column of every row). If a more com- + plex sequence is needed to set the tabs than can be + described by this, the sequence can be placed in is2 or if. Delays and Padding - Many older and slower terminals don't support either + Many older and slower terminals don't support either XON/XOFF or DTR handshaking, including hard copy terminals - and some very archaic CRTs (including, for example, DEC - VT100s). These may require padding characters after cer- + and some very archaic CRTs (including, for example, DEC + VT100s). These may require padding characters after cer- tain cursor motions and screen changes. If the terminal uses xon/xoff handshaking for flow control - (that is, it automatically emits ^S back to the host when + (that is, it automatically emits ^S back to the host when its input buffers are close to full), set xon. This capa- - bility suppresses the emission of padding. You can also - set it for memory-mapped console devices effectively that - don't have a speed limit. Padding information should - still be included so that routines can make better deci- + bility suppresses the emission of padding. You can also + set it for memory-mapped console devices effectively that + don't have a speed limit. Padding information should + still be included so that routines can make better deci- sions about relative costs, but actual pad characters will not be transmitted. - If pb (padding baud rate) is given, padding is suppressed - at baud rates below the value of pb. If the entry has no - padding baud rate, then whether padding is emitted or not + If pb (padding baud rate) is given, padding is suppressed + at baud rates below the value of pb. If the entry has no + padding baud rate, then whether padding is emitted or not is completely controlled by xon. - If the terminal requires other than a null (zero) charac- - ter as a pad, then this can be given as pad. Only the + If the terminal requires other than a null (zero) charac- + ter as a pad, then this can be given as pad. Only the first character of the pad string is used. Status Lines - Some terminals have an extra `status line' which is not - normally used by software (and thus not counted in the + Some terminals have an extra `status line' which is not + normally used by software (and thus not counted in the terminal's lines capability). - The simplest case is a status line which is cursor- - addressable but not part of the main scrolling region on - the screen; the Heathkit H19 has a status line of this - kind, as would a 24-line VT100 with a 23-line scrolling - region set up on initialization. This situation is indi- + The simplest case is a status line which is cursor- + addressable but not part of the main scrolling region on + the screen; the Heathkit H19 has a status line of this + kind, as would a 24-line VT100 with a 23-line scrolling + region set up on initialization. This situation is indi- cated by the hs capability. Some terminals with status lines need special sequences to - access the status line. These may be expressed as a + access the status line. These may be expressed as a string with single parameter tsl which takes the cursor to - a given zero-origin column on the status line. The capa- + a given zero-origin column on the status line. The capa- bility fsl must return to the main-screen cursor positions - before the last tsl. You may need to embed the string - values of sc (save cursor) and rc (restore cursor) in tsl + before the last tsl. You may need to embed the string + values of sc (save cursor) and rc (restore cursor) in tsl and fsl to accomplish this. - The status line is normally assumed to be the same width - as the width of the terminal. If this is untrue, you can + The status line is normally assumed to be the same width + as the width of the terminal. If this is untrue, you can specify it with the numeric capability wsl. - A command to erase or blank the status line may be speci- + A command to erase or blank the status line may be speci- fied as dsl. - The boolean capability eslok specifies that escape + The boolean capability eslok specifies that escape sequences, tabs, etc., work ordinarily in the status line. - The ncurses implementation does not yet use any of these - capabilities. They are documented here in case they ever + The ncurses implementation does not yet use any of these + capabilities. They are documented here in case they ever become important. Line Graphics - Many terminals have alternate character sets useful for - forms-drawing. Terminfo and curses build in support for - the drawing characters supported by the VT100, with some - characters from the AT&T 4410v1 added. This alternate + Many terminals have alternate character sets useful for + forms-drawing. Terminfo and curses build in support for + the drawing characters supported by the VT100, with some + characters from the AT&T 4410v1 added. This alternate character set may be specified by the acsc capability. Glyph ACS Ascii VT100 @@ -1803,6 +1838,7 @@ greater-than-or-equal-to ACS_GEQUAL > z greek pi ACS_PI * { horizontal line ACS_HLINE - q + lantern symbol ACS_LANTERN # i large plus or crossover ACS_PLUS + n less-than-or-equal-to ACS_LEQUAL < y @@ -1823,59 +1859,59 @@ upper right corner ACS_URCORNER + k vertical line ACS_VLINE | x - The best way to define a new device's graphics set is to - add a column to a copy of this table for your terminal, - giving the character which (when emitted between - smacs/rmacs switches) will be rendered as the correspond- - ing graphic. Then read off the VT100/your terminal char- - acter pairs right to left in sequence; these become the + The best way to define a new device's graphics set is to + add a column to a copy of this table for your terminal, + giving the character which (when emitted between + smacs/rmacs switches) will be rendered as the correspond- + ing graphic. Then read off the VT100/your terminal char- + acter pairs right to left in sequence; these become the ACSC string. Color Handling - Most color terminals are either `Tektronix-like' or `HP- - like'. Tektronix-like terminals have a predefined set of - N colors (where N usually 8), and can set character-cell + Most color terminals are either `Tektronix-like' or `HP- + like'. Tektronix-like terminals have a predefined set of + N colors (where N usually 8), and can set character-cell foreground and background characters independently, mixing - them into N * N color-pairs. On HP-like terminals, the + them into N * N color-pairs. On HP-like terminals, the use must set each color pair up separately (foreground and - background are not independently settable). Up to M - color-pairs may be set up from 2*M different colors. + background are not independently settable). Up to M + color-pairs may be set up from 2*M different colors. ANSI-compatible terminals are Tektronix-like. Some basic color capabilities are independent of the color method. The numeric capabilities colors and pairs specify - the maximum numbers of colors and color-pairs that can be - displayed simultaneously. The op (original pair) string - resets foreground and background colors to their default - values for the terminal. The oc string resets all colors - or color-pairs to their default values for the terminal. - Some terminals (including many PC terminal emulators) - erase screen areas with the current background color - rather than the power-up default background; these should + the maximum numbers of colors and color-pairs that can be + displayed simultaneously. The op (original pair) string + resets foreground and background colors to their default + values for the terminal. The oc string resets all colors + or color-pairs to their default values for the terminal. + Some terminals (including many PC terminal emulators) + erase screen areas with the current background color + rather than the power-up default background; these should have the boolean capability bce. - To change the current foreground or background color on a - Tektronix-type terminal, use setaf (set ANSI foreground) - and setab (set ANSI background) or setf (set foreground) - and setb (set background). These take one parameter, the + To change the current foreground or background color on a + Tektronix-type terminal, use setaf (set ANSI foreground) + and setab (set ANSI background) or setf (set foreground) + and setb (set background). These take one parameter, the color number. The SVr4 documentation describes only - setaf/setab; the XPG4 draft says that "If the terminal + setaf/setab; the XPG4 draft says that "If the terminal supports ANSI escape sequences to set background and fore- - ground, they should be coded as setaf and setab, respec- - tively. If the terminal supports other escape sequences - to set background and foreground, they should be coded as - setf and setb, respectively. The vidputs() function and - the refresh functions use setaf and setab if they are + ground, they should be coded as setaf and setab, respec- + tively. If the terminal supports other escape sequences + to set background and foreground, they should be coded as + setf and setb, respectively. The vidputs() function and + the refresh functions use setaf and setab if they are defined." - The setaf/setab and setf/setb capabilities take a single - numeric argument each. Argument values 0-7 are portably - defined as follows (the middle column is the symbolic - #define available in the header for the curses or ncurses - libraries). The terminal hardware is free to map these as - it likes, but the RGB values indicate normal locations in - color space. + The setaf/setab and setf/setb capabilities take a single + numeric argument each. Argument values 0-7 of setaf/setab + are portably defined as follows (the middle column is the + symbolic #define available in the header for the curses or + ncurses libraries). The terminal hardware is free to map + these as it likes, but the RGB values indicate normal + locations in color space. Color #define Value RGB black COLOR_BLACK 0 0, 0, 0 @@ -1887,6 +1923,21 @@ cyan COLOR_CYAN 6 0,max,max white COLOR_WHITE 7 max,max,max + The argument values of setf/setb historically correspond + to a different mapping, i.e., + Color #define Value RGB + black COLOR_BLACK 0 0, 0, 0 + blue COLOR_BLUE 1 0,0,max + green COLOR_GREEN 2 0,max,0 + cyan COLOR_CYAN 3 0,max,max + red COLOR_RED 4 max,0,0 + magenta COLOR_MAGENTA 5 max,0,max + yellow COLOR_YELLOW 6 max,max,0 + white COLOR_WHITE 7 max,max,max + It is important to not confuse the two sets of color capa- + bilities; otherwise red/blue will be interchanged on the + display. + On an HP-like terminal, use scp with a color-pair number parameter to set which color pair is current. @@ -2005,7 +2056,6 @@ text, including mc4, is transparently passed to the printer while an mc5p is in effect. - Glitches and Braindamage Hazeltine terminals, which do not allow `~' characters to be displayed should indicate hz. @@ -2055,6 +2105,7 @@ A capability can be canceled by placing xx@ to the left of the use reference that imports it, where xx is the capa- bility. For example, the entry + 2621-nl, smkx@, rmkx@, use=2621, defines a 2621-nl that does not have the smkx or rmkx @@ -2222,12 +2273,12 @@ descriptions -

      SEE ALSO

              tic(1m), curses(3x), printf(3S), term(5).
       
       
      +
       

      AUTHORS

              Zeyd  M.  Ben-Halim,  Eric  S.  Raymond, Thomas E. Dickey.
      @@ -2235,6 +2286,9 @@
       
       
       
      +
      +
      +
       
       
       
      diff -urNd -urNd ncurses-5.3/doc/html/man/tic.1m.html ncurses-5.3.20030906.orig/doc/html/man/tic.1m.html
      --- ncurses-5.3/doc/html/man/tic.1m.html	Sat Oct 12 18:28:15 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/tic.1m.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      @@ -85,7 +85,7 @@
                     entries as user-defined names.
       
              -C     Force source translation to termcap format.   Note:
      -              this  differs  from the -C option of infocmp(1m) in
      +              this  differs  from the -C option of infocmp(1m) in
                     that it does not merely translate capability names,
                     but  also  translates  terminfo  strings to termcap
                     format.  Capabilities that are not translatable are
      @@ -110,7 +110,7 @@
                     it.  The option value is interpreted as a file con-
                     taining  the  list  if  it  contains a '/'.  (Note:
                     depending on how tic was compiled, this option  may
      -              require -I or -C.)
      +              require -I or -C.)
       
              -f     Display  complex  terminfo  strings  which  contain
                     if/then/else/endif expressions indented  for  read-
      @@ -277,7 +277,7 @@
       
              The  -C,  -G,  -I, -N, -R, -T, -V, -a, -e, -f, -g, -o, -r,
              -s, -t and -x options are not supported under  SVr4.   The
      -       SVr4 -c mode does not report bad use links.
      +       SVr4 -c mode does not report bad use links.
       
              System  V does not compile entries to or read entries from
              your $HOME/.terminfo directory unless TERMINFO is  explic-
      diff -urNd -urNd ncurses-5.3/doc/html/man/toe.1m.html ncurses-5.3.20030906.orig/doc/html/man/toe.1m.html
      --- ncurses-5.3/doc/html/man/toe.1m.html	Sat Jun 22 16:25:46 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/toe.1m.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      @@ -57,7 +57,7 @@
              primary name with descriptions.   File  arguments  specify
              the  directories  to  be scanned; if no such arguments are
              given, your default terminfo directory is scanned.  If you
      -       also  specify  the  -h  option, a directory header will be
      +       also  specify  the  -h  option, a directory header will be
              issued as each directory is entered.
       
              There are other options intended for use by terminfo  file
      diff -urNd -urNd ncurses-5.3/doc/html/man/tput.1.html ncurses-5.3.20030906.orig/doc/html/man/tput.1.html
      --- ncurses-5.3/doc/html/man/tput.1.html	Sat Oct 12 18:28:16 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/tput.1.html	Sun Jul 20 14:02:08 2003
      @@ -2,7 +2,7 @@
       
       
       
      diff -urNd -urNd ncurses-5.3/doc/html/man/tset.1.html ncurses-5.3.20030906.orig/doc/html/man/tset.1.html
      --- ncurses-5.3/doc/html/man/tset.1.html	Sat Jun 22 16:25:47 2002
      +++ ncurses-5.3.20030906.orig/doc/html/man/tset.1.html	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       
       
       
       
      @@ -73,7 +73,7 @@
              4. The default terminal type, ``unknown''.
       
              If  the  terminal  type  was not specified on the command-
      -       line, the -m option mappings are then applied  (see  below
      +       line, the -m option mappings are then applied  (see  below
              for  more information).  Then, if the terminal type begins
              with a question mark (``?''), the  user  is  prompted  for
              confirmation of the terminal type.  An empty response con-
      @@ -108,36 +108,36 @@
       
              The options are as follows:
       
      -       -q   The  terminal  type is displayed to the standard out-
      +       -q   The  terminal  type is displayed to the standard out-
                   put, and the terminal is not initialized in any  way.
                   The option `-' by itself is equivalent but archaic.
       
      -       -e   Set the erase character to ch.
      +       -e   Set the erase character to ch.
       
      -       -I   Do  not  send  the  terminal  or  tab  initialization
      +       -I   Do  not  send  the  terminal  or  tab  initialization
                   strings to the terminal.
       
      -       -Q   Don't display any values for the erase, interrupt and
      +       -Q   Don't display any values for the erase, interrupt and
                   line kill characters.
       
              -V   reports the version of ncurses which was used in this
                   program, and exits.
       
      -       -i   Set the interrupt character to ch.
      +       -i   Set the interrupt character to ch.
       
      -       -k   Set the line kill character to ch.
      +       -k   Set the line kill character to ch.
       
      -       -m   Specify a mapping from a port  type  to  a  terminal.
      +       -m   Specify a mapping from a port  type  to  a  terminal.
                   See below for more information.
       
      -       -r   Print the terminal type to the standard error output.
      +       -r   Print the terminal type to the standard error output.
       
      -       -s   Print the sequence of shell  commands  to  initialize
      +       -s   Print the sequence of shell  commands  to  initialize
                   the environment variable TERM to the standard output.
                   See the section below on setting the environment  for
                   details.
       
      -       The arguments for the -e, -i, and -k options may either be
      +       The arguments for the -e, -i, and -k options may either be
              entered as actual characters or by using the  `hat'  nota-
              tion, i.e. control-h may be specified as ``^H'' or ``^h''.
       
      @@ -146,9 +146,9 @@
       

      SETTING THE ENVIRONMENT

              It is often desirable  to  enter  the  terminal  type  and
              information  about  the  terminal's  capabilities into the
      -       shell's environment.  This is done using the -s option.
      +       shell's environment.  This is done using the -s option.
       
      -       When the -s option is specified, the commands to enter the
      +       When the -s option is specified, the commands to enter the
              information  into  the  shell's environment are written to
              the standard output.  If the SHELL environmental  variable
              ends in ``csh'', the commands are for csh, otherwise, they
      @@ -171,12 +171,12 @@
              often desirable to provide information about the  type  of
              terminal used on such ports.
       
      -       The  purpose  of  the -m option is to map from some set of
      +       The  purpose  of  the -m option is to map from some set of
              conditions to a terminal type, that is, to tell tset  ``If
              I'm  on this port at a particular speed, guess that I'm on
              that kind of terminal''.
       
      -       The argument to the -m option consists of an optional port
      +       The argument to the -m option consists of an optional port
              type, an optional operator, an optional baud rate specifi-
              cation, an optional colon (``:'') character and a terminal
              type.   The port type is a string (delimited by either the
      @@ -189,7 +189,7 @@
              terminal).  The terminal type is a string.
       
              If the terminal type is not specified on the command line,
      -       the  -m mappings are applied to the terminal type.  If the
      +       the  -m mappings are applied to the terminal type.  If the
              port type and baud rate match the  mapping,  the  terminal
              type  specified  in the mapping replaces the current type.
              If more than one mapping is specified, the first  applica-
      @@ -213,9 +213,9 @@
              user will be queried on a default port as to whether  they
              are actually using an xterm terminal.
       
      -       No  whitespace  characters  are permitted in the -m option
      +       No  whitespace  characters  are permitted in the -m option
              argument.  Also, to avoid problems  with  meta-characters,
      -       it  is  suggested  that  the  entire -m option argument be
      +       it  is  suggested  that  the  entire -m option argument be
              placed within single quote characters, and that csh  users
              insert  a  backslash character (``\'') before any exclama-
              tion marks (``!'').
      @@ -238,8 +238,8 @@
              important  use).   This implementation behaves like 4.4BSD
              tset, with a few exceptions specified here.
       
      -       The -S option of BSD tset no longer works;  it  prints  an
      -       error message to stderr and dies.  The -s option only sets
      +       The -S option of BSD tset no longer works;  it  prints  an
      +       error message to stderr and dies.  The -s option only sets
              TERM, not TERMCAP.  Both these  changes  are  because  the
              TERMCAP  variable  is  no longer supported under terminfo-
              based ncurses, which makes tset -S useless (we made it die
      @@ -250,28 +250,28 @@
              ning  with  an  upper-case letter) set the terminal to use
              upper-case only.  This feature has been omitted.
       
      -       The -A, -E, -h, -u and -v options were  deleted  from  the
      -       tset  utility  in  4.4BSD. None of them were documented in
      -       4.3BSD and all are of limited utility at best. The -a, -d,
      -       and -p options are similarly not documented or useful, but
      -       were retained as they appear to be in widespread use.   It
      -       is  strongly  recommended  that  any  usage of these three
      -       options be changed to use the -m option instead.   The  -n
      -       option  remains, but has no effect.  The -adnp options are
      -       therefore omitted from the usage summary above.
      +       The -A, -E, -h, -u and -v options were  deleted  from  the
      +       tset  utility  in 4.4BSD.  None of them were documented in
      +       4.3BSD and all are of limited utility at best.  The -a, -,
      +       and                                                      -
      +       options are similarly not documented or useful,  but  were
      +       retained  as  they  appear to be in widespread use.  It is
      +       strongly recommended that any usage of these three options
      +       be  changed  to  use the -m option instead.  The -n option
      +       remains, but has no effect.  The -adnp options are  there-
      +       fore omitted from the usage summary above.
       
      -       It is still permissible to specify  the  -e,  -i,  and  -k
      -       options  without arguments, although it is strongly recom-
      -       mended that such usage be fixed to explicitly specify  the
      +       It  is  still  permissible  to  specify the -e, -i, and -k
      +       options without arguments, although it is strongly  recom-
      +       mended  that such usage be fixed to explicitly specify the
              character.
       
      -       As  of  4.4BSD,  executing tset as reset no longer implies
      -       the -Q option.  Also, the interaction between the - option
      +       As of 4.4BSD, executing tset as reset  no  longer  implies
      +       the -Q option.  Also, the interaction between the - option
              and the terminal argument in some historic implementations
              of tset has been removed.
       
       
      -
       

      ENVIRONMENT

              The tset command uses the SHELL and TERM environment vari-
      @@ -281,7 +281,7 @@
       

      FILES

              /etc/ttys
      -            system  port  name  to terminal type mapping database
      +            system port name to terminal  type  mapping  database
                   (BSD versions only).
       
              /usr/share/terminfo
      diff -urNd -urNd ncurses-5.3/form/Makefile.in ncurses-5.3.20030906.orig/form/Makefile.in
      --- ncurses-5.3/form/Makefile.in	Sat Jan 19 19:49:17 2002
      +++ ncurses-5.3.20030906.orig/form/Makefile.in	Fri Sep 12 16:42:40 2003
      @@ -1,6 +1,6 @@
      -# $Id: Makefile.in,v 1.36 2002/01/20 01:49:17 tom Exp $
      +# $Id: Makefile.in,v 1.39 2003/08/23 23:25:01 tom Exp $
       ##############################################################################
      -# Copyright (c) 1998,1999,2000,2001,2002 Free Software Foundation, Inc.      #
      +# Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.                #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -55,6 +55,11 @@
       includedir	= @includedir@
       
       LIBTOOL		= @LIBTOOL@
      +LIBTOOL_CLEAN	= @LIB_CLEAN@
      +LIBTOOL_COMPILE	= @LIB_COMPILE@
      +LIBTOOL_LINK	= @LIB_LINK@
      +LIBTOOL_INSTALL	= @LIB_INSTALL@
      +LIBTOOL_UNINSTALL = @LIB_UNINSTALL@
       
       INSTALL		= @INSTALL@
       INSTALL_LIB	= @INSTALL@ @INSTALL_LIB@
      @@ -84,7 +89,7 @@
       
       CFLAGS_DEFAULT	= $(CFLAGS_@DFT_UPR_MODEL@)
       
      -LINK		= $(LIBTOOL) $(CC)
      +LINK		= $(LIBTOOL_LINK) $(CC)
       LDFLAGS		= @LDFLAGS@ @LD_MODEL@ @LIBS@
       
       SHLIB_DIRS	= -L../lib
      @@ -97,7 +102,7 @@
       REL_VERSION	= @cf_cv_rel_version@
       ABI_VERSION	= @cf_cv_abi_version@
       
      -RANLIB		= @RANLIB@
      +RANLIB		= @LIB_PREP@
       
       IMPORT_LIB	= @IMPORT_LIB@
       SHARED_LIB	= @SHARED_LIB@
      diff -urNd -urNd ncurses-5.3/form/form.h ncurses-5.3.20030906.orig/form/form.h
      --- ncurses-5.3/form/form.h	Sat Jul 13 06:35:08 2002
      +++ ncurses-5.3.20030906.orig/form/form.h	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
      + * Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -31,6 +31,8 @@
        *   Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en             *
        ****************************************************************************/
       
      +/* $Id: form.h,v 0.15 2003/05/03 21:59:32 tom Exp $ */
      +
       #ifndef FORM_H
       #define FORM_H
       
      @@ -208,7 +210,7 @@
       #define REQ_DEL_CHAR	 (KEY_MAX + 34)	/* delete char at cursor	*/
       #define REQ_DEL_PREV	 (KEY_MAX + 35)	/* delete char before cursor	*/
       #define REQ_DEL_LINE	 (KEY_MAX + 36)	/* delete line at cursor	*/
      -#define REQ_DEL_WORD	 (KEY_MAX + 37)	/* delete line at cursor	*/
      +#define REQ_DEL_WORD	 (KEY_MAX + 37)	/* delete word at cursor	*/
       #define REQ_CLR_EOL	 (KEY_MAX + 38)	/* clear to end of line		*/
       #define REQ_CLR_EOF	 (KEY_MAX + 39)	/* clear to end of field	*/
       #define REQ_CLR_FIELD	 (KEY_MAX + 40)	/* clear entire field		*/
      diff -urNd -urNd ncurses-5.3/form/frm_driver.c ncurses-5.3.20030906.orig/form/frm_driver.c
      --- ncurses-5.3/form/frm_driver.c	Sat Jul  6 10:33:27 2002
      +++ ncurses-5.3.20030906.orig/form/frm_driver.c	Tue May 13 20:08:22 2003
      @@ -32,7 +32,7 @@
        ****************************************************************************/
       #include "form.priv.h"
       
      -MODULE_ID("$Id: frm_driver.c,v 1.39 2002/07/06 15:33:27 juergen Exp $")
      +MODULE_ID("$Id: frm_driver.c,v 1.42 2003/05/03 23:05:21 tom Exp $")
       
       /*----------------------------------------------------------------------------
         This is the core module of the form library. It contains the majority
      @@ -42,7 +42,7 @@
         all the functions in this module depends on some others in the module,
         so it makes no sense to split them into separate files because they
         will always be linked together. The only acceptable concern is turnaround
      -  time for this module, but now we have all Pentiums or Riscs, so what!
      +  time for this module, but now we have all Pentiums or RISCs, so what!
       
         The driver routines are grouped into nine generic categories:
       
      @@ -55,10 +55,10 @@
          c)   Intra-Field Navigation     ( all functions prefixed by IFN_ )
               The current position in the current field is changed. 
          d)   Vertical Scrolling         ( all functions prefixed by VSC_ )
      -        Esseantially this is a specialization of Intra-Field navigation.
      +        Essentially this is a specialization of Intra-Field navigation.
               It has to check for a multi-line field.
          e)   Horizontal Scrolling       ( all functions prefixed by HSC_ )
      -        Esseantially this is a specialization of Intra-Field navigation.
      +        Essentially this is a specialization of Intra-Field navigation.
               It has to check for a single-line field.
          f)   Field Editing              ( all functions prefixed by FE_ )
               The content of the current field is changed
      @@ -79,11 +79,11 @@
       
       /*
       Some options that may effect compatibility in behavior to SVr4 forms,
      -but they are here to allow a more intuitive and user friendly behaviour of
      +but they are here to allow a more intuitive and user friendly behavior of
       our form implementation. This doesn't affect the API, so we feel it is
       uncritical.
       
      -The initial implementation tries to stay very close with the behaviour
      +The initial implementation tries to stay very close with the behavior
       of the original SVr4 implementation, although in some areas it is quite
       clear that this isn't the most appropriate way. As far as possible this
       sources will allow you to build a forms lib that behaves quite similar
      @@ -91,9 +91,9 @@
       Perhaps at some time we will make this configurable at runtime.
       */
       
      -/* Implement a more user-friendly previous/next word behaviour */
      +/* Implement a more user-friendly previous/next word behavior */
       #define FRIENDLY_PREV_NEXT_WORD (1)
      -/* Fix the wrong behaviour for forms with all fields inactive */
      +/* Fix the wrong behavior for forms with all fields inactive */
       #define FIX_FORM_INACTIVE_BUG (1)
       /* Allow dynamic field growth also when navigating past the end */
       #define GROW_IF_NAVIGATE (1)
      @@ -918,7 +918,7 @@
       |   
       |   Description   :  Propagate the Synchronize_Field function to all linked
       |                    fields. The first error that occurs in the sequence
      -|                    of updates is the returnvalue.
      +|                    of updates is the return value.
       |
       |   Return Values :  E_OK                - success
       |                    E_BAD_ARGUMENT      - invalid field pointer 
      @@ -1012,7 +1012,7 @@
       |   
       |   Description   :  If a fields options have changed, this routine is
       |                    called to propagate these changes to the screen and
      -|                    to really change the behaviour of the field.
      +|                    to really change the behavior of the field.
       |
       |   Return Values :  E_OK                - success
       |                    E_BAD_ARGUMENT      - invalid field pointer 
      @@ -1089,7 +1089,7 @@
       	      (!single_line_field && (field->drows < field->maxgrow)))
       	    {
       	      field->status |= _MAY_GROW;
      -	      /* a field with justification now changes its behaviour,
      +	      /* a field with justification now changes its behavior,
       		 so we must redisplay it */
       	      if (single_line_field                 &&
       		  (field->just != NO_JUSTIFICATION) &&
      @@ -2141,7 +2141,7 @@
         int res = E_REQUEST_DENIED;
       
         /* We have to deal here with the specific case of the overloaded 
      -     behaviour of New_Line and Delete_Previous requests.
      +     behavior of New_Line and Delete_Previous requests.
            They may end up in navigational requests if we are on the first
            character in a field. But navigation is also allowed on non-
            editable fields.
      @@ -2205,6 +2205,7 @@
       	{
       	  if (!(form->opts & O_NL_OVERLOAD))
       	    return(E_REQUEST_DENIED);
      +	  wmove(form->w,form->currow,form->curcol);
       	  wclrtoeol(form->w);
       	  /* we have to set this here, although it is also
       	     handled in the generic routine. The reason is,
      @@ -2221,6 +2222,7 @@
       		 a single-line field */
       	      return(E_SYSTEM_ERROR);
       	    }
      +	  wmove(form->w,form->currow,form->curcol);
       	  wclrtoeol(form->w);
       	  form->currow++;
       	  form->curcol = 0;
      @@ -2248,6 +2250,7 @@
       	  
       	  bp= Address_Of_Current_Position_In_Buffer(form);
       	  t = After_End_Of_Data(bp,field->dcols - form->curcol);
      +	  wmove(form->w,form->currow,form->curcol);
       	  wclrtoeol(form->w);
       	  form->currow++;
       	  form->curcol=0;
      @@ -2338,6 +2341,7 @@
       +--------------------------------------------------------------------------*/
       static int FE_Delete_Character(FORM * form)
       {
      +  wmove(form->w,form->currow,form->curcol);
         wdelch(form->w);
         return E_OK;
       }
      @@ -2378,6 +2382,7 @@
             if ((int)(this_end-this_line) > 
       	  (field->cols-(int)(prev_end-prev_line))) 
       	return E_REQUEST_DENIED;
      +      wmove(form->w,form->currow,form->curcol);
             wdeleteln(form->w);
             Adjust_Cursor_Position(form,prev_end);
             wmove(form->w,form->currow,form->curcol);
      @@ -2455,20 +2460,22 @@
       +--------------------------------------------------------------------------*/
       static int FE_Clear_To_End_Of_Line(FORM * form)
       {
      +  wmove(form->w,form->currow,form->curcol);
         wclrtoeol(form->w);
         return E_OK;
       }
       
       /*---------------------------------------------------------------------------
       |   Facility      :  libnform  
      -|   Function      :  static int FE_Clear_To_End_Of_Form(FORM * form)
      +|   Function      :  static int FE_Clear_To_End_Of_Field(FORM * form)
       |   
      -|   Description   :  Clear to end of form.
      +|   Description   :  Clear to end of field.
       |
       |   Return Values :  E_OK   - success
       +--------------------------------------------------------------------------*/
      -static int FE_Clear_To_End_Of_Form(FORM * form)
      +static int FE_Clear_To_End_Of_Field(FORM * form)
       {
      +  wmove(form->w,form->currow,form->curcol);
         wclrtobot(form->w);
         return E_OK;
       }
      @@ -3053,7 +3060,7 @@
       |                                           int (* const fct) (FORM *),
       |                                           FORM * form)
       |   
      -|   Description   :  Generic behaviour for changing the current field, the
      +|   Description   :  Generic behavior for changing the current field, the
       |                    field is left and a new field is entered. So the field
       |                    must be validated and the field init/term hooks must
       |                    be called.
      @@ -3366,7 +3373,7 @@
       |                                               int (* const fct) (FORM *),
       |                                               FORM * form)
       |   
      -|   Description   :  Generic behaviour for changing a page. This means
      +|   Description   :  Generic behavior for changing a page. This means
       |                    that the field is left and a new field is entered.
       |                    So the field must be validated and the field init/term
       |                    hooks must be called. Because also the page is changed,
      @@ -3598,7 +3605,7 @@
         { REQ_DEL_LINE     |ID_FE  ,FE_Delete_Line},
         { REQ_DEL_WORD     |ID_FE  ,FE_Delete_Word},
         { REQ_CLR_EOL      |ID_FE  ,FE_Clear_To_End_Of_Line},
      -  { REQ_CLR_EOF      |ID_FE  ,FE_Clear_To_End_Of_Form},
      +  { REQ_CLR_EOF      |ID_FE  ,FE_Clear_To_End_Of_Field},
         { REQ_CLR_FIELD    |ID_FE  ,FE_Clear_Field},
         
         { REQ_OVL_MODE     |ID_EM  ,EM_Overlay_Mode},
      diff -urNd -urNd ncurses-5.3/include/MKkey_defs.sh ncurses-5.3.20030906.orig/include/MKkey_defs.sh
      --- ncurses-5.3/include/MKkey_defs.sh	Sat Sep 28 18:32:16 2002
      +++ ncurses-5.3.20030906.orig/include/MKkey_defs.sh	Tue May 13 20:08:22 2003
      @@ -1,7 +1,7 @@
       #! /bin/sh
      -# $Id: MKkey_defs.sh,v 1.10 2002/09/28 23:32:16 tom Exp $
      +# $Id: MKkey_defs.sh,v 1.11 2003/01/11 22:20:40 tom Exp $
       ##############################################################################
      -# Copyright (c) 2001,2002 Free Software Foundation, Inc.                     #
      +# Copyright (c) 2001-2002,2003 Free Software Foundation, Inc.                #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -49,10 +49,10 @@
       if sort -k 6 $DATA >$data 2>/dev/null
       then
       	# POSIX
      -	sed -e 's/[	]\+/	/g' < $DATA |sort -n -k 6 >$data
      +	sed -e 's/[	][	]*/	/g' < $DATA |sort -n -k 6 >$data
       else
       	# SunOS (and SVr4, marked as obsolete but still recognized)
      -	sed -e 's/[	]\+/	/g' < $DATA |sort -n +5 >$data
      +	sed -e 's/[	][	]*/	/g' < $DATA |sort -n +5 >$data
       fi
       
       # add keys that we generate automatically:
      diff -urNd -urNd ncurses-5.3/include/curses.h.in ncurses-5.3.20030906.orig/include/curses.h.in
      --- ncurses-5.3/include/curses.h.in	Sat Sep 28 10:08:06 2002
      +++ ncurses-5.3.20030906.orig/include/curses.h.in	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -32,7 +32,7 @@
        *     and: Thomas E. Dickey 1996-on                                        *
        ****************************************************************************/
       
      -/* $Id: curses.h.in,v 1.134 2002/09/28 15:08:06 tom Exp $ */
      +/* $Id: curses.h.in,v 1.145 2003/06/15 23:42:18 tom Exp $ */
       
       #ifndef __NCURSES_H
       #define __NCURSES_H
      @@ -125,7 +125,7 @@
       
       typedef @cf_cv_type_of_bool@ NCURSES_BOOL;
       
      -#if (!defined(__cplusplus) || !@cf_cv_builtin_bool@) && (!@cf_cv_cc_bool_type@)
      +#if @USE_CXX_BOOL@ /* !__cplusplus, etc. */
       
       #if @cf_cv_header_stdbool_h@
       #include 
      @@ -136,7 +136,7 @@
       #if @cf_cv_header_stdbool_h@
       #define bool NCURSES_BOOL
       #else
      -typedef @cf_cv_type_of_bool@ bool;
      +typedef NCURSES_BOOL bool;
       #endif
       
       #endif /* !__cplusplus, etc. */
      @@ -189,45 +189,47 @@
       extern NCURSES_EXPORT_VAR(chtype) acs_map[];
       #endif
       
      +#define NCURSES_ACS(c)	(acs_map[(unsigned char)c])
      +
       /* VT100 symbols begin here */
      -#define ACS_ULCORNER	(acs_map['l'])	/* upper left corner */
      -#define ACS_LLCORNER	(acs_map['m'])	/* lower left corner */
      -#define ACS_URCORNER	(acs_map['k'])	/* upper right corner */
      -#define ACS_LRCORNER	(acs_map['j'])	/* lower right corner */
      -#define ACS_LTEE	(acs_map['t'])	/* tee pointing right */
      -#define ACS_RTEE	(acs_map['u'])	/* tee pointing left */
      -#define ACS_BTEE	(acs_map['v'])	/* tee pointing up */
      -#define ACS_TTEE	(acs_map['w'])	/* tee pointing down */
      -#define ACS_HLINE	(acs_map['q'])	/* horizontal line */
      -#define ACS_VLINE	(acs_map['x'])	/* vertical line */
      -#define ACS_PLUS	(acs_map['n'])	/* large plus or crossover */
      -#define ACS_S1		(acs_map['o'])	/* scan line 1 */
      -#define ACS_S9		(acs_map['s'])	/* scan line 9 */
      -#define ACS_DIAMOND	(acs_map['`'])	/* diamond */
      -#define ACS_CKBOARD	(acs_map['a'])	/* checker board (stipple) */
      -#define ACS_DEGREE	(acs_map['f'])	/* degree symbol */
      -#define ACS_PLMINUS	(acs_map['g'])	/* plus/minus */
      -#define ACS_BULLET	(acs_map['~'])	/* bullet */
      +#define ACS_ULCORNER	NCURSES_ACS('l') /* upper left corner */
      +#define ACS_LLCORNER	NCURSES_ACS('m') /* lower left corner */
      +#define ACS_URCORNER	NCURSES_ACS('k') /* upper right corner */
      +#define ACS_LRCORNER	NCURSES_ACS('j') /* lower right corner */
      +#define ACS_LTEE	NCURSES_ACS('t') /* tee pointing right */
      +#define ACS_RTEE	NCURSES_ACS('u') /* tee pointing left */
      +#define ACS_BTEE	NCURSES_ACS('v') /* tee pointing up */
      +#define ACS_TTEE	NCURSES_ACS('w') /* tee pointing down */
      +#define ACS_HLINE	NCURSES_ACS('q') /* horizontal line */
      +#define ACS_VLINE	NCURSES_ACS('x') /* vertical line */
      +#define ACS_PLUS	NCURSES_ACS('n') /* large plus or crossover */
      +#define ACS_S1		NCURSES_ACS('o') /* scan line 1 */
      +#define ACS_S9		NCURSES_ACS('s') /* scan line 9 */
      +#define ACS_DIAMOND	NCURSES_ACS('`') /* diamond */
      +#define ACS_CKBOARD	NCURSES_ACS('a') /* checker board (stipple) */
      +#define ACS_DEGREE	NCURSES_ACS('f') /* degree symbol */
      +#define ACS_PLMINUS	NCURSES_ACS('g') /* plus/minus */
      +#define ACS_BULLET	NCURSES_ACS('~') /* bullet */
       /* Teletype 5410v1 symbols begin here */
      -#define ACS_LARROW	(acs_map[','])	/* arrow pointing left */
      -#define ACS_RARROW	(acs_map['+'])	/* arrow pointing right */
      -#define ACS_DARROW	(acs_map['.'])	/* arrow pointing down */
      -#define ACS_UARROW	(acs_map['-'])	/* arrow pointing up */
      -#define ACS_BOARD	(acs_map['h'])	/* board of squares */
      -#define ACS_LANTERN	(acs_map['i'])	/* lantern symbol */
      -#define ACS_BLOCK	(acs_map['0'])	/* solid square block */
      +#define ACS_LARROW	NCURSES_ACS(',') /* arrow pointing left */
      +#define ACS_RARROW	NCURSES_ACS('+') /* arrow pointing right */
      +#define ACS_DARROW	NCURSES_ACS('.') /* arrow pointing down */
      +#define ACS_UARROW	NCURSES_ACS('-') /* arrow pointing up */
      +#define ACS_BOARD	NCURSES_ACS('h') /* board of squares */
      +#define ACS_LANTERN	NCURSES_ACS('i') /* lantern symbol */
      +#define ACS_BLOCK	NCURSES_ACS('0') /* solid square block */
       /*
        * These aren't documented, but a lot of System Vs have them anyway
        * (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings).
        * The ACS_names may not match AT&T's, our source didn't know them.
        */
      -#define ACS_S3		(acs_map['p'])	/* scan line 3 */
      -#define ACS_S7		(acs_map['r'])	/* scan line 7 */
      -#define ACS_LEQUAL	(acs_map['y'])	/* less/equal */
      -#define ACS_GEQUAL	(acs_map['z'])	/* greater/equal */
      -#define ACS_PI		(acs_map['{'])	/* Pi */
      -#define ACS_NEQUAL	(acs_map['|'])	/* not equal */
      -#define ACS_STERLING	(acs_map['}'])	/* UK pound sign */
      +#define ACS_S3		NCURSES_ACS('p') /* scan line 3 */
      +#define ACS_S7		NCURSES_ACS('r') /* scan line 7 */
      +#define ACS_LEQUAL	NCURSES_ACS('y') /* less/equal */
      +#define ACS_GEQUAL	NCURSES_ACS('z') /* greater/equal */
      +#define ACS_PI		NCURSES_ACS('{') /* Pi */
      +#define ACS_NEQUAL	NCURSES_ACS('|') /* not equal */
      +#define ACS_STERLING	NCURSES_ACS('}') /* UK pound sign */
       
       /*
        * Line drawing ACS names are of the form ACS_trbl, where t is the top, r
      @@ -286,20 +288,19 @@
       #undef mblen
       #endif
       #include 
      -#define _WCHAR_T
      -#define _WINT_T
       #endif
       
      -#if @NCURSES_MBSTATE_T@
      +#if @NEED_WCHAR_H@
       #include 		/* ...to get mbstate_t, etc. */
       #endif
       
      -#ifndef _WCHAR_T
      -typedef unsigned long wchar_t;
      -#endif /* _WCHAR_T */
      -#ifndef _WINT_T
      -typedef long int wint_t;
      -#endif /* _WINT_T */
      +#if @NCURSES_WCHAR_T@
      +typedef unsigned short wchar_t@NCURSES_OK_WCHAR_T@;
      +#endif
      +
      +#if @NCURSES_WINT_T@
      +typedef unsigned int wint_t@NCURSES_OK_WCHAR_T@;
      +#endif
       
       #define CCHARW_MAX	5
       typedef struct
      @@ -388,7 +389,8 @@
       extern NCURSES_EXPORT(char *) keybound (int, int);
       extern NCURSES_EXPORT(const char *) curses_version (void);
       extern NCURSES_EXPORT(int) assume_default_colors (int, int);
      -extern NCURSES_EXPORT(int) define_key (char *, int);
      +extern NCURSES_EXPORT(int) define_key (const char *, int);
      +extern NCURSES_EXPORT(int) key_defined (const char *);
       extern NCURSES_EXPORT(int) keyok (int, bool);
       extern NCURSES_EXPORT(int) resize_term (int, int);
       extern NCURSES_EXPORT(int) resizeterm (int, int);
      @@ -451,24 +453,14 @@
        * GCC (and some other compilers) define '__attribute__'; we're using this
        * macro to alert the compiler to flag inconsistencies in printf/scanf-like
        * function calls.  Just in case '__attribute__' isn't defined, make a dummy.
      - * G++ doesn't accept it anyway.
      + * Old versions of G++ do not accept it anyway, at least not consistently with
      + * GCC.
        */
      -#if !defined(__GNUC__) && !defined(__attribute__)
      +#if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__))
       #define __attribute__(p) /* nothing */
       #endif
       
       /*
      - * For g++, turn off our macros that use __attribute__ (g++ recognizes some
      - * of them, but not at the same version levels as gcc).
      - */
      -#ifdef __cplusplus
      -#undef GCC_NORETURN
      -#undef GCC_PRINTF
      -#undef GCC_SCANF
      -#undef GCC_UNUSED
      -#endif
      -
      -/*
        * We cannot define these in ncurses_cfg.h, since they require parameters to be
        * passed (that's non-portable).
        */
      @@ -609,7 +601,7 @@
       extern NCURSES_EXPORT(int) mvinsnstr (int, int, const char *, int);	/* generated */
       extern NCURSES_EXPORT(int) mvinsstr (int, int, const char *);		/* generated */
       extern NCURSES_EXPORT(int) mvinstr (int, int, char *);			/* generated */
      -extern NCURSES_EXPORT(int) mvprintw (int,int, NCURSES_CONST char *,...)	/* implemented */
      +extern NCURSES_EXPORT(int) mvprintw (int,int, const char *,...)		/* implemented */
       		GCC_PRINTFLIKE(3,4);
       extern NCURSES_EXPORT(int) mvscanw (int,int, NCURSES_CONST char *,...)	/* implemented */
       		GCC_SCANFLIKE(3,4);
      @@ -634,7 +626,7 @@
       extern NCURSES_EXPORT(int) mvwinsnstr (WINDOW *, int, int, const char *, int);	/* generated */
       extern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *);		/* generated */
       extern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *);		/* generated */
      -extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, NCURSES_CONST char *,...)	/* implemented */
      +extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, const char *,...)	/* implemented */
       		GCC_PRINTFLIKE(4,5);
       extern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, NCURSES_CONST char *,...)	/* implemented */
       		GCC_SCANFLIKE(4,5);
      @@ -658,7 +650,7 @@
       extern NCURSES_EXPORT(int) pechochar (WINDOW *, const chtype);		/* implemented */
       extern NCURSES_EXPORT(int) pnoutrefresh (WINDOW*,int,int,int,int,int,int);/* implemented */
       extern NCURSES_EXPORT(int) prefresh (WINDOW *,int,int,int,int,int,int);	/* implemented */
      -extern NCURSES_EXPORT(int) printw (NCURSES_CONST char *,...)		/* implemented */
      +extern NCURSES_EXPORT(int) printw (const char *,...)			/* implemented */
       		GCC_PRINTFLIKE(1,2);
       extern NCURSES_EXPORT(int) putp (const char *);				/* implemented */
       extern NCURSES_EXPORT(int) putwin (WINDOW *, FILE *);			/* implemented */
      @@ -720,8 +712,8 @@
       extern NCURSES_EXPORT(int) vidattr (chtype);				/* implemented */
       extern NCURSES_EXPORT(int) vidputs (chtype, int (*)(int));		/* implemented */
       extern NCURSES_EXPORT(int) vline (chtype, int);				/* generated */
      -extern NCURSES_EXPORT(int) vwprintw (WINDOW *, NCURSES_CONST char *,va_list);	/* implemented */
      -extern NCURSES_EXPORT(int) vw_printw (WINDOW *, NCURSES_CONST char *,va_list);	/* generated */
      +extern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *,va_list);	/* implemented */
      +extern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *,va_list);	/* generated */
       extern NCURSES_EXPORT(int) vwscanw (WINDOW *, NCURSES_CONST char *,va_list);	/* implemented */
       extern NCURSES_EXPORT(int) vw_scanw (WINDOW *, NCURSES_CONST char *,va_list);	/* generated */
       extern NCURSES_EXPORT(int) waddch (WINDOW *, const chtype);		/* implemented */
      @@ -765,7 +757,7 @@
       extern NCURSES_EXPORT(int) winstr (WINDOW *, char *);			/* generated */
       extern NCURSES_EXPORT(int) wmove (WINDOW *,int,int);			/* implemented */
       extern NCURSES_EXPORT(int) wnoutrefresh (WINDOW *);			/* implemented */
      -extern NCURSES_EXPORT(int) wprintw (WINDOW *, NCURSES_CONST char *,...)	/* implemented */
      +extern NCURSES_EXPORT(int) wprintw (WINDOW *, const char *,...)		/* implemented */
       		GCC_PRINTFLIKE(2,3);
       extern NCURSES_EXPORT(int) wredrawln (WINDOW *,int,int);		/* implemented */
       extern NCURSES_EXPORT(int) wrefresh (WINDOW *);				/* implemented */
      @@ -831,10 +823,11 @@
       #define nocrmode()		nocbreak()
       #define gettmode()
       
      -#define getyx(win,y,x)   	(y = (win)?(win)->_cury:ERR, x = (win)?(win)->_curx:ERR)
      -#define getbegyx(win,y,x)	(y = (win)?(win)->_begy:ERR, x = (win)?(win)->_begx:ERR)
      -#define getmaxyx(win,y,x)	(y = (win)?((win)->_maxy + 1):ERR, x = (win)?((win)->_maxx + 1):ERR)
      -#define getparyx(win,y,x)	(y = (win)?(win)->_pary:ERR, x = (win)?(win)->_parx:ERR)
      +#define getyx(win,y,x)   	(y = getcury(win), x = getcurx(win))
      +#define getbegyx(win,y,x)	(y = getbegy(win), x = getbegx(win))
      +#define getmaxyx(win,y,x)	(y = getmaxy(win), x = getmaxx(win))
      +#define getparyx(win,y,x)	(y = getpary(win), x = getparx(win))
      +
       #define getsyx(y,x) do { if(newscr->_leaveok) (y)=(x)=-1; \
       			 else getyx(newscr,(y),(x)); \
       		    } while(0)
      diff -urNd -urNd ncurses-5.3/include/curses.tail ncurses-5.3.20030906.orig/include/curses.tail
      --- ncurses-5.3/include/curses.tail	Sat Oct 12 10:46:02 2002
      +++ ncurses-5.3.20030906.orig/include/curses.tail	Tue May 13 20:08:22 2003
      @@ -1,4 +1,4 @@
      -/* $Id: curses.tail,v 1.7 2002/10/12 15:46:02 tom Exp $ */
      +/* $Id: curses.tail,v 1.8 2002/11/02 20:26:26 tom Exp $ */
       
       /* mouse interface */
       #define NCURSES_MOUSE_VERSION	1
      @@ -121,10 +121,6 @@
       #define OPTIMIZE_ALL		0xff	/* enable all optimizations (dflt) */
       #endif
       
      -#ifndef NCURSES_WGETCH_EVENTS
      -#undef KEY_EVENT
      -#endif
      -
       #ifdef __cplusplus
       
       /* these names conflict with STL */
      diff -urNd -urNd ncurses-5.3/include/curses.wide ncurses-5.3.20030906.orig/include/curses.wide
      --- ncurses-5.3/include/curses.wide	Sat Aug 31 12:48:53 2002
      +++ ncurses-5.3.20030906.orig/include/curses.wide	Sun Jul 20 14:02:08 2003
      @@ -1,21 +1,23 @@
       
       #ifdef _XOPEN_SOURCE_EXTENDED
       
      -/* $Id: curses.wide,v 1.25 2002/08/31 17:48:53 tom Exp $ */
      +/* $Id: curses.wide,v 1.27 2003/06/07 21:59:37 tom Exp $ */
       
       extern NCURSES_EXPORT_VAR(cchar_t *) _nc_wacs;
       
      -#define WACS_BSSB	(&_nc_wacs['l'])
      -#define WACS_SSBB	(&_nc_wacs['m'])
      -#define WACS_BBSS	(&_nc_wacs['k'])
      -#define WACS_SBBS	(&_nc_wacs['j'])
      -#define WACS_SBSS	(&_nc_wacs['u'])
      -#define WACS_SSSB	(&_nc_wacs['t'])
      -#define WACS_SSBS	(&_nc_wacs['v'])
      -#define WACS_BSSS	(&_nc_wacs['w'])
      -#define WACS_BSBS	(&_nc_wacs['q'])
      -#define WACS_SBSB	(&_nc_wacs['x'])
      -#define WACS_SSSS	(&_nc_wacs['n'])
      +#define NCURSES_WACS(c)	(&_nc_wacs[(unsigned char)c])
      +
      +#define WACS_BSSB	NCURSES_WACS('l')
      +#define WACS_SSBB	NCURSES_WACS('m')
      +#define WACS_BBSS	NCURSES_WACS('k')
      +#define WACS_SBBS	NCURSES_WACS('j')
      +#define WACS_SBSS	NCURSES_WACS('u')
      +#define WACS_SSSB	NCURSES_WACS('t')
      +#define WACS_SSBS	NCURSES_WACS('v')
      +#define WACS_BSSS	NCURSES_WACS('w')
      +#define WACS_BSBS	NCURSES_WACS('q')
      +#define WACS_SBSB	NCURSES_WACS('x')
      +#define WACS_SSSS	NCURSES_WACS('n')
       
       #define WACS_ULCORNER	WACS_BSSB
       #define WACS_LLCORNER	WACS_SSBB
      @@ -29,31 +31,31 @@
       #define WACS_VLINE	WACS_SBSB
       #define WACS_PLUS	WACS_SSSS
       
      -#define WACS_S1		(&_nc_wacs['o']) /* scan line 1 */
      -#define WACS_S9 	(&_nc_wacs['s']) /* scan line 9 */
      -#define WACS_DIAMOND	(&_nc_wacs['`']) /* diamond */
      -#define WACS_CKBOARD	(&_nc_wacs['a']) /* checker board */
      -#define WACS_DEGREE	(&_nc_wacs['f']) /* degree symbol */
      -#define WACS_PLMINUS	(&_nc_wacs['g']) /* plus/minus */
      -#define WACS_BULLET	(&_nc_wacs['~']) /* bullet */
      +#define WACS_S1		NCURSES_WACS('o') /* scan line 1 */
      +#define WACS_S9 	NCURSES_WACS('s') /* scan line 9 */
      +#define WACS_DIAMOND	NCURSES_WACS('`') /* diamond */
      +#define WACS_CKBOARD	NCURSES_WACS('a') /* checker board */
      +#define WACS_DEGREE	NCURSES_WACS('f') /* degree symbol */
      +#define WACS_PLMINUS	NCURSES_WACS('g') /* plus/minus */
      +#define WACS_BULLET	NCURSES_WACS('~') /* bullet */
       
       	/* Teletype 5410v1 symbols */
      -#define WACS_LARROW	(&_nc_wacs[',']) /* arrow left */
      -#define WACS_RARROW	(&_nc_wacs['+']) /* arrow right */
      -#define WACS_DARROW	(&_nc_wacs['.']) /* arrow down */
      -#define WACS_UARROW	(&_nc_wacs['-']) /* arrow up */
      -#define WACS_BOARD	(&_nc_wacs['h']) /* board of squares */
      -#define WACS_LANTERN	(&_nc_wacs['i']) /* lantern symbol */
      -#define WACS_BLOCK	(&_nc_wacs['0']) /* solid square block */
      +#define WACS_LARROW	NCURSES_WACS(',') /* arrow left */
      +#define WACS_RARROW	NCURSES_WACS('+') /* arrow right */
      +#define WACS_DARROW	NCURSES_WACS('.') /* arrow down */
      +#define WACS_UARROW	NCURSES_WACS('-') /* arrow up */
      +#define WACS_BOARD	NCURSES_WACS('h') /* board of squares */
      +#define WACS_LANTERN	NCURSES_WACS('i') /* lantern symbol */
      +#define WACS_BLOCK	NCURSES_WACS('0') /* solid square block */
       
       	/* ncurses extensions */
      -#define WACS_S3		(&_nc_wacs['p']) /* scan line 3 */
      -#define WACS_S7		(&_nc_wacs['r']) /* scan line 7 */
      -#define WACS_LEQUAL	(&_nc_wacs['y']) /* less/equal */
      -#define WACS_GEQUAL	(&_nc_wacs['z']) /* greater/equal */
      -#define WACS_PI		(&_nc_wacs['{']) /* Pi */
      -#define WACS_NEQUAL	(&_nc_wacs['|']) /* not equal */
      -#define WACS_STERLING	(&_nc_wacs['}']) /* UK pound sign */
      +#define WACS_S3		NCURSES_WACS('p') /* scan line 3 */
      +#define WACS_S7		NCURSES_WACS('r') /* scan line 7 */
      +#define WACS_LEQUAL	NCURSES_WACS('y') /* less/equal */
      +#define WACS_GEQUAL	NCURSES_WACS('z') /* greater/equal */
      +#define WACS_PI		NCURSES_WACS('{') /* Pi */
      +#define WACS_NEQUAL	NCURSES_WACS('|') /* not equal */
      +#define WACS_STERLING	NCURSES_WACS('}') /* UK pound sign */
       
       /*
        * Function prototypes for wide-character operations.
      @@ -129,7 +131,7 @@
       extern NCURSES_EXPORT(int) mvwvline_set (WINDOW *, int,int, const cchar_t *,int); /* generated:WIDEC */
       extern NCURSES_EXPORT(int) pecho_wchar (WINDOW *, const cchar_t *);	/* missing */
       extern NCURSES_EXPORT(int) setcchar (cchar_t *, const wchar_t *, const attr_t, short, const void *);	/* implemented */
      -extern NCURSES_EXPORT(int) slk_wset (int, const wchar_t *, int);	/* missing */
      +extern NCURSES_EXPORT(int) slk_wset (int, const wchar_t *, int);	/* implemented */
       extern NCURSES_EXPORT(attr_t) term_attrs (void);			/* implemented */
       extern NCURSES_EXPORT(int) unget_wch (const wchar_t);			/* implemented */
       extern NCURSES_EXPORT(int) vid_attr (attr_t, short, void *);		/* implemented */
      diff -urNd -urNd ncurses-5.3/include/ncurses_defs ncurses-5.3.20030906.orig/include/ncurses_defs
      --- ncurses-5.3/include/ncurses_defs	Sat Aug 24 18:13:43 2002
      +++ ncurses-5.3.20030906.orig/include/ncurses_defs	Sun Jul 20 14:02:09 2003
      @@ -1,6 +1,6 @@
      -# $Id: ncurses_defs,v 1.15 2002/08/24 23:13:43 tom Exp $
      +# $Id: ncurses_defs,v 1.18 2003/07/05 15:14:30 tom Exp $
       ##############################################################################
      -# Copyright (c) 2000-2001,2002 Free Software Foundation, Inc.                #
      +# Copyright (c) 2000-2002,2003 Free Software Foundation, Inc.                #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -45,6 +45,7 @@
       GCC_UNUSED	/* nothing */
       HAVE_BIG_CORE
       HAVE_BSD_CGETENT
      +HAVE_BTOWC 
       HAVE_BUILTIN_H
       HAVE_DIRENT_H
       HAVE_ERRNO
      @@ -72,6 +73,7 @@
       HAVE_LINK
       HAVE_LOCALE_H
       HAVE_LONG_FILE_NAMES
      +HAVE_MBTOWC
       HAVE_MEMCCPY
       HAVE_MENU_H
       HAVE_MKSTEMP
      @@ -81,6 +83,7 @@
       HAVE_POLL
       HAVE_POLL_H
       HAVE_PURIFY
      +HAVE_PUTWC 
       HAVE_REGEXPR_H_FUNCS
       HAVE_REGEXP_H_FUNCS
       HAVE_REGEX_H_FUNCS
      @@ -93,6 +96,7 @@
       HAVE_SIGACTION
       HAVE_SIGVEC
       HAVE_SIZECHANGE
      +HAVE_SLK_COLOR
       HAVE_STRDUP
       HAVE_STRSTR
       HAVE_SYMLINK
      @@ -121,6 +125,8 @@
       HAVE_VFSCANF
       HAVE_VSNPRINTF
       HAVE_VSSCANF
      +HAVE_WCTOB 
      +HAVE_WCTOMB
       HAVE_WORKING_POLL
       HAVE_WRESIZE
       HAVE__DOSCAN
      @@ -160,6 +166,7 @@
       USE_STRSTREAM_VSCAN
       USE_STRSTREAM_VSCAN_CAST
       USE_SYMLINKS
      +USE_SYSMOUSE
       USE_TERMCAP
       USE_WIDEC_SUPPORT
       USE_XMC_SUPPORT
      diff -urNd -urNd ncurses-5.3/include/ncurses_dll.h ncurses-5.3.20030906.orig/include/ncurses_dll.h
      --- ncurses-5.3/include/ncurses_dll.h	Sat Dec  8 19:36:34 2001
      +++ ncurses-5.3.20030906.orig/include/ncurses_dll.h	Sun Jul 20 14:02:09 2003
      @@ -1,10 +1,14 @@
      -/* $Id: ncurses_dll.h,v 1.2 2001/12/09 01:36:34 tom Exp $ */
      +/* $Id: ncurses_dll.h,v 1.4 2003/07/19 18:44:32 Charles.Wilson Exp $ */
       
       #ifndef NCURSES_DLL_H_incl
       #define NCURSES_DLL_H_incl 1
       
      -#undef NCURSES_DLL	/* cygwin dll not implemented */
      -#define NCURSES_STATIC	/* cygwin dll not implemented */
      +/* no longer needed on cygwin or mingw, thanks to auto-import       */
      +/* but this structure may be useful at some point for an MSVC build */
      +/* so, for now unconditionally define the important flags           */
      +/* "the right way" for proper static and dll+auto-import behavior   */
      +#undef NCURSES_DLL
      +#define NCURSES_STATIC
       
       #if defined(__CYGWIN__)
       #  if defined(NCURSES_DLL)
      @@ -14,8 +18,8 @@
       #  endif
       #  undef NCURSES_IMPEXP
       #  undef NCURSES_API
      -#  undef NCURSES_EXPORT(type)
      -#  undef NCURSES_EXPORT_VAR(type)
      +#  undef NCURSES_EXPORT
      +#  undef NCURSES_EXPORT_VAR
       #  if defined(NCURSES_DLL)
       /* building a DLL */
       #    define NCURSES_IMPEXP __declspec(dllexport)
      diff -urNd -urNd ncurses-5.3/include/tic.h ncurses-5.3.20030906.orig/include/tic.h
      --- ncurses-5.3/include/tic.h	Sat Oct 12 10:46:15 2002
      +++ ncurses-5.3.20030906.orig/include/tic.h	Fri Sep 12 16:41:41 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2000,2001 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2001,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -32,7 +32,7 @@
        ****************************************************************************/
       
       /*
      - * $Id: tic.h,v 1.42 2002/10/12 15:46:15 tom Exp $
      + * $Id: tic.h,v 1.45 2003/08/02 23:54:19 tom Exp $
        *	tic.h - Global variables and structures for the terminfo
        *			compiler.
        */
      @@ -203,8 +203,6 @@
       	const char	*source;
       };
       
      -extern NCURSES_EXPORT_VAR(int) _nc_tparm_err;
      -
       extern NCURSES_EXPORT_VAR(const struct name_table_entry * const) _nc_info_hash_table[];
       extern NCURSES_EXPORT_VAR(const struct name_table_entry * const) _nc_cap_hash_table[];
       
      @@ -217,7 +215,7 @@
       #define NOTFOUND	((struct name_table_entry *) 0)
       
       /* out-of-band values for representing absent capabilities */
      -#define ABSENT_BOOLEAN		(-1)		/* 255 */
      +#define ABSENT_BOOLEAN		(char)(-1)	/* 255 */
       #define ABSENT_NUMERIC		(-1)
       #define ABSENT_STRING		(char *)0
       
      @@ -241,6 +239,7 @@
       #endif
       
       /* access.c */
      +extern NCURSES_EXPORT(unsigned) _nc_pathlast (const char *);
       extern NCURSES_EXPORT(char *) _nc_basename (char *);
       extern NCURSES_EXPORT(char *) _nc_rootname (char *);
       
      @@ -284,6 +283,13 @@
       extern NCURSES_EXPORT(char *) _nc_captoinfo (const char *, const char *, int const);
       extern NCURSES_EXPORT(char *) _nc_infotocap (const char *, const char *, int const);
       
      +/* lib_tparm.c */
      +#define NUM_PARM 9
      +
      +extern NCURSES_EXPORT_VAR(int) _nc_tparm_err;
      +
      +extern NCURSES_EXPORT(int) _nc_tparm_analyze(const char *string, char *p_is_s[NUM_PARM], int *popcount);
      +
       /* lib_tputs.c */
       extern NCURSES_EXPORT_VAR(int) _nc_nulls_sent;		/* Add one for every null sent */
       
      diff -urNd -urNd ncurses-5.3/man/MKterminfo.sh ncurses-5.3.20030906.orig/man/MKterminfo.sh
      --- ncurses-5.3/man/MKterminfo.sh	Sat Jun 29 15:04:28 2002
      +++ ncurses-5.3.20030906.orig/man/MKterminfo.sh	Tue May 13 20:08:22 2003
      @@ -1,10 +1,10 @@
       #!/bin/sh
      -# $Id: MKterminfo.sh,v 1.10 2002/06/29 20:04:28 tom Exp $
      +# $Id: MKterminfo.sh,v 1.12 2003/01/11 21:42:12 tom Exp $
       #
       # MKterminfo.sh -- generate terminfo.5 from Caps tabular data
       #
       #***************************************************************************
      -# Copyright (c) 1998,2000,2001 Free Software Foundation, Inc.              *
      +# Copyright (c) 1998,2002,2003 Free Software Foundation, Inc.              *
       #                                                                          *
       # Permission is hereby granted, free of charge, to any person obtaining a  *
       # copy of this software and associated documentation files (the            *
      @@ -69,11 +69,11 @@
       
       sed -n <$caps "\
       /%%-STOP-HERE-%%/q
      -/^#%/s///p
      +/^#%/s/#%//p
       /^#/d
      -s/[	]\+/	/g
      +s/[	][	]*/	/g
       s/$/T}/
      -s/	[A-Z0-9_()\-]\+	[0-9\-]\+	[Y\-][B\-][C\-][G\-][EK\-]\**	/	T{/
      +s/	[A-Z0-9_()\-][A-Z0-9_()\-]*	[0-9\-][0-9\-]*	[Y\-][B\-][C\-][G\-][EK\-]\**	/	T{/
       s/	bool	/	/p
       s/	num	/	/p
       s/	str	/	/p
      diff -urNd -urNd ncurses-5.3/man/captoinfo.1m ncurses-5.3.20030906.orig/man/captoinfo.1m
      --- ncurses-5.3/man/captoinfo.1m	Sat Aug 12 20:56:49 2000
      +++ ncurses-5.3.20030906.orig/man/captoinfo.1m	Tue May 13 20:08:22 2003
      @@ -1,6 +1,6 @@
       '\" t
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -27,14 +27,14 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: captoinfo.1m,v 1.16 2000/08/13 01:56:49 tom Exp $
      +.\" $Id: captoinfo.1m,v 1.17 2003/05/11 00:32:53 tom Exp $
       .TH captoinfo 1M ""
       .ds n 5
       .ds d @TERMINFO@
       .SH NAME
       \fBcaptoinfo\fR - convert a \fItermcap\fR description into a \fIterminfo\fR description
       .SH SYNOPSIS
      -\fBcaptoinfo\fR [\fB-v\fR\fIn\fR \fIwidth\fR]  [\fB-V\fR] [\fB-1\fR] [\fB-w\fR \fIwidth\fR] \fIfile\fR . . .
      +\fBcaptoinfo\fR [\fB\-v\fR\fIn\fR \fIwidth\fR]  [\fB\-V\fR] [\fB\-1\fR] [\fB\-w\fR \fIwidth\fR] \fIfile\fR . . .
       .SH DESCRIPTION
       \fBcaptoinfo\fR looks in \fIfile\fR for \fBtermcap\fR descriptions.  For each
       one found, an equivalent \fBterminfo\fR description is written to standard
      @@ -47,18 +47,18 @@
       extracted from that file.  If the environment variable \fBTERMCAP\fR is not
       set, then the file \fB\*d\fR is read.
       .TP 5
      -\fB-v\fR
      +\fB\-v\fR
       print out tracing information on standard error as the program runs.
       .TP 5
      -\fB-V\fR
      +\fB\-V\fR
       print out the version of the program in use on standard error and exit.
       .TP 5
      -\fB-1\fR
      +\fB\-1\fR
       cause the fields to print out one to a line.  Otherwise, the fields
       will be printed several to a line to a maximum width of 60
       characters.
       .TP 5
      -\fB-w\fR
      +\fB\-w\fR
       change the output to \fIwidth\fR characters.
       .SH FILES
       .TP 20
      @@ -172,11 +172,11 @@
       capabilities \fBmeml\fR (memory lock) and \fBmemu\fR (memory unlock).
       These will be discarded with a warning message.
       .SH NOTES
      -This utility is actually a link to \fItic\fR(1M), running in \fI-I\fR mode.
      -You can use other \fItic\fR options such as \fB-f\fR and  \fB-x\fR.
      +This utility is actually a link to \fItic\fR(1M), running in \fI\-I\fR mode.
      +You can use other \fItic\fR options such as \fB\-f\fR and  \fB\-x\fR.
       
       The trace option isn't identical to SVr4's.  Under SVr4, instead of following
      -the -v with a trace level n, you repeat it n times.
      +the \fB\-v\fR with a trace level n, you repeat it n times.
       .SH SEE ALSO
       \fBcurses\fR(3X), \fB@INFOCMP@\fR(1M), \fBterminfo\fR(\*n)
       .SH AUTHOR
      diff -urNd -urNd ncurses-5.3/man/curs_addch.3x ncurses-5.3.20030906.orig/man/curs_addch.3x
      --- ncurses-5.3/man/curs_addch.3x	Sat Aug 10 17:12:36 2002
      +++ ncurses-5.3.20030906.orig/man/curs_addch.3x	Tue May 13 20:08:22 2003
      @@ -1,6 +1,6 @@
       '\" t
       .\"***************************************************************************
      -.\" Copyright (c) 1998-2000,2002 Free Software Foundation, Inc.              *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -27,7 +27,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_addch.3x,v 1.20 2002/08/10 22:12:36 tom Exp $
      +.\" $Id: curs_addch.3x,v 1.21 2003/05/10 20:33:49 jmc Exp $
       .TH curs_addch 3X ""
       .SH NAME
       \fBaddch\fR, \fBwaddch\fR, \fBmvaddch\fR, \fBmvwaddch\fR,
      @@ -62,7 +62,7 @@
       edge of a window it does nothing.
       Newline does a \fBclrtoeol\fR,
       then moves the cursor to the window left margin on the next line,
      -scrolling the window if on the last line).
      +scrolling the window if on the last line.
       Tabs are considered to be at every eighth column.
       The tab interval may be altered by setting the \fBTABSIZE\fR variable.
       
      @@ -74,7 +74,7 @@
       Video attributes can be combined with a character argument passed to
       \fBaddch\fR or related functions by logical-ORing them into the character.
       (Thus, text, including attributes, can be copied from one place to another
      -using \fBinch\fR and \fBaddch\fR.).  See the \fBcurs_attr\fR(3X) page for
      +using \fBinch\fR and \fBaddch\fR.)  See the \fBcurs_attr\fR(3X) page for
       values of predefined video attribute constants that can be usefully OR'ed
       into characters.
       
      diff -urNd -urNd ncurses-5.3/man/curs_beep.3x ncurses-5.3.20030906.orig/man/curs_beep.3x
      --- ncurses-5.3/man/curs_beep.3x	Wed Mar 11 15:12:53 1998
      +++ ncurses-5.3.20030906.orig/man/curs_beep.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
      +.\" Copyright (c) 1998,2003 Free Software Foundation, Inc.                   *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_beep.3x,v 1.7 1998/03/11 21:12:53 juergen Exp $
      +.\" $Id: curs_beep.3x,v 1.8 2003/05/10 20:33:49 jmc Exp $
       .TH curs_beep 3X ""
       .SH NAME
       \fBbeep\fR, \fBflash\fR - \fBcurses\fR bell and screen flash routines
      @@ -45,7 +45,7 @@
       alert is possible, nothing happens.  Nearly all terminals have an audible alert
       (bell or beep), but only some can flash the screen.
       .SH RETURN VALUE
      -These routines return \fBOK\fR if they succeed in beeping or flashing, 
      +These routines return \fBOK\fR if they succeed in beeping or flashing,
       \fBERR\fR otherwise.
       .SH EXTENSIONS
       SVr4's beep and flash routines always returned \fBOK\fR, so it was not
      diff -urNd -urNd ncurses-5.3/man/curs_deleteln.3x ncurses-5.3.20030906.orig/man/curs_deleteln.3x
      --- ncurses-5.3/man/curs_deleteln.3x	Sat Nov 11 14:43:20 2000
      +++ ncurses-5.3.20030906.orig/man/curs_deleteln.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_deleteln.3x,v 1.7 2000/11/11 20:43:20 Bernhard.Rosenkraenzer Exp $
      +.\" $Id: curs_deleteln.3x,v 1.8 2003/05/10 20:33:49 jmc Exp $
       .TH curs_deleteln 3X ""
       .SH NAME
       \fBdeleteln\fR,
      @@ -61,7 +61,7 @@
       with the one under the cursor), and move the remaining lines up.  The bottom
       \fIn\fR lines are cleared.  The current cursor position remains the same.
       
      -The \fBinsertln\fR and \fBwinsertln\fR routines, insert a blank line above the
      +The \fBinsertln\fR and \fBwinsertln\fR routines insert a blank line above the
       current line and the bottom line is lost.
       .SH RETURN VALUE
       All routines return the integer \fBERR\fR upon failure and an \fBOK\fR (SVr4
      diff -urNd -urNd ncurses-5.3/man/curs_extend.3x ncurses-5.3.20030906.orig/man/curs_extend.3x
      --- ncurses-5.3/man/curs_extend.3x	Sat Feb 16 16:39:04 2002
      +++ ncurses-5.3.20030906.orig/man/curs_extend.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1999-2000,2002 Free Software Foundation, Inc.              *
      +.\" Copyright (c) 1999-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -28,7 +28,7 @@
       .\"
       .\" Author: Thomas E. Dickey  1999
       .\"
      -.\" $Id: curs_extend.3x,v 1.9 2002/02/16 22:39:04 tom Exp $
      +.\" $Id: curs_extend.3x,v 1.11 2003/05/11 00:32:53 tom Exp $
       .TH curs_extend 3X ""
       .SH NAME
       \fBcurses_version\fP,
      @@ -55,11 +55,11 @@
       is able to use user-defined or nonstandard names
       which may be compiled into the terminfo
       description, i.e., via the terminfo or termcap interfaces.
      -Normally these names are available for use, since the essential descision
      -is made by using the \fB-x\fP option of \fItic\fP to compile
      +Normally these names are available for use, since the essential decision
      +is made by using the \fB\-x\fP option of \fItic\fP to compile
       extended terminal definitions.
       However you can disable this feature
      -to ensure compatiblity with other implementations of curses
      +to ensure compatiblity with other implementations of curses.
       .SH PORTABILITY
       These routines are specific to ncurses.  They were not supported on
       Version 7, BSD or System V implementations.  It is recommended that
      diff -urNd -urNd ncurses-5.3/man/curs_get_wch.3x ncurses-5.3.20030906.orig/man/curs_get_wch.3x
      --- ncurses-5.3/man/curs_get_wch.3x	Sat May 18 16:48:53 2002
      +++ ncurses-5.3.20030906.orig/man/curs_get_wch.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 2002 Free Software Foundation, Inc.                        *
      +.\" Copyright (c) 2002,2003 Free Software Foundation, Inc.                   *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_get_wch.3x,v 1.3 2002/05/18 21:48:53 tom Exp $
      +.\" $Id: curs_get_wch.3x,v 1.5 2003/05/10 20:33:49 jmc Exp $
       .TH curs_get_wch 3X ""
       .SH NAME
       \fBget_wch\fR,
      @@ -37,13 +37,13 @@
       .SH SYNOPSIS
       \fB#include \fR
       .sp
      -\fBint get_wch(win_t *\fR\fIwch\fR\fB);\fR
      +\fBint get_wch(wint_t *\fR\fIwch\fR\fB);\fR
       .br
      -\fBint wget_wch(WINDOW *\fR\fIwin\fR\fB, win_t *\fR\fIwch\fR\fB);\fR
      +\fBint wget_wch(WINDOW *\fR\fIwin\fR\fB, wint_t *\fR\fIwch\fR\fB);\fR
       .br
      -\fBint mvget_wch(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, win_t *\fR\fIwch\fR\fB);\fR
      +\fBint mvget_wch(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wint_t *\fR\fIwch\fR\fB);\fR
       .br
      -\fBint mvwget_wch(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, win_t *\fR\fIwch\fR\fB);\fR
      +\fBint mvwget_wch(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wint_t *\fR\fIwch\fR\fB);\fR
       .br
       \fBint unget_wch(const wchar_t \fR\fIwch\fR\fB);\fR
       .SH DESCRIPTION
      @@ -130,7 +130,7 @@
       Depending on the state of the tty driver when each character
       is typed, the program may produce undesirable results.
       .PP
      -All functions except \fBwget_wch\fR and \fBunget_wch\fR 
      +All functions except \fBwget_wch\fR and \fBunget_wch\fR
       may be macros.
       .SH RETURN VALUES
       When
      diff -urNd -urNd ncurses-5.3/man/curs_get_wstr.3x ncurses-5.3.20030906.orig/man/curs_get_wstr.3x
      --- ncurses-5.3/man/curs_get_wstr.3x	Sat May 18 16:48:15 2002
      +++ ncurses-5.3.20030906.orig/man/curs_get_wstr.3x	Sun Jul 20 14:02:09 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 2002 Free Software Foundation, Inc.                        *
      +.\" Copyright (c) 2002,2003 Free Software Foundation, Inc.                   *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_get_wstr.3x,v 1.2 2002/05/18 21:48:15 tom Exp $
      +.\" $Id: curs_get_wstr.3x,v 1.3 2003/07/05 11:15:28 tom Exp $
       .TH curs_get_wstr 3X ""
       .SH NAME
       \fBget_wstr\fR,
      @@ -151,6 +151,9 @@
       In the latter case,
       an ERR return without other data is treated as an end-of-file condition,
       and the returned array contains a \fBWEOF\fR followed by a null \fBwchar_t\fR.
      +.PP
      +X/Open curses documents these functions to pass an array of \fBwchar_t\fR,
      +but all of the vendors implement this using \fBwint_t\fR.
       .SH SEE ALSO
       Functions:
       \fBcurses\fR(3X),
      diff -urNd -urNd ncurses-5.3/man/curs_getcchar.3x ncurses-5.3.20030906.orig/man/curs_getcchar.3x
      --- ncurses-5.3/man/curs_getcchar.3x	Sat Mar 23 19:08:55 2002
      +++ ncurses-5.3.20030906.orig/man/curs_getcchar.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 2001,2002 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 2001-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_getcchar.3x,v 1.6 2002/03/24 01:08:55 tom Exp $
      +.\" $Id: curs_getcchar.3x,v 1.7 2003/05/10 20:33:49 jmc Exp $
       .TH curs_getcchar 3X ""
       .SH NAME
       \fBgetcchar\fP,
      @@ -108,7 +108,7 @@
       The string must be L'\\0' terminated,
       contain at most one character with strictly positive width,
       which must be the first,
      -and contain no characters of negative width. 
      +and contain no characters of negative width.
       .SH NOTES
       .PP
       The \fIopts\fP argument is reserved for future use.
      diff -urNd -urNd ncurses-5.3/man/curs_getch.3x ncurses-5.3.20030906.orig/man/curs_getch.3x
      --- ncurses-5.3/man/curs_getch.3x	Sun Mar 17 08:36:21 2002
      +++ ncurses-5.3.20030906.orig/man/curs_getch.3x	Tue May 13 20:08:22 2003
      @@ -1,6 +1,6 @@
       '\" t
       .\"***************************************************************************
      -.\" Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -27,7 +27,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_getch.3x,v 1.21 2002/03/17 14:36:21 tom Exp $
      +.\" $Id: curs_getch.3x,v 1.22 2003/05/10 20:33:49 jmc Exp $
       .TH curs_getch 3X ""
       .SH NAME
       \fBgetch\fR,
      @@ -82,7 +82,7 @@
       that function key is returned instead of the raw characters.
       Possible function
       keys are defined in \fB\fR as macros with values outside the range
      -of 8-bit characters whose names begin with \fBKEY_.\fR Thus, a variable
      +of 8-bit characters whose names begin with \fBKEY_\fR. Thus, a variable
       intended to hold the return value of a function key must be of short size or
       larger.
       
      @@ -143,7 +143,7 @@
       KEY_SRESET/Soft (partial) reset
       KEY_RESET/Reset or hard reset
       KEY_PRINT/Print or copy
      -KEY_LL/Home down or bottom (lower left).
      +KEY_LL/Home down or bottom (lower left)
       KEY_A1/Upper left of keypad
       KEY_A3/Upper right of keypad
       KEY_B2/Center of keypad
      @@ -238,7 +238,7 @@
       treat these control keys specially (and ignore the terminfo), or
       use the terminfo definitions.
       \fBNcurses\fR uses the terminfo definition.
      -If it says that KEY_ENTER is control/M, \fBgetch\fR, will return KEY_ENTER
      +If it says that KEY_ENTER is control/M, \fBgetch\fR will return KEY_ENTER
       when you press control/M.
       
       When using \fBgetch\fR, \fBwgetch\fR, \fBmvgetch\fR, or
      diff -urNd -urNd ncurses-5.3/man/curs_getstr.3x ncurses-5.3.20030906.orig/man/curs_getstr.3x
      --- ncurses-5.3/man/curs_getstr.3x	Sat Apr 13 17:14:30 2002
      +++ ncurses-5.3.20030906.orig/man/curs_getstr.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2000,2001 Free Software Foundation, Inc.              *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_getstr.3x,v 1.11 2002/04/13 22:14:30 tom Exp $
      +.\" $Id: curs_getstr.3x,v 1.12 2003/05/10 20:33:49 jmc Exp $
       .TH curs_getstr 3X ""
       .SH NAME
       \fBgetstr\fR,
      @@ -90,7 +90,7 @@
       
       SVr3 and early SVr4 curses implementations did not reject function keys;
       the SVr4.0 documentation claimed that "special keys" (such as function
      -keys, "home" key, "clear" key, \fIetc\fR.) are interpreted" without
      +keys, "home" key, "clear" key, \fIetc\fR.) are "interpreted", without
       giving details.  It lied.  In fact, the `character' value appended to the
       string by those implementations was predictable but not useful
       (being, in fact, the low-order eight bits of the key's KEY_ value).
      diff -urNd -urNd ncurses-5.3/man/curs_getyx.3x ncurses-5.3.20030906.orig/man/curs_getyx.3x
      --- ncurses-5.3/man/curs_getyx.3x	Sat Sep 21 14:00:38 2002
      +++ ncurses-5.3.20030906.orig/man/curs_getyx.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2002 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,17 +26,9 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_getyx.3x,v 1.8 2002/09/21 19:00:38 tom Exp $
      +.\" $Id: curs_getyx.3x,v 1.10 2003/05/10 20:33:49 jmc Exp $
       .TH curs_getyx 3X ""
       .SH NAME
      -.IX getbegx
      -.IX getbegy
      -.IX getcurx
      -.IX getcury
      -.IX getmaxx
      -.IX getmaxy
      -.IX getparx
      -.IX getpary
       \fBgetyx\fR,
       \fBgetparyx\fR,
       \fBgetbegyx\fR,
      @@ -64,7 +56,7 @@
       Like \fBgetyx\fR, the \fBgetbegyx\fR and \fBgetmaxyx\fR macros store
       the current beginning coordinates and size of the specified window.
       .SH RETURN VALUE
      -The return values of these macros are undefined (\fIi\fR.\fIe\fR.,
      +The return values of these macros are undefined (i.e.,
       they should not be used as the right-hand side of assignment statements).
       .SH NOTES
       All of these interfaces are macros.
      diff -urNd -urNd ncurses-5.3/man/curs_initscr.3x ncurses-5.3.20030906.orig/man/curs_initscr.3x
      --- ncurses-5.3/man/curs_initscr.3x	Sat Jul 20 09:51:04 2002
      +++ ncurses-5.3.20030906.orig/man/curs_initscr.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_initscr.3x,v 1.11 2002/07/20 14:51:04 tom Exp $
      +.\" $Id: curs_initscr.3x,v 1.12 2003/05/10 20:33:49 jmc Exp $
       .TH curs_initscr 3X ""
       .SH NAME
       \fBinitscr\fR,
      @@ -111,7 +111,7 @@
       
       Old versions of curses, e.g., BSD 4.4, may have returned a null pointer
       from \fBinitscr\fR when an error is detected, rather than exiting.
      -It is safe but redundant to check the return value of \fBinitscr\fR 
      +It is safe but redundant to check the return value of \fBinitscr\fR
       in XSI Curses.
       .SH SEE ALSO
       \fBcurses\fR(3X), \fBcurs_kernel\fR(3X), \fBcurs_refresh\fR(3X),
      diff -urNd -urNd ncurses-5.3/man/curs_inopts.3x ncurses-5.3.20030906.orig/man/curs_inopts.3x
      --- ncurses-5.3/man/curs_inopts.3x	Sat Aug 10 17:29:49 2002
      +++ ncurses-5.3.20030906.orig/man/curs_inopts.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2001 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_inopts.3x,v 1.9 2002/08/10 22:29:49 tom Exp $
      +.\" $Id: curs_inopts.3x,v 1.10 2003/05/10 20:33:49 jmc Exp $
       .TH curs_inopts 3X ""
       .SH NAME
       \fBcbreak\fR, \fBnocbreak\fR, \fBecho\fR,
      @@ -163,9 +163,9 @@
       
       The \fBtimeout\fR and \fBwtimeout\fR routines set blocking or
       non-blocking read for a given window.  If \fIdelay\fR is negative,
      -blocking read is used (\fIi\fR.\fIe\fR., waits indefinitely for
      +blocking read is used (i.e., waits indefinitely for
       input).  If \fIdelay\fR is zero, then non-blocking read is used
      -(\fIi\fR.\fIe\fR., read returns \fBERR\fR if no input is waiting).  If
      +(i.e., read returns \fBERR\fR if no input is waiting).  If
       \fIdelay\fR is positive, then read blocks for \fIdelay\fR
       milliseconds, and returns \fBERR\fR if there is still no input.
       Hence, these routines provide the same functionality as \fBnodelay\fR,
      @@ -193,7 +193,7 @@
       AT&T curses implementations, in that the echo bit is cleared when curses
       initializes the terminal state.  BSD curses differed from this slightly; it
       left the echo bit on at initialization, but the BSD \fBraw\fR call turned it
      -off as a side-effect.  For best portability, set echo or noecho explicitly 
      +off as a side-effect.  For best portability, set echo or noecho explicitly
       just after initialization, even if your program remains in cooked mode.
       .SH NOTES
       Note that \fBecho\fR, \fBnoecho\fR, \fBhalfdelay\fR, \fBintrflush\fR,
      diff -urNd -urNd ncurses-5.3/man/curs_insch.3x ncurses-5.3.20030906.orig/man/curs_insch.3x
      --- ncurses-5.3/man/curs_insch.3x	Sat Jul  1 14:57:21 2000
      +++ ncurses-5.3.20030906.orig/man/curs_insch.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_insch.3x,v 1.7 2000/07/01 19:57:21 tom Exp $
      +.\" $Id: curs_insch.3x,v 1.8 2003/05/10 20:33:49 jmc Exp $
       .TH curs_insch 3X ""
       .SH NAME
       \fBinsch\fR,
      @@ -45,7 +45,7 @@
       \fBint mvwinsch(WINDOW *win, int y, int x, chtype ch);\fR
       .br
       .SH DESCRIPTION
      -These routines, insert the character \fIch\fR before the character under the
      +These routines insert the character \fIch\fR before the character under the
       cursor.  All characters to the right of the cursor are moved one space to the
       right, with the possibility of the rightmost character on the line being lost.
       The insertion operation does not change the cursor position.
      diff -urNd -urNd ncurses-5.3/man/curs_mouse.3x ncurses-5.3.20030906.orig/man/curs_mouse.3x
      --- ncurses-5.3/man/curs_mouse.3x	Sat Jul 20 09:52:14 2002
      +++ ncurses-5.3.20030906.orig/man/curs_mouse.3x	Tue May 13 20:08:22 2003
      @@ -1,6 +1,6 @@
       '\" t
       .\"***************************************************************************
      -.\" Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -27,7 +27,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_mouse.3x,v 1.20 2002/07/20 14:52:14 tom Exp $
      +.\" $Id: curs_mouse.3x,v 1.22 2003/05/10 20:33:49 jmc Exp $
       .TH curs_mouse 3X ""
       .SH NAME
       \fBgetmouse\fR, \fBungetmouse\fR,
      @@ -149,8 +149,8 @@
       to screen-relative coordinates due to the mechanism to reserve lines on top
       or bottom of the screen for other purposes (ripoff() call, see also slk_...
       functions).
      -If the parameter \fBto_screen\fR is \fBTRUE\fR, the pointers 
      -\fBpY, pX\fR must reference the coordinates of a location inside the window 
      +If the parameter \fBto_screen\fR is \fBTRUE\fR, the pointers
      +\fBpY, pX\fR must reference the coordinates of a location inside the window
       \fBwin\fR.
       They are converted to screen-relative coordinates and returned
       through the pointers.
      @@ -168,7 +168,7 @@
       Please notice, that the referenced coordinates
       are only replaced by the converted coordinates if the transformation was
       successful.
      - 
      +
       The \fBmouseinterval\fR function sets the maximum time (in thousands of a
       second) that can elapse between press and release events for them to
       be recognized as a click.
      @@ -209,6 +209,14 @@
       \fBncurses\fR(3X) (and the \fBwmousemask\fR function will always
       return \fB0\fR).
       
      +If the terminfo entry contains a \fBXM\fR string,
      +this is used in the xterm mouse driver to control the
      +way the terminal is initialized for mouse operation.
      +The default, if \fBXM\fR is not found,
      +corresponds to private mode 1000 of xterm:
      +
      +    \\E[?1000%?%p1%{1}%=%th%el%;
      +
       The z member in the event structure is not presently used.
       It is intended
       for use with touch screens (which may be pressure-sensitive) or with
      diff -urNd -urNd ncurses-5.3/man/curs_outopts.3x ncurses-5.3.20030906.orig/man/curs_outopts.3x
      --- ncurses-5.3/man/curs_outopts.3x	Sat Oct 13 19:50:30 2001
      +++ ncurses-5.3.20030906.orig/man/curs_outopts.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2001 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2001,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_outopts.3x,v 1.17 2001/10/14 00:50:30 tom Exp $
      +.\" $Id: curs_outopts.3x,v 1.18 2003/05/10 20:33:49 jmc Exp $
       .TH curs_outopts 3X ""
       .SH NAME
       \fBclearok\fR, \fBidlok\fR, \fBidcok\fR, \fBimmedok\fR,
      @@ -93,7 +93,7 @@
       
       If \fBimmedok\fR is called with \fBTRUE as argument\fR, any change
       in the window image, such as the ones caused by \fBwaddch, wclrtobot, wscrl\fR,
      -\fIetc\fR., automatically cause a call to \fBwrefresh\fR.
      +etc., automatically cause a call to \fBwrefresh\fR.
       However, it may
       degrade performance considerably, due to repeated calls to \fBwrefresh\fR.
       It is disabled by default.
      @@ -165,7 +165,7 @@
       This will not work under
       ncurses.
       
      -Earlier System V curses implementations specified that with \fBscrollok\fR 
      +Earlier System V curses implementations specified that with \fBscrollok\fR
       enabled, any window modification triggering a scroll also forced a physical
       refresh.
       XSI Curses does not require this, and \fBncurses\fR avoids doing
      diff -urNd -urNd ncurses-5.3/man/curs_pad.3x ncurses-5.3.20030906.orig/man/curs_pad.3x
      --- ncurses-5.3/man/curs_pad.3x	Tue Jul  4 17:38:13 2000
      +++ ncurses-5.3.20030906.orig/man/curs_pad.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_pad.3x,v 1.9 2000/07/04 22:38:13 tom Exp $
      +.\" $Id: curs_pad.3x,v 1.10 2003/05/10 20:33:49 jmc Exp $
       .TH curs_pad 3X ""
       .SH NAME
       \fBnewpad\fR, \fBsubpad\fR, \fBprefresh\fR,
      @@ -53,7 +53,7 @@
       screen size, and is not necessarily associated with a particular part of the
       screen.  Pads can be used when a large window is needed, and only a part of the
       window will be on the screen at one time.  Automatic refreshes of pads
      -(\fIe\fR.\fIg\fR., from scrolling or echoing of input) do not occur.  It is not
      +(e.g., from scrolling or echoing of input) do not occur.  It is not
       legal to call \fBwrefresh\fR with a \fIpad\fR as an argument; the routines
       \fBprefresh\fR or \fBpnoutrefresh\fR should be called instead.  Note that these
       routines require additional parameters to specify the part of the pad to be
      @@ -84,7 +84,7 @@
       The \fBpechochar\fR routine is functionally equivalent to a call to \fBaddch\fR
       followed by a call to \fBrefresh\fR, a call to \fBwaddch\fR followed by a call
       to \fBwrefresh\fR, or a call to \fBwaddch\fR followed by a call to
      -\fBprefresh.\fR The knowledge that only a single character is being output is
      +\fBprefresh\fR. The knowledge that only a single character is being output is
       taken into consideration and, for non-control characters, a considerable
       performance gain might be seen by using these routines instead of their
       equivalents.  In the case of \fBpechochar\fR, the last location of the pad on
      @@ -95,7 +95,7 @@
       completion.
       
       Routines that return pointers return \fBNULL\fR on error, and set \fBerrno\fR
      -to \fBENOMEM\fR.  
      +to \fBENOMEM\fR.
       .SH NOTES
       Note that \fBpechochar\fR may be a macro.
       .SH PORTABILITY
      diff -urNd -urNd ncurses-5.3/man/curs_print.3x ncurses-5.3.20030906.orig/man/curs_print.3x
      --- ncurses-5.3/man/curs_print.3x	Sat Feb 16 16:39:04 2002
      +++ ncurses-5.3.20030906.orig/man/curs_print.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2002 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_print.3x,v 1.5 2002/02/16 22:39:04 tom Exp $
      +.\" $Id: curs_print.3x,v 1.6 2003/05/10 20:33:49 jmc Exp $
       .TH curs_print 3X ""
       .SH NAME
       \fBmcprint\fR - ship binary data to printer
      @@ -46,7 +46,7 @@
       rule of thumb is to sleep for a second after shipping each 80-character line.
       
       .SH RETURN VALUE
      -The \fBmcprint\fR function returns \fBERR\fR if the write operation aborted 
      +The \fBmcprint\fR function returns \fBERR\fR if the write operation aborted
       for some reason.  In this case, errno will contain either an error associated
       with \fBwrite(2)\fR or one of the following:
       .TP 5
      diff -urNd -urNd ncurses-5.3/man/curs_printw.3x ncurses-5.3.20030906.orig/man/curs_printw.3x
      --- ncurses-5.3/man/curs_printw.3x	Sat Jul 20 10:01:43 2002
      +++ ncurses-5.3.20030906.orig/man/curs_printw.3x	Tue May 13 20:08:22 2003
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_printw.3x,v 1.12 2002/07/20 15:01:43 tom Exp $
      +.\" $Id: curs_printw.3x,v 1.13 2002/11/16 22:28:57 tom Exp $
       .TH curs_printw 3X ""
       .SH NAME
       \fBprintw\fR,
      @@ -37,17 +37,17 @@
       .SH SYNOPSIS
       \fB#include \fR
       
      -\fBint printw(char *fmt, ...);\fR
      +\fBint printw(const char *fmt, ...);\fR
       .br
      -\fBint wprintw(WINDOW *win, char *fmt, ...);\fR
      +\fBint wprintw(WINDOW *win, const char *fmt, ...);\fR
       .br
      -\fBint mvprintw(int y, int x, char *fmt, ...);\fR
      +\fBint mvprintw(int y, int x, const char *fmt, ...);\fR
       .br
      -\fBint mvwprintw(WINDOW *win, int y, int x, char *fmt, ...);\fR
      +\fBint mvwprintw(WINDOW *win, int y, int x, const char *fmt, ...);\fR
       .br
      -\fBint vwprintw(WINDOW *win, char *fmt, va_list varglist);\fR
      +\fBint vwprintw(WINDOW *win, const char *fmt, va_list varglist);\fR
       .br
      -\fBint vw_printw(WINDOW *win, char *fmt, va_list varglist);\fR
      +\fBint vw_printw(WINDOW *win, const char *fmt, va_list varglist);\fR
       .br
       .SH DESCRIPTION
       The \fBprintw\fR, \fBwprintw\fR, \fBmvprintw\fR and \fBmvwprintw\fR
      diff -urNd -urNd ncurses-5.3/man/curs_scroll.3x ncurses-5.3.20030906.orig/man/curs_scroll.3x
      --- ncurses-5.3/man/curs_scroll.3x	Sat Oct 13 19:51:56 2001
      +++ ncurses-5.3.20030906.orig/man/curs_scroll.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2000,2001 Free Software Foundation, Inc.              *
      +.\" Copyright (c) 1998-2001,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_scroll.3x,v 1.9 2001/10/14 00:51:56 tom Exp $
      +.\" $Id: curs_scroll.3x,v 1.10 2003/05/10 20:33:49 jmc Exp $
       .TH curs_scroll 3X ""
       .SH NAME
       \fBscroll\fR, \fBscrl\fR, \fBwscrl\fR - scroll a \fBcurses\fR window
      @@ -61,12 +61,12 @@
       .SH NOTES
       Note that \fBscrl\fR and \fBscroll\fR may be macros.
       
      -The SVr4 documentation says that the optimization of physically scrolling 
      +The SVr4 documentation says that the optimization of physically scrolling
       immediately if the scroll region is the entire screen "is" performed, not
       "may be" performed.
       This implementation deliberately does not guarantee
       that this will occur, to leave open the possibility of smarter
      -optimization of multiple scroll actions on the next update. 
      +optimization of multiple scroll actions on the next update.
       
       Neither the SVr4 nor the XSI documentation specify whether the current
       attribute or
      diff -urNd -urNd ncurses-5.3/man/curs_slk.3x ncurses-5.3.20030906.orig/man/curs_slk.3x
      --- ncurses-5.3/man/curs_slk.3x	Sat Mar  3 15:05:41 2001
      +++ ncurses-5.3.20030906.orig/man/curs_slk.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_slk.3x,v 1.11 2001/03/03 21:05:41 Todd.C.Miller Exp $
      +.\" $Id: curs_slk.3x,v 1.12 2003/05/10 20:33:49 jmc Exp $
       .TH curs_slk 3X ""
       .SH NAME
       \fBslk_init\fR, \fBslk_set\fR, \fBslk_refresh\fR,
      @@ -77,7 +77,7 @@
       many terminals.  For those terminals that do not have soft labels,
       \fBcurses\fR takes over the bottom line of \fBstdscr\fR, reducing the size of
       \fBstdscr\fR and the variable \fBLINES\fR.  \fBcurses\fR standardizes on eight
      -labels of up to eight characters each. In addition to this, the ncurses 
      +labels of up to eight characters each. In addition to this, the ncurses
       implementation supports a mode where it simulates 12 labels of up to five
       characters each. This is most common for todays PC like enduser devices.
       Please note that ncurses simulates this mode by taking over up to two lines at
      @@ -94,10 +94,10 @@
       identify the key numbers easily.
       
       The \fBslk_set\fR routine requires \fIlabnum\fR to be a label number,
      -from \fB1\fR to \fB8\fR (resp. \fB12\fR); \fIlabel\fR must be the string 
      +from \fB1\fR to \fB8\fR (resp. \fB12\fR); \fIlabel\fR must be the string
       to be put on the label, up to eight (resp. five) characters in length.
       A null string or a null pointer sets up a blank label. \fIfmt\fR is either
      -\fB0\fR, \fB1\fR, or \fB2\fR, indicating whether the label is  to be 
      +\fB0\fR, \fB1\fR, or \fB2\fR, indicating whether the label is  to be
       left-justified, centered, or right-justified, respectively, within the
       label.
       
      @@ -109,7 +109,7 @@
       
       The \fBslk_clear\fR routine clears the soft labels from the screen.
       
      -The \fBslk_restore\fR routine, restores the soft labels to the screen
      +The \fBslk_restore\fR routine restores the soft labels to the screen
       after a \fBslk_clear\fR has been performed.
       
       The \fBslk_touch\fR routine forces all the soft labels to be output
      @@ -118,7 +118,7 @@
       The \fBslk_attron\fR, \fBslk_attrset\fR, \fBslk_attroff\fR and \fBslk_attr\fR
       routines correspond to \fBattron\fR, \fBattrset\fR, \fBattroff\fR and \fBattr_get\fR.
       They have an effect only if soft labels are simulated on the bottom line of
      -the screen.  The default highlight for soft keys is A_STANDOUT (as in 
      +the screen.  The default highlight for soft keys is A_STANDOUT (as in
       System V curses, which does not document this fact).
       
       The \fBslk_color\fR routine corresponds to \fBcolor_set\fR. It has an effect only
      diff -urNd -urNd ncurses-5.3/man/curs_termcap.3x ncurses-5.3.20030906.orig/man/curs_termcap.3x
      --- ncurses-5.3/man/curs_termcap.3x	Sat Feb 16 13:26:41 2002
      +++ ncurses-5.3.20030906.orig/man/curs_termcap.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_termcap.3x,v 1.16 2002/02/16 19:26:41 tom Exp $
      +.\" $Id: curs_termcap.3x,v 1.18 2003/02/08 22:25:47 tom Exp $
       .TH curs_termcap 3X ""
       .ds n 5
       .SH NAME
      @@ -130,6 +130,12 @@
       Because terminfo conventions for representing padding in string capabilities
       differ from termcap's, \fBtputs("50");\fR will put out a literal "50" rather
       than busy-waiting for 50 milliseconds.  Cope with it.
      +
      +Note that termcap has nothing analogous to terminfo's \fBsgr\fR string.
      +One consequence of this is that termcap applications assume \fRme\fR
      +(terminfo \fBsgr0\fR) does not reset the alternate character set.
      +This implementation checks for, and modifies the data shown to the
      +termcap interface to accommodate termcap's limitation in this respect.
       .SH PORTABILITY
       The XSI Curses standard, Issue 4 describes these functions.  However, they
       are marked TO BE WITHDRAWN and may be removed in future versions.
      diff -urNd -urNd ncurses-5.3/man/curs_terminfo.3x ncurses-5.3.20030906.orig/man/curs_terminfo.3x
      --- ncurses-5.3/man/curs_terminfo.3x	Sat Jul 20 11:05:19 2002
      +++ ncurses-5.3.20030906.orig/man/curs_terminfo.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1999-2000,2002 Free Software Foundation, Inc.              *
      +.\" Copyright (c) 1999-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_terminfo.3x,v 1.16 2002/07/20 16:05:19 tom Exp $
      +.\" $Id: curs_terminfo.3x,v 1.17 2003/05/10 20:22:01 tom Exp $
       .TH curs_terminfo 3X ""
       .ds n 5
       .SH NAME
      @@ -108,7 +108,7 @@
       
       The header files \fBcurses.h\fR and \fBterm.h\fR should be included (in this
       order) to get the definitions for these strings, numbers, and flags.
      -Parameterized strings should be passed through \fBtparm\fR to instantiate them.  
      +Parameterized strings should be passed through \fBtparm\fR to instantiate them. 
       All \fBterminfo\fR strings [including the output of \fBtparm\fR] should be printed
       with \fBtputs\fR or \fBputp\fR.  Call the \fBreset_shell_mode\fR to restore the
       tty modes before exiting [see \fBcurs_kernel\fR(3X)].  Programs which use
      @@ -280,7 +280,7 @@
       actual terminal state, and that an application should touch and refresh
       the window before resuming normal curses calls.
       Both ncurses and System V Release 4 curses implement \fBmvcur\fR using
      -the SCREEN data allocated in either \fBinitscr\fR or \fBnewterm\fR. 
      +the SCREEN data allocated in either \fBinitscr\fR or \fBnewterm\fR.
       So though it is documented as a terminfo function,
       \fBmvcur\fR is really a curses function which is not well specified.
       .SH SEE ALSO
      diff -urNd -urNd ncurses-5.3/man/curs_util.3x ncurses-5.3.20030906.orig/man/curs_util.3x
      --- ncurses-5.3/man/curs_util.3x	Sun Sep  1 14:44:37 2002
      +++ ncurses-5.3.20030906.orig/man/curs_util.3x	Sun Jul 20 14:02:09 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_util.3x,v 1.9 2002/09/01 19:44:37 tom Exp $
      +.\" $Id: curs_util.3x,v 1.11 2003/07/19 19:59:56 tom Exp $
       .TH curs_util 3X ""
       .SH NAME
       \fBdelay_output\fR,
      @@ -44,7 +44,7 @@
       
       \fBchar *unctrl(chtype c);\fR
       .br
      -\fBchar *wunctrl(wchar_t w);\fR
      +\fBchar *wunctrl(cchar_t *c);\fR
       .br
       \fBchar *keyname(int c);\fR
       .br
      @@ -105,6 +105,7 @@
       The \fBdelay_output\fR routine inserts an \fIms\fR millisecond pause
       in output.  This routine should not be used extensively because
       padding characters are used rather than a CPU pause.
      +If no padding character is specified, this uses \fBnapms\fR to perform the delay.
       
       The \fBflushinp\fR routine throws away any typeahead that has been typed by the
       user and has not yet been read by the program.
      @@ -125,7 +126,10 @@
       terms.  The description here is adapted from the XSI Curses standard (which
       erroneously fails to describe the disabling of \fBcuu\fR).
       .SH SEE ALSO
      -\fBcurses\fR(3X), \fBcurs_initscr\fR(3X), \fBcurs_scr_dump\fR(3X).
      +\fBcurses\fR(3X),
      +\fBcurs_initscr\fR(3X),
      +\fBcurs_kernel\fR(3X),
      +\fBcurs_scr_dump\fR(3X).
       .\"#
       .\"# The following sets edit modes for GNU EMACS
       .\"# Local Variables:
      diff -urNd -urNd ncurses-5.3/man/curs_window.3x ncurses-5.3.20030906.orig/man/curs_window.3x
      --- ncurses-5.3/man/curs_window.3x	Sat Jul  1 15:08:37 2000
      +++ ncurses-5.3.20030906.orig/man/curs_window.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: curs_window.3x,v 1.9 2000/07/01 20:08:37 tom Exp $
      +.\" $Id: curs_window.3x,v 1.10 2003/05/10 20:33:49 jmc Exp $
       .TH curs_window 3X ""
       .SH NAME
       \fBnewwin\fR,
      @@ -142,7 +142,7 @@
       incompletely implemented, and not well tested.
       
       The System V curses documentation is very unclear about what \fBwsyncup\fR
      -and \fBwsyncdown\fR actually do.  It seems to imply that they are only 
      +and \fBwsyncdown\fR actually do.  It seems to imply that they are only
       supposed to touch exactly those lines that are affected by ancestor changes.
       The language here, and the behavior of the \fBcurses\fR implementation,
       is patterned on the XPG4 curses standard.  The weaker XPG4 spec may result
      diff -urNd -urNd ncurses-5.3/man/define_key.3x ncurses-5.3.20030906.orig/man/define_key.3x
      --- ncurses-5.3/man/define_key.3x	Sat Feb 16 16:39:52 2002
      +++ ncurses-5.3.20030906.orig/man/define_key.3x	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2002 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -28,14 +28,14 @@
       .\"
       .\" Author: Thomas E. Dickey  1997
       .\"
      -.\" $Id: define_key.3x,v 1.8 2002/02/16 22:39:52 tom Exp $
      +.\" $Id: define_key.3x,v 1.9 2003/05/17 23:25:11 tom Exp $
       .TH define_key 3X ""
       .SH NAME
       \fBdefine_key\fP \- define a keycode
       .SH SYNOPSIS
       \fB#include \fP
       
      -\fBint define_key(char *definition, int keycode);\fP
      +\fBint define_key(const char *definition, int keycode);\fP
       .SH DESCRIPTION
       This is an extension to the curses library.
       It permits an application to define keycodes with their corresponding control
      diff -urNd -urNd ncurses-5.3/man/form_field.3x ncurses-5.3.20030906.orig/man/form_field.3x
      --- ncurses-5.3/man/form_field.3x	Sat Nov 28 19:05:52 1998
      +++ ncurses-5.3.20030906.orig/man/form_field.3x	Tue May 13 20:08:22 2003
      @@ -1,6 +1,6 @@
       '\" t
       .\"***************************************************************************
      -.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
      +.\" Copyright (c) 1998,2003 Free Software Foundation, Inc.                   *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -27,7 +27,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: form_field.3x,v 1.5 1998/11/29 01:05:52 Rick.Ohnemus Exp $
      +.\" $Id: form_field.3x,v 1.6 2003/05/10 20:33:49 jmc Exp $
       .TH form_field 3X ""
       .SH NAME
       \fBform_field\fR - make and break connections between fields and forms
      @@ -50,7 +50,7 @@
       
       The function \fBfield_count\fR returns the count of fields in \fIform\fR.
       
      -The function \fBmove_field\fR move the given field (which must be disconnected)
      +The function \fBmove_field\fR moves the given field (which must be disconnected)
       to a specified location on the screen.
       .SH RETURN VALUES
       The function \fBform_fields\fR returns \fBNULL\fR on error.
      diff -urNd -urNd ncurses-5.3/man/form_field_buffer.3x ncurses-5.3.20030906.orig/man/form_field_buffer.3x
      --- ncurses-5.3/man/form_field_buffer.3x	Sat Jan 19 16:48:23 2002
      +++ ncurses-5.3.20030906.orig/man/form_field_buffer.3x	Tue May 13 20:08:22 2003
      @@ -1,6 +1,6 @@
       '\" t
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2002 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -27,7 +27,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: form_field_buffer.3x,v 1.9 2002/01/19 22:48:23 tom Exp $
      +.\" $Id: form_field_buffer.3x,v 1.10 2003/05/10 20:22:01 tom Exp $
       .TH form_field_buffer 3X ""
       .SH NAME
       \fBform_field_buffer\fR - field buffer control
      @@ -50,7 +50,7 @@
       numbered buffers may be allocated by applications through the \fBnbuf\fR
       argument of (see \fBform_field_new\fR(3X)) but are not manipulated by the forms
       library.  The function \fBfield_buffer\fR returns the address of the buffer.
      -Please note that this buffer has always the length of the buffer, that means 
      +Please note that this buffer has always the length of the buffer, that means
       that it may typically contain trailing spaces. If you entered leading spaces
       the buffer may also contain them. If you want the raw data, you must write your
       own routine that copies the value out of the buffer and removes the leading
      diff -urNd -urNd ncurses-5.3/man/form_field_just.3x ncurses-5.3.20030906.orig/man/form_field_just.3x
      --- ncurses-5.3/man/form_field_just.3x	Sat Jan 19 16:48:41 2002
      +++ ncurses-5.3.20030906.orig/man/form_field_just.3x	Tue May 13 20:08:22 2003
      @@ -1,6 +1,6 @@
       '\" t
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2002 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -27,7 +27,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: form_field_just.3x,v 1.6 2002/01/19 22:48:41 tom Exp $
      +.\" $Id: form_field_just.3x,v 1.7 2003/05/10 20:33:49 jmc Exp $
       .TH form_field_just 3X ""
       .SH NAME
       \fBform_field_just\fR - retrieve field characteristics
      @@ -48,7 +48,7 @@
       The function \fBfield_just\fR returns one of: NO_JUSTIFICATION,
       JUSTIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER.
       
      -The function \fBset_field_just\fR return one of the following:
      +The function \fBset_field_just\fR returns one of the following:
       .TP 5
       \fBE_OK\fR
       The routine succeeded.
      diff -urNd -urNd ncurses-5.3/man/form_field_new.3x ncurses-5.3.20030906.orig/man/form_field_new.3x
      --- ncurses-5.3/man/form_field_new.3x	Sat Feb 16 16:39:52 2002
      +++ ncurses-5.3.20030906.orig/man/form_field_new.3x	Tue May 13 20:08:22 2003
      @@ -1,6 +1,6 @@
       '\" t
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2002 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -27,7 +27,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: form_field_new.3x,v 1.11 2002/02/16 22:39:52 tom Exp $
      +.\" $Id: form_field_new.3x,v 1.12 2003/05/10 20:33:49 jmc Exp $
       .TH form_field_new 3X ""
       .SH NAME
       \fBform_field_new\fR - create and destroy form fields
      @@ -84,7 +84,7 @@
       
       It may be unwise to count on the set of attributes copied by
       \fBdup_field\fR(3X) being portable; the System V forms library documents are
      -not very explicit on what gets copied and was not.
      +not very explicit about what gets copied and what doesn't.
       .SH AUTHORS
       Juergen Pfeifer.  Manual pages and adaptation for new curses by Eric
       S. Raymond.
      diff -urNd -urNd ncurses-5.3/man/form_field_opts.3x ncurses-5.3.20030906.orig/man/form_field_opts.3x
      --- ncurses-5.3/man/form_field_opts.3x	Sat Nov 28 19:06:54 1998
      +++ ncurses-5.3.20030906.orig/man/form_field_opts.3x	Tue May 13 20:08:22 2003
      @@ -1,6 +1,6 @@
       '\" t
       .\"***************************************************************************
      -.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
      +.\" Copyright (c) 1998,2003 Free Software Foundation, Inc.                   *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -27,7 +27,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: form_field_opts.3x,v 1.7 1998/11/29 01:06:54 Rick.Ohnemus Exp $
      +.\" $Id: form_field_opts.3x,v 1.8 2003/05/10 20:33:49 jmc Exp $
       .TH form_field_opts 3X ""
       .SH NAME
       \fBform_field_opts\fR - set and get field options
      @@ -58,7 +58,7 @@
       .TP 5
       O_VISIBLE
       The field is displayed.  If this option is off, display of the field is
      -suppressed,
      +suppressed.
       .TP 5
       O_ACTIVE
       The field is visited during processing.  If this option is off, the field will
      @@ -79,7 +79,7 @@
       The field is cleared whenever a character is entered at the first position.
       .TP 5
       O_AUTOSKIP
      -Skip to the next field when this one fills
      +Skip to the next field when this one fills.
       .TP 5
       O_NULLOK
       Allow a blank field.
      diff -urNd -urNd ncurses-5.3/man/form_field_validation.3x ncurses-5.3.20030906.orig/man/form_field_validation.3x
      --- ncurses-5.3/man/form_field_validation.3x	Sat Feb 16 16:39:52 2002
      +++ ncurses-5.3.20030906.orig/man/form_field_validation.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2002 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,10 +26,10 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: form_field_validation.3x,v 1.12 2002/02/16 22:39:52 tom Exp $
      +.\" $Id: form_field_validation.3x,v 1.14 2003/05/10 20:33:49 jmc Exp $
       .TH form_field_validation 3X ""
       .SH NAME
      -\fBform_field_validation\fR - data type validation for fields 
      +\fBform_field_validation\fR - data type validation for fields
       .SH SYNOPSIS
       \fB#include \fR
       .br
      @@ -38,10 +38,25 @@
       FIELDTYPE *field_type(const FIELD *field);
       .br
       void *field_arg(const FIELD *field);
      +.sp
      +FIELDTYPE *TYPE_ALNUM;
      +.br
      +FIELDTYPE *TYPE_ALPHA;
      +.br
      +FIELDTYPE *TYPE_ENUM;
      +.br
      +FIELDTYPE *TYPE_INTEGER;
      +.br
      +FIELDTYPE *TYPE_NUMERIC;
      +.br
      +FIELDTYPE *TYPE_REGEXP;
      +.br
      +FIELDTYPE *TYPE_IPV4;
       .br
       .SH DESCRIPTION
       The function \fBset_field_type\fR declares a data type for a given form field.
      -This is the type checked by validation functions.  The types are as follows:
      +This is the type checked by validation functions.
      +The predefined types are as follows:
       .TP 5
       TYPE_ALNUM
       Alphanumeric data.  Requires a third \fBint\fR argument, a minimum field width.
      @@ -56,27 +71,29 @@
       match must be a unique one (if this flag is off, a prefix matches the first
       of any set of more than one list elements with that prefix). Please notice
       that the string list is not copied, only a reference to it is stored in the
      -field. So you should avoid to use a list that lives in automatic variables
      +field. So you should avoid using a list that lives in automatic variables
       on the stack.
       .TP 5
       TYPE_INTEGER
       Integer data, parsable to an integer by \fBatoi(3)\fR.  Requires a third
      -\fBint\fR argument controlling the precision, a fourth \fBlong\fR argument 
      +\fBint\fR argument controlling the precision, a fourth \fBlong\fR argument
       constraining minimum value, and a fifth \fBlong\fR constraining maximum value.
      -If the maximum value is less or equal the minimum value, the range is simply
      -ignored. On return the field buffer is formatted according to the \fBprintf\fR
      -format specification ".*ld", where the '*' is replaced by the precision argument.
      +If the maximum value is less than or equal to the minimum value, the range is
      +simply ignored. On return the field buffer is formatted according to the
      +\fBprintf\fR format specification ".*ld", where the '*' is replaced by the
      +precision argument.
       For details of the precision handling see \fBprintf's\fR man-page.
       .TP 5
       TYPE_NUMERIC
       Numeric data (may have a decimal-point part). Requires a third
       \fBint\fR argument controlling the precision, a fourth \fBdouble\fR
      -argument constraining minimum value, and a fifth \fBdouble\fR constraining 
      -maximum value. If your system supports locale's, the decimal point character
      +argument constraining minimum value, and a fifth \fBdouble\fR constraining
      +maximum value. If your system supports locales, the decimal point character
       to be used must be the one specified by your locale.
      -If the maximum value is less or equal the minimum value, the range is simply
      -ignored. On return the field buffer is formatted according to the \fBprintf\fR
      -format specification ".*f", where the '*' is replaced by the precision argument.
      +If the maximum value is less than or equal to the minimum value, the range is
      +simply ignored. On return the field buffer is formatted according to the
      +\fBprintf\fR format specification ".*f", where the '*' is replaced by the
      +precision argument.
       For details of the precision handling see \fBprintf's\fR man-page.
       .TP 5
       TYPE_REGEXP
      @@ -96,7 +113,7 @@
       numbers between 0 and 255. Trailing blanks in the buffer are ignored. The address
       itself is not validated. Please note that this is an ncurses extension. This
       field type may not be available in other curses implementations.
      -
      +.PP
       It is possible to set up new programmer-defined field types.  See the
       \fBform_fieldtype\fR(3X) manual page.
       .SH RETURN VALUE
      diff -urNd -urNd ncurses-5.3/man/form_fieldtype.3x ncurses-5.3.20030906.orig/man/form_fieldtype.3x
      --- ncurses-5.3/man/form_fieldtype.3x	Sat Aug  4 15:36:25 2001
      +++ ncurses-5.3.20030906.orig/man/form_fieldtype.3x	Tue May 13 20:08:22 2003
      @@ -1,6 +1,6 @@
       '\" t
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2000,2001 Free Software Foundation, Inc.              *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -27,7 +27,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: form_fieldtype.3x,v 1.9 2001/08/04 20:36:25 William.Setzer Exp $
      +.\" $Id: form_fieldtype.3x,v 1.12 2003/05/10 20:33:49 jmc Exp $
       .TH form_fieldtype 3X ""
       .SH NAME
       \fBform_fieldtype\fR - define validation-field types
      @@ -57,7 +57,7 @@
       .SH DESCRIPTION
       The function \fBnew_fieldtype\fR creates a new field type usable for data
       validation.  You supply it with \fIfield_check\fR, a predicate to check the
      -validity of an entered data string whenever the user attempt to leave a field.
      +validity of an entered data string whenever the user attempts to leave a field.
       The (FIELD *) argument is passed in so the validation predicate can see the
       field's buffer, sizes and other attributes; the second argument is an
       argument-block structure, about which more below.
      @@ -69,22 +69,31 @@
       The function \fBfree_fieldtype\fR frees the space allocated for a given
       validation type.
       
      -The function \fBset_fieldtype\fR associates three storage-management functions
      -with a field type.  The \fImak_arg\fR function is automatically applied to the
      +The function \fBset_fieldtype_arg\fR associates three storage-management functions
      +with a field type.
      +The \fImake_arg\fR function is automatically applied to the
       list of arguments you give \fBset_field_type\fR when attaching validation
       to a field; its job is to bundle these into an allocated argument-block
      -object which can later be passed to validation predicated.  The other two
      -hook arguments should copy and free argument-block structures.  They will
      -be used by the forms-driver code. You must supply the \fImak_arg\fR function,
      -the other two are optional, you may supply NULL for them. In this case it
      -is assumed, that \fImak_arg\fR doesn't allocate memory but simply loads the
      +object which can later be passed to validation predicated.
      +The other two hook arguments should copy and free argument-block structures.
      +They will be used by the forms-driver code.
      +You must supply the \fImake_arg\fR function,
      +the other two are optional, you may supply NULL for them.
      +In this case it is assumed
      +that \fImake_arg\fR does not allocate memory but simply loads the
       argument into a single scalar value.
       
      +The function \fBlink_fieldtype\fR creates
      +a new field type from the two given types.
      +They are connected by an logical 'OR'.
      +
       The form driver requests \fBREQ_NEXT_CHOICE\fR and \fBREQ_PREV_CHOICE\fR assume
       that the possible values of a field form an ordered set, and provide the forms
      -user with a way to move through the set.  The \fBset_fieldtype_choice\fR
      +user with a way to move through the set.
      +The \fBset_fieldtype_choice\fR
       function allows forms programmers to define successor and predecessor functions
      -for the field type.  These functions take the field pointer and an
      +for the field type.
      +These functions take the field pointer and an
       argument-block structure as arguments.
       .SH RETURN VALUE
       The pointer-valued routines return NULL on error.
      diff -urNd -urNd ncurses-5.3/man/infocmp.1m ncurses-5.3.20030906.orig/man/infocmp.1m
      --- ncurses-5.3/man/infocmp.1m	Sat Oct  5 16:22:21 2002
      +++ ncurses-5.3.20030906.orig/man/infocmp.1m	Tue May 13 20:08:22 2003
      @@ -1,6 +1,6 @@
       '\" t
       .\"***************************************************************************
      -.\" Copyright (c) 1998-2000,2002 Free Software Foundation, Inc.              *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -27,14 +27,14 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: infocmp.1m,v 1.30 2002/10/05 21:22:21 tom Exp $
      +.\" $Id: infocmp.1m,v 1.33 2003/05/11 00:32:53 tom Exp $
       .TH infocmp 1M ""
       .ds n 5
       .ds d @TERMINFO@
       .SH NAME
       \fBinfocmp\fR - compare or print out \fIterminfo\fR descriptions
       .SH SYNOPSIS
      -\fBinfocmp\fR [\fB-\
      +\fBinfocmp\fR [\fB\-\
       1\
       C\
       E\
      @@ -58,9 +58,9 @@
       u\
       \fR]
       .br
      -      [\fB-v\fR \fIn\fR] [\fB-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR] [\fB-R \fR\fBsubset\fR]
      +      [\fB\-v\fR \fIn\fR] [\fB\-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR] [\fB\-R \fR\fBsubset\fR]
       .br
      -      [\fB-w\fR\ \fIwidth\fR] [\fB-A\fR\ \fIdirectory\fR] [\fB-B\fR\ \fIdirectory\fR]
      +      [\fB\-w\fR\ \fIwidth\fR] [\fB\-A\fR\ \fIdirectory\fR] [\fB\-B\fR\ \fIdirectory\fR]
       .br
             [\fItermname\fR...]
       .SH DESCRIPTION
      @@ -72,9 +72,9 @@
       string fields.
       .SS Default Options
       If no options are specified and zero or one \fItermnames\fR are specified, the
      -\fB-I\fR option will be assumed.  If more than one \fItermname\fR is specified,
      -the \fB-d\fR option will be assumed.
      -.SS Comparison Options [-d] [-c] [-n]
      +\fB\-I\fR option will be assumed.  If more than one \fItermname\fR is specified,
      +the \fB\-d\fR option will be assumed.
      +.SS Comparison Options [\-d] [\-c] [\-n]
       \fBinfocmp\fR compares the \fBterminfo\fR description of the first terminal
       \fItermname\fR with each of the descriptions given by the entries for the other
       terminal's \fItermnames\fR.  If a capability is defined for only one of the
      @@ -82,35 +82,35 @@
       \fBF\fR for boolean variables, \fB-1\fR for integer variables, and \fBNULL\fR
       for string variables.
       
      -The \fB-d\fR option produces a list of each capability that is different
      +The \fB\-d\fR option produces a list of each capability that is different
       between two entries.  This option is useful to show the difference between two
       entries, created by different people, for the same or similar terminals.
       
      -The \fB-c\fR option produces a list of each capability that is common between
      +The \fB\-c\fR option produces a list of each capability that is common between
       two entries.  Capabilities that are not set are ignored.  This option can be
      -used as a quick check to see if the \fB-u\fR option is worth using.
      +used as a quick check to see if the \fB\-u\fR option is worth using.
       
      -The \fB-n\fR option produces a list of each capability that is in neither
      +The \fB\-n\fR option produces a list of each capability that is in neither
       entry.  If no \fItermnames\fR are given, the environment variable \fBTERM\fR
       will be used for both of the \fItermnames\fR.  This can be used as a quick
       check to see if anything was left out of a description.
      -.SS Source Listing Options [-I] [-L] [-C] [-r]
      -The \fB-I\fR, \fB-L\fR, and \fB-C\fR options will produce a source listing for
      +.SS Source Listing Options [\-I] [\-L] [\-C] [\-r]
      +The \fB\-I\fR, \fB\-L\fR, and \fB\-C\fR options will produce a source listing for
       each terminal named.
       
       .TS
       center tab(/) ;
       l l .
      -\fB-I\fR/use the \fBterminfo\fR names
      -\fB-L\fR/use the long C variable name listed in <\fBterm.h\fR>
      -\fB-C\fR/use the \fBtermcap\fR names
      -\fB-r\fR/when using \fB-C\fR, put out all capabilities in \fBtermcap\fR form
      +\fB\-I\fR/use the \fBterminfo\fR names
      +\fB\-L\fR/use the long C variable name listed in <\fBterm.h\fR>
      +\fB\-C\fR/use the \fBtermcap\fR names
      +\fB\-r\fR/when using \fB\-C\fR, put out all capabilities in \fBtermcap\fR form
       .TE
       
       If no \fItermnames\fR are given, the environment variable \fBTERM\fR will be
       used for the terminal name.
       
      -The source produced by the \fB-C\fR option may be used directly as a
      +The source produced by the \fB\-C\fR option may be used directly as a
       \fBtermcap\fR entry, but not all parameterized strings can be changed to
       the \fBtermcap\fR format.  \fBinfocmp\fR will attempt to convert most of the
       parameterized information, and anything not converted will be plainly marked in
      @@ -123,7 +123,7 @@
       All \fBtermcap\fR variables no longer supported by \fBterminfo\fR, but which
       are derivable from other \fBterminfo\fR variables, will be output.  Not all
       \fBterminfo\fR capabilities will be translated; only those variables which were
      -part of \fBtermcap\fR will normally be output.  Specifying the \fB-r\fR option
      +part of \fBtermcap\fR will normally be output.  Specifying the \fB\-r\fR option
       will take off this restriction, allowing all capabilities to be output in
       \fItermcap\fR form.
       
      @@ -151,8 +151,8 @@
       \fB%p1%?%'x'%>%t%p1%'y'%+%;/%>xy\fR/concept
       \fB%p2\fR is printed before \fB%p1/%r\fR/hp
       .TE
      -.SS Use= Option [-u]
      -The \fB-u\fR option produces a \fBterminfo\fR source description of the first
      +.SS Use= Option [\-u]
      +The \fB\-u\fR option produces a \fBterminfo\fR source description of the first
       terminal \fItermname\fR which is relative to the sum of the descriptions given
       by the entries for the other terminals \fItermnames\fR.  It does this by
       analyzing the differences between the first \fItermname\fR and the other
      @@ -187,29 +187,29 @@
       the compilation time, is specifying extra \fBuse=\fR fields that are
       superfluous.  \fBinfocmp\fR will flag any other \fItermname use=\fR fields that
       were not needed.
      -.SS Changing Databases [-A \fIdirectory\fR] [-B \fIdirectory\fR]
      +.SS Changing Databases [\-A \fIdirectory\fR] [\-B \fIdirectory\fR]
       The location of the compiled \fBterminfo\fR database is taken from the
       environment variable \fBTERMINFO\fR .  If the variable is not defined, or the
       terminal is not found in that location, the system \fBterminfo\fR database,
      -in \fB@TERMINFO@\fR, will be used.  The options \fB-A\fR
      -and \fB-B\fR may be used to override this location.  The \fB-A\fR option will
      -set \fBTERMINFO\fR for the first \fItermname\fR and the \fB-B\fR option will
      +in \fB@TERMINFO@\fR, will be used.  The options \fB\-A\fR
      +and \fB\-B\fR may be used to override this location.  The \fB\-A\fR option will
      +set \fBTERMINFO\fR for the first \fItermname\fR and the \fB\-B\fR option will
       set \fBTERMINFO\fR for the other \fItermnames\fR.  With this, it is possible to
       compare descriptions for a terminal with the same name located in two different
       databases.  This is useful for comparing descriptions for the same terminal
       created by different people.
       .SS Other Options
       .TP 5
      -\fB-1\fR
      +\fB\-1\fR
       causes the fields to be printed out one to a line.  Otherwise,
       the fields will be printed several to a line to a maximum width
       of 60 characters.
       .TP
      -\fB-a\fR
      +\fB\-a\fR
       tells \fBinfocmp\fP to retain commented-out capabilities rather than discarding
       them.  Capabilities are commented by prefixing them with a period.
       .TP 5
      -\fB-E\fR
      +\fB\-E\fR
       Dump the capabilities of the given terminal as tables, needed in
       the C initializer for a
       TERMTYPE structure (the terminal capability structure in the \fB\fR).
      @@ -218,17 +218,17 @@
       The tables are all declared static, and are named according to the type
       and the name of the corresponding terminal entry.
       .sp
      -Before ncurses 5.0, the split between the \fB\-e\fP and \fB\-E\fP 
      +Before ncurses 5.0, the split between the \fB\-e\fP and \fB\-E\fP
       options was not needed; but support for extended names required making
       the arrays of terminal capabilities separate from the TERMTYPE structure.
       .TP 5
      -\fB-e\fR
      +\fB\-e\fR
       Dump the capabilities of the given terminal as a C initializer for a
       TERMTYPE structure (the terminal capability structure in the \fB\fR).
       This option is useful for preparing versions of the curses library hardwired
       for a given terminal type.
       .TP 5
      -\fB-F\fR
      +\fB\-F\fR
       compare terminfo files.  This assumes that two following arguments are
       filenames.  The files are searched for pairwise matches between
       entries, with two entries considered to match if any of their names do.
      @@ -237,21 +237,21 @@
       with exactly one match it includes a difference report.  Normally,
       to reduce the volume of the report, use references are
       not resolved before looking for differences, but resolution can be forced
      -by also specifying \fB-r\fR.
      +by also specifying \fB\-r\fR.
       .TP 5
      -\fB-f\fR
      +\fB\-f\fR
       Display complex terminfo strings which contain if/then/else/endif expressions
       indented for readability.
       .TP 5
      -\fB-G\fR
      +\fB\-G\fR
       Display constant literals in decimal form
       rather than their character equivalents.
       .TP 5
      -\fB-g\fR
      +\fB\-g\fR
       Display constant character literals in quoted form
       rather than their decimal equivalents.
       .TP 5
      -\fB-i\fR
      +\fB\-i\fR
       Analyze the initialization (\fBis1\fR, \fBis2\fR, \fBis3\fR), and reset
       (\fBrs1\fR, \fBrs2\fR, \fBrs3\fR), strings in the entry.  For each string, the
       code tries to analyze it into actions in terms of the other capabilities in the
      @@ -302,17 +302,17 @@
       
       An SGR0 designates an empty highlight sequence (equivalent to {SGR:NORMAL}).
       .TP 5
      -\bB-l\fR
      +\fB\-l\fR
       Set output format to terminfo.
       .TP 5
      -\fB-p\fR
      +\fB\-p\fR
       Ignore padding specifications when comparing strings.
       .TP 5
      -\fB-q\fR
      +\fB\-q\fR
       Make the comparison listing shorter by omitting subheadings, and using
       "-" for absent capabilities, "@" for canceled rather than "NULL".
       .TP 5
      -\fB-R\fR\fIsubset\fR
      +\fB\-R\fR\fIsubset\fR
       Restrict output to a given subset.  This option is for use with archaic
       versions of terminfo like those on SVr1, Ultrix, or HP/UX that do not support
       the full set of SVR4/XSI Curses terminfo; and variants such as AIX
      @@ -321,8 +321,8 @@
       details.  You can also choose the subset "BSD" which selects only capabilities
       with termcap equivalents recognized by 4.4BSD.
       .TP
      -\fB-s \fR\fI[d|i|l|c]\fR
      -The \fB-s\fR option sorts the fields within each type according to the argument
      +\fB\-s \fR\fI[d|i|l|c]\fR
      +The \fB\-s\fR option sorts the fields within each type according to the argument
       below:
       .br
       .RS 5
      @@ -340,30 +340,30 @@
       sort by the \fItermcap\fR name.
       .RE
       .IP
      -If the \fB-s\fR option is not given, the fields printed out will be
      +If the \fB\-s\fR option is not given, the fields printed out will be
       sorted alphabetically by the \fBterminfo\fR name within each type,
      -except in the case of the \fB-C\fR or the \fB-L\fR options, which cause the
      +except in the case of the \fB\-C\fR or the \fB\-L\fR options, which cause the
       sorting to be done by the \fBtermcap\fR name or the long C variable
       name, respectively.
       .TP 5
      -\fB-T\fR
      +\fB\-T\fR
       eliminates size-restrictions on the generated text.
       This is mainly useful for testing and analysis, since the compiled
       descriptions are limited (e.g., 1023 for termcap, 4096 for terminfo).
       .TP
      -\fB-t\fR
      +\fB\-t\fR
       tells \fBtic\fP to discard commented-out capabilities.
       Normally when translating from terminfo to termcap,
       untranslatable capabilities are commented-out.
       .TP 5
      -\fB-V\fR
      +\fB\-V\fR
       reports the version of ncurses which was used in this program, and exits.
       .TP 5
      -\fB-v\fR \fIn\fR
      +\fB\-v\fR \fIn\fR
       prints out tracing information on standard error as the program runs.
       Higher values of n induce greater verbosity.
       .TP 5
      -\fB-w\fR \fIwidth\fR
      +\fB\-w\fR \fIwidth\fR
       changes the output to \fIwidth\fR characters.
       .SH FILES
       .TP 20
      @@ -371,28 +371,28 @@
       Compiled terminal description database.
       .SH EXTENSIONS
       The
      -\fB-E\fR,
      -\fB-F\fR,
      -\fB-G\fR,
      -\fB-R\fR,
      -\fB-T\fR,
      -\fB-V\fR,
      -\fB-a\fR,
      -\fB-e\fR,
      -\fB-f\fR,
      -\fB-g\fR,
      -\fB-i\fR,
      -\fB-l\fR,
      -\fB-p\fR,
      -\fB-q\fR and
      -\fB-t\fR
      +\fB\-E\fR,
      +\fB\-F\fR,
      +\fB\-G\fR,
      +\fB\-R\fR,
      +\fB\-T\fR,
      +\fB\-V\fR,
      +\fB\-a\fR,
      +\fB\-e\fR,
      +\fB\-f\fR,
      +\fB\-g\fR,
      +\fB\-i\fR,
      +\fB\-l\fR,
      +\fB\-p\fR,
      +\fB\-q\fR and
      +\fB\-t\fR
       options are not supported in SVr4 curses.
       
      -The \fB-r\fR option's notion of `termcap' capabilities is System V Release 4's.
      +The \fB\-r\fR option's notion of `termcap' capabilities is System V Release 4's.
       Actual BSD curses versions will have a more restricted set.  To see only the
      -4.4BSD set, use -r -RBSD.
      +4.4BSD set, use \fB\-r\fR \fB\-RBSD\fR.
       .SH BUGS
      -The -F option of \fBinfocmp\fR(1M) should be a \fBtoe\fR(1M) mode.
      +The \fB\-F\fR option of \fBinfocmp\fR(1M) should be a \fBtoe\fR(1M) mode.
       .SH SEE ALSO
       \fBinfocmp\fR(1M), \fBcaptoinfo\fR(1M), \fBinfotocap\fR(1M),
       \fBtic\fR(1M), \fBtoe\fR(1M),
      diff -urNd -urNd ncurses-5.3/man/infotocap.1m ncurses-5.3.20030906.orig/man/infotocap.1m
      --- ncurses-5.3/man/infotocap.1m	Sat Aug 12 20:56:03 2000
      +++ ncurses-5.3.20030906.orig/man/infotocap.1m	Tue May 13 20:08:22 2003
      @@ -1,6 +1,6 @@
       '\" t
       .\"***************************************************************************
      -.\" Copyright (c) 1999,2000 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1999-2000,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -27,40 +27,40 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: infotocap.1m,v 1.3 2000/08/13 01:56:03 tom Exp $
      +.\" $Id: infotocap.1m,v 1.4 2003/05/11 00:32:53 tom Exp $
       .TH infotocap 1M ""
       .ds n 5
       .ds d @TERMINFO@
       .SH NAME
       \fBinfotocap\fR - convert a \fIterminfo\fR description into a \fItermcap\fR description
       .SH SYNOPSIS
      -\fBinfotocap\fR [\fB-v\fR\fIn\fR \fIwidth\fR]  [\fB-V\fR] [\fB-1\fR] [\fB-w\fR \fIwidth\fR] \fIfile\fR . . .
      +\fBinfotocap\fR [\fB\-v\fR\fIn\fR \fIwidth\fR]  [\fB\-V\fR] [\fB\-1\fR] [\fB\-w\fR \fIwidth\fR] \fIfile\fR . . .
       .SH DESCRIPTION
       \fBinfotocap\fR looks in \fIfile\fR for \fBterminfo\fR descriptions.  For each
       one found, an equivalent \fBtermcap\fR description is written to standard
       output.  Terminfo \fBuse\fR capabilities are translated directly to termcap
       \fBtc\fR capabilities.
       .TP 5
      -\fB-v\fR
      +\fB\-v\fR
       print out tracing information on standard error as the program runs.
       .TP 5
      -\fB-V\fR
      +\fB\-V\fR
       print out the version of the program in use on standard error and exit.
       .TP 5
      -\fB-1\fR
      +\fB\-1\fR
       cause the fields to print out one to a line.  Otherwise, the fields
       will be printed several to a line to a maximum width of 60
       characters.
       .TP 5
      -\fB-w\fR
      +\fB\-w\fR
       change the output to \fIwidth\fR characters.
       .SH FILES
       .TP 20
       \*d
       Compiled terminal description database.
       .SH NOTES
      -This utility is actually a link to \fItic\fR(1M), running in \fI-C\fR mode.
      -You can use other \fItic\fR options such as \fB-f\fR and  \fB-x\fR.
      +This utility is actually a link to \fItic\fR(1M), running in \fI\-C\fR mode.
      +You can use other \fItic\fR options such as \fB\-f\fR and  \fB\-x\fR.
       .SH SEE ALSO
       \fBcurses\fR(3X),
       \fBtic\fR(1M),
      diff -urNd -urNd ncurses-5.3/man/key_defined.3x ncurses-5.3.20030906.orig/man/key_defined.3x
      --- ncurses-5.3/man/key_defined.3x	Wed Dec 31 18:00:00 1969
      +++ ncurses-5.3.20030906.orig/man/key_defined.3x	Sun Jul 20 14:02:08 2003
      @@ -0,0 +1,60 @@
      +.\"***************************************************************************
      +.\" Copyright (c) 2003 Free Software Foundation, Inc.                        *
      +.\"                                                                          *
      +.\" Permission is hereby granted, free of charge, to any person obtaining a  *
      +.\" copy of this software and associated documentation files (the            *
      +.\" "Software"), to deal in the Software without restriction, including      *
      +.\" without limitation the rights to use, copy, modify, merge, publish,      *
      +.\" distribute, distribute with modifications, sublicense, and/or sell       *
      +.\" copies of the Software, and to permit persons to whom the Software is    *
      +.\" furnished to do so, subject to the following conditions:                 *
      +.\"                                                                          *
      +.\" The above copyright notice and this permission notice shall be included  *
      +.\" in all copies or substantial portions of the Software.                   *
      +.\"                                                                          *
      +.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
      +.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
      +.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
      +.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
      +.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
      +.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
      +.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
      +.\"                                                                          *
      +.\" Except as contained in this notice, the name(s) of the above copyright   *
      +.\" holders shall not be used in advertising or otherwise to promote the     *
      +.\" sale, use or other dealings in this Software without prior written       *
      +.\" authorization.                                                           *
      +.\"***************************************************************************
      +.\"
      +.\" Author: Thomas E. Dickey 2003
      +.\"
      +.\" $Id: key_defined.3x,v 1.2 2003/05/17 23:24:45 tom Exp $
      +.TH key_defined 3X ""
      +.SH NAME
      +\fBdefine_key\fP \- define a keycode
      +.SH SYNOPSIS
      +\fB#include \fP
      +
      +\fBint key_defined(const char *definition);\fP
      +.SH DESCRIPTION
      +This is an extension to the curses library.
      +It permits an application to determine if a string is currently bound
      +to any keycode.
      +.SH RETURN VALUE
      +If the string is bound to a keycode, its value (greater than zero) is returned.
      +If no keycode is bound, zero is returned.
      +If the string conflicts with longer strings which are bound to keys, -1 is returned.
      +.SH PORTABILITY
      +These routines are specific to ncurses.  They were not supported on
      +Version 7, BSD or System V implementations.  It is recommended that
      +any code depending on them be conditioned using NCURSES_VERSION.
      +.SH SEE ALSO
      +\fBdefine_key\fR(3X).
      +.SH AUTHOR
      +Thomas Dickey.
      +.\"#
      +.\"# The following sets edit modes for GNU EMACS
      +.\"# Local Variables:
      +.\"# mode:nroff
      +.\"# fill-column:79
      +.\"# End:
      diff -urNd -urNd ncurses-5.3/man/keybound.3x ncurses-5.3.20030906.orig/man/keybound.3x
      --- ncurses-5.3/man/keybound.3x	Sat Feb 16 16:30:36 2002
      +++ ncurses-5.3.20030906.orig/man/keybound.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1999,2002 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1999-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -28,7 +28,7 @@
       .\"
       .\" Author: Thomas E. Dickey  1999
       .\"
      -.\" $Id: keybound.3x,v 1.3 2002/02/16 22:30:36 tom Exp $
      +.\" $Id: keybound.3x,v 1.4 2003/03/08 19:08:33 tom Exp $
       .TH keyok 3X ""
       .SH NAME
       \fBkeybound\fP \- return definition of keycode
      @@ -41,9 +41,12 @@
       It permits an application to determine the string which is defined
       in the terminfo for specific keycodes.
       .SH RETURN VALUE
      -The keycode must be greater than zero, else NULL is returned.
      +The \fIkeycode\fP parameter must be greater than zero, else NULL is returned.
       If it does not correspond to a defined key, then NULL is returned.
      -Otherwise, the function returns a string, which must be freed by the caller.
      +The \fIcount\fP parameter is used to allow the application to iterate
      +through multiple definitions, counting from zero.
      +When successful,
      +the function returns a string which must be freed by the caller.
       .SH PORTABILITY
       These routines are specific to ncurses.  They were not supported on
       Version 7, BSD or System V implementations.  It is recommended that
      diff -urNd -urNd ncurses-5.3/man/make_sed.sh ncurses-5.3.20030906.orig/man/make_sed.sh
      --- ncurses-5.3/man/make_sed.sh	Wed Feb 11 06:13:48 1998
      +++ ncurses-5.3.20030906.orig/man/make_sed.sh	Tue May 13 20:08:22 2003
      @@ -1,7 +1,7 @@
       #!/bin/sh
      -# $Id: make_sed.sh,v 1.5 1998/02/11 12:13:48 tom Exp $
      +# $Id: make_sed.sh,v 1.6 2003/01/11 22:23:11 tom Exp $
       ##############################################################################
      -# Copyright (c) 1998 Free Software Foundation, Inc.                          #
      +# Copyright (c) 1998,2003 Free Software Foundation, Inc.                     #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -47,7 +47,7 @@
       rm -f $UPPER $SCRIPT $RESULT
       trap "rm -f $COL.* $INPUT $UPPER $SCRIPT $RESULT" 0 1 2 5 15
       fgrep -v \# $1 | \
      -sed	-e 's/[	]\+/	/g' >$INPUT
      +sed	-e 's/[	][	]*/	/g' >$INPUT
       
       for F in 1 2 3 4
       do
      diff -urNd -urNd ncurses-5.3/man/man_db.renames ncurses-5.3.20030906.orig/man/man_db.renames
      --- ncurses-5.3/man/man_db.renames	Sat Apr 13 16:49:08 2002
      +++ ncurses-5.3.20030906.orig/man/man_db.renames	Sun Jul 20 14:02:08 2003
      @@ -1,4 +1,4 @@
      -# $Id: man_db.renames,v 0.31 2002/04/13 21:49:08 tom Exp $
      +# $Id: man_db.renames,v 0.32 2003/05/31 17:27:11 tom Exp $
       # Manual-page renamings for the man_db program
       #
       # Files:
      @@ -89,6 +89,7 @@
       infotocap.1m			infotocap.1
       keybound.3x			keybound.3ncurses
       keyok.3x			keyok.3ncurses
      +key_defined.3x			key_defined.3ncurses
       menu.3x				menu.3menu
       menu_attributes.3x		attributes.3menu
       menu_cursor.3x			cursor.3menu
      diff -urNd -urNd ncurses-5.3/man/manlinks.sed ncurses-5.3.20030906.orig/man/manlinks.sed
      --- ncurses-5.3/man/manlinks.sed	Sat Sep 21 14:02:03 2002
      +++ ncurses-5.3.20030906.orig/man/manlinks.sed	Sun Jul 20 14:02:08 2003
      @@ -1,6 +1,6 @@
      -# $Id: manlinks.sed,v 1.10 2002/09/21 19:02:03 tom Exp $
      +# $Id: manlinks.sed,v 1.11 2003/05/24 18:57:33 tom Exp $
       ##############################################################################
      -# Copyright (c) 2000,2002 Free Software Foundation, Inc.                     #
      +# Copyright (c) 2000-2002,2003 Free Software Foundation, Inc.                #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -29,6 +29,8 @@
       # Given a manpage (nroff) as input, writes a list of the names that are
       # listed in the "NAME" section, i.e., the names that we would like to use
       # as aliases for the manpage -T.Dickey
      +#
      +# eliminate formatting controls that get in the way
       /^'\\"/d
       /\.\\"/d
       /^\.br/d
      @@ -36,11 +38,18 @@
       s/^\.IX//
       s/\\f.//g
       s/[:,]/ /g
      +#
      +# eliminate unnecessary whitespace, convert multiple blanks to single space
       s/^[ 	][ 	]*//
       s/[ 	][ 	]*$//
       s/[ 	][ 	]*/ /g
      +#
      +# convert ".SH" into a more manageable form
       s/\.SH[ 	][ 	]*/.SH_(/
       #
      +# in ".SH NAME"
      +# change "\-" to "-", eliminate text after "-", and split the remaining lines
      +# at each space, making a list of names:
       /^\.SH_(NAME/,/^\.SH_(SYNOPSIS/{
       s/\\-.*/ -/
       / -/{
      @@ -54,16 +63,39 @@
       s/ /\
       /g
       }
      +#
      +# in ".SH SYNOPSIS"
      +# remove any line that does not contain a '(', since we only want functions.
      +# then strip off return-type of each function.
      +# finally, remove the parameter list, which begins with a '('.
       /^\.SH_(SYNOPSIS/,/^\.SH_(DESCRIPTION/{
      -	/^#/d
       	/^[^(]*$/d
      +	# reduce
      +	#	.B "int add_wch( const cchar_t *\fIwch\fB );"
      +	# to
      +	#	add_wch( const cchar_t *\fIwch\fB );"
       	s/^\([^ (]* [^ (]* [*]*\)//g
       	s/^\([^ (]* [*]*\)//g
      +	# trim blanks in case we have
      +	#	void (*) (FORM *) field_init(const FORM *form);
      +	s/) (/)(/g
      +	# reduce stuff like
      +	#	void (*)(FORM *) field_init(const FORM *form);
      +	# to
      +	#	field_init(const FORM *form);
      +	s/^\(([^)]*)\)\(([^)]*)\)*[ ]*//g
      +	# rename marker temporarily
       	s/\.SH_(/.SH_/
      -	s/(.*//
      +	# kill lines with ");", and trim off beginning of argument list.
      +	s/[()].*//
      +	# rename marker back
       	s/\.SH_/.SH_(/
       }
      +#
      +# delete ".SH DESCRIPTION" and following lines
       /^\.SH_(DESCRIPTION/,${
       	d
       }
      +#
      +# delete any remaining directives
       /^\./d
      diff -urNd -urNd ncurses-5.3/man/menu_driver.3x ncurses-5.3.20030906.orig/man/menu_driver.3x
      --- ncurses-5.3/man/menu_driver.3x	Sat Feb 16 16:40:59 2002
      +++ ncurses-5.3.20030906.orig/man/menu_driver.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2002 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: menu_driver.3x,v 1.10 2002/02/16 22:40:59 tom Exp $
      +.\" $Id: menu_driver.3x,v 1.11 2003/05/10 20:22:01 tom Exp $
       .TH menu_driver 3X ""
       .SH NAME
       \fBmenu_driver\fR - command-processing loop of the menu system
      @@ -115,10 +115,10 @@
       is generated and \fBE_UNKNOWN_COMMAND\fR is returned. This return value makes
       sense, because a double click usually means that an item-specific action should
       be returned. It's exactly the purpose of this return value to signal that an
      -application specific command should be executed. If a translation 
      +application specific command should be executed. If a translation
       into a request was done, \fBmenu_driver\fR returns the result of this request.
       If you clicked outside the user window or the mouse event couldn't be translated
      -into a menu request an \fBE_REQUEST_DENIED\fR is returned. 
      +into a menu request an \fBE_REQUEST_DENIED\fR is returned.
       .PP
       If the second argument is neither printable ASCII nor one of the above
       pre-defined menu requests or KEY_MOUSE, the drive assumes it is an application-specific
      diff -urNd -urNd ncurses-5.3/man/menu_pattern.3x ncurses-5.3.20030906.orig/man/menu_pattern.3x
      --- ncurses-5.3/man/menu_pattern.3x	Sat Feb 16 16:40:59 2002
      +++ ncurses-5.3.20030906.orig/man/menu_pattern.3x	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2002 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: menu_pattern.3x,v 1.7 2002/02/16 22:40:59 tom Exp $
      +.\" $Id: menu_pattern.3x,v 1.8 2003/05/10 20:22:01 tom Exp $
       .TH menu_pattern 3X ""
       .SH NAME
       \fBmenu_pattern\fR - get and set a menu's pattern buffer
      @@ -44,7 +44,7 @@
       
       The function \fBset_menu_pattern\fR sets the pattern buffer for the given menu
       and tries to find the first matching item.  If it succeeds, that item becomes
      -current; if not, the current item does not change.  
      +current; if not, the current item does not change. 
       
       The function \fBmenu_pattern\fR returns the pattern buffer of the given
       \fImenu\fR.
      diff -urNd -urNd ncurses-5.3/man/ncurses.3x ncurses-5.3.20030906.orig/man/ncurses.3x
      --- ncurses-5.3/man/ncurses.3x	Sat Aug 10 16:56:07 2002
      +++ ncurses-5.3.20030906.orig/man/ncurses.3x	Tue May 13 20:08:22 2003
      @@ -1,6 +1,6 @@
       '\" t
       .\"***************************************************************************
      -.\" Copyright (c) 1998,1999,2001,2002 Free Software Foundation, Inc.         *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -27,7 +27,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: ncurses.3x,v 1.63 2002/08/10 21:56:07 tom Exp $
      +.\" $Id: ncurses.3x,v 1.66 2003/05/11 00:32:53 tom Exp $
       .hy 0
       .TH ncurses 3X ""
       .ds n 5
      @@ -322,6 +322,7 @@
       is_linetouched/\fBcurs_touch\fR(3X)
       is_wintouched/\fBcurs_touch\fR(3X)
       isendwin/\fBcurs_initscr\fR(3X)
      +key_defined/\fBkey_defined\fR(3X)*
       key_name/\fBcurs_util\fR(3X)
       keybound/\fBkeybound\fR(3X)*
       keyname/\fBcurs_util\fR(3X)
      @@ -614,9 +615,9 @@
       otherwise noted in the routine descriptions.
       
       All macros return the value of the \fBw\fR version, except \fBsetscrreg\fR,
      -\fBwsetscrreg\fR, \fBgetyx\fR, \fBgetbegyx\fR, \fBgetmaxyx\fR.  The return
      +\fBwsetscrreg\fR, \fBgetyx\fR, \fBgetbegyx\fR, and \fBgetmaxyx\fR.  The return
       values of \fBsetscrreg\fR, \fBwsetscrreg\fR, \fBgetyx\fR, \fBgetbegyx\fR, and
      -\fBgetmaxyx\fR are undefined (\fIi\fR.\fIe\fR., these should not be used as the
      +\fBgetmaxyx\fR are undefined (i.e., these should not be used as the
       right-hand side of assignment statements).
       
       Routines that return pointers return \fBNULL\fR on error.
      @@ -629,7 +630,7 @@
       The debugging library checks this environment symbol when the application
       has redirected output to a file.
       The symbol's numeric value is used for the baudrate.
      -If no value is found \fBncurses\fR uses 9600.
      +If no value is found, \fBncurses\fR uses 9600.
       This allows testers to construct repeatable test-cases
       that take into account costs that depend on baudrate.
       .TP 5
      @@ -784,7 +785,7 @@
       .RS
       .TP 3
       -
      -the last directory to which \fBncurses\fR wrote, if any, is searched first.
      +the last directory to which \fBncurses\fR wrote, if any, is searched first
       .TP 3
       -
       the directory specified by the TERMINFO symbol
      @@ -828,7 +829,7 @@
       \fBterminfo\fR(\*n) and related pages whose names begin "curs_" for detailed routine
       descriptions.
       .SH EXTENSIONS
      -The \fBncurses\fR library can be compiled with an option (\fB-DUSE_GETCAP\fR)
      +The \fBncurses\fR library can be compiled with an option (\fB\-DUSE_GETCAP\fR)
       that falls back to the old-style /etc/termcap file if the terminal setup code
       cannot find a terminfo entry corresponding to \fBTERM\fR.  Use of this feature
       is not recommended, as it essentially includes an entire termcap compiler in
      @@ -848,6 +849,7 @@
       of terminals by allowing the application designer to define additional
       key sequences at runtime.
       See the \fBdefine_key\fR(3X)
      +\fBkey_defined\fR(3X),
       and \fBkeyok\fR(3X) manual pages for details.
       
       The \fBncurses\fR library can exploit the capabilities of terminals which
      diff -urNd -urNd ncurses-5.3/man/panel.3x ncurses-5.3.20030906.orig/man/panel.3x
      --- ncurses-5.3/man/panel.3x	Sat Aug 12 20:56:47 2000
      +++ ncurses-5.3.20030906.orig/man/panel.3x	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998 Free Software Foundation, Inc.                        *
      +.\" Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: panel.3x,v 1.10 2000/08/13 01:56:47 tom Exp $
      +.\" $Id: panel.3x,v 1.11 2003/05/17 22:44:09 jmc Exp $
       .TH panel 3X ""
       .ds n 5
       .ds d @TERMINFO@
      @@ -77,7 +77,7 @@
       of the stack.
       .P
       A window is associated with every panel. The panel routines enable
      -you to create, move, hides, and show panels, as well as position a
      +you to create, move, hide, and show panels, as well as position a
       panel at any desired location in the stack.
       .P
       Panel routines are a functional layer added to \fBcurses\fR(3X), make only
      diff -urNd -urNd ncurses-5.3/man/term.5 ncurses-5.3.20030906.orig/man/term.5
      --- ncurses-5.3/man/term.5	Sat Aug 10 16:59:37 2002
      +++ ncurses-5.3.20030906.orig/man/term.5	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2002 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: term.5,v 1.14 2002/08/10 21:59:37 tom Exp $
      +.\" $Id: term.5,v 1.15 2003/05/10 20:33:49 jmc Exp $
       .TH TERM 5
       .ds n 5
       .ds d @TERMINFO@
      @@ -56,7 +56,7 @@
       or sign extension are made.
       .PP
       The compiled file is created with the
      -.I tic 
      +.I tic
       program, and read by the routine
       .IR setupterm .
       The file is divided into six parts:
      @@ -84,7 +84,7 @@
       and the second byte contains the most significant 8 bits.
       (Thus, the value represented is 256*second+first.)
       The value \-1 is represented by the two bytes 0377, 0377; other negative
      -values are illegal. This value generally 
      +values are illegal. This value generally
       means that the corresponding capability is missing from this terminal.
       Note that this format corresponds to the hardware of the \s-1VAX\s+1
       and \s-1PDP\s+1-11 (that is, little-endian machines).
      @@ -160,12 +160,12 @@
       ADM-3, a popular though rather stupid early terminal:
       .nf
       .sp
      -adm3a|lsi adm3a, 
      -        am, 
      -        cols#80, lines#24, 
      -        bel=^G, clear=\032$<1>, cr=^M, cub1=^H, cud1=^J, 
      -        cuf1=^L, cup=\\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, 
      -        home=^^, ind=^J, 
      +adm3a|lsi adm3a,
      +        am,
      +        cols#80, lines#24,
      +        bel=^G, clear=\032$<1>, cr=^M, cub1=^H, cud1=^J,
      +        cuf1=^L, cup=\\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
      +        home=^^, ind=^J,
       .sp
       .ft CW
       \s-20000  1a 01 10 00 02 00 03 00  82 00 31 00 61 64 6d 33  ........ ..1.adm3
      diff -urNd -urNd ncurses-5.3/man/term.7 ncurses-5.3.20030906.orig/man/term.7
      --- ncurses-5.3/man/term.7	Sat Apr 20 11:50:47 2002
      +++ ncurses-5.3.20030906.orig/man/term.7	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998-2000,2002 Free Software Foundation, Inc.              *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: term.7,v 1.13 2002/04/20 16:50:47 tom Exp $
      +.\" $Id: term.7,v 1.14 2003/05/10 20:33:49 jmc Exp $
       .TH TERM 7
       .ds n 5
       .ds d @TERMINFO@
      @@ -96,7 +96,7 @@
       First, choose a root name.  The root will consist of a lower-case letter
       followed by up to seven lower-case letters or digits.  You need to avoid using
       punctuation characters in root names, because they are used and interpreted as
      -filenames and shell meta-characters (such as !, $, *, ? etc.) embedded in them
      +filenames and shell meta-characters (such as !, $, *, ?, etc.) embedded in them
       may cause odd and unhelpful behavior.  The slash (/), or any other character
       that may be interpreted by anyone's file system (\e, $, [, ]), is especially
       dangerous (terminfo is platform-independent, and choosing names with special
      @@ -136,29 +136,29 @@
       attributes.
       .TP 5
       -am
      -Enable auto-margin (right-margin wraparound)
      +Enable auto-margin (right-margin wraparound).
       .TP 5
       -m
      -Mono mode - suppress color support
      +Mono mode - suppress color support.
       .TP 5
       -na
       No arrow keys - termcap ignores arrow keys which are actually there on the
       terminal, so the user can use the arrow keys locally.
       .TP 5
       -nam
      -No auto-margin - suppress am capability
      +No auto-margin - suppress am capability.
       .TP 5
       -nl
      -No labels - suppress soft labels
      +No labels - suppress soft labels.
       .TP 5
       -nsl
      -No status line - suppress status line
      +No status line - suppress status line.
       .TP 5
       -pp
       Has a printer port which is used.
       .TP 5
       -rv
      -Terminal in reverse video mode (black on white)
      +Terminal in reverse video mode (black on white).
       .TP 5
       -s
       Enable status line.
      @@ -190,10 +190,10 @@
       compiled terminal capability data base
       .TP 5
       /etc/inittab
      -tty line initialization (AT&T-like UNIXes).
      +tty line initialization (AT&T-like UNIXes)
       .TP 5
       /etc/ttys
      -tty line initialization (BSD-like UNIXes).
      +tty line initialization (BSD-like UNIXes)
       .SH SEE ALSO
       \fBcurses\fR(3X), \fBterminfo\fR(\*n), \fBterm\fR(\*n).
       .\"#
      diff -urNd -urNd ncurses-5.3/man/terminfo.tail ncurses-5.3.20030906.orig/man/terminfo.tail
      --- ncurses-5.3/man/terminfo.tail	Sat Apr 20 11:49:33 2002
      +++ ncurses-5.3.20030906.orig/man/terminfo.tail	Tue May 13 20:08:22 2003
      @@ -1,4 +1,4 @@
      -.\" $Id: terminfo.tail,v 1.35 2002/04/20 16:49:33 tom Exp $
      +.\" $Id: terminfo.tail,v 1.38 2003/01/05 22:47:05 tom Exp $
       .\" Beginning of terminfo.tail file
       .ps +1
       .PP
      @@ -311,42 +311,81 @@
       to manipulate it.
       Typically a sequence will push one of the
       parameters onto the stack and then print it in some format.
      -Often more complex operations are necessary.
      +Print (e.g., "%d") is a special case.
      +Other operations, including "%t" pop their operand from the stack.
      +It is noted that more complex operations are often necessary,
      +e.g., in the \fBsgr\fP string.
       .PP
       The \fB%\fR encodings have the following meanings:
       .PP
      -.DT
      -.nf
      -.ta .5i 1.5i
      -	\s-1%%	outputs `%'
      -	%\fI[[\fP:\fI]flags][width[.precision]][\fPdoxXs\fI]\fP
      -		as in \fBprintf\fP, flags are [-+#] and space
      -	%c	print pop() like %c in printf()
      -	%s	print pop() like %s in printf()
      -
      -	%p[1-9]	push \fIi\fP'th parm
      -	%P[a-z]	set dynamic variable [a-z] to pop()
      -	%g[a-z]	get dynamic variable [a-z] and push it
      -	%P[A-Z]	set static variable [a-z] to pop()
      -	%g[A-Z]	get static variable [a-z] and push it
      -	%'\fIc\fP'	char constant \fIc\fP
      -	%{\fInn\fP}	integer constant \fInn\fP
      -	%l	push strlen(pop)
      -
      -	%+ %- %* %/ %m
      -		arithmetic (%m is mod): push(pop() op pop())
      -	%& %| %^	bit operations: push(pop() op pop())
      -	%= %> %<	logical operations: push(pop() op pop())
      -	%A, %O	logical and & or operations (for conditionals)
      -	%! %~	unary operations push(op pop())
      -	%i	add 1 to first two parameters (for ANSI terminals)
      -
      -	%? expr %t thenpart %e elsepart %;
      -		if-then-else, %e elsepart is optional.
      -		else-if's are possible a la Algol 68:
      -		%? c\d1\u %t b\d1\u %e c\d2\u %t b\d2\u %e c\d3\u %t b\d3\u %e c\d4\u %t b\d4\u %e %;
      -\s+1		c\di\u are conditions, b\di\u are bodies.
      -.fi
      +.TP 5
      +\s-1%%
      +outputs `%'
      +.TP
      +%\fI[[\fP:\fI]flags][width[.precision]][\fPdoxXs\fI]\fP
      +as in \fBprintf\fP, flags are [-+#] and space
      +.TP
      +%c
      +print pop() like %c in \fBprintf\fP
      +.TP
      +%s
      +print pop() like %s in \fBprintf\fP
      +.TP
      +%p[1-9]
      +push \fIi\fP'th parameter
      +.TP
      +%P[a-z]
      +set dynamic variable [a-z] to pop()
      +.TP
      +%g[a-z]
      +get dynamic variable [a-z] and push it
      +.TP
      +%P[A-Z]
      +set static variable [a-z] to pop()
      +.TP
      +%g[A-Z]
      +get static variable [a-z] and push it
      +.IP
      +The terms "static" and "dynamic" are misleading.
      +Historically, these are simply two different sets of variables,
      +whose values are not reset between calls to \fBtparm\fP.
      +However, that fact is not documented in other implementations.
      +Relying on it will adversely impact portability to other implementations.
      +.TP
      +%'\fIc\fP'
      +char constant \fIc\fP
      +.TP
      +%{\fInn\fP}
      +integer constant \fInn\fP
      +.TP
      +%l
      +push strlen(pop)
      +.TP
      +%+ %- %* %/ %m
      +arithmetic (%m is mod): push(pop() op pop())
      +.TP
      +%& %| %^
      +bit operations: push(pop() op pop())
      +.TP
      +%= %> %<
      +logical operations: push(pop() op pop())
      +.TP
      +%A, %O
      +logical and & or operations (for conditionals)
      +.TP
      +%! %~
      +unary operations push(op pop())
      +.TP
      +%i
      +add 1 to first two parameters (for ANSI terminals)
      +.TP
      +%? \fIexpr\fP %t \fIthenpart\fP %e \fIelsepart\fP %;
      +if-then-else, %e \fIelsepart\fP is optional.
      +else-if's are possible a la Algol 68:
      +.br
      +%? c\d1\u %t b\d1\u %e c\d2\u %t b\d2\u %e c\d3\u %t b\d3\u %e c\d4\u %t b\d4\u %e %;
      +.br
      +c\di\u are conditions, b\di\u are bodies.
       .PP
       Binary operations are in postfix form with the operands in the usual order.
       That is, to get x-5 one would use "%gx%{5}%-".
      @@ -1170,7 +1209,7 @@
       .PP
       The \fBsetaf\fR/\fBsetab\fR and \fBsetf\fR/\fBsetb\fR capabilities take a
       single numeric argument each.
      -Argument values 0-7 are portably defined as
      +Argument values 0-7 of \fBsetaf\fR/\fBsetab\fR are portably defined as
       follows (the middle column is the symbolic #define available in the header for
       the \fBcurses\fR or \fBncurses\fR libraries).
       The terminal hardware is free to
      @@ -1192,6 +1231,25 @@
       white	\fBCOLOR_WHITE\fR	7	max,max,max
       .TE
       .PP
      +The argument values of \fBsetf\fR/\fBsetb\fR historically correspond to
      +a different mapping, i.e.,
      +.TS H
      +center;
      +l c c c
      +l l n l.
      +\fBColor	#define 	Value	RGB\fR
      +black	\fBCOLOR_BLACK\fR	0	0, 0, 0
      +blue	\fBCOLOR_BLUE\fR	1	0,0,max
      +green	\fBCOLOR_GREEN\fR	2	0,max,0
      +cyan	\fBCOLOR_CYAN\fR	3	0,max,max
      +red	\fBCOLOR_RED\ \fR	4	max,0,0
      +magenta	\fBCOLOR_MAGENTA\fR	5	max,0,max
      +yellow	\fBCOLOR_YELLOW\fR	6	max,max,0
      +white	\fBCOLOR_WHITE\fR	7	max,max,max
      +.TE
      +It is important to not confuse the two sets of color capabilities;
      +otherwise red/blue will be interchanged on the display.
      +.PP
       On an HP-like terminal, use \fBscp\fR with a color-pair number parameter to set
       which color pair is current.
       .PP
      diff -urNd -urNd ncurses-5.3/man/tic.1m ncurses-5.3.20030906.orig/man/tic.1m
      --- ncurses-5.3/man/tic.1m	Sat Oct  5 15:06:13 2002
      +++ ncurses-5.3.20030906.orig/man/tic.1m	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998-2000,2002 Free Software Foundation, Inc.              *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,7 +26,7 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: tic.1m,v 1.33 2002/10/05 20:06:13 tom Exp $
      +.\" $Id: tic.1m,v 1.35 2003/05/11 00:32:53 tom Exp $
       .TH tic 1M ""
       .ds n 5
       .ds d @TERMINFO@
      @@ -52,11 +52,11 @@
       t\
       x\
       \fR]
      -[\fB-e\fR \fInames\fR]
      -[\fB-o\fR \fIdir\fR]
      -[\fB-R\fR \fIsubset\fR]
      -[\fB-v\fR[\fIn\fR]]
      -[\fB-w\fR[\fIn\fR]]
      +[\fB\-e\fR \fInames\fR]
      +[\fB\-o\fR \fIdir\fR]
      +[\fB\-R\fR \fIsubset\fR]
      +[\fB\-v\fR[\fIn\fR]]
      +[\fB\-w\fR[\fIn\fR]]
       \fIfile\fR
       .br
       .SH DESCRIPTION
      @@ -78,31 +78,31 @@
       directory first, look at \fI$HOME/.terminfo\fR if TERMINFO is not set, and
       finally look in \fI\*d\fR.
       .TP
      -\fB-1\fR
      +\fB\-1\fR
       restricts the output to a single column
       .TP
      -\fB-a\fR
      +\fB\-a\fR
       tells \fBtic\fP to retain commented-out capabilities rather than discarding
       them.  Capabilities are commented by prefixing them with a period.
      -This sets the \fB-x\fR option, because it treats the commented-out
      +This sets the \fB\-x\fR option, because it treats the commented-out
       entries as user-defined names.
       .TP
      -\fB-C\fR
      -Force source translation to termcap format.  Note: this differs from the -C
      +\fB\-C\fR
      +Force source translation to termcap format.  Note: this differs from the \fB\-C\fR
       option of \fIinfocmp\fR(1M) in that it does not merely translate capability
       names, but also translates terminfo strings to termcap format.  Capabilities
       that are not translatable are left in the entry under their terminfo names
       but commented out with two preceding dots.
       .TP
      -\fB-c\fR
      +\fB\-c\fR
       tells \fBtic\fP to only check \fIfile\fR for errors, including syntax problems and
      -bad use links.  If you specify \fB-C\fR (\fB-I\fR) with this option, the code
      +bad use links.  If you specify \fB\-C\fR (\fB\-I\fR) with this option, the code
       will print warnings about entries which, after use resolution, are more than
       1023 (4096) bytes long.  Due to a fixed buffer length in older termcap
       libraries (and a documented limit in terminfo), these entries may cause core
       dumps.
       .TP
      -\fB-e \fR\fInames\fR
      +\fB\-e \fR\fInames\fR
       Limit writes and translations to the following comma-separated list of
       terminals.
       If any name or alias of a terminal matches one of the names in
      @@ -110,32 +110,32 @@
       Otherwise no output will be generated for it.
       The option value is interpreted as a file containing the list if it
       contains a '/'.
      -(Note: depending on how tic was compiled, this option may require -I or -C.)
      +(Note: depending on how tic was compiled, this option may require \fB\-I\fR or \fB\-C\fR.)
       .TP
      -\fB-f\fR
      +\fB\-f\fR
       Display complex terminfo strings which contain if/then/else/endif expressions
       indented for readability.
       .TP
      -\fB-G\fR
      +\fB\-G\fR
       Display constant literals in decimal form
       rather than their character equivalents.
       .TP
      -\fB-g\fR
      +\fB\-g\fR
       Display constant character literals in quoted form
       rather than their decimal equivalents.
       .TP
      -\fB-I\fR
      +\fB\-I\fR
       Force source translation to terminfo format.
       .TP
      -\fB-L\fR
      +\fB\-L\fR
       Force source translation to terminfo format
       using the long C variable names listed in <\fBterm.h\fR>
       .TP
      -\fB-N\fR
      -Disable smart defaults.  
      -Normally, when translating from termcap to terminfo, the compiler makes 
      +\fB\-N\fR
      +Disable smart defaults. 
      +Normally, when translating from termcap to terminfo, the compiler makes
       a number of assumptions about the defaults of string capabilities
      -\fBreset1_string\fR, \fBcarriage_return\fR, \fBcursor_left\fR, 
      +\fBreset1_string\fR, \fBcarriage_return\fR, \fBcursor_left\fR,
       \fBcursor_down\fR, \fBscroll_forward\fR, \fBtab\fR, \fBnewline\fR,
       \fBkey_backspace\fR, \fBkey_left\fR, and \fBkey_down\fR, then attempts
       to use obsolete termcap capabilities to deduce correct values.  It also
      @@ -143,42 +143,42 @@
       This option forces a more literal translation that also preserves the
       obsolete capabilities.
       .TP
      -\fB-o\fR\fIdir\fR
      +\fB\-o\fR\fIdir\fR
       Write compiled entries to given directory.  Overrides the TERMINFO environment
       variable.
       .TP
      -\fB-R\fR\fIsubset\fR
      +\fB\-R\fR\fIsubset\fR
       Restrict output to a given subset.  This option is for use with archaic
       versions of terminfo like those on SVr1, Ultrix, or HP/UX that do not support
       the full set of SVR4/XSI Curses terminfo; and outright broken ports like AIX 3.x
       that have their own extensions incompatible with SVr4/XSI.  Available subsets
       are "SVr1", "Ultrix", "HP", "BSD" and "AIX"; see \fBterminfo\fR(\*n) for details.
       .TP
      -\fB-r\fR
      +\fB\-r\fR
       Force entry resolution (so there are no remaining tc capabilities) even
       when doing translation to termcap format.  This may be needed if you are
       preparing a termcap file for a termcap library (such as GNU termcap through
       version 1.3 or BSD termcap through 4.3BSD) that does not handle multiple
       tc capabilities per entry.
       .TP
      -\fB-s\fR
      +\fB\-s\fR
       Summarize the compile by showing the directory into which entries
       are written, and the number of entries which are compiled.
       .TP
      -\fB-T\fR
      +\fB\-T\fR
       eliminates size-restrictions on the generated text.
       This is mainly useful for testing and analysis, since the compiled
       descriptions are limited (e.g., 1023 for termcap, 4096 for terminfo).
       .TP
      -\fB-t\fR
      +\fB\-t\fR
       tells \fBtic\fP to discard commented-out capabilities.
       Normally when translating from terminfo to termcap,
       untranslatable capabilities are commented-out.
       .TP
      -\fB-V\fR
      +\fB\-V\fR
       reports the version of ncurses which was used in this program, and exits.
       .TP
      -\fB-v\fR\fIn\fR
      +\fB\-v\fR\fIn\fR
       specifies that (verbose) output be written to standard error trace
       information showing \fBtic\fR's progress.  The optional integer
       \fIn\fR is a number from 1 to 10, inclusive, indicating the desired
      @@ -186,10 +186,10 @@
       level is 1.  If \fIn\fR is specified and greater than 1, the level of
       detail is increased.
       .TP
      -\fB-w\fR\fIn\fR
      +\fB\-w\fR\fIn\fR
       specifies the width of the output.
       .TP
      -\fB-x\fR
      +\fB\-x\fR
       Treat unknown capabilities as user-defined.
       That is, if you supply a capability name which \fBtic\fP does not recognize,
       it will infer its type (boolean, number or string) from the syntax and
      @@ -274,25 +274,25 @@
       error messages, and can be parsed by GNU Emacs's compile facility.
       
       The
      -\fB-C\fR,
      -\fB-G\fR,
      -\fB-I\fR,
      -\fB-N\fR,
      -\fB-R\fR,
      -\fB-T\fR,
      -\fB-V\fR,
      -\fB-a\fR,
      -\fB-e\fR,
      -\fB-f\fR,
      -\fB-g\fR,
      -\fB-o\fR,
      -\fB-r\fR,
      -\fB-s\fR,
      -\fB-t\fR and 
      -\fB-x\fR
      +\fB\-C\fR,
      +\fB\-G\fR,
      +\fB\-I\fR,
      +\fB\-N\fR,
      +\fB\-R\fR,
      +\fB\-T\fR,
      +\fB\-V\fR,
      +\fB\-a\fR,
      +\fB\-e\fR,
      +\fB\-f\fR,
      +\fB\-g\fR,
      +\fB\-o\fR,
      +\fB\-r\fR,
      +\fB\-s\fR,
      +\fB\-t\fR and
      +\fB\-x\fR
       options
       are not supported under SVr4.
      -The SVr4 -c mode does not report bad use links.
      +The SVr4 \fB\-c\fR mode does not report bad use links.
       
       System V does not compile entries to or read entries from your
       \fI$HOME/.terminfo\fR directory unless TERMINFO is explicitly set to it.
      diff -urNd -urNd ncurses-5.3/man/toe.1m ncurses-5.3.20030906.orig/man/toe.1m
      --- ncurses-5.3/man/toe.1m	Sat Aug 19 13:51:05 2000
      +++ ncurses-5.3.20030906.orig/man/toe.1m	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,45 +26,45 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: toe.1m,v 1.10 2000/08/19 18:51:05 tom Exp $
      +.\" $Id: toe.1m,v 1.12 2003/05/11 00:32:53 tom Exp $
       .TH toe 1M ""
       .ds n 5
       .ds d @TERMINFO@
       .SH NAME
       \fBtoe\fR - table of (terminfo) entries
       .SH SYNOPSIS
      -\fBtoe\fR [\fB-v\fR[\fIn\fR]] [\fB-huUV\fR] \fIfile...\fR
      +\fBtoe\fR [\fB\-v\fR[\fIn\fR]] [\fB\-huUV\fR] \fIfile...\fR
       .br
       .SH DESCRIPTION
       .PP
       With no options, \fBtoe\fR lists all available terminal types by primary name
       with descriptions.  File arguments specify the directories to be scanned; if no
       such arguments are given, your default terminfo directory is scanned.  If you
      -also specify the -h option, a directory header will be issued as each
      -directory is entered. 
      +also specify the \fB\-h\fR option, a directory header will be issued as each
      +directory is entered.
       .PP
       There are other options intended for use by terminfo file maintainers:
       .TP
      -\fB-u\fR \fIfile\fR
      +\fB\-u\fR \fIfile\fR
       says to issue a report on dependencies in the given file. This report condenses
       the `use' relation: each line consists of the primary name of a terminal that
       has use capabilities, followed by a colon, followed by the
       whitespace-separated primary names of all terminals which occur in those use
       capabilities, followed by a newline
       .TP
      -\fB-U\fR \fIfile\fR
      +\fB\-U\fR \fIfile\fR
       says to issue a report on reverse dependencies in the given file. This report
       reverses the `use' relation: each line consists of the primary name of a
       terminal that occurs in use capabilities, followed by a colon, followed by the
       whitespace-separated primary names of all terminals which depend on it,
       followed by a newline.
       .TP
      -\fB-v\fR\fIn\fR
      +\fB\-v\fR\fIn\fR
       specifies that (verbose) output be written to standard error trace
       information showing \fBtoe\fR's progress.  The optional integer
       \fIn\fR is a number from 1 to 10, interpreted as for \fBtic\fR(1).
       .TP 5
      -\fB-V\fR
      +\fB\-V\fR
       reports the version of ncurses which was used in this program, and exits.
       .SH FILES
       .TP 5
      diff -urNd -urNd ncurses-5.3/man/tput.1 ncurses-5.3.20030906.orig/man/tput.1
      --- ncurses-5.3/man/tput.1	Sat Oct 12 08:53:20 2002
      +++ ncurses-5.3.20030906.orig/man/tput.1	Tue May 13 20:08:22 2003
      @@ -1,6 +1,6 @@
       '\" t
       .\"***************************************************************************
      -.\" Copyright (c) 1998-2000,2002 Free Software Foundation, Inc.              *
      +.\" Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -27,24 +27,24 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: tput.1,v 1.18 2002/10/12 13:53:20 tom Exp $
      +.\" $Id: tput.1,v 1.20 2003/05/11 00:32:53 tom Exp $
       .TH tput 1 ""
       .ds d @TERMINFO@
       .ds n 1
       .SH NAME
       \fBtput\fR, \fBreset\fR - initialize a terminal or query terminfo database
       .SH SYNOPSIS
      -\fBtput\fR [\fB-T\fR\fItype\fR] \fIcapname\fR [\fIparms\fR ... ]
      +\fBtput\fR [\fB\-T\fR\fItype\fR] \fIcapname\fR [\fIparms\fR ... ]
       .br
      -\fBtput\fR [\fB-T\fR\fItype\fR] \fBinit\fR
      +\fBtput\fR [\fB\-T\fR\fItype\fR] \fBinit\fR
       .br
      -\fBtput\fR [\fB-T\fR\fItype\fR] \fBreset\fR
      +\fBtput\fR [\fB\-T\fR\fItype\fR] \fBreset\fR
       .br
      -\fBtput\fR [\fB-T\fR\fItype\fR] \fBlongname\fR
      +\fBtput\fR [\fB\-T\fR\fItype\fR] \fBlongname\fR
       .br
      -\fBtput -S\fR  \fB<<\fR
      +\fBtput \-S\fR  \fB<<\fR
       .br
      -\fBtput -V\fR
      +\fBtput \-V\fR
       .br
       .SH DESCRIPTION
       The \fBtput\fR utility uses the \fBterminfo\fR database to make the
      @@ -62,10 +62,10 @@
       For a complete list of capabilities
       and the \fIcapname\fR associated with each, see \fBterminfo\fR(\*n).
       .TP
      -\fB-T\fR\fItype\fR
      +\fB\-T\fR\fItype\fR
       indicates the \fItype\fR of terminal.  Normally this option is
       unnecessary, because the default is taken from the environment
      -variable \fBTERM\fR.  If \fB-T\fR is specified, then the shell
      +variable \fBTERM\fR.  If \fB\-T\fR is specified, then the shell
       variables \fBLINES\fR and \fBCOLUMNS\fR will be ignored,and the
       operating system will not be queried for the actual screen size.
       .TP
      @@ -83,14 +83,14 @@
       \fBtput\fR uses a table to decide which to pass as strings.
       Normally \fBtput\fR uses \fBtparm\fR (3X) to perform the substitution.
       If no parameters are given for the attribute,
      -\fBtput\fR writes the string without performing the substitution. 
      +\fBtput\fR writes the string without performing the substitution.
       .TP
      -\fB-S\fR
      +\fB\-S\fR
       allows more than one capability per invocation of \fBtput\fR.  The
       capabilities must be passed to \fBtput\fR from the standard input
       instead of from the command line (see example).
       Only one \fIcapname\fR is allowed per line.
      -The \fB-S\fR option changes the
      +The \fB\-S\fR option changes the
       meaning of the \fB0\fR and \fB1\fR boolean and string exit codes (see the
       EXIT CODES section).
       .IP
      @@ -98,12 +98,12 @@
       to decide whether to use \fBtparm\fR (3X),
       and how to interpret the parameters.
       .TP
      -\fB-V\fR
      +\fB\-V\fR
       reports the version of ncurses which was used in this program, and exits.
       .TP
       \fBinit\fR
       If the \fBterminfo\fR database is present and an entry for the user's
      -terminal exists (see \fB-T\fR\fItype\fR, above), the following will
      +terminal exists (see \fB\-T\fR\fItype\fR, above), the following will
       occur: (1) if present, the terminal's initialization strings will be
       output (\fBis1\fR, \fBis2\fR, \fBis3\fR, \fBif\fR, \fBiprog\fR), (2)
       any delays (e.g., newline) specified in the entry will be set in the
      @@ -122,7 +122,7 @@
       .TP
       \fBlongname\fR
       If the \fBterminfo\fR database is present and an entry for the
      -user's terminal exists (see \fB-T\fR\fItype\fR above), then the long name
      +user's terminal exists (see \fB\-T\fR\fItype\fR above), then the long name
       of the terminal will be put out.  The long name is the last
       name in the first line of the terminal's description in the
       \fBterminfo\fR database [see \fBterm\fR(5)].
      @@ -139,7 +139,7 @@
       the environmental variable \fBTERM\fR has been exported, as
       illustrated on the \fBprofile\fR(5) manual page.
       .TP 5
      -\fBtput -T5620 reset\fR
      +\fBtput \-T5620 reset\fR
       Reset an AT&T 5620 terminal, overriding the type of
       terminal in the environmental variable \fBTERM\fR.
       .TP 5
      @@ -154,7 +154,7 @@
       \fBtput cols\fR
       Print the number of columns for the current terminal.
       .TP 5
      -\fBtput -T450 cols\fR
      +\fBtput \-T450 cols\fR
       Print the number of columns for the 450 terminal.
       .TP 5
       \fBbold=`tput smso` offbold=`tput rmso`\fR
      @@ -178,7 +178,7 @@
       variable \fBTERM\fR.
       .PP
       .RS 5
      -\fBtput -S < clear\fR
       .br
      @@ -213,7 +213,7 @@
       information, see the "Tabs and Initialization"
       section of \fBterminfo\fR(5)
       .SH EXIT CODES
      -If the \fB-S\fR option is used,
      +If the \fB\-S\fR option is used,
       \fBtput\fR checks for errors from each line,
       and if any errors are found, will set the exit code to 4 plus the
       number of lines with errors.
      @@ -221,7 +221,7 @@
       No indication of which line failed can be given so
       exit code \fB1\fR will never appear.  Exit codes \fB2\fR, \fB3\fR, and
       \fB4\fR retain their usual interpretation.
      -If the \fB-S\fR option is not used,
      +If the \fB\-S\fR option is not used,
       the exit code depends on the type of \fIcapname\fR:
       .RS 5
       .TP
      @@ -241,7 +241,7 @@
       whether or not \fIcapname\fR is defined for this terminal \fItype\fR.
       To determine if \fIcapname\fR is defined for this terminal \fItype\fR,
       the user must test the value written to standard output.
      -A value of \fB-1\fR
      +A value of \fB\-1\fR
       means that \fIcapname\fR is not defined for this terminal \fItype\fR.
       .TP
       .I other
      @@ -262,17 +262,17 @@
       \fB0\fR	T{
       (\fIcapname\fR is a numeric variable that is not specified in the
       \fBterminfo\fR(\*n) database for this terminal type, e.g.
      -\fBtput -T450 lines\fR and \fBtput -T2621 xmc\fR)
      +\fBtput \-T450 lines\fR and \fBtput \-T2621 xmc\fR)
       T}
       \fB1\fR	no error message is printed, see the \fBEXIT CODES\fR section.
       \fB2\fR	usage error
       \fB3\fR	unknown terminal \fItype\fR or no \fBterminfo\fR database
       \fB4\fR	unknown \fBterminfo\fR capability \fIcapname\fR
      -\fB>4\fR	error occurred in -S
      +\fB>4\fR	error occurred in \-S
       =
       .TE
       .SH PORTABILITY
      -The \fBlongname\fR and \fB-S\fR options, and the parameter-substitution
      +The \fBlongname\fR and \fB\-S\fR options, and the parameter-substitution
       features used in the \fBcup\fR example, are not supported in BSD curses or in
       AT&T/USL curses before SVr4.
       .SH SEE ALSO
      diff -urNd -urNd ncurses-5.3/man/tset.1 ncurses-5.3.20030906.orig/man/tset.1
      --- ncurses-5.3/man/tset.1	Sat Sep  9 15:33:07 2000
      +++ ncurses-5.3.20030906.orig/man/tset.1	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       .\"***************************************************************************
      -.\" Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
      +.\" Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.              *
       .\"                                                                          *
       .\" Permission is hereby granted, free of charge, to any person obtaining a  *
       .\" copy of this software and associated documentation files (the            *
      @@ -26,14 +26,14 @@
       .\" authorization.                                                           *
       .\"***************************************************************************
       .\"
      -.\" $Id: tset.1,v 1.12 2000/09/09 20:33:07 tom Exp $
      +.\" $Id: tset.1,v 1.13 2003/05/11 00:32:53 tom Exp $
       .TH tset 1 ""
       .SH NAME
       \fBtset\fR, \fBreset\fR - terminal initialization
       .SH SYNOPSIS
      -tset [-IQVqrs] [-] [-e \fIch\fR] [-i \fIch\fR] [-k \fIch\fR] [-m \fImapping\fR] [\fIterminal\fR]
      +tset [\-IQVqrs] [\-] [\-e \fIch\fR] [\-i \fIch\fR] [\-k \fIch\fR] [\-m \fImapping\fR] [\fIterminal\fR]
       .br
      -reset [-IQVqrs] [-] [-e \fIch\fR] [-i \fIch\fR] [-k \fIch\fR] [-m \fImapping\fR] [\fIterminal\fR]
      +reset [\-IQVqrs] [\-] [\-e \fIch\fR] [\-i \fIch\fR] [\-k \fIch\fR] [\-m \fImapping\fR] [\fIterminal\fR]
       .SH DESCRIPTION
       \&\fBTset\fR initializes terminals.
       \fBTset\fR first determines the type of terminal that you are using.
      @@ -50,7 +50,7 @@
       .PP
       4. The default terminal type, ``unknown''.
       .PP
      -If the terminal type was not specified on the command-line, the -m
      +If the terminal type was not specified on the command-line, the \fB\-m\fR
       option mappings are then applied (see below for more information).
       Then, if the terminal type begins with a question mark (``?''), the
       user is prompted for confirmation of the terminal type.  An empty
      @@ -81,50 +81,50 @@
       .PP
       The options are as follows:
       .TP 5
      --q
      +.B \-q
       The terminal type is displayed to the standard output, and the terminal is
       not initialized in any way.  The option `-' by itself is equivalent but
       archaic.
      -.TP 5
      --e
      +.TP
      +.B \-e
       Set the erase character to \fIch\fR.
      -.TP 5
      --I
      +.TP
      +.B \-I
       Do not send the terminal or tab initialization strings to the terminal.
      -.TP 5
      --Q
      +.TP
      +.B \-Q
       Don't display any values for the erase, interrupt and line kill characters.
       .TP
      -\fB-V\fR
      +.B \-V
       reports the version of ncurses which was used in this program, and exits.
      -.TP 5
      --i
      +.TP
      +.B \-i
       Set the interrupt character to \fIch\fR.
      -.TP 5
      --k
      +.TP
      +.B \-k
       Set the line kill character to \fIch\fR.
      -.TP 5
      --m
      +.TP
      +.B \-m
       Specify a mapping from a port type to a terminal.
       See below for more information.
      -.TP 5
      --r
      +.TP
      +.B \-r
       Print the terminal type to the standard error output.
      -.TP 5
      --s
      +.TP
      +.B \-s
       Print the sequence of shell commands to initialize the environment variable
       \fBTERM\fR to the standard output.
       See the section below on setting the environment for details.
       .PP
      -The arguments for the -e, -i, and -k
      +The arguments for the \fB-e\fR, \fB-i\fR, and \fB-k\fR
       options may either be entered as actual characters or by using the `hat'
       notation, i.e. control-h may be specified as ``^H'' or ``^h''.
       .SH SETTING THE ENVIRONMENT
       It is often desirable to enter the terminal type and information about
       the terminal's capabilities into the shell's environment.
      -This is done using the -s option.
      +This is done using the \fB\-s\fR option.
       .PP
      -When the -s option is specified, the commands to enter the information
      +When the \fB\-s\fR option is specified, the commands to enter the information
       into the shell's environment are written to the standard output.  If
       the \fBSHELL\fR environmental variable ends in ``csh'', the commands
       are for \fBcsh\fR, otherwise, they are for \fBsh\fR.
      @@ -132,7 +132,7 @@
       \fBnoglob\fR, leaving it unset.  The following line in the \fB.login\fR
       or \fB.profile\fR files will initialize the environment correctly:
       
      -    eval \`tset -s options ... \`
      +    eval \`tset \-s options ... \`
       
       .SH TERMINAL TYPE MAPPING
       When the terminal is not hardwired into the system (or the current
      @@ -142,13 +142,13 @@
       When \fBtset\fR is used in a startup script it is often desirable to
       provide information about the type of terminal used on such ports.
       .PP
      -The purpose of the -m option is to map
      +The purpose of the \fB\-m\fR option is to map
       from some set of conditions to a terminal type, that is, to
       tell \fBtset\fR
       ``If I'm on this port at a particular speed, guess that I'm on that
       kind of terminal''.
       .PP
      -The argument to the -m option consists of an optional port type, an
      +The argument to the \fB\-m\fR option consists of an optional port type, an
       optional operator, an optional baud rate specification, an optional
       colon (``:'') character and a terminal type.  The port type is a
       string (delimited by either the operator or the colon character).  The
      @@ -159,7 +159,7 @@
       of the standard error output (which should be the control terminal).
       The terminal type is a string.
       .PP
      -If the terminal type is not specified on the command line, the -m
      +If the terminal type is not specified on the command line, the \fB\-m\fR
       mappings are applied to the terminal type.  If the port type and baud
       rate match the mapping, the terminal type specified in the mapping
       replaces the current type.  If more than one mapping is specified, the
      @@ -174,16 +174,16 @@
       .PP
       If no baud rate is specified, the terminal type will match any baud rate.
       If no port type is specified, the terminal type will match any port type.
      -For example, \fB-m dialup:vt100 -m :?xterm\fR
      +For example, \fB\-m dialup:vt100 \-m :?xterm\fR
       will cause any dialup port, regardless of baud rate, to match the terminal
       type vt100, and any non-dialup port type to match the terminal type ?xterm.
       Note, because of the leading question mark, the user will be
       queried on a default port as to whether they are actually using an xterm
       terminal.
       .PP
      -No whitespace characters are permitted in the -m option argument.
      +No whitespace characters are permitted in the \fB\-m\fR option argument.
       Also, to avoid problems with meta-characters, it is suggested that the
      -entire -m option argument be placed within single quote characters,
      +entire \fB\-m\fR option argument be placed within single quote characters,
       and that \fBcsh\fR users insert a backslash character (``\e'') before
       any exclamation marks (``!'').
       .SH HISTORY
      @@ -197,30 +197,33 @@
       \fBtset\fR's most important use).  This implementation behaves like 4.4BSD
       tset, with a few exceptions specified here.
       .PP
      -The -S option of BSD tset no longer works; it prints an error message to stderr
      -and dies.  The -s option only sets \fBTERM\fR, not \fBTERMCAP\fP.  Both these
      +The \fB\-S\fR option of BSD tset no longer works; it prints an error message to stderr
      +and dies.  The \fB\-s\fR option only sets \fBTERM\fR, not \fBTERMCAP\fP.  Both these
       changes are because the \fBTERMCAP\fR variable is no longer supported under
      -terminfo-based \fBncurses\fR, which makes \fBtset -S\fR useless (we made it die
      +terminfo-based \fBncurses\fR, which makes \fBtset \-S\fR useless (we made it die
       noisily rather than silently induce lossage).
       .PP
       There was an undocumented 4.4BSD feature that invoking tset via a link named
       `TSET` (or via any other name beginning with an upper-case letter) set the
       terminal to use upper-case only.  This feature has been omitted.
       .PP
      -The -A, -E, -h, -u and -v options were deleted from the \fBtset\fR
      -utility in 4.4BSD. None of them were documented in 4.3BSD and all are
      -of limited utility at best. The -a, -d, and -p options are similarly
      +The \fB\-A\fR, \fB\-E\fR, \fB\-h\fR, \fB\-u\fR and \fB\-v\fR
      +options were deleted from the \fBtset\fR
      +utility in 4.4BSD.
      +None of them were documented in 4.3BSD and all are
      +of limited utility at best.
      +The \fB\-a\fR, -\fB\d\fR, and -\fB\p\fR options are similarly
       not documented or useful, but were retained as they appear to be in
       widespread use.  It is strongly recommended that any usage of these
      -three options be changed to use the -m option instead.  The
      --n option remains, but has no effect.  The -adnp options are therefore
      +three options be changed to use the \fB\-m\fR option instead.  The
      +-n option remains, but has no effect.  The \fB\-adnp\fR options are therefore
       omitted from the usage summary above.
       .PP
      -It is still permissible to specify the -e, -i, and -k options without
      +It is still permissible to specify the \fB\-e\fR, \fB\-i\fR, and \fB\-k\fR options without
       arguments, although it is strongly recommended that such usage be fixed to
       explicitly specify the character.
       .PP
      -As of 4.4BSD, executing \fBtset\fR as \fBreset\fR no longer implies the -Q
      +As of 4.4BSD, executing \fBtset\fR as \fBreset\fR no longer implies the \fB\-Q\fR
       option.  Also, the interaction between the - option and the \fIterminal\fR
       argument in some historic implementations of \fBtset\fR has been removed.
       .SH ENVIRONMENT
      @@ -230,7 +233,7 @@
       .TP 5
       /etc/ttys
       system port name to terminal type mapping database (BSD versions only).
      -.TP 5
      +.TP
       @TERMINFO@
       terminal capability database
       .SH SEE ALSO
      diff -urNd -urNd ncurses-5.3/menu/Makefile.in ncurses-5.3.20030906.orig/menu/Makefile.in
      --- ncurses-5.3/menu/Makefile.in	Sat Jan 19 19:49:17 2002
      +++ ncurses-5.3.20030906.orig/menu/Makefile.in	Fri Sep 12 16:42:40 2003
      @@ -1,6 +1,6 @@
      -# $Id: Makefile.in,v 1.36 2002/01/20 01:49:17 tom Exp $
      +# $Id: Makefile.in,v 1.40 2003/08/23 23:25:32 tom Exp $
       ##############################################################################
      -# Copyright (c) 1998,1999,2000,2001,2002 Free Software Foundation, Inc.      #
      +# Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.                #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -55,6 +55,11 @@
       includedir	= @includedir@
       
       LIBTOOL		= @LIBTOOL@
      +LIBTOOL_CLEAN	= @LIB_CLEAN@
      +LIBTOOL_COMPILE	= @LIB_COMPILE@
      +LIBTOOL_LINK	= @LIB_LINK@
      +LIBTOOL_INSTALL	= @LIB_INSTALL@
      +LIBTOOL_UNINSTALL = @LIB_UNINSTALL@
       
       INSTALL		= @INSTALL@
       INSTALL_LIB	= @INSTALL@ @INSTALL_LIB@
      @@ -71,8 +76,7 @@
       CPP		= @CPP@
       CFLAGS		= @CFLAGS@
       
      -CPPFLAGS	= @CPPFLAGS@ \
      -		  -DHAVE_CONFIG_H 
      +CPPFLAGS	= -DHAVE_CONFIG_H @CPPFLAGS@
       
       CCFLAGS		= $(CPPFLAGS) $(CFLAGS)
       
      @@ -84,7 +88,7 @@
       
       CFLAGS_DEFAULT	= $(CFLAGS_@DFT_UPR_MODEL@)
       
      -LINK		= $(LIBTOOL) $(CC)
      +LINK		= $(LIBTOOL_LINK) $(CC)
       LDFLAGS		= @LDFLAGS@ @LD_MODEL@ @LIBS@
       
       SHLIB_DIRS	= -L../lib
      @@ -97,7 +101,7 @@
       REL_VERSION	= @cf_cv_rel_version@
       ABI_VERSION	= @cf_cv_abi_version@
       
      -RANLIB		= @RANLIB@
      +RANLIB		= @LIB_PREP@
       
       IMPORT_LIB	= @IMPORT_LIB@
       SHARED_LIB	= @SHARED_LIB@
      diff -urNd -urNd ncurses-5.3/misc/csort ncurses-5.3.20030906.orig/misc/csort
      --- ncurses-5.3/misc/csort	Wed Dec 31 18:00:00 1969
      +++ ncurses-5.3.20030906.orig/misc/csort	Tue May 13 20:08:22 2003
      @@ -0,0 +1,36 @@
      +#!/bin/sh
      +# $Id: csort,v 1.2 2002/10/19 21:42:09 tom Exp $
      +##############################################################################
      +# Copyright (c) 2002 Free Software Foundation, Inc.                          #
      +#                                                                            #
      +# Permission is hereby granted, free of charge, to any person obtaining a    #
      +# copy of this software and associated documentation files (the "Software"), #
      +# to deal in the Software without restriction, including without limitation  #
      +# the rights to use, copy, modify, merge, publish, distribute, distribute    #
      +# with modifications, sublicense, and/or sell copies of the Software, and to #
      +# permit persons to whom the Software is furnished to do so, subject to the  #
      +# following conditions:                                                      #
      +#                                                                            #
      +# The above copyright notice and this permission notice shall be included in #
      +# all copies or substantial portions of the Software.                        #
      +#                                                                            #
      +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
      +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   #
      +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL    #
      +# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      #
      +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    #
      +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER        #
      +# DEALINGS IN THE SOFTWARE.                                                  #
      +#                                                                            #
      +# Except as contained in this notice, the name(s) of the above copyright     #
      +# holders shall not be used in advertising or otherwise to promote the sale, #
      +# use or other dealings in this Software without prior written               #
      +# authorization.                                                             #
      +##############################################################################
      +#
      +# override anything that might cause 'sort' to do the wrong thing...
      +LANG=C;		export LANG
      +LANGUAGE=C;	export LANGUAGE
      +LC_ALL=C;	export LC_ALL
      +LC_CTYPE=C;	export LC_CTYPE
      +sort $*
      diff -urNd -urNd ncurses-5.3/misc/emx.src ncurses-5.3.20030906.orig/misc/emx.src
      --- ncurses-5.3/misc/emx.src	Sat Aug 26 21:16:08 2000
      +++ ncurses-5.3.20030906.orig/misc/emx.src	Tue May 13 20:08:22 2003
      @@ -1,4 +1,4 @@
      -# $Id: emx.src,v 1.7 2000/08/27 02:16:08 jmcoopr Exp $
      +# $Id: emx.src,v 1.8 2003/01/26 01:17:55 tom Exp $
       # This is a reformatted copy of the terminfo source for OS/2 EMX from
       # Juan Jose Garcia Ripoll .
       # http://www.arrakis.es/~worm/
      @@ -85,6 +85,7 @@
       	smpch=\E[11m,
       	smso=\E[7m,
       	smul=\E[4m,
      +	use=klone+acs,
       
       # Highlight controls corresponding to the ANSI.SYS standard.  *All*
       # console drivers for Intel boxes obey these.  Does not assume \E[11m will
      @@ -103,6 +104,7 @@
       	smacs=\E[12m,
       	smso=\E[7m,
       	smul=\E[4m,
      +	use=klone+acs,
       
       # ANSI.SYS color control.
       # The DOS 5 manual asserts that these sequences meet the ISO 6429 standard.
      @@ -113,8 +115,17 @@
       	op=\E[37;40m,
       	setab=\E[4%p1%dm,
       	setaf=\E[3%p1%dm,
      -	setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
      -	setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
      +
      +# This is better than klone+color, it doesn't assume white-on-black as the
      +# default color pair,  but many `ANSI' terminals don't grok the  cap.
      +ecma+color|color control for ECMA-48-compatible terminals,
      +	AX,
      +	colors#8,
      +	ncv#3,
      +	pairs#64,
      +	op=\E[39;49m,
      +	setab=\E[4%p1%dm,
      +	setaf=\E[3%p1%dm,
       
       #### ANSI/ECMA-48 terminals and terminal emulators
       #
      @@ -209,7 +220,9 @@
       # no_color_video to inform the application that standout(1), underline(2)
       # reverse(4) and invisible(64) don't work with color.
       emx-base|DOS special keys,
      +	bce,
       	bw,
      +	it#8,
       	ncv#71,
       	bel=^G,
       	ka1=\0G,
      @@ -293,7 +306,7 @@
       #	me	<->	sgr0	turn off all atributes
       #
       # On my terminal, \E[4m looks dim.
      -ansi|ANSI.SYS color,
      +ansi-emx|ANSI.SYS color,
       	blink=\E[5m,
       	bold=\E[1m,
       	kmous=\E[M,
      @@ -319,17 +332,17 @@
       	smul=\E[1;31;47m,
       	use=emx-base,
       os2|OS/2-emx ANSI.SYS,
      -	cuu=\E[%p1%dA,
      -	cuu1=\E[A,
      +	cub=\E[%p1%dD,
      +	cub1=\E[D,
       	cud=\E[%p1%dB,
       	cud1=\E[B,
       	cuf=\E[%p1%dC,
       	cuf1=\E[C,
      -	cub=\E[%p1%dD,
      -	cub1=\E[D,
      -	sc=\E[s,
      +	cuu=\E[%p1%dA,
      +	cuu1=\E[A,
       	rc=\E[u,
      -	use=ansi,
      +	sc=\E[s,
      +	use=ansi-emx,
       	use=mono,
       mono|ANSI.SYS mono,
       	blink=\E[5m,
      @@ -353,7 +366,7 @@
       	smul=\E[1;31;40m,
       	use=mono,
       # nice colors for Emacs (white on blue, mode line white on cyan)
      -ansi-color-2|ANSI.SYS color 2,
      +ansi-color-2-emx|ANSI.SYS color 2,
       	rmcup=\E[0m,
       	rmso=\E[0;37;44m,
       	rmul=\E[0m,
      @@ -361,9 +374,9 @@
       	smcup=\E[0;37;44m,
       	smso=\E[1;37;46m,
       	smul=\E[1;31;40m,
      -	use=ansi,
      +	use=ansi-emx,
       # nice colors for Emacs (white on black, mode line black on cyan)
      -ansi-color-3|ANSI.SYS color 3,
      +ansi-color-3-emx|ANSI.SYS color 3,
       	rmcup=\E[0m,
       	rmso=\E[0m,
       	rmul=\E[0m,
      @@ -371,7 +384,7 @@
       	smcup=\E[0m,
       	smso=\E[30;46m,
       	smul=\E[1;31;40m,
      -	use=ansi,
      +	use=ansi-emx,
       
       #### X terminal emulators
       #
      @@ -437,7 +450,7 @@
       # xterm's internal mouse-tracking facility; ncurses will interpret the
       # following three bytes of mouse status information.
       # From: Eric S. Raymond  14 Dec 1995
      -xterm|vs100|xterm terminal emulator (X11R6 Window System),
      +xterm-r6|xterm terminal emulator (X11R6 Window System),
       	am,
       	km,
       	mir,
      @@ -488,7 +501,15 @@
       	kf10=\E[21~,
       	kf11=\E[23~,
       	kf12=\E[24~,
      +	kf13=\E[25~,
      +	kf14=\E[26~,
      +	kf15=\E[28~,
      +	kf16=\E[29~,
      +	kf17=\E[31~,
      +	kf18=\E[32~,
      +	kf19=\E[33~,
       	kf2=\E[12~,
      +	kf20=\E[34~,
       	kf3=\E[13~,
       	kf4=\E[14~,
       	kf5=\E[15~,
      @@ -496,6 +517,7 @@
       	kf7=\E[18~,
       	kf8=\E[19~,
       	kf9=\E[20~,
      +	kfnd=\E[1~,
       	khome=\EO\0,
       	kich1=\E[2~,
       	kmous=\E[M,
      @@ -545,6 +567,7 @@
       	sc=\E7,
       	tsl=\E[?E\E[?%i%dT,
       	use=xterm,
      +	use=ecma+color,
       
       # See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file
       xterm-nic|xterm with ich/ich1 suppressed for non-curses programs,
      @@ -758,7 +781,6 @@
       	cup=\EE%p1%d;%p2%d;,
       	cuu=\Ep-%p1%d;,
       	cuu1=\EA,
      -	cvvis=\Ea,
       	dch=\EI%p1%d;,
       	dch1=\EI1;,
       	dl=\ER%p1%d;,
      @@ -816,10 +838,21 @@
       	rmso=\ES,
       	rmul=\ES,
       	rs2=\ES\Es0;\Er0;,
      -	setab=\Es%i%p1%d; setaf=\Er%i%p1%d;,
      +	setab=\Es%i%p1%d;,
      +	setaf=\Er%i%p1%d;,
       	sgr0=\ES,
       	smacs=\0,
       	smir=\EY,
       	smso=\ES\ET,
       	smul=\ES\EV,
       	tbc=\Ej,
      +###############################################################################
      +# Aliases which conflict with terminfo.src
      +ansi|ANSI.SYS color,
      +	use=ansi-emx,
      +ansi-color-2|ANSI.SYS color 2,
      +	use=ansi-color-2-emx,
      +ansi-color-3|ANSI.SYS color 3,
      +	use=ansi-color-3-emx,
      +xterm|vs100|xterm terminal emulator (X11R6 Window System),
      +	use=xterm-r6,
      diff -urNd -urNd ncurses-5.3/misc/run_tic.in ncurses-5.3.20030906.orig/misc/run_tic.in
      --- ncurses-5.3/misc/run_tic.in	Sat Oct 13 19:44:33 2001
      +++ ncurses-5.3.20030906.orig/misc/run_tic.in	Fri Sep 12 16:42:59 2003
      @@ -1,6 +1,6 @@
       #!@SHELL@
       ##############################################################################
      -# Copyright (c) 1998,2000 Free Software Foundation, Inc.                     #
      +# Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.                #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -29,7 +29,7 @@
       #
       # Author: Thomas E. Dickey 1996,2000
       #
      -# $Id: run_tic.in,v 1.11 2001/10/14 00:44:33 tom Exp $
      +# $Id: run_tic.in,v 1.15 2003/09/06 22:31:44 Dan.Kegel Exp $
       # This script is used to install terminfo.src using tic.  We use a script
       # because the path checking is too awkward to do in a makefile.
       #
      @@ -62,10 +62,14 @@
       # on the host's copy of tic to compile the terminfo database.
       if test "$THAT_CC" = "$THIS_CC" ; then
       case "$PATH" in
      -:*) PATH=../progs:${DESTDIR}$bindir$PATH ;;
      -*) PATH=../progs:${DESTDIR}$bindir:$PATH ;;
      +:*) PATH=../progs:../lib:${DESTDIR}$bindir$PATH ;;
      +*) PATH=../progs:../lib:${DESTDIR}$bindir:$PATH ;;
       esac
       export PATH
      +SHLIB="sh $srcdir/shlib"
      +else
      +# Cross-compiling, so don't set PATH or run shlib.
      +SHLIB=
       fi
       
       #
      @@ -81,7 +85,7 @@
       umask 022
       
       # Construct the name of the old (obsolete) pathname, e.g., /usr/lib/terminfo.
      -TICDIR=`echo $TERMINFO | sed -e 's@/share/@/lib/@'`
      +TICDIR=`echo $TERMINFO | sed -e 's%/share/%/lib/%'`
       
       # Remove the old terminfo stuff; we don't care if it existed before, and it
       # would generate a lot of confusing error messages if we tried to overwrite it.
      @@ -91,11 +95,11 @@
       
       # If we're not installing into /usr/share/, we'll have to adjust the location
       # of the tabset files in terminfo.src (which are in a parallel directory).
      -TABSET=`echo $ticdir | sed -e 's@/terminfo$@/tabset@'`
      +TABSET=`echo $ticdir | sed -e 's%/terminfo$%/tabset%'`
       if test "x$TABSET" != "x/usr/share/tabset" ; then
       	echo '** adjusting tabset paths'
       	TMP=${TMPDIR-/tmp}/$$
      -	sed -e s:/usr/share/tabset:$TABSET:g $source >$TMP
      +	sed -e s%/usr/share/tabset%$TABSET%g $source >$TMP
       	trap "rm -f $TMP" 0 1 2 5 15
       	source=$TMP
       fi
      @@ -111,7 +115,7 @@
       	problems for older ncurses applications.
       
       EOF
      -if ( $srcdir/shlib tic$suffix -s -o $TERMINFO $source )
      +if ( $SHLIB tic$suffix -s -o $TERMINFO $source )
       then
       	echo '** built new '$TERMINFO
       else
      @@ -140,13 +144,15 @@
       		cd ${DESTDIR}$prefix
       		# Construct a symbolic link that only assumes $ticdir has the
       		# same $prefix as the other installed directories.
      -		RELATIVE=`echo $ticdir|sed -e 's:^'$prefix'/::'`
      +		RELATIVE=`echo $ticdir|sed -e 's%^'$prefix'/%%'`
       		if test "$RELATIVE" != "$ticdir" ; then
      -			RELATIVE=../`echo $ticdir|sed -e 's:^'$prefix'/::' -e 's:^/::'`
      +			RELATIVE=../`echo $ticdir|sed -e 's%^'$prefix'/%%' -e 's%^/%%'`
       		fi
       		if ( @LN_S@ $RELATIVE $TICDIR )
       		then
      -			echo '** linked '$TICDIR' for compatibility'
      +			echo '** sym-linked '$TICDIR' for compatibility'
      +		else
      +			echo '** could not sym-link '$TICDIR' for compatibility'
       		fi
       	fi
       fi
      diff -urNd -urNd ncurses-5.3/misc/shlib ncurses-5.3.20030906.orig/misc/shlib
      --- ncurses-5.3/misc/shlib	Sat May 20 18:01:17 2000
      +++ ncurses-5.3.20030906.orig/misc/shlib	Sun Jul 20 14:02:09 2003
      @@ -29,7 +29,7 @@
       #
       # Author: Thomas E. Dickey  1996
       #
      -# $Id: shlib,v 1.6 2000/05/20 23:01:17 tom Exp $
      +# $Id: shlib,v 1.7 2003/07/19 22:58:14 tom Exp $
       # Use this script as a wrapper when running executables linked to shared
       # libraries on systems that use the $LD_LIBRARY_PATH variable and don't embed
       # the soname's path within the linked executable (such as IRIX), e.g,
      @@ -84,4 +84,11 @@
       	fi
       	export LD_LIBRARY_PATH
       fi
      +
      +# cygwin doesn't use LD_LIBRARY_PATH, but does use PATH
      +if test -n "$PATHEXT" ; then
      +	PATH=$LD_LIBRARY_PATH:$PATH;
      +	export PATH
      +fi
      +
       eval "$*"
      diff -urNd -urNd ncurses-5.3/misc/terminfo.src ncurses-5.3.20030906.orig/misc/terminfo.src
      --- ncurses-5.3/misc/terminfo.src	Sat Oct  5 13:40:53 2002
      +++ ncurses-5.3.20030906.orig/misc/terminfo.src	Sun Jul 20 14:02:09 2003
      @@ -10,7 +10,7 @@
       #
       #------------------------------------------------------------------------------
       #	Version 10.2.1
      -#	$Date: 2002/10/05 18:40:53 $
      +#	$Date: 2003/07/19 19:44:24 $
       #	terminfo syntax
       #
       #	Eric S. Raymond		(current maintainer)
      @@ -562,7 +562,7 @@
       #
       # This completely describes the sequences specified in the DOS 2.1 ANSI.SYS
       # documentation (except for the keyboard key reassignment feature, which
      -# doen't fit the  model well).  The klone+acs sequences were valid
      +# doesn't fit the  model well).  The klone+acs sequences were valid
       # though undocumented.  The  capability is untested but should work for
       # keys F1-F10 (%p1 values outside this range will yield unpredictable results).
       # From: Eric S. Raymond  Nov 7 1995
      @@ -1468,7 +1468,9 @@
       	kf1=\2330P, kf10=\2330M, kf2=\2330Q, kf3=\2330W, 
       	kf4=\2330x, kf5=\2330t, kf6=\2330u, kf7=\2330q, kf8=\2330r, 
       	kf9=\2330p, knp=\233/, kpp=\233?, nel=^M^J, rev=\2337m, 
      -	rmso=\2330m, rmul=\2330m, sgr0=\2330m, 
      +	rmso=\2330m, rmul=\2330m, 
      +	sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m, 
      +	sgr0=\2330m, 
       
       # NetBSD "wscons" emulator in vt220 mode
       # These are micro-minimal and probably need to be redone for real
      @@ -1484,7 +1486,7 @@
       # DECstation/pmax.
       rcons|BSD rasterconsole, 
       	use=sun-il, 
      -# Color version of above. Color currenly only provided by NetBSD.
      +# Color version of above. Color currently only provided by NetBSD.
       rcons-color|BSD rasterconsole with ANSI color, 
       	bce, 
       	colors#8, pairs#64, 
      @@ -1809,6 +1811,44 @@
       #  |        $Op        |  $On    |         |
       #  |___kc1_______K4____|_kc3__K5_|_kent_@8_|
       #
      +# Note however, that the arrangement of the 5-key ka1-kc3 do not follow the
      +# terminfo guidelines.  That is a compromise used to assign the remaining
      +# keys on the keypad to kf5-kf0, used on older systems with legacy termcap
      +# support:
      +vt100+keypad|dec vt100 numeric keypad no fkeys, 
      +	ka1=\EOq, ka3=\EOs, kb2=\EOr, kc1=\EOp, kc3=\EOn, 
      +vt100+pfkeys|dec vt100 numeric keypad, 
      +	kent=\EOM, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, 
      +	use=vt100+keypad, 
      +vt100+fnkeys|dec vt100 numeric keypad, 
      +	kf0=\EOy, kf10=\EOx, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl, 
      +	kf9=\EOw, use=vt100+pfkeys, 
      +#
      +# A better adaptation to modern keyboards such as the PC's, which have a dozen
      +# function keys and the keypad 2,4,6,8 keys are labeled with arrows keys, is to
      +# use the 5-key arrangement to model the arrow keys as suggested in the
      +# terminfo guidelines:
      +#   _______________________________________
      +#  |   PF1   |   PF2   |   PF3   |   PF4   |
      +#  |   $OP   |   $OQ   |   $OR   |   $OS   |
      +#  |_kf1__k1_|_kf2__k2_|_kf3__k3_|_kf4__k4_|
      +#  |    7         8         9         -    |
      +#  |   $Ow   |   $Ox   |   $Oy   |   $Om   |
      +#  |_ka1__K1_|_________|_ka3__K3_|_________|
      +#  |    4    |    5    |    6    |    ,    |
      +#  |   $Ot   |   $Ou   |   $Ov   |   $Ol   |
      +#  |_________|_kb2__K2_|_________|_________|
      +#  |    1    |    2    |    3    |         |
      +#  |   $Oq   |   $Or   |   $Os   |  enter  |
      +#  |_kc1__K4_|_________|_kc3__K5_|  $OM    |
      +#  |         0         |   .     |         |
      +#  |        $Op        |  $On    |         |
      +#  |___________________|_________|_kent_@8_|
      +#
      +vt220+keypad|dec vt220 numeric keypad, 
      +	ka1=\EOw, ka3=\EOy, kb2=\EOu, kc1=\EOq, kc3=\EOs, kent=\EOM, 
      +	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, 
      +#
       # And here, for those of you with orphaned VT100s lacking documentation, is
       # a description of the soft switches invoked when you do `Set Up'.
       # 
      @@ -1853,17 +1893,15 @@
       	cuf=\E[%p1%dC, cuf1=\E[C$<2>, 
       	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, 
       	cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>, 
      -	enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, ka1=\EOq, 
      -	ka3=\EOs, kb2=\EOr, kbs=^H, kc1=\EOp, kc3=\EOn, kcub1=\EOD, 
      -	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kent=\EOM, kf0=\EOy, 
      -	kf1=\EOP, kf10=\EOx, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOt, 
      -	kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw, rc=\E8, 
      +	enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=^H, 
      +	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8, 
       	rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l, 
       	rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>, 
       	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, 
       	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>, 
       	sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, 
       	smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g, 
      +	use=vt100+fnkeys, 
       vt100nam|vt100-nam|vt100 no automargins, 
       	am@, xenl@, use=vt100-am, 
       vt100-vb|dec vt100 (w/advanced video) & no beep, 
      @@ -2132,22 +2170,21 @@
       	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, 
       	il1=\E[L, ind=\ED, 
       	is2=\E>\E[?3l\E[?4l\E[5?l\E[?7h\E[?8h\E[1;24r\E[24;1H, 
      -	ka1=\EOw, ka3=\EOy, kb2=\EOu, kbs=\177, kc1=\EOq, kc3=\EOs, 
      -	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
      -	kdch1=\E[3~, kel=\E[4~, kent=\EOM, kf1=\EOP, kf10=\E[21~, 
      -	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, 
      -	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, 
      -	kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, 
      -	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
      -	khome=\E[1~, kich1=\E[2~, knp=\E[6~, knxt=^I, kpp=\E[5~, 
      -	kprv=\E[Z, kslt=\E[4~, mc0=\E[i, mc4=\E[?4i, mc5=\E[?5i, 
      -	nel=\EE, rc=\E8, rev=\E[7m, rf=/usr/share/tabset/vt300, 
      -	ri=\EM, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l, 
      -	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, 
      +	kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
      +	kdch1=\E[3~, kel=\E[4~, kf10=\E[21~, kf11=\E[23~, 
      +	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, 
      +	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, 
      +	kf20=\E[34~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, 
      +	kf9=\E[20~, khome=\E[1~, kich1=\E[2~, knp=\E[6~, knxt=^I, 
      +	kpp=\E[5~, kprv=\E[Z, kslt=\E[4~, mc0=\E[i, mc4=\E[?4i, 
      +	mc5=\E[?5i, nel=\EE, rc=\E8, rev=\E[7m, 
      +	rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B, 
      +	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, 
      +	rmul=\E[m, 
       	rs2=\E>\E[?3l\E[?4l\E[5?l\E[?7h\E[?8h\E[1;24r\E[24;1H, 
       	sc=\E7, sgr0=\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h, 
       	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, 
      -	tsl=\E[1$}\E[H\E[K, 
      +	tsl=\E[1$}\E[H\E[K, use=vt220+keypad, 
       vt320-nam|vt300-nam|dec vt320 7 bit terminal with no am to make SAS happy, 
       	am@, 
       	is2=\E>\E[?3l\E[?4l\E[5?l\E[?7l\E[?8h\E[1;24r\E[24;1H, 
      @@ -2584,6 +2621,13 @@
       	dch=\E[%p1%dP, ich=\E[%p1%d@, use=ecma+color, 
       	use=ms-vt100, 
       
      +# a minimal subset of a vt100 (compare with "news-unk).
      +tt|tkterm|Don Libes' tk text widget terminal emulator, 
      +	clear=\E[H\E[J, cr=^M, cuf1=\E[C, cup=\E[%p1%d;%p2%dH, 
      +	cuu1=\E[A, ind=^J, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, 
      +	kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, rmso=\E[m, 
      +	smso=\E[7m, 
      +
       #### X terminal emulators
       #
       # You can add the following line to your .Xdefaults to change the terminal type
      @@ -2691,9 +2735,8 @@
       	ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, 
       	il1=\E[L, ind=^J, 
       	is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, 
      -	ka1=\EOw, ka3=\EOu, kb2=\EOy, kbeg=\EOE, kbs=^H, kc1=\EOq, 
      -	kc3=\EOs, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
      -	kdch1=\177, kend=\EOF, kent=\EOM, kf1=\E[11~, kf10=\E[21~, 
      +	kbeg=\EOE, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, 
      +	kcuu1=\EOA, kdch1=\177, kend=\EOF, kf1=\E[11~, kf10=\E[21~, 
       	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, 
       	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, 
       	kf19=\E[33~, kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, 
      @@ -2710,7 +2753,7 @@
       	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E7\E[?47h, 
       	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, 
       	tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c, 
      -	vpa=\E[%i%p1%dd, use=ecma+color, 
      +	vpa=\E[%i%p1%dd, use=ecma+color, use=vt220+keypad, 
       
       # This is the stock xterm entry supplied with XFree86 3.3, which uses VT100
       # codes for F1-F4 except while in VT220 mode.
      @@ -2752,8 +2795,8 @@
       
       xterm-xfree86|xterm-new|xterm terminal emulator (XFree86 4.0 Window System), 
       	npc, 
      -	kDC=\E[3;2~, kEND=\EO2F, kHOM=\EO2H, kIC=\E[2;2~, 
      -	kLFT=\EO2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\EO2C, 
      +	kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~, 
      +	kLFT=\E[1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\E[1;2C, 
       	kb2=\EOE, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, 
       	kcuu1=\EOA, kend=\EOF, kent=\EOM, kf1=\EOP, kf10=\E[21~, 
       	kf11=\E[23~, kf12=\E[24~, kf13=\EO2P, kf14=\EO2Q, 
      @@ -2819,6 +2862,14 @@
       xterm-88color|xterm with 88 colors, 
       	colors#88, pairs#88, use=xterm-256color, 
       
      +# These two are used to demonstrate the any-event mouse support, i.e., by
      +# using an extended name "XM" which tells ncurses to put the terminal into
      +# a special mode when initializing the xterm mouse.
      +xterm-1002|testing xterm-mouse, 
      +	XM=\E[?1002%?%p1%{1}%=%th%el%;, use=xterm-xfree86, 
      +xterm-1003|testing xterm-mouse, 
      +	XM=\E[?1003%?%p1%{1}%=%th%el%;, use=xterm-xfree86, 
      +
       # 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.
      @@ -2895,15 +2946,14 @@
       #	+ uses DEC-style control sequences for the application keypad.
       #	  
       xterm-vt220|XFree86 xterm emulating vt220, 
      -	ka1=\EOw, ka3=\EOy, kbeg=\EOu, kc1=\EOq, kc3=\EOs, kcbt=\E[Z, 
      -	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\E[4~, 
      -	kent=\EOM, kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, 
      -	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, 
      -	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ, 
      -	kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf5=\E[15~, kf6=\E[17~, 
      -	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[1~, 
      -	kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, 
      -	use=xterm-basic, 
      +	kbeg=\EOu, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, 
      +	kcuu1=\EOA, kend=\E[4~, kf10=\E[21~, kf11=\E[23~, 
      +	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, 
      +	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, 
      +	kf20=\E[34~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, 
      +	kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~, 
      +	kmous=\E[M, knp=\E[6~, kpp=\E[5~, use=xterm-basic, 
      +	use=vt220+keypad, 
       
       xterm-vt52|XFree86 xterm emulating dec vt52, 
       	cols#80, it#8, lines#24, 
      @@ -2951,7 +3001,7 @@
       #  -- MATSUMOTO Shoji)
       kterm|kterm kanji terminal emulator (X window system), 
       	eslok, hs, 
      -	acsc=++\,\,--..00II``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
      +	acsc=++\,\,--..00ii``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
       	csr=\E[%i%p1%d;%p2%dr, dsl=\E[?H, enacs=, fsl=\E[?F, 
       	kmous=\E[M, rc=\E8, rmacs=\E(B, sc=\E7, smacs=\E(0, 
       	tsl=\E[?E\E[?%i%dT, use=xterm-r6, use=ecma+color, 
      @@ -2981,9 +3031,8 @@
       	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, 
       	el=\E[K, el1=\E[1K, enacs=\E(B\E)0, home=\E[H, ht=^I, 
       	ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J, 
      -	is1=\E[r\E[m\E[?7h\E[?4;6l\E[4l, ka1=\EOw, ka3=\EOy, 
      -	kb2=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\EOD, kcud1=\EOB, 
      -	kcuf1=\EOC, kcuu1=\EOA, kend=\E[8~, kent=\EOM, kf1=\E[11~, 
      +	is1=\E[r\E[m\E[?7h\E[?4;6l\E[4l, kbs=^H, kcub1=\EOD, 
      +	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\E[8~, kf1=\E[11~, 
       	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\E[12~, 
       	kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, 
       	kf8=\E[19~, kf9=\E[20~, khome=\E[7~, kich1=\E[2~, 
      @@ -2995,7 +3044,7 @@
       	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, smacs=^N, smam=\E[?7h, 
       	smcup=\E[?1;41s\E[?1;41h\E=, smir=\E[4h, smso=\E[7m, 
      -	smul=\E[4m, use=ecma+color, 
      +	smul=\E[4m, use=ecma+color, use=vt220+keypad, 
       
       # The 'nxterm' distributed with Redhat Linux 5.2 is a slight rehack of
       # xterm-sb_right-ansi-3d, which implements ANSI colors, but does not support
      @@ -3005,7 +3054,9 @@
       #
       # Redhat Linux 6.x distributes XFree86 xterm as "nxterm", which uses bce
       # colors; note that this is not compatible with the 5.2 version.
      -nxterm|xterm-color|generic color xterm, 
      +# csw (2002-05-15): make xterm-color primary instead of nxterm, to 
      +#   match XFree86's xterm.terminfo usage and prevent circular links
      +xterm-color|nxterm|generic color xterm, 
       	ncv@, 
       	op=\E[m, use=xterm-r6, use=klone+color, 
       
      @@ -3146,10 +3197,9 @@
       	il=\E[%p1%dL, il1=\E[L, ind=^J, is1=\E[?47l\E=\E[?1l, 
       	is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, 
       	kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kLFT=\E[d, kNXT=\E[6$, 
      -	kPRV=\E[5$, kRIT=\E[c, ka1=\EOw, ka3=\EOy, kb2=\EOu, kbs=^H, 
      -	kc1=\EOq, kc3=\EOs, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, 
      -	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kel=\E[8\^, 
      -	kend=\E[8~, kent=\EOM, kf1=\E[11~, kf10=\E[21~, 
      +	kPRV=\E[5$, kRIT=\E[c, kbs=^H, kcbt=\E[Z, kcub1=\E[D, 
      +	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, 
      +	kel=\E[8\^, kend=\E[8~, kf1=\E[11~, kf10=\E[21~, 
       	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, 
       	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, 
       	kf19=\E[33~, kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, 
      @@ -3162,10 +3212,22 @@
       	rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>, 
       	s0ds=\E(B, s1ds=\E(0, sc=\E7, sgr0=\E[0m\017, smacs=^N, 
       	smcup=\E7\E[?47h, smir=\E[4h, smkx=\E=, smso=\E[7m, 
      -	smul=\E[4m, tbc=\E[3g, 
      +	smul=\E[4m, tbc=\E[3g, use=vt220+keypad, 
       rxvt|rxvt terminal emulator (X Window System), 
       	ncv@, 
      -	sgr0=\E[m\017, use=rxvt-basic, use=ecma+color, 
      +	cvvis=\E[?25h, hpa=\E[%i%p1%dG, kf0=\E[21~, 
      +	sgr0=\E[m\017, vpa=\E[%i%p1%dd, use=rxvt-basic, 
      +	use=ecma+color, 
      +rxvt-color|rxvt terminal emulator (X Window System), 
      +	use=rxvt, 
      +rxvt-xpm|rxvt terminal emulator (X Window System), 
      +	use=rxvt, 
      +rxvt-cygwin|rxvt terminal emulator (X Window System) on cygwin, 
      +	acsc=0\333+\257\,\256-\^`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376, 
      +	use=rxvt, 
      +rxvt-cygwin-native|rxvt terminal emulator (native MS Window System port) on cygwin, 
      +	acsc=0\333+\257\,\256-\^`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330~\376, 
      +	use=rxvt-cygwin, 
       
       # This variant is supposed to work with rxvt 2.7.7 when compiled with
       # NO_BRIGHTCOLOR defined.  rxvt needs more work...
      @@ -3227,19 +3289,17 @@
       	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, 
       	el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, getm=\E[%p1%dY, 
       	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, 
      -	il=\E[%p1%dL, il1=\E[L, ind=^J, ka1=\EOq, ka3=\EOs, kb2=\EOr, 
      -	kbs=^H, kc1=\EOp, kc3=\EOn, kcub1=\EOD, kcud1=\EOB, 
      -	kcuf1=\EOC, kcuu1=\EOA, kend=\E[Y, kent=\EOM, kf0=\EOy, 
      -	kf1=\EOP, kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf2=\EOQ, 
      -	kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, 
      -	kf9=\EOX, khome=\E[H, kmous=\E[^_, knp=\E[U, kpp=\E[V, 
      -	rc=\E8, reqmp=\E[492Z, rev=\E[7m, ri=\EM, rmacs=^O, 
      -	rmcup=\E@0\E[?4r, rmso=\E[m, 
      +	il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\EOD, 
      +	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\E[Y, kf0=\EOy, 
      +	kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf5=\EOT, kf6=\EOU, 
      +	kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H, kmous=\E[^_, 
      +	knp=\E[U, kpp=\E[V, rc=\E8, reqmp=\E[492Z, rev=\E[7m, ri=\EM, 
      +	rmacs=^O, rmcup=\E@0\E[?4r, rmso=\E[m, 
       	rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, 
       	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, 
       	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, smacs=^N, smcup=\E@0\E[?4s\E[?4h\E@1, 
      -	smso=\E[7m, tbc=\E[3g, 
      +	smso=\E[7m, tbc=\E[3g, use=vt100+fnkeys, 
       
       xtermc|xterm terminal emulator (color), 
       	colors#8, ncv#7, pairs#64, 
      @@ -3332,7 +3392,7 @@
       # print interface, ANSI X3.64 colour escape sequences, etc.  Newsgroup postings
       # indicate that it emulates more than one terminal, but incompletely.
       # 
      -# This is dapted from a FreeBSD bug-report by Daniel Rudy 
      +# This is adapted from a FreeBSD bug-report by Daniel Rudy 
       # It is based on vt102's entry, with some subtle differences, but also
       #	has status line
       #	supports ANSI colors (except for 'op' string)
      @@ -3349,19 +3409,71 @@
       	dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, 
       	dsl=\E[?E, ed=\E[J, el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, 
       	fsl=\E[?F, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, 
      -	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, ka1=\EOq, 
      -	ka3=\EOs, kb2=\EOr, kbs=^H, kc1=\EOp, kc3=\EOn, kcub1=\EOD, 
      -	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kent=\EOM, kf0=\EOy, 
      -	kf1=\EOP, kf10=\EOx, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOt, 
      -	kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw, op=\E[100m, rc=\E8, 
      -	rev=\E[7m, ri=\EM, rmacs=^O, rmcup=\E[2J\E[?47l\E8, 
      -	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, 
      +	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, 
      +	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOy, 
      +	kf10=\EOx, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw, 
      +	op=\E[100m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, 
      +	rmcup=\E[2J\E[?47l\E8, rmkx=\E[?1l\E>, rmso=\E[m, 
      +	rmul=\E[m, 
       	rs2=\E>\E[1;3;4;5;6l\E[?7h\E[100m\E[m\E[r\E[2J\E[H, 
       	sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, 
       	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, smacs=^N, smcup=\E7\E[?47h, 
       	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, 
      -	tsl=\E[?E\E[?%i%p1%dT, 
      +	tsl=\E[?E\E[?%i%p1%dT, use=vt100+fnkeys, 
      +
      +### MTERM
      +#
      +# This application is available by email from .
      +#
      +# "mterm -type ansi" sets $TERM to "ansi"
      +mterm-ansi|ANSI emulation, 
      +	am, bw, mir, msgr, 
      +	it#8, 
      +	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
      +	bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, 
      +	cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, 
      +	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
      +	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, 
      +	dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, 
      +	el=\E[K, home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=, 
      +	il=\E[%p1%dL, il1=\E[L, ind=\E[S, indn=\E[%p1%dS, 
      +	invis=\E[8m, is2=\E)0\017, kbs=^H, nel=\EE, rev=\E[7m, 
      +	ri=\E[T, rin=\E[%p1%dT, rmacs=^O, rmir=\E[4l, rmso=\E[27m, 
      +	rmul=\E[24m, sgr0=\E[m, smacs=^N, smir=\E[4h, smso=\E[7m, 
      +	smul=\E[4m, vpa=\E[%i%p1%dd, 
      +# mterm normally sets $TERM to "mterm"
      +mterm|mouse-sun|Der Mouse term, 
      +	am, bw, mir, 
      +	it#8, 
      +	bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^N, cuf1=^S, 
      +	cup=\006%p1%d.%p2%d., cuu1=^X, dch1=^Y, dl1=^K, ed=^B, el=^C, 
      +	home=^P, ht=^I, il1=^A, ind=^U, kbs=^H, ll=^R, nel=^M^U, ri=^W, 
      +	rmir=^O, rmso=^T, smir=^Q, smso=^V, 
      +# "mterm -type decansi" sets $TERM to "decansi"
      +decansi|ANSI emulation with DEC compatibility hacks, 
      +	am, mir, msgr, xenl, 
      +	colors#8, it#8, pairs#64, 
      +	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
      +	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, 
      +	clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, 
      +	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, 
      +	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, 
      +	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
      +	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, 
      +	dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, enacs=\E(B\E)0, 
      +	home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=, il=\E[%p1%dL, 
      +	il1=\E[L, ind=\E[S, indn=\E[%p1%dS, invis=\E[8m, 
      +	is2=\E)0\E[r\017, kbs=^H, kcub1=\EOD, kcud1=\EOB, 
      +	kcuf1=\EOC, kcuu1=\EOA, nel=\EE, op=\E[0m, rc=\E8, rev=\E[7m, 
      +	ri=\E[T, rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, 
      +	rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, sc=\E7, 
      +	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, 
      +	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, 
      +	sgr0=\E[m, smacs=^N, smam=\E[?7h, smir=\E[4h, 
      +	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, u6=\E[%i%d;%dR, 
      +	u7=\E[6n, vpa=\E[%i%p1%dd, 
      +
       #### MGR
       #
       # MGR is a Bell Labs window system lighter-weight than X.
      @@ -3467,11 +3579,18 @@
       	kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, 
       	kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
       	khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, 
      -	nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmir=\E[4l, 
      -	rmkx=\E[?1l\E>, rmso=\E[23m, rmul=\E[24m, rs2=\Ec, sc=\E7, 
      -	sgr0=\E[m, smacs=^N, smir=\E[4h, smkx=\E[?1h\E=, 
      -	smso=\E[3m, smul=\E[4m, tbc=\E[3g, E0=\E(B, S0=\E(%p1%c, 
      +	nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, 
      +	rmcup=\E[?1049l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[23m, 
      +	rmul=\E[24m, rs2=\Ec, sc=\E7, sgr0=\E[m, smacs=^N, 
      +	smcup=\E[?1049h, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[3m, 
      +	smul=\E[4m, tbc=\E[3g, E0=\E(B, S0=\E(%p1%c, 
       	use=ecma+color, 
      +# The bce and status-line entries are from screen 3.9.13 (and require some
      +# changes to .screenrc).
      +screen-bce|VT 100/ANSI X3.64 virtual terminal with bce, 
      +	bce, use=screen, 
      +screen-s|VT 100/ANSI X3.64 virtual terminal with hardstatus line, 
      +	dsl=\E_\E\\, fsl=\E\\, tsl=\E_, use=screen, 
       
       # Read the fine manpage:
       #       When  screen  tries  to  figure  out  a  terminal name for
      @@ -3508,9 +3627,11 @@
       screen.xterm-r6|screen customized for X11R6 xterm, 
       	bw, use=xterm-r6, 
       # Color applications running in screen and TeraTerm do not play well together
      -# on Solaris.
      +# on Solaris because Sun's curses implementation gets confused.
       screen.teraterm|disable ncv in teraterm, 
      -	ncv#127, use=screen, 
      +	ncv#127, 
      +	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376, 
      +	use=screen, 
       
       screen-w|VT 100/ANSI X3.64 virtual terminal with 132 cols, 
       	cols#132, use=screen, 
      @@ -3631,7 +3752,7 @@
       #### Pilot Pro Palm-Top
       #
       # Termcap for Top Gun Telnet and SSH on the Palm Pilot.
      -# http://www.isaac.cs.berkeley.edu/pilot/tgtelnet.html
      +# http://www.ai/~iang/TGssh/
       pilot|tgtelnet|Top Gun Telnet on the Palm Pilot Professional, 
       	OTbs, am, xenl, 
       	cols#39, lines#16, 
      @@ -3763,6 +3884,9 @@
       sun-c|sun-cmd|Sun Microsystems Workstation console with scrollable history, 
       	lines#35, 
       	rmcup=\E[>4h, smcup=\E[>4l, use=sun, 
      +sun-type4|Sun Workstation console with type 4 keyboard, 
      +	kcub1=\E[217z, kcud1=\E[221z, kcuf1=\E[219z, 
      +	kcuu1=\E[215z, use=sun-il, 
       
       #### Iris consoles
       #
      @@ -4032,62 +4156,79 @@
       #### Non-Unix Consoles
       #
       
      +### EMX termcap.dat compatibility modes
      +#
      +# Keypad:	Home=\0G	Up=\0H	PrPag=\0I
      +#		ka1,kh		kcuu1		kpp,ka3
      +#
      +#		Left=\0K	5=\0L		Right=\0M
      +#		kcub1		kb2		kcuf1
      +#
      +#		End=\0O		Down=\0P	NxPag=\0Q
      +#		kc1,kend	kcud1		kc3,knp
      +#
      +#		Ins=\0R		Del=\0S
      +#		kich1		kdch1
      +#
      +# On keyboard with 12 function keys,
      +#	shifted f-keys: F13-F24
      +#	control f-keys: F25-F36
      +#	alt f-keys:     F37-F48
      +# The shift/control/alt keys do not modify each other, but alt overrides both,
      +# and control overrides shift.
      +#
      +# Also (possibly only EMX, so we don't put it in ansi.sys, etc): set the
      +# no_color_video to inform the application that standout(1), underline(2)
      +# reverse(4) and invisible(64) don't work with color.
      +emx-base|DOS special keys, 
      +	bce, bw, 
      +	it#8, ncv#71, 
      +	bel=^G, ka1=\0G, ka3=\0I, kb2=\0L, kbs=^H, kc1=\0O, kc3=\0Q, 
      +	kcbt=\0^O, kcub1=\0K, kcud1=\0P, kcuf1=\0M, kcuu1=\0H, 
      +	kdch1=\0S, kend=\0O, kf1=\0;, kf10=\0D, kf11=\0\205, 
      +	kf12=\0\206, kf13=\0T, kf14=\0U, kf15=\0V, kf16=\0W, 
      +	kf17=\0X, kf18=\0Y, kf19=\0Z, kf2=\0<, kf20=\0[, kf21=\0\\, 
      +	kf22=\0], kf23=\0\207, kf24=\0\210, kf25=\0\^, kf26=\0_, 
      +	kf27=\0`, kf28=\0a, kf29=\0b, kf3=\0=, kf30=\0c, kf31=\0d, 
      +	kf32=\0e, kf33=\0f, kf34=\0g, kf35=\0\211, kf36=\0\212, 
      +	kf37=\0h, kf38=\0i, kf39=\0j, kf4=\0>, kf40=\0k, kf41=\0l, 
      +	kf42=\0m, kf43=\0n, kf44=\0o, kf45=\0p, kf46=\0q, 
      +	kf47=\0\213, kf48=\0\214, kf5=\0?, kf6=\0@, kf7=\0A, kf8=\0B, 
      +	kf9=\0C, khome=\0G, kich1=\0R, knp=\0Q, kpp=\0I, 
      +	use=ansi.sys, 
      +
       # Except for the "-emx" suffixes, these are as distributed with EMX 0.9b,
       # a Unix-style environment used on OS/2.  (Note that the suffix makes some
       # names longer than 14 characters, the nominal maximum).
       #
       # Removed: rmacs=\E[10m, smacs=\E[11m, because OS/2 does not implement acs.
       ansi-emx|ANSI.SYS color, 
      -	am, bce, eo, mir, msgr, xenl, xon, 
      +	am, bce, eo, mir, msgr, xon, 
       	colors#8, cols#80, it#8, lines#25, pairs#64, 
       	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, 
       	clear=\E[1;33;44m\E[H\E[J, cnorm=\E[?25h, cr=^M, cub1=^H, 
       	cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 
       	dch=\E[%p1%dp, ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l, 
       	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, ind=^J, 
      -	kb2=\E[G, kbs=^H, kcub1=\0K, kcud1=\0P, kcuf1=\0M, kcuu1=\0H, 
      -	kf0=\0D, kf1=\0;, kf2=\0<, kf3=\0=, kf4=\0>, kf5=\0?, kf6=\0@, 
      -	kf7=\0A, kf8=\0B, kf9=\0C, khome=\0G, kich1=\0R, kll=\0O, 
      -	knp=\0Q, kpp=\0I, kspd=^Z, nel=^M^J, rev=\E[5;37;41m, 
      -	rmir=\E[4l, rmpch=\E[10m, rmso=\E[0;44m\E[1;33m, 
      -	rmul=\E[0;44m\E[1;33m, rs1=\Ec, setab=\E[4%p1%dm, 
      -	setaf=\E[3%p1%dm, sgr0=\E[0m\E[1;33;44m, smir=\E[4h, 
      -	smpch=\E[11m, smso=\E[0;31;47m, smul=\E[1;31;44m, 
      -	tbc=\E[3g, u8=\E[?6c, u9=\E[c, 
      +	kb2=\E[G, kbs=^H, kf0=\0D, kll=\0O, kspd=^Z, nel=^M^J, 
      +	rev=\E[5;37;41m, rmir=\E[4l, rmpch=\E[10m, 
      +	rmso=\E[0;44m\E[1;33m, rmul=\E[0;44m\E[1;33m, rs1=\Ec, 
      +	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, 
      +	sgr0=\E[0m\E[1;33;44m, smir=\E[4h, smpch=\E[11m, 
      +	smso=\E[0;31;47m, smul=\E[1;31;44m, tbc=\E[3g, u8=\E[?6c, 
      +	u9=\E[c, use=emx-base, 
      +# nice colors for Emacs (white on blue, mode line white on cyan)
       ansi-color-2-emx|ANSI.SYS color 2, 
      -	am, bce, eo, mir, msgr, xenl, xon, 
      -	colors#8, cols#80, it#8, lines#25, pairs#64, 
      -	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, 
      -	clear=\E[0;37;44m\E[H\E[J, cnorm=\E[?25h, cr=^M, cub1=^H, 
      -	cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 
      -	dch=\E[%p1%dp, ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l, 
      -	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, ind=^J, 
      -	kb2=\E[G, kbs=^H, kcub1=\0K, kcud1=\0P, kcuf1=\0M, kcuu1=\0H, 
      -	kf0=\0D, kf1=\0;, kf2=\0<, kf3=\0=, kf4=\0>, kf5=\0?, kf6=\0@, 
      -	kf7=\0A, kf8=\0B, kf9=\0C, khome=\0G, kich1=\0R, kll=\0O, 
      -	knp=\0Q, kpp=\0I, kspd=^Z, nel=^M^J, rev=\E[1;37;46m, 
      -	rmir=\E[4l, rmpch=\E[10m, rmso=\E[0;37;44m, 
      -	rmul=\E[0;37;44m, rs1=\Ec, setab=\E[4%p1%dm, 
      -	setaf=\E[3%p1%dm, sgr0=\E[0;37;44m, smir=\E[4h, 
      -	smpch=\E[11m, smso=\E[1;37;46m, smul=\E[1;36;44m, 
      -	tbc=\E[3g, u8=\E[?6c, u9=\E[c, 
      +	clear=\E[0;37;44m\E[H\E[J, rev=\E[1;37;46m, 
      +	rmso=\E[0;37;44m, rmul=\E[0;37;44m, rs1=\Ec, 
      +	setaf=\E[3%p1%dm, sgr0=\E[0;37;44m, smso=\E[1;37;46m, 
      +	smul=\E[1;36;44m, use=ansi-emx, 
      +# nice colors for Emacs (white on black, mode line black on cyan)
       ansi-color-3-emx|ANSI.SYS color 3, 
      -	am, bce, eo, mir, msgr, xenl, xon, 
      -	colors#8, cols#80, it#8, lines#25, pairs#64, 
      -	bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, 
      -	clear=\E[0;37;40m\E[H\E[J, cnorm=\E[?25h, cr=^M, cub1=^H, 
      -	cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 
      -	dch=\E[%p1%dp, ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l, 
      -	home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, ind=^J, 
      -	kb2=\E[G, kbs=^H, kcub1=\0K, kcud1=\0P, kcuf1=\0M, kcuu1=\0H, 
      -	kf0=\0D, kf1=\0;, kf2=\0<, kf3=\0=, kf4=\0>, kf5=\0?, kf6=\0@, 
      -	kf7=\0A, kf8=\0B, kf9=\0C, khome=\0G, kich1=\0R, kll=\0O, 
      -	knp=\0Q, kpp=\0I, kspd=^Z, nel=^M^J, rev=\E[1;37;46m, 
      -	rmir=\E[4l, rmpch=\E[10m, rmso=\E[0;37;40m, 
      -	rmul=\E[0;37;40m, rs1=\Ec, setab=\E[4%p1%dm, 
      -	setaf=\E[3%p1%dm, sgr0=\E[0;10m, smir=\E[4h, 
      -	smpch=\E[11m, smso=\E[1;37;46m, smul=\E[0;36;40m, 
      -	tbc=\E[3g, u8=\E[?6c, u9=\E[c, 
      +	clear=\E[0;37;40m\E[H\E[J, rev=\E[1;37;46m, 
      +	rmso=\E[0;37;40m, rmul=\E[0;37;40m, rs1=\Ec, 
      +	setaf=\E[3%p1%dm, sgr0=\E[0;10m, smso=\E[1;37;46m, 
      +	smul=\E[0;36;40m, use=ansi-emx, 
       mono-emx|stupid monochrome ansi terminal with only one kind of emphasis, 
       	am, 
       	cols#80, it#8, lines#24, 
      @@ -4117,31 +4258,112 @@
       # I've indicated which of these were and which I used.
       # Cheers, earnie_boyd@yahoo.com
       # several changes based on running with tack and comparing with older entry -TD
      +# more changes from csw:
      +#   add    cbt   [backtab]
      +#   remove eo    [erase overstrike with blank]
      +#   change clear was \E[H\E[J  now \E[2J  (faster?)
      +#   remove cols
      +#   remove lines
      +#   remove ncv#3 [colors collide with highlights, bitmask] not applicable
      +#                to MSDOS box?
      +#   add    cub   [cursor back param] 
      +#   add    cuf   [cursor forward param]
      +#   add    cuu   [cursor up param]
      +#   add    cud   [cursor down param]
      +#   add    hs    [has status line]
      +#   add    fsl   [return from status line]
      +#   add    tsl   [go to status line]
      +#   add    smacs [Start alt charset] (not sure if this works)
      +#   add    rmacs [End alt charset]   (ditto)
      +#   add    smcup [enter_ca_mode] (save console; thanks Corinna)
      +#   add    rmcup [exit_ca_mode]  (restore console; thanks Corinna)
      +#   add    kb2   [center of keypad]
      +#   add    u8    [user string 8] \E[?6c
      +#   add    el    [clear to end of line] \E[K
      +# Notes:
      +#   cnorm [make cursor normal] not implemented
      +#   flash [flash] not implemented
      +#   blink [blink] not implemented very usefully in cygwin? \E[5m
      +#   dim   [dim] not implemented very usefully in cygwin? \E[2m
      +#   cub1  [cursor back 1] typically \E[D, but ^H is faster?
      +#   kNXT  [shifted next key] not implemented
      +#   kPRV  [shifted prev key] not implemented
      +#   khome [home key] really is \E[1~ NOT \E[H
      +#   tbc   [clear tab stops] not implemented
      +#   xenl  [newline ignnored after 80 cols] messes up last line? Ehud Karni
      +#   smpch [Start PC charset] is \E[11m, same as smacs
      +#   rmpch [End PC charset] is \E[10m, same as rmacs
      +#   mir   [move in insert mode] fails in tack?
      +#   bce   [back color erase] causes problems with change background color?
      +#   cvvis [make cursor very visible] causes a stackdump when testing with
      +#         testcurs using the output option? \E[?25h\E[?8c
      +#   civis [make cursor invisible] causes everything to stackdump? \E[?25l\E[?1c
      +#   ech   [erase characters param] broken \E[%p1%dX
      +#   kcbt  [back-tab key] not implemented in cygwin?  \E[Z
       cygwin|ansi emulation for Cygwin, 
      -	am, eo, in, msgr, xon, 
      -	colors#8, cols#80, it#8, lines#25, ncv#3, pairs#64, 
      +	am, hs, in, msgr, xon, 
      +	colors#8, it#8, pairs#64, 
       	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376, 
      -	bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M, cub1=^H, 
      -	cud1=\E[B, 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, el1=\E[1K, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, 
      -	hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, 
      -	ind=^J, invis=\E[8m, kbs=^H, kcub1=\E[D, kcud1=\E[B, 
      -	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, 
      +	bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, cr=^M, 
      +	cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, 
      +	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
      +	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, 
      +	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, fsl=^G, 
      +	home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, 
      +	ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, 
      +	kb2=\E[G, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, 
      +	kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, 
       	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, 
       	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, 
       	kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, 
       	kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, 
       	kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~, 
       	knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=^M^J, op=\E[39;49m, 
      -	rc=\E8, rev=\E[7m, ri=\EM, rmir=\E[4l, rmpch=\E[10m, 
      +	rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E[10m, 
      +	rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmpch=\E[10m, 
       	rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]R, sc=\E7, 
       	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, 
       	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, 
      -	sgr0=\E[0;10m, smir=\E[4h, smpch=\E[11m, smso=\E[7m, 
      -	smul=\E[4m, u6=\E[%i%d;%dR, u7=\E[6n, u9=\E[c, 
      +	sgr0=\E[0;10m, smacs=\E11m, smcup=\E7\E[?47h, smir=\E[4h, 
      +	smpch=\E[11m, smso=\E[7m, smul=\E[4m, tsl=\E];, 
      +	u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?6c, u9=\E[c, 
       	vpa=\E[%i%p1%dd, 
       
      +# I've supplied this so that you can help test new values and add other
      +# features.  Cheers, earnie_boyd@yahoo.com.
      +#
      +# Some features are from pcansi.  The op value is from linux.  Function-keys
      +# are from linux.  These have been tested not to cause problems.  xenl was in
      +# this list, but DOES cause problems so it has been removed
      +cygwinDBG|Debug Version for Cygwin, 
      +	am, eo, mir, msgr, xon, 
      +	colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64, 
      +	acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376, 
      +	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, 
      +	cnorm=\E[?25h, cr=^M, cub=\E[%p1%dD, cub1=\E[D, 
      +	cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, 
      +	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
      +	dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, 
      +	dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, 
      +	flash=\E[?5h\E[?5l$<200/>, home=\E[H, hpa=\E[%i%p1%dG, 
      +	ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, 
      +	il1=\E[L, ind=^J, invis=\E[8m, kNXT=\E[6$, kPRV=\E[5$, 
      +	kb2=\E[G, kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, 
      +	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, 
      +	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, 
      +	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, 
      +	kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, 
      +	kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, 
      +	kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~, 
      +	knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=^M^J, op=\E[39;49m, 
      +	rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E[10m, rmir=\E[4l, 
      +	rmso=\E[m, rmul=\E[m, rs1=\Ec\E]R, sc=\E7, 
      +	setab=\E[4%p1%dm, setaf=\E[3%p1%dm, 
      +	sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m, 
      +	sgr0=\E[0;10m, smacs=\E[11m, smir=\E[4h, smso=\E[7m, 
      +	smul=\E[4m, tbc=\E[2g, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?6c, 
      +	u9=\E[c, vpa=\E[%i%p1%dd, 
      +
       # This entry fits the Windows NT console when the _POSIX_TERM environment
       # variable is set to 'on'.  While the Windows NT POSIX console is seldom used,
       # the Telnet client supplied with both the Windows for WorkGroup 3.11 TCP/IP
      @@ -6939,9 +7161,8 @@
       	ich=\E[%p1%d@$<1*>, il=\E[%p1%dL$<2*>, il1=\E[L$<2>, 
       	ind=\n$<2>, ip=$<1>, 
       	is1=\E[2;4;20;30l\E[?1;10l\E[12h\E[?7;8;25h, 
      -	is2=\E>\E(B\E)0\017, is3=\E[m, ka1=\EOw, ka3=\EOy, 
      -	kb2=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D, kcud1=\E[B, 
      -	kcuf1=\E[C, kcuu1=\E[A, kdl1=\E[M, kel=\E[K, kent=\EOM, 
      +	is2=\E>\E(B\E)0\017, is3=\E[m, kbs=^H, kcub1=\E[D, 
      +	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdl1=\E[M, kel=\E[K, 
       	kf1=\E[?5i, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, 
       	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, 
       	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[?3i, 
      @@ -6956,7 +7177,7 @@
       	sgr=%?%p5%t\E[0t%;%?%p3%p1%|%t\E[1t%;%?%p2%t\E[2t%;%?%p4%t\E[3t%;%?%p1%p2%p3%p4%p5%|%|%|%|%t\E[7m%e\E[m%;%?%p9%t\016%e\017%;, 
       	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h, 
       	smkx=\E[?1l\E[?7h\E=, smso=\E[1t\E[7m, smul=\E[2t\E[4m, 
      -	tbc=\E[3g, tsl=\E[>\,\001, 
      +	tbc=\E[3g, tsl=\E[>\,\001, use=vt220+keypad, 
       #
       #	This terminal description uses the non-hidden attribute mode
       #	(with magic cookie).
      @@ -7008,23 +7229,22 @@
       	ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>, il1=\E[L$<5>, 
       	ind=\n$<3>, invis=\E[8m, ip=$<3>, is1=\E[62;1"p\E[?5W, 
       	is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h$<16>, 
      -	is3=\E>\E(B\E)0\017\E[m, ka1=\EOw, ka3=\EOy, kb2=\EOu, 
      -	kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D, kcud1=\E[B, 
      -	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kent=\EOM, kf1=\EOP, 
      -	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, 
      -	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, 
      -	kf18=\E[32~, kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR, 
      -	kf4=\EOS, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
      -	kfnd=\E[1~, khlp=\E[28~, khome=\E[26~, kich1=\E[2~, 
      -	knp=\E[6~, kpp=\E[5~, kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, 
      -	lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, 
      -	ri=\EM$<3>, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, 
      -	rmso=\E[m, rmul=\E[m, rs1=\E[13l\E[3l\E!p, 
      -	rs2=\E[35h\E[?3l$<70>, rs3=\E[?5l, sc=\E7, 
      +	is3=\E>\E(B\E)0\017\E[m, kbs=^H, kcub1=\E[D, kcud1=\E[B, 
      +	kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kf10=\E[21~, 
      +	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, 
      +	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, 
      +	kf19=\E[33~, kf20=\E[34~, kf6=\E[17~, kf7=\E[18~, 
      +	kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~, 
      +	khome=\E[26~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, 
      +	kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, 
      +	mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM$<3>, 
      +	rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[m, 
      +	rmul=\E[m, rs1=\E[13l\E[3l\E!p, rs2=\E[35h\E[?3l$<70>, 
      +	rs3=\E[?5l, sc=\E7, 
       	sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, 
       	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h, 
       	smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, 
      -	tsl=\E[40h\E7\E[25;%i%p1%dH, 
      +	tsl=\E[40h\E7\E[25;%i%p1%dH, use=vt220+keypad, 
       #
       #	Wyse 85 with visual bell.
       wy85-vb|wyse85-vb|wyse 85 with visible bell, 
      @@ -7113,25 +7333,24 @@
       	ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>, il1=\E[L$<3>, 
       	ind=\n$<2>, invis=\E[8m, ip=$<4>, is1=\E[?5W, 
       	is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h, 
      -	is3=\E>\E(B\E)0\017\E[m, ka1=\EOw, ka3=\EOy, kb2=\EOu, 
      -	kbs=^H, kc1=\EOq, kc3=\EOs, kcbt=\E[Z, kcub1=\E[D, 
      -	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kent=\EOM, 
      -	kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, 
      -	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, 
      -	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ, 
      -	kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~, kf7=\E[18~, 
      -	kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~, 
      -	khome=\E[26~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, 
      -	kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, 
      -	mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM$<2>, 
      -	rmacs=^O, rmam=\E[?7l, rmcup=\E[ R, rmir=\E[4l, rmkx=\E>, 
      -	rmso=\E[27m, rmul=\E[24m, 
      +	is3=\E>\E(B\E)0\017\E[m, kbs=^H, kcbt=\E[Z, kcub1=\E[D, 
      +	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kf1=\EOP, 
      +	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, 
      +	kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, 
      +	kf18=\E[32~, kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR, 
      +	kf4=\EOS, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
      +	kfnd=\E[1~, khlp=\E[28~, khome=\E[26~, kich1=\E[2~, 
      +	knp=\E[6~, kpp=\E[5~, kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, 
      +	lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, 
      +	ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, rmcup=\E[ R, rmir=\E[4l, 
      +	rmkx=\E>, rmso=\E[27m, rmul=\E[24m, 
       	rs1=\E[13l\E[3l\E\\\E[63;1"p\E[!p, rs2=\E[35h\E[?3l, 
       	rs3=\E[?5l\E[47h\E[40l\E[r, sc=\E7, 
       	sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, 
       	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E[ Q, 
       	smir=\E[4h, smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, 
       	tbc=\E[3g, tsl=\E7\E[99;%i%p1%dH, vpa=\E[%i%p1%dd, 
      +	use=vt220+keypad, 
       #
       #	Wyse 185 with 24 data lines and top status (terminal status)
       wy185-24|wyse185-24|wyse 185 with 24 data lines, 
      @@ -7322,16 +7541,14 @@
       #	Function key set for the VT-320 (and wy85) compatible keyboard
       #
       wy370-105k|Wyse 370 with 105 key keyboard, 
      -	ka1=\EOw, ka3=\EOy, kb2=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs, 
      -	kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
      -	kdch1=\E[3~, kent=\EOM, kf1=\EOP, kf10=\E[21~, kf11=\E[23~, 
      -	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, 
      -	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, 
      -	kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~, 
      -	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, 
      +	kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
      +	kdch1=\E[3~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, 
      +	kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, 
      +	kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, 
      +	kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, 
       	khlp=\E[28~, khome=\E[26~, kich1=\E[2~, knp=\E[6~, 
       	kpp=\E[5~, kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, 
      -	use=wy370-nk, 
      +	use=wy370-nk, use=vt220+keypad, 
       #
       #	Function key set for the PC compatible keyboard
       #
      @@ -7435,26 +7652,24 @@
       	hts=\EH, ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>, 
       	il1=\E[L$<3>, ind=\n$<2>, invis=\E[8m, ip=$<4>, is1=\E[?5W, 
       	is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25;67h, 
      -	is3=\E>\E(B\E)0\017\E[m, ka1=\EOw, ka3=\EOu, kb2=\EOy, 
      -	kbs=^H, kc1=\EOq, kc3=\EOs, kcbt=\E[Z, kcub1=\E[D, 
      +	is3=\E>\E(B\E)0\017\E[m, kbs=^H, kcbt=\E[Z, kcub1=\E[D, 
       	kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, ked=\E[1~, 
      -	kel=\E[4~, kent=\EOM, kf1=\EOP, kf10=\E[21~, kf11=\E[23~, 
      +	kel=\E[4~, kent=\EOM, kf10=\E[21~, kf11=\E[23~, 
       	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, 
       	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, 
      -	kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~, 
      -	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, 
      -	khlp=\E[28~, khome=\E[26~, kich1=\E[2~, knp=\E[6~, 
      -	kpp=\E[5~, kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, 
      -	mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, 
      -	ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, rmcup=\E[ R, rmir=\E[4l, 
      -	rmso=\E[m, rmul=\E[24m, 
      +	kf20=\E[34~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, 
      +	kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~, khome=\E[26~, 
      +	kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kslt=\E[4~, lf1=PF1, 
      +	lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, 
      +	rc=\E8, rev=\E[7m, ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, 
      +	rmcup=\E[ R, rmir=\E[4l, rmso=\E[m, rmul=\E[24m, 
       	rs1=\E[13l\E[3l\E\\\E[63;1"p\E[!p, rs2=\E[35h\E[?3l, 
       	rs3=\E[?5l\E[47h\E[40l\E[r, sc=\E7, 
       	sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, 
       	sgr0=\E[m\017, smacs=^N, smam=\E[?7h, 
       	smcup=\E[ Q\E[?67;8h, smir=\E[4h, smso=\E[7m, smul=\E[4m, 
       	tbc=\E[3g, tsl=\E[2$~\E[1$}\E[%i%p1%d`, 
      -	vpa=\E[%i%p1%dd, 
      +	vpa=\E[%i%p1%dd, use=vt220+keypad, 
       #
       #       Wyse 520 with 24 data lines and status (terminal status)
       wy520-24|wyse520-24|wyse 520 with 24 data lines, 
      @@ -7976,17 +8191,15 @@
       	cup=\E[%i%p1%d;%p2%dH$<5>, cuu1=\E[A$<2>, dch1=\E[P, 
       	dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>, 
       	enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ich1=\E[@, 
      -	il1=\E[L, ind=^J, ka1=\EOq, ka3=\EOs, kb2=\EOr, kbs=^H, 
      -	kc1=\EOp, kc3=\EOn, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, 
      -	kcuu1=\EOA, kent=\EOM, kf0=\EOy, kf1=\EOP, kf10=\EOx, 
      -	kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOt, kf6=\EOu, kf7=\EOv, 
      -	kf8=\EOl, kf9=\EOw, rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>, 
      -	rmacs=^O, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m$<2>, 
      +	il1=\E[L, ind=^J, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, 
      +	kcuu1=\EOA, rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, 
      +	rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m$<2>, 
       	rmul=\E[m$<2>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, 
       	sc=\E7, 
       	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>, 
       	sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, 
       	smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g, 
      +	use=vt100+fnkeys, 
       
       # 
       # Teletype Model 5420 -- A souped up 5410, with multiple windows,
      @@ -11380,16 +11593,14 @@
       	cuu1=\E[A$<2>, dch1=\E~W, dl1=\E~R, ed=\E[J$<50>, 
       	el=\E[K$<3>, el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, 
       	ht=^I, hts=\EH, ich1=\E~Q, il1=\E~E, ind=^J, is1=\E~)\E~ea, 
      -	ka1=\EOq, ka3=\EOs, kb2=\EOr, kbs=^H, kc1=\EOp, kc3=\EOn, 
      -	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kent=\EOM, 
      -	kf0=\EOy, kf1=\EOP, kf10=\EOx, kf2=\EOQ, kf3=\EOR, kf4=\EOS, 
      -	kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw, rc=\E8, 
      -	rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l, 
      +	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
      +	rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l, 
       	rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>, 
       	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, 
       	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>, 
       	sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, 
       	smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g, 
      +	use=vt100+fnkeys, 
       ts100-ctxt|falco ts-100 saving context, 
       	rmcup=\E~_b, smcup=\E~_d\E[2J, use=ts100, 
       
      @@ -13192,19 +13403,17 @@
       	il1=\E[L$<5>, ind=\ED$<5>, indn=\E[%p1%dE$<5>, 
       	invis=\E[8m, 
       	is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
      -	ka1=\EOw, ka3=\EOu, kb2=\EOy, kbs=^H, kc1=\EOq, kc3=\EOs, 
      -	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
      -	kdch1=\E[3~, kent=\EOM, kf1=\EOP, kf2=\EOQ, kf3=\EOR, 
      -	kf4=\EOS, kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~, knp=\E[6~, 
      -	kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, nel=\EE$<5>, rc=\E8, 
      -	rev=\E[7m, ri=\EM$<5>, rmacs=^O, rmir=\E[4l, 
      +	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
      +	kdch1=\E[3~, kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~, 
      +	knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, nel=\EE$<5>, 
      +	rc=\E8, rev=\E[7m, ri=\EM$<5>, rmacs=^O, rmir=\E[4l, 
       	rmkx=\E[?1l\E>, rmso=\E[0m, rmul=\E[0m, 
       	rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
       	sc=\E7, 
       	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>, 
       	sgr0=\E[0m\017$<20>, smacs=^N, smir=\E[4h, 
       	smkx=\E[?1h\E=, smso=\E[1;7m, smul=\E[4m, tbc=\E[3g, 
      -	tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, 
      +	tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, use=vt220+keypad, 
       ncr260vt100wan|NCR 2900_260 vt100 wide mode ansi kybd, 
       	cols#132, 
       	cup=\E[%i%p1%d;%p2%dH$<30>, 
      @@ -13242,15 +13451,14 @@
       	ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>, 
       	ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m, 
       	is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
      -	ka1=\EOw, ka3=\EOu, kb2=\EOy, kbs=^H, kc1=\EOq, kc3=\EOs, 
      -	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
      -	kdch1=\E[3~, kent=\EOM, kf0=\EOy, kf1=\EOP, kf10=\E[21~, 
      -	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, 
      -	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, 
      -	kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf21=\E[31~, 
      -	kf22=\E[32~, kf23=\E[33~, kf24=\E[34~, kf25=\E[35~, 
      -	kf26=\E[1~, kf27=\E[2~, kf28=\E[3~, kf29=\E[4~, kf3=\EOR, 
      -	kf30=\E[5~, kf31=\E[6~, kf32=\E[7~, kf33=\E[8~, kf34=\E[9~, 
      +	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
      +	kdch1=\E[3~, kf0=\EOy, kf10=\E[21~, kf11=\E[23~, 
      +	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, 
      +	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, 
      +	kf2=\EOQ, kf20=\E[34~, kf21=\E[31~, kf22=\E[32~, 
      +	kf23=\E[33~, kf24=\E[34~, kf25=\E[35~, kf26=\E[1~, 
      +	kf27=\E[2~, kf28=\E[3~, kf29=\E[4~, kf3=\EOR, kf30=\E[5~, 
      +	kf31=\E[6~, kf32=\E[7~, kf33=\E[8~, kf34=\E[9~, 
       	kf35=\E[10~, kf4=\EOS, kf5=\E[M, kf6=\E[17~, kf7=\E[18~, 
       	kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~, 
       	kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, 
      @@ -13263,6 +13471,7 @@
       	sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h, 
       	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, 
       	tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, 
      +	use=vt220+keypad, 
       ncr260vt200wan|NCR 2900_260 vt200 wide mode ansi kybd, 
       	cols#132, 
       	cup=\E[%i%p1%d;%p2%dH$<30>, 
      @@ -13298,27 +13507,27 @@
       	ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>, 
       	ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m, 
       	is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
      -	ka1=\EOw, ka3=\EOu, kb2=\EOy, kbs=^H, kc1=\EOq, kc3=\EOs, 
      -	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
      -	kdch1=\E[3~, kent=\EOM, kf0=\EOy, kf1=\EOP, kf10=\E[21~, 
      -	kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, 
      -	kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, 
      -	kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf21=\E[31~, 
      -	kf22=\E[32~, kf23=\E[33~, kf24=\E[34~, kf25=\E[35~, 
      -	kf26=\E[1~, kf27=\E[2~, kf28=\E[3~, kf29=\E[4~, kf3=\EOR, 
      -	kf30=\E[5~, kf31=\E[6~, kf32=\E[7~, kf33=\E[8~, kf34=\E[9~, 
      -	kf35=\E[10~, kf4=\EOS, kf5=\E[M, kf6=\E[17~, kf7=\E[18~, 
      -	kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~, 
      -	kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, 
      -	mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m, 
      -	ri=\EM$<5>, rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l, 
      -	rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, 
      +	kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
      +	kdch1=\E[3~, kf0=\EOy, kf10=\E[21~, kf11=\E[23~, 
      +	kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, 
      +	kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, 
      +	kf20=\E[34~, kf21=\E[31~, kf22=\E[32~, kf23=\E[33~, 
      +	kf24=\E[34~, kf25=\E[35~, kf26=\E[1~, kf27=\E[2~, 
      +	kf28=\E[3~, kf29=\E[4~, kf30=\E[5~, kf31=\E[6~, kf32=\E[7~, 
      +	kf33=\E[8~, kf34=\E[9~, kf35=\E[10~, kf5=\E[M, kf6=\E[17~, 
      +	kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, 
      +	khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, 
      +	krdo=\E[29~, kslt=\E[4~, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, 
      +	nel=\EE, rc=\E8, rev=\E[7m, ri=\EM$<5>, rmacs=\017$<20>, 
      +	rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, 
      +	rmul=\E[24m, 
       	rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
       	sc=\E7, 
       	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>, 
       	sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h, 
       	smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, 
       	tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, 
      +	use=vt220+keypad, 
       ncr260vt300wan|NCR 2900_260 vt300 wide mode ansi kybd, 
       	cols#132, 
       	cup=\E[%i%p1%d;%p2%dH$<30>, 
      @@ -13406,7 +13615,7 @@
       #
       ncr260wy350pp|NCR 2900_260 wyse 350, 
       	am, bw, hs, km, mc5i, mir, msgr, xon, 
      -	colors#16, cols#80, lines#24, ncv#33, nlab#32, xmc#1, 
      +	colors#16, cols#80, lines#24, ncv#33, nlab#32, pairs#16, xmc#1, 
       	acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2, 
       	cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M, 
       	cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, 
      @@ -14005,17 +14214,15 @@
       	cuf=\E[%p1%dC, cuf1=\E[C$<2>, 
       	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, 
       	cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>, 
      -	enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, ka1=\EOq, 
      -	ka3=\EOs, kb2=\EOr, kbs=^H, kc1=\EOp, kc3=\EOn, kcub1=\EOD, 
      -	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kent=\EOM, kf0=\EOy, 
      -	kf1=\EOP, kf10=\EOx, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOt, 
      -	kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw, rc=\E8, 
      +	enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=^H, 
      +	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8, 
       	rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l, 
       	rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>, 
       	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, 
       	sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>, 
       	sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, 
       	smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g, 
      +	use=vt100+fnkeys, 
       
       # Tektronix 4105 from BRL
       # The following setup modes are assumed for normal operation:
      @@ -14831,15 +15038,14 @@
       	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
       	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, 
       	home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, 
      -	ka1=\EOq, ka3=\EOs, kb2=\EOr, kbs=\177, kc1=\EOp, kc3=\EOn, 
      -	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kent=\EOM, 
      -	kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m, 
      -	ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, 
      +	kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
      +	kent=\EOM, rc=\E8, rev=\E[7m, ri=\EM, rmam=\E[?7l, 
      +	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, 
       	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, 
       	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m, 
       	sgr0=\E[m\017, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m, 
       	smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, 
      -	u8=\E[?1;2c, u9=\E[c, 
      +	u8=\E[?1;2c, u9=\E[c, use=vt100+pfkeys, 
       
       nsterm+acs|AppKit Terminal.app v41+ basic capabilities w/VT100 alternate-charset, 
       	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
      @@ -15026,14 +15232,14 @@
       	cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, 
       	cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
       	cuu=\E[%p1%dA, cuu1=\E[A, dsl=\E]2;\007, ed=\E[J, el=\E[K, 
      -	el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=^J, ka1=\EOq, 
      -	ka3=\EOs, kb2=\EOr, kbs=\177, kc1=\EOp, kc3=\EOn, kcub1=\EOD, 
      -	kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8, rev=\E[7m, 
      -	ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, 
      -	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, 
      +	el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=\177, 
      +	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8, 
      +	rev=\E[7m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, 
      +	rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, 
      +	sc=\E7, 
       	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m, 
       	sgr0=\E[m\017, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m, 
      -	smul=\E[4m, tbc=\E[3g, 
      +	smul=\E[4m, tbc=\E[3g, use=vt100+keypad, 
       
       xnuppc+c|Darwin PowerPC Console ANSI color support, 
       	colors#8, ncv#32, pairs#64, 
      @@ -17642,7 +17848,7 @@
       # respectively, to be able to restore them when color changes
       # (because any color change turns off ALL attributes)
       # 3.  and  sequences alternate modes,
      -# rather then simply  entering them.  Thus we have to check the
      +# rather than simply  entering them.  Thus we have to check the
       # static register B and H to determine the status, before sending the 
       # escape sequence.
       # 4.  now must set the status of all 3 register (A,B,H) to zero
      @@ -17744,15 +17950,12 @@
       	cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, 
       	cuu1=\E[A$<2>, dl1=\E[M$<99>, ed=\E[J$<50>, el=\E[K$<3>, 
       	el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, 
      -	il1=\E[L$<99>, ind=^J, ka1=\EOq, ka3=\EOs, kb2=\EOr, kbs=^H, 
      -	kc1=\EOp, kc3=\EOn, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, 
      -	kcuu1=\EOA, kent=\EOM, kf0=\EOy, kf1=\EOP, kf10=\EOx, 
      -	kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOt, kf6=\EOu, kf7=\EOv, 
      -	kf8=\EOl, kf9=\EOw, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l, 
      +	il1=\E[L$<99>, ind=^J, kbs=^H, kcub1=\EOD, kcud1=\EOB, 
      +	kcuf1=\EOC, kcuu1=\EOA, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l, 
       	rmkx=\E[?1l\E>, rmso=\E[m\s, 
       	rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m, 
       	smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m\s, 
      -	tbc=\E[3g, 
      +	tbc=\E[3g, use=vt100+fnkeys, 
       
       # The official PC terminal emulator program of the AT&T Product Centers.
       # Note - insert mode commented out - doesn't seem to work on AT&T PC.
      @@ -18325,12 +18528,12 @@
       # (T) ECMA-48 calls this "Partial Line Forward" but retains the PLD
       # abbreviation.
       #
      -# (U) ECMA-48 calls this "Partial Line Backward" but retains the PLD
      +# (U) ECMA-48 calls this "Partial Line Backward" but retains the PLU
       # abbreviation.
       #
       # (V) ECMA-48 calls this "Reverse Line Feed" but retains the RI abbreviation.
       #
      -# (W) RM/SM modes are as follows: 1 = Guarder Area Transfer Mode (GATM), 
      +# (W) RM/SM modes are as follows: 1 = Guarded Area Transfer Mode (GATM), 
       # 2 = Keyboard Action Mode (KAM), 3 = Control Representation Mode (CRM), 
       # 4 = Insertion Replacement Mode, 5 = Status Report Transfer Mode (SRTM),
       # 6 = Erasure Mode (ERM), 7 = Line Editing Mode (LEM), 8 = Bi-Directional
      @@ -19536,9 +19739,46 @@
       #	* scaled the linux-c terminfo entry to match linux-c-nc, i.e., the
       #	  r/g/b parameters of initc are in the range 0 to 1000 -TD
       #
      -# 2002-1005
      +# 2002-10-05
       #	* minor fix for scale-factor of linux-c and linux-c-nc -TD
       #
      +# 2002-11-09
      +#	* split-out vt100+keypad and vt220+keypad, fix interchanged ka3/kb2
      +#	  in the latter -TD
      +#
      +# 2002-11-16
      +#	* add entries for mterm (mterm, mterm-ansi, decansi) -TD
      +#	* ncr260wy350pp has only 16 color pairs -TD
      +#	* add sun-type4 from NetBSD -TD
      +#	* update xterm-xfree86 to current (patch 170) -TD
      +#	* add screen-bce, screen-s entries -TD
      +#	* add xterm-1002, xterm-1003 entries -TD
      +#
      +# 2003-01-11
      +#	* update homepage for Top Gun Telnet/SSH
      +#
      +# 2003-01-25
      +#	* reduce duplication in emx entries, added emx-base -TD
      +#
      +# 2003-05-24
      +#	* corrected acs for screen.teraterm -TD
      +#	* add tkterm entry -TD
      +#
      +# 2003-07-15
      +#	* cygwin changes from Charles Wilson:
      +#	  misc/terminfo.src (nxterm|xterm-color): make xterm-color
      +#	  primary instead of nxterm, to match XFree86's xterm.terminfo
      +#	  usage and to prevent circular links.
      +#	  (rxvt): add additional codes from rxvt.org.
      +#	  (rxvt-color): new alias
      +#	  (rxvt-xpm): new alias
      +#	  (rxvt-cygwin): like rxvt, but with special acsc codes.
      +#	  (rxvt-cygwin-native): ditto.  rxvt may be run under XWindows, or
      +#	  with a "native" MSWin GUI.  Each takes different acsc codes,
      +#	  which are both different from the "normal" rxvt's acsc.
      +#	  (cygwin): cygwin-in-cmd.exe window.  Lots of fixes.
      +#	  (cygwinDBG): ditto.
      +#
       # The following sets edit modes for GNU EMACS.
       # Local Variables:
       # fill-prefix:"\t"
      diff -urNd -urNd ncurses-5.3/mk-1st.awk ncurses-5.3.20030906.orig/mk-1st.awk
      --- ncurses-5.3/mk-1st.awk	Sat Apr 20 12:32:47 2002
      +++ ncurses-5.3.20030906.orig/mk-1st.awk	Fri Sep 12 16:42:40 2003
      @@ -1,4 +1,4 @@
      -# $Id: mk-1st.awk,v 1.55 2002/04/20 17:32:47 tom Exp $
      +# $Id: mk-1st.awk,v 1.60 2003/08/30 20:48:52 tom Exp $
       ##############################################################################
       # Copyright (c) 1998,2000,2002 Free Software Foundation, Inc.                #
       #                                                                            #
      @@ -27,7 +27,7 @@
       # authorization.                                                             #
       ##############################################################################
       #
      -# Author: Thomas E. Dickey  1996,1997,2000
      +# Author: Thomas E. Dickey 1996,1997,2000,2002
       #
       # Generate list of objects for a given model library
       # Variables:
      @@ -38,7 +38,7 @@
       #	MODEL (e.g., "DEBUG", uppercase; toupper is not portable)
       #	depend (optional dependencies for all objects, e.g, ncurses_cfg.h)
       #	subset ("none", "base", "base+ext_funcs" or "termlib")
      -#	target (cross-compile target, if any)
      +#	host (cross-compile host, if any)
       #	ShlibVer ("rel", "abi" or "auto", to augment DoLinks variable)
       #	ShlibVerInfix ("yes" or "no", determines location of version #)
       #	DoLinks ("yes", "reverse" or "no", flag to add symbolic links)
      @@ -110,7 +110,7 @@
       			if (using == 0) {
       				if (found == 0) {
       					print  ""
      -					print  "# generated by mk-1st.awk"
      +					printf "# generated by mk-1st.awk (subset=%s)\n", subset
       					print  ""
       				}
       				using = 1
      @@ -162,8 +162,8 @@
       			if ( MODEL == "SHARED" )
       			{
       				if (ShlibVerInfix == "cygdll") {
      -					abi_name = sprintf("%s%s$(ABI_VERSION)%s", prefix, name, suffix);
      -					rel_name = sprintf("%s%s$(REL_VERSION)%s", prefix, name, suffix);
      +					abi_name = sprintf("%s%s$(ABI_VERSION)%s", "cyg", name, suffix);
      +					rel_name = sprintf("%s%s$(REL_VERSION)%s", "cyg", name, suffix);
       					imp_name = sprintf("%s%s%s.a", prefix, name, suffix);
       				} else if (ShlibVerInfix == "yes") {
       					abi_name = sprintf("%s%s.$(ABI_VERSION)%s", prefix, name, suffix);
      @@ -194,7 +194,7 @@
       					print "\t-@rm -f $@";
       				}
       				if ( subset == "termlib") {
      -					printf "\t$(MK_SHARED_LIB) $(%s_OBJS) $(TINFO_LIST)\n", OBJS
      +					printf "\t$(MK_SHARED_LIB) $(%s_OBJS) $(TINFO_LIST) $(LDFLAGS)\n", OBJS
       				} else {
       					printf "\t$(MK_SHARED_LIB) $(%s_OBJS) $(SHLIB_LIST) $(LDFLAGS)\n", OBJS
       				}
      @@ -233,9 +233,15 @@
       
       				if ( overwrite == "yes" && name == "ncurses" )
       				{
      -					ovr_name = sprintf("libcurses%s", suffix)
      -					printf "\t@echo linking %s to %s\n", end_name, ovr_name
      -					printf "\tcd $(DESTDIR)$(libdir) && (rm -f %s; $(LN_S) %s %s; )\n", ovr_name, end_name, ovr_name
      +					if ( ShlibVer == "cygdll" ) {
      +						ovr_name = sprintf("libcurses%s.a", suffix)
      +						printf "\t@echo linking %s to %s\n", imp_name, ovr_name
      +						printf "\tcd $(DESTDIR)$(libdir) && (rm -f %s; $(LN_S) %s %s; )\n", ovr_name, imp_name, ovr_name
      +					} else {
      +						ovr_name = sprintf("libcurses%s", suffix)
      +						printf "\t@echo linking %s to %s\n", end_name, ovr_name
      +						printf "\tcd $(DESTDIR)$(libdir) && (rm -f %s; $(LN_S) %s %s; )\n", ovr_name, end_name, ovr_name
      +					}
       				}
       				if ( ldconfig != "" ) {
       					printf "\t- test -z \"$(DESTDIR)\" && %s\n", ldconfig
      @@ -257,7 +263,11 @@
       					removelinks("$(DESTDIR)$(libdir)")
       					if ( overwrite == "yes" && name == "ncurses" )
       					{
      -						ovr_name = sprintf("libcurses%s", suffix)
      +						if ( ShlibVer == "cygdll" ) {
      +							ovr_name = sprintf("libcurses%s.a", suffix)
      +						} else {
      +							ovr_name = sprintf("libcurses%s", suffix)
      +						}
       						printf "\t-@rm -f $(DESTDIR)$(libdir)/%s\n", ovr_name
       					}
       				}
      @@ -277,19 +287,19 @@
       				}
       				end_name = lib_name;
       				printf "../lib/%s : $(%s_OBJS)\n", lib_name, OBJS
      -				printf "\tcd ../lib && $(LIBTOOL) $(%s) -o %s $(%s_OBJS:.o=.lo) -rpath $(DESTDIR)$(libdir) -version-info $(NCURSES_MAJOR):$(NCURSES_MINOR)\n", compile, lib_name, OBJS
      +				printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) -o %s $(%s_OBJS:.o=.lo) -rpath $(DESTDIR)$(libdir) -version-info $(NCURSES_MAJOR):$(NCURSES_MINOR) $(SHLIB_LIST)\n", compile, lib_name, OBJS
       				print  ""
       				print  "install \\"
       				print  "install.libs \\"
       				printf "install.%s :: $(DESTDIR)$(libdir) ../lib/%s\n", name, lib_name
       				printf "\t@echo installing ../lib/%s as $(DESTDIR)$(libdir)/%s\n", lib_name, lib_name
      -				printf "\tcd ../lib; $(LIBTOOL) $(INSTALL_DATA) %s $(DESTDIR)$(libdir)\n", lib_name
      +				printf "\tcd ../lib; $(LIBTOOL_INSTALL) $(INSTALL) %s $(DESTDIR)$(libdir)\n", lib_name
       				print  ""
       				print  "uninstall \\"
       				print  "uninstall.libs \\"
       				printf "uninstall.%s ::\n", name
       				printf "\t@echo uninstalling $(DESTDIR)$(libdir)/%s\n", lib_name
      -				printf "\t-@$(LIBTOOL) rm -f $(DESTDIR)$(libdir)/%s\n", lib_name
      +				printf "\t-@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(libdir)/%s\n", lib_name
       			}
       			else
       			{
      @@ -297,7 +307,7 @@
       				printf "../lib/%s : $(%s_OBJS)\n", lib_name, OBJS
       				printf "\t$(AR) $(AR_OPTS) $@ $?\n"
       				printf "\t$(RANLIB) $@\n"
      -				if ( target == "vxworks" )
      +				if ( host == "vxworks" )
       				{
       					printf "\t$(LD) $(LD_OPTS) $? -o $(@:.a=.o)\n"
       				}
      @@ -314,7 +324,7 @@
       					printf "\t(cd $(DESTDIR)$(libdir) && $(LN_S) libncurses.a libcurses.a)\n"
       				}
       				printf "\t$(RANLIB) $(DESTDIR)$(libdir)/%s\n", lib_name
      -				if ( target == "vxworks" )
      +				if ( host == "vxworks" )
       				{
       					printf "\t@echo installing ../lib/lib%s.o as $(DESTDIR)$(libdir)/lib%s.o\n", name, name
       					printf "\t$(INSTALL_DATA) ../lib/lib%s.o $(DESTDIR)$(libdir)/lib%s.o\n", name, name
      @@ -330,7 +340,7 @@
       					printf "\t@echo linking libcurses.a to libncurses.a\n"
       					printf "\t-@rm -f $(DESTDIR)$(libdir)/libcurses.a\n"
       				}
      -				if ( target == "vxworks" )
      +				if ( host == "vxworks" )
       				{
       					printf "\t@echo uninstalling $(DESTDIR)$(libdir)/lib%s.o\n", name
       					printf "\t-@rm -f $(DESTDIR)$(libdir)/lib%s.o\n", name
      @@ -343,7 +353,7 @@
       			print "mostlyclean::"
       			printf "\t-rm -f $(%s_OBJS)\n", OBJS
       			if ( MODEL == "LIBTOOL" ) {
      -				printf "\t-rm -f $(%s_OBJS:.o=.lo)\n", OBJS
      +				printf "\t-$(LIBTOOL_CLEAN) rm -f $(%s_OBJS:.o=.lo)\n", OBJS
       			}
       		}
       		else if ( found == 2 )
      @@ -352,13 +362,13 @@
       			print "mostlyclean::"
       			printf "\t-rm -f $(%s_OBJS)\n", OBJS
       			if ( MODEL == "LIBTOOL" ) {
      -				printf "\t-rm -f $(%s_OBJS:.o=.lo)\n", OBJS
      +				printf "\t-$(LIBTOOL_CLEAN) rm -f $(%s_OBJS:.o=.lo)\n", OBJS
       			}
       			print ""
       			print "clean ::"
       			printf "\t-rm -f $(%s_OBJS)\n", OBJS
       			if ( MODEL == "LIBTOOL" ) {
      -				printf "\t-rm -f $(%s_OBJS:.o=.lo)\n", OBJS
      +				printf "\t-$(LIBTOOL_CLEAN) rm -f $(%s_OBJS:.o=.lo)\n", OBJS
       			}
       		}
       	}
      diff -urNd -urNd ncurses-5.3/mk-2nd.awk ncurses-5.3.20030906.orig/mk-2nd.awk
      --- ncurses-5.3/mk-2nd.awk	Sat Oct 14 12:57:02 2000
      +++ ncurses-5.3.20030906.orig/mk-2nd.awk	Fri Sep 12 16:42:40 2003
      @@ -1,6 +1,6 @@
      -# $Id: mk-2nd.awk,v 1.13 2000/10/14 17:57:02 Johnny.C.Lam Exp $
      +# $Id: mk-2nd.awk,v 1.14 2003/08/30 20:59:40 tom Exp $
       ##############################################################################
      -# Copyright (c) 1998 Free Software Foundation, Inc.                          #
      +# Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.                #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -100,9 +100,9 @@
       					dir = $3 "/"
       					sub("^\\$\\(srcdir\\)/","",dir);
       					sub("^\\./","",dir);
      -					printf "\t%scd ../%s; $(LIBTOOL) $(%s) $(CFLAGS_%s) -c ../%s/%s%s%s", atsign, model, compile, MODEL, name, dir, $1, suffix
      +					printf "\t%scd ../%s; $(LIBTOOL_COMPILE) $(%s) $(CFLAGS_%s) -c ../%s/%s%s%s", atsign, model, compile, MODEL, name, dir, $1, suffix
       				} else
      -					printf "\t%scd ../%s; $(LIBTOOL) $(%s) $(CFLAGS_%s) -c %s/%s%s", atsign, model, compile, MODEL, $3, $1, suffix
      +					printf "\t%scd ../%s; $(LIBTOOL_COMPILE) $(%s) $(CFLAGS_%s) -c %s/%s%s", atsign, model, compile, MODEL, $3, $1, suffix
       			} else {
       				printf "%s", $1
       				for (n = 2; n <= NF; n++) printf " %s", $n
      diff -urNd -urNd ncurses-5.3/ncurses/Makefile.in ncurses-5.3.20030906.orig/ncurses/Makefile.in
      --- ncurses-5.3/ncurses/Makefile.in	Sat Jun 29 17:36:25 2002
      +++ ncurses-5.3.20030906.orig/ncurses/Makefile.in	Fri Sep 12 16:42:40 2003
      @@ -1,6 +1,6 @@
      -# $Id: Makefile.in,v 1.84 2002/06/29 22:36:25 tom Exp $
      +# $Id: Makefile.in,v 1.89 2003/08/23 23:25:48 tom Exp $
       ##############################################################################
      -# Copyright (c) 1998,1999,2000,2001,2002 Free Software Foundation, Inc.      #
      +# Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.                #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -27,7 +27,7 @@
       # authorization.                                                             #
       ##############################################################################
       #
      -# Author: Thomas E. Dickey 1996-2001
      +# Author: Thomas E. Dickey 1996-2002
       #
       # Makefile for ncurses source code.
       #
      @@ -65,6 +65,11 @@
       datadir		= @datadir@
       
       LIBTOOL		= @LIBTOOL@
      +LIBTOOL_CLEAN	= @LIB_CLEAN@
      +LIBTOOL_COMPILE	= @LIB_COMPILE@
      +LIBTOOL_LINK	= @LIB_LINK@
      +LIBTOOL_INSTALL	= @LIB_INSTALL@
      +LIBTOOL_UNINSTALL = @LIB_UNINSTALL@
       
       INSTALL		= @INSTALL@
       INSTALL_LIB	= @INSTALL@ @INSTALL_LIB@
      @@ -86,10 +91,10 @@
       
       CCFLAGS		= $(CPPFLAGS) $(CFLAGS)
       
      -HOSTCC		= @BUILD_CC@
      -HOSTCCFLAGS	= -DHAVE_CONFIG_H -I../ncurses -I$(srcdir) @BUILD_CFLAGS@ @BUILD_CPPFLAGS@
      -HOSTLDFLAGS	= @BUILD_LDFLAGS@
      -HOSTLIBS	= @BUILD_LIBS@
      +BUILD_CC	= @BUILD_CC@
      +BUILD_CCFLAGS	= -DHAVE_CONFIG_H -I../ncurses -I$(srcdir) @BUILD_CPPFLAGS@ @BUILD_CFLAGS@
      +BUILD_LDFLAGS	= @BUILD_LDFLAGS@
      +BUILD_LIBS	= @BUILD_LIBS@
       
       CFLAGS_LIBTOOL	= $(CCFLAGS)
       CFLAGS_NORMAL	= $(CCFLAGS)
      @@ -113,7 +118,7 @@
       REL_VERSION	= @cf_cv_rel_version@
       ABI_VERSION	= @cf_cv_abi_version@
       
      -RANLIB		= @RANLIB@
      +RANLIB		= @LIB_PREP@
       
       IMPORT_LIB	= @IMPORT_LIB@
       SHARED_LIB	= @SHARED_LIB@
      @@ -189,12 +194,12 @@
       make_keys$x : \
       		$(tinfo)/make_keys.c \
       		names.c
      -	$(HOSTCC) -o $@ $(HOSTCCFLAGS) $(tinfo)/make_keys.c $(HOSTLDFLAGS) $(HOSTLIBS)
      +	$(BUILD_CC) -o $@ $(BUILD_CCFLAGS) $(tinfo)/make_keys.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
       
       make_hash$x : \
       		$(tinfo)/comp_hash.c \
       		../include/hashsize.h
      -	$(HOSTCC) -o $@ $(HOSTCCFLAGS) -DMAIN_PROGRAM $(tinfo)/comp_hash.c $(HOSTLDFLAGS) $(HOSTLIBS)
      +	$(BUILD_CC) -o $@ $(BUILD_CCFLAGS) -DMAIN_PROGRAM $(tinfo)/comp_hash.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
       
       expanded.c : $(serial)/MKexpanded.sh
       	sh $(serial)/MKexpanded.sh "$(CPP)" $(CPPFLAGS) > $@
      diff -urNd -urNd ncurses-5.3/ncurses/base/MKlib_gen.sh ncurses-5.3.20030906.orig/ncurses/base/MKlib_gen.sh
      --- ncurses-5.3/ncurses/base/MKlib_gen.sh	Sat Sep 28 10:02:11 2002
      +++ ncurses-5.3.20030906.orig/ncurses/base/MKlib_gen.sh	Tue May 13 20:08:22 2003
      @@ -2,10 +2,10 @@
       #
       # MKlib_gen.sh -- generate sources from curses.h macro definitions
       #
      -# ($Id: MKlib_gen.sh,v 1.20 2002/09/28 15:02:11 tom Exp $)
      +# ($Id: MKlib_gen.sh,v 1.22 2003/02/22 19:58:07 tom Exp $)
       #
       ##############################################################################
      -# Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.                #
      +# Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.                #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -82,19 +82,19 @@
       	cat >$ED1 <$ED1 <$ED3 <
       
      -MODULE_ID("$Id: define_key.c,v 1.6 2000/12/10 02:43:26 tom Exp $")
      +MODULE_ID("$Id: define_key.c,v 1.8 2003/05/17 23:28:05 tom Exp $")
       
       NCURSES_EXPORT(int)
      -define_key
      -(char *str, int keycode)
      +define_key(const char *str, int keycode)
       {
           int code = ERR;
       
      @@ -49,8 +48,12 @@
       		code = OK;
       	}
       	if (str != 0) {
      -	    (void) _nc_add_to_try(&(SP->_keytry), str, keycode);
      -	    code = OK;
      +	    if (key_defined(str) == 0) {
      +		(void) _nc_add_to_try(&(SP->_keytry), str, keycode);
      +		code = OK;
      +	    } else {
      +		code = ERR;
      +	    }
       	}
           } else {
       	while (_nc_remove_string(&(SP->_keytry), str))
      diff -urNd -urNd ncurses-5.3/ncurses/base/key_defined.c ncurses-5.3.20030906.orig/ncurses/base/key_defined.c
      --- ncurses-5.3/ncurses/base/key_defined.c	Wed Dec 31 18:00:00 1969
      +++ ncurses-5.3.20030906.orig/ncurses/base/key_defined.c	Sun Jul 20 14:02:08 2003
      @@ -0,0 +1,76 @@
      +/****************************************************************************
      + * Copyright (c) 2003 Free Software Foundation, Inc.                        *
      + *                                                                          *
      + * Permission is hereby granted, free of charge, to any person obtaining a  *
      + * copy of this software and associated documentation files (the            *
      + * "Software"), to deal in the Software without restriction, including      *
      + * without limitation the rights to use, copy, modify, merge, publish,      *
      + * distribute, distribute with modifications, sublicense, and/or sell       *
      + * copies of the Software, and to permit persons to whom the Software is    *
      + * furnished to do so, subject to the following conditions:                 *
      + *                                                                          *
      + * The above copyright notice and this permission notice shall be included  *
      + * in all copies or substantial portions of the Software.                   *
      + *                                                                          *
      + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
      + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
      + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
      + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
      + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
      + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
      + * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
      + *                                                                          *
      + * Except as contained in this notice, the name(s) of the above copyright   *
      + * holders shall not be used in advertising or otherwise to promote the     *
      + * sale, use or other dealings in this Software without prior written       *
      + * authorization.                                                           *
      + ****************************************************************************/
      +
      +/****************************************************************************
      + *  Author: Thomas E. Dickey, 2003                                          *
      + ****************************************************************************/
      +
      +#include 
      +
      +MODULE_ID("$Id: key_defined.c,v 1.3 2003/05/17 23:12:27 tom Exp $")
      +
      +static int
      +find_definition(struct tries *tree, const char *str)
      +{
      +    struct tries *ptr;
      +    int result = 0;
      +
      +    if (str != 0 && *str != '\0') {
      +	for (ptr = tree; ptr != 0; ptr = ptr->sibling) {
      +	    if (UChar(*str) == UChar(ptr->ch)) {
      +		if (str[1] == '\0' && ptr->child != 0) {
      +		    result = -1;
      +		} else if ((result = find_definition(ptr->child, str + 1)) == 0) {
      +		    result = ptr->value;
      +		} else if (str[1] == '\0') {
      +		    result = -1;
      +		}
      +	    }
      +	    if (result != 0)
      +		break;
      +	}
      +    }
      +    return (result);
      +}
      +
      +/*
      + * Returns the keycode associated with the given string.  If none is found,
      + * return 0.  If the string is only a prefix to other strings, return -1.
      + */
      +NCURSES_EXPORT(int)
      +key_defined(const char *str)
      +{
      +    int code = ERR;
      +
      +    T((T_CALLED("key_defined(%s)"), _nc_visbuf(str)));
      +    if (SP != 0 && str != 0) {
      +	code = find_definition(SP->_keytry, str);
      +    }
      +
      +    returnCode(code);
      +}
      diff -urNd -urNd ncurses-5.3/ncurses/base/keybound.c ncurses-5.3.20030906.orig/ncurses/base/keybound.c
      --- ncurses-5.3/ncurses/base/keybound.c	Sat Dec  9 20:43:26 2000
      +++ ncurses-5.3.20030906.orig/ncurses/base/keybound.c	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1999,2000 Free Software Foundation, Inc.                   *
      + * Copyright (c) 1999-2000,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -32,7 +32,7 @@
       
       #include 
       
      -MODULE_ID("$Id: keybound.c,v 1.3 2000/12/10 02:43:26 tom Exp $")
      +MODULE_ID("$Id: keybound.c,v 1.4 2003/03/08 19:39:31 tom Exp $")
       
       /*
        * Returns the count'th string definition which is associated with the
      @@ -42,5 +42,6 @@
       NCURSES_EXPORT(char *)
       keybound(int code, int count)
       {
      -    return _nc_expand_try(SP->_key_ok, code, &count, 0);
      +    T((T_CALLED("keybound(%d,%d)"), code, count));
      +    returnPtr(_nc_expand_try(SP->_keytry, code, &count, 0));
       }
      diff -urNd -urNd ncurses-5.3/ncurses/base/lib_addch.c ncurses-5.3.20030906.orig/ncurses/base/lib_addch.c
      --- ncurses-5.3/ncurses/base/lib_addch.c	Sat Sep 28 12:48:13 2002
      +++ ncurses-5.3.20030906.orig/ncurses/base/lib_addch.c	Fri Sep 12 16:42:10 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -36,7 +36,7 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: lib_addch.c,v 1.68 2002/09/28 17:48:13 tom Exp $")
      +MODULE_ID("$Id: lib_addch.c,v 1.77 2003/08/17 00:09:05 tom Exp $")
       
       /*
        * Ugly microtweaking alert.  Everything from here to end of module is
      @@ -68,7 +68,7 @@
       	AddAttr(ch, (a & COLOR_MASK(AttrOf(ch))));
           }
       
      -    TR(TRACE_VIRTPUT, ("bkg = %s, attrs = %s -> ch = %s",
      +    TR(TRACE_VIRTPUT, ("render_char bkg %s, attrs %s -> ch %s",
       		       _tracech_t2(1, CHREF(win->_nc_bkgd)),
       		       _traceattr(win->_attrs),
       		       _tracech_t2(3, CHREF(ch))));
      @@ -99,15 +99,21 @@
       #define CHECK_POSITION(win, x, y)	/* nothing */
       #endif
       
      -static inline int
      +static
      +#if !USE_WIDEC_SUPPORT		/* cannot be inline if it is recursive */
      +  inline
      +#endif
      +int
       waddch_literal(WINDOW *win, NCURSES_CH_T ch)
       {
           int x;
      +    int y;
           struct ldat *line;
       
           x = win->_curx;
      +    y = win->_cury;
       
      -    CHECK_POSITION(win, x, win->_cury);
      +    CHECK_POSITION(win, x, y);
       
           /*
            * If we're trying to add a character at the lower-right corner more
      @@ -122,20 +128,65 @@
       #endif
       
           ch = render_char(win, ch);
      -    TR(TRACE_VIRTPUT, ("win attr = %s", _traceattr(win->_attrs)));
       
      -    line = win->_line + win->_cury;
      +    line = win->_line + y;
       
           CHANGED_CELL(line, x);
       
           /*
      +     * Build up multibyte characters until we have a wide-character.
      +     */
      +    if_WIDEC({
      +	if (WINDOW_EXT(win, addch_used) == 0 && Charable(ch)) {
      +	    WINDOW_EXT(win, addch_used) = 0;
      +	} else {
      +	    char *buffer = WINDOW_EXT(win, addch_work);
      +	    int len;
      +	    mbstate_t state;
      +	    wchar_t result;
      +
      +	    if ((WINDOW_EXT(win, addch_used) != 0) &&
      +		(WINDOW_EXT(win, addch_x) != x ||
      +		 WINDOW_EXT(win, addch_y) != y)) {
      +		/* discard the incomplete multibyte character */
      +		WINDOW_EXT(win, addch_used) = 0;
      +	    }
      +	    WINDOW_EXT(win, addch_x) = x;
      +	    WINDOW_EXT(win, addch_y) = y;
      +
      +	    memset(&state, 0, sizeof(state));
      +	    buffer[WINDOW_EXT(win, addch_used)] = CharOf(ch);
      +	    WINDOW_EXT(win, addch_used) += 1;
      +	    buffer[WINDOW_EXT(win, addch_used)] = '\0';
      +	    if ((len = mbrtowc(&result,
      +			       buffer,
      +			       WINDOW_EXT(win, addch_used), &state)) > 0) {
      +		attr_t attrs = AttrOf(ch);
      +		SetChar(ch, result, attrs);
      +		WINDOW_EXT(win, addch_used) = 0;
      +	    } else {
      +		if (len == -1) {
      +		    /*
      +		     * An error occurred.  We could either discard everything,
      +		     * or assume that the error was in the previous input.
      +		     * Try the latter.
      +		     */
      +		    TR(TRACE_VIRTPUT, ("Alert! mbrtowc returns error"));
      +		    buffer[0] = CharOf(ch);
      +		    WINDOW_EXT(win, addch_used) = 1;
      +		}
      +		return OK;
      +	    }
      +	}
      +    });
      +
      +    /*
            * Handle non-spacing characters
            */
           if_WIDEC({
       	if (wcwidth(CharOf(ch)) == 0) {
       	    int i;
      -	    int y;
      -	    if ((x > 0 && ((y = win->_cury) >= 0))
      +	    if ((x > 0 && y >= 0)
       		|| ((y = win->_cury - 1) >= 0 &&
       		    (x = win->_maxx) > 0)) {
       		wchar_t *chars = (win->_line[y].text[x - 1].chars);
      @@ -154,8 +205,18 @@
            * Provide for multi-column characters
            */
           if_WIDEC({
      -	if (wcwidth(CharOf(ch)) > 1)
      +	int len = wcwidth(CharOf(ch));
      +	while (len-- > 1) {
      +	    if (x + (len - 1) > win->_maxx) {
      +		NCURSES_CH_T blank = NewChar2(BLANK_TEXT, BLANK_ATTR);
      +		AddAttr(blank, AttrOf(ch));
      +		if (waddch_literal(win, blank) != ERR)
      +		    return waddch_literal(win, ch);
      +		return ERR;
      +	    }
       	    AddAttr(line->text[x++], WA_NAC);
      +	    TR(TRACE_VIRTPUT, ("added NAC %d", x - 1));
      +	}
           }
         testwrapping:
           );
      @@ -330,14 +391,30 @@
       NCURSES_EXPORT(int)
       wadd_wch(WINDOW *win, const cchar_t * wch)
       {
      +    PUTC_DATA;
      +    int n;
           int code = ERR;
       
           TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_CALLED("wadd_wch(%p, %s)"), win,
       				      _tracech_t(wch)));
       
      -    if (win && (waddch_nosync(win, *wch) != ERR)) {
      -	_nc_synchook(win);
      -	code = OK;
      +    if (win != 0) {
      +	PUTC_INIT;
      +	while (PUTC_i < CCHARW_MAX) {
      +	    if ((PUTC_ch = wch->chars[PUTC_i++]) == L'\0')
      +		break;
      +	    if ((PUTC_n = wcrtomb(PUTC_buf, PUTC_ch, &PUT_st)) <= 0) {
      +		code = ERR;
      +		break;
      +	    }
      +	    for (n = 0; n < PUTC_n; n++) {
      +		if ((code = waddch(win, UChar(PUTC_buf[n]))) == ERR) {
      +		    break;
      +		}
      +	    }
      +	    if (code == ERR)
      +		break;
      +	}
           }
       
           TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_RETURN("%d"), code));
      @@ -347,18 +424,32 @@
       NCURSES_EXPORT(int)
       wecho_wchar(WINDOW *win, const cchar_t * wch)
       {
      +    PUTC_DATA;
      +    int n;
           int code = ERR;
       
           TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_CALLED("wecho_wchar(%p, %s)"), win,
       				      _tracech_t(wch)));
       
      -    if (win && (waddch_nosync(win, *wch) != ERR)) {
      -	bool save_immed = win->_immed;
      -	win->_immed = TRUE;
      -	_nc_synchook(win);
      -	win->_immed = save_immed;
      -	code = OK;
      +    if (win != 0) {
      +	PUTC_INIT;
      +	while (PUTC_i < CCHARW_MAX) {
      +	    if ((PUTC_ch = wch->chars[PUTC_i++]) == L'\0')
      +		break;
      +	    if ((PUTC_n = wcrtomb(PUTC_buf, PUTC_ch, &PUT_st)) <= 0) {
      +		code = ERR;
      +		break;
      +	    }
      +	    for (n = 0; n < PUTC_n; n++) {
      +		if ((code = wechochar(win, UChar(PUTC_buf[n]))) == ERR) {
      +		    break;
      +		}
      +	    }
      +	    if (code == ERR)
      +		break;
      +	}
           }
      +
           TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_RETURN("%d"), code));
           return (code);
       }
      diff -urNd -urNd ncurses-5.3/ncurses/base/lib_addstr.c ncurses-5.3.20030906.orig/ncurses/base/lib_addstr.c
      --- ncurses-5.3/ncurses/base/lib_addstr.c	Sat Oct  5 19:25:25 2002
      +++ ncurses-5.3.20030906.orig/ncurses/base/lib_addstr.c	Sun Jul 20 14:02:09 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -29,6 +29,10 @@
       /****************************************************************************
        *  Author: Zeyd M. Ben-Halim  1992,1995               *
        *     and: Eric S. Raymond                          *
      + *                                                                          *
      + *  Rewritten 2001-2002 to support wide-characters by                       *
      + *	Sven Verdoolaege                                                    *
      + *	Thomas Dickey                                                       *
        ****************************************************************************/
       
       /*
      @@ -40,53 +44,13 @@
       
       #include 
       
      -MODULE_ID("$Id: lib_addstr.c,v 1.34 2002/10/06 00:25:25 tom Exp $")
      -
      -#if USE_WIDEC_SUPPORT
      -#define CONV_DATA   mbstate_t state; wchar_t cached; int clen = 0
      -#define CONV_INIT   memset (&state, '\0', sizeof (state)); cached = (wchar_t)WEOF
      -#define NEXT_CHAR(s,ch, n)						\
      -    {									\
      -	int len, i = 0;							\
      -	memset(&ch, 0, sizeof(cchar_t));				\
      -	if (cached != (wchar_t) WEOF) {					\
      -	    ch.chars[i++] = cached;					\
      -	    cached = (wchar_t) WEOF;					\
      -	    n -= clen;							\
      -	    s += clen;							\
      -	}								\
      -	for (; i < CCHARW_MAX && n > 0; ++i) {				\
      -	    if ((len = mbrtowc(&ch.chars[i], s, n, &state)) < 0) {	\
      -		code = ERR;						\
      -		break;							\
      -	    }								\
      -	    if (i == 0 || wcwidth(ch.chars[i]) == 0) {			\
      -		n -= len;						\
      -		s += len;						\
      -	    } else {							\
      -		cached = ch.chars[i];					\
      -		clen = len;						\
      -		ch.chars[i] = L'\0';					\
      -		break;							\
      -	    }								\
      -	}								\
      -	if (code == ERR)						\
      -	    break;							\
      -    }
      -#else
      -#define CONV_DATA
      -#define CONV_INIT
      -#define NEXT_CHAR(s,ch, n)						\
      -    ch = *s++;								\
      -    --n
      -#endif
      +MODULE_ID("$Id: lib_addstr.c,v 1.38 2003/07/05 19:45:21 tom Exp $")
       
       NCURSES_EXPORT(int)
       waddnstr(WINDOW *win, const char *astr, int n)
       {
      -    unsigned const char *str = (unsigned const char *) astr;
      +    const char *str = astr;
           int code = ERR;
      -    CONV_DATA;
       
           T((T_CALLED("waddnstr(%p,%s,%d)"), win, _nc_visbufn(astr, n), n));
       
      @@ -97,11 +61,10 @@
       	    n = (int) strlen(astr);
       
       	TR(TRACE_VIRTPUT, ("str is not null, length = %d", n));
      -	CONV_INIT;
      -	while ((n > 0) && (*str != '\0')) {
      +	while ((n-- > 0) && (*str != '\0')) {
       	    NCURSES_CH_T ch;
      -	    TR(TRACE_VIRTPUT, ("*str = %#x", *str));
      -	    NEXT_CHAR(str, ch, n);
      +	    TR(TRACE_VIRTPUT, ("*str = %#o", UChar(*str)));
      +	    SetChar(ch, UChar(*str++), A_NORMAL);
       	    if (_nc_waddch_nosync(win, ch) == ERR) {
       		code = ERR;
       		break;
      @@ -114,7 +77,7 @@
       }
       
       NCURSES_EXPORT(int)
      -waddchnstr(WINDOW *win, const chtype * astr, int n)
      +waddchnstr(WINDOW *win, const chtype *astr, int n)
       {
           NCURSES_SIZE_T y = win->_cury;
           NCURSES_SIZE_T x = win->_curx;
      @@ -155,7 +118,7 @@
       
       #if USE_WIDEC_SUPPORT
       
      -int
      +NCURSES_EXPORT(int)
       _nc_wchstrlen(const cchar_t * s)
       {
           int result = 0;
      @@ -217,9 +180,8 @@
       waddnwstr(WINDOW *win, const wchar_t * str, int n)
       {
           int code = ERR;
      -    int i;
       
      -    T((T_CALLED("waddnwstr(%p,%s,%d)"), win, _nc_viswbufn(str,n), n));
      +    T((T_CALLED("waddnwstr(%p,%s,%d)"), win, _nc_viswbufn(str, n), n));
       
           if (win && (str != 0)) {
       	TR(TRACE_VIRTPUT | TRACE_ATTRS, ("... current %s", _traceattr(win->_attrs)));
      @@ -230,16 +192,9 @@
       	TR(TRACE_VIRTPUT, ("str is not null, length = %d", n));
       	while ((n-- > 0) && (*str != L('\0'))) {
       	    NCURSES_CH_T ch;
      -	    TR(TRACE_VIRTPUT, ("*str[0] = %#lx", *str));
      +	    TR(TRACE_VIRTPUT, ("*str[0] = %#lx", (unsigned long) *str));
       	    SetChar(ch, *str++, A_NORMAL);
      -	    i = 1;
      -	    while (i < CCHARW_MAX && n > 0 && (*str != L('\0'))
      -		   && wcwidth(*str) == 0) {
      -		TR(TRACE_VIRTPUT, ("*str[%d] = %#lx", i, *str));
      -		ch.chars[i++] = *str++;
      -		--n;
      -	    }
      -	    if (_nc_waddch_nosync(win, ch) == ERR) {
      +	    if (wadd_wch(win, &ch) == ERR) {
       		code = ERR;
       		break;
       	    }
      diff -urNd -urNd ncurses-5.3/ncurses/base/lib_bkgd.c ncurses-5.3.20030906.orig/ncurses/base/lib_bkgd.c
      --- ncurses-5.3/ncurses/base/lib_bkgd.c	Sun Sep 22 15:30:32 2002
      +++ ncurses-5.3.20030906.orig/ncurses/base/lib_bkgd.c	Sun Jul 20 14:02:09 2003
      @@ -33,7 +33,7 @@
       
       #include 
       
      -MODULE_ID("$Id: lib_bkgd.c,v 1.29 2002/09/22 20:30:32 tom Exp $")
      +MODULE_ID("$Id: lib_bkgd.c,v 1.30 2003/07/05 16:46:49 tom Exp $")
       
       /*
        * Set the window's background information.
      @@ -70,7 +70,7 @@
       	    int tmp;
       
       	    wgetbkgrnd(win, &wch);
      -	    tmp = wctob(CharOf(wch));
      +	    tmp = _nc_to_char(CharOf(wch));
       
       	    win->_bkgd = ((tmp == EOF) ? ' ' : (chtype) tmp) | AttrOf(wch);
       	}
      diff -urNd -urNd ncurses-5.3/ncurses/base/lib_freeall.c ncurses-5.3.20030906.orig/ncurses/base/lib_freeall.c
      --- ncurses-5.3/ncurses/base/lib_freeall.c	Sat Jul 27 19:35:25 2002
      +++ ncurses-5.3.20030906.orig/ncurses/base/lib_freeall.c	Fri Sep 12 16:41:56 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -39,7 +39,7 @@
       extern int malloc_errfd;	/* FIXME */
       #endif
       
      -MODULE_ID("$Id: lib_freeall.c,v 1.20 2002/07/28 00:35:25 tom Exp $")
      +MODULE_ID("$Id: lib_freeall.c,v 1.25 2003/08/09 21:32:53 tom Exp $")
       
       /*
        * Free all ncurses data.  This is used for testing only (there's no practical
      @@ -51,8 +51,10 @@
           WINDOWLIST *p, *q;
           char *s;
       
      +    T((T_CALLED("_nc_freeall()")));
       #if NO_LEAKS
           _nc_free_tparm();
      +    FreeAndNull(_nc_oldnums);
       #endif
           if (SP != 0) {
       	while (_nc_windows != 0) {
      @@ -82,24 +84,37 @@
       	_nc_free_termtype(&(cur_term->type));
       	free(cur_term);
           }
      +    _nc_free_entries(_nc_head);
       
           if ((s = _nc_home_terminfo()) != 0)
       	free(s);
      +
      +    (void) _nc_printf_string(0, 0);
       #ifdef TRACE
           (void) _nc_trace_buf(-1, 0);
       #endif
      +
       #if HAVE_LIBDBMALLOC
           malloc_dump(malloc_errfd);
       #elif HAVE_LIBDMALLOC
       #elif HAVE_PURIFY
           purify_all_inuse();
       #endif
      +    returnVoid;
       }
       
       NCURSES_EXPORT(void)
       _nc_free_and_exit(int code)
       {
      +    char *last_setbuf = (SP != 0) ? SP->_setbuf : 0;
      +
           _nc_freeall();
      +#ifdef TRACE
      +    trace(0);			/* close trace file, freeing its setbuf */
      +    free(_nc_varargs("?", 0));
      +#endif
      +    fclose(stdout);
      +    FreeIfNeeded(last_setbuf);
           exit(code);
       }
       
      diff -urNd -urNd ncurses-5.3/ncurses/base/lib_getch.c ncurses-5.3.20030906.orig/ncurses/base/lib_getch.c
      --- ncurses-5.3/ncurses/base/lib_getch.c	Sat Sep  7 12:17:59 2002
      +++ ncurses-5.3.20030906.orig/ncurses/base/lib_getch.c	Sun Jul 20 14:02:08 2003
      @@ -40,7 +40,7 @@
       
       #include 
       
      -MODULE_ID("$Id: lib_getch.c,v 1.67 2002/09/07 17:17:59 tom Exp $")
      +MODULE_ID("$Id: lib_getch.c,v 1.71 2003/05/17 23:49:28 tom Exp $")
       
       #include 
       
      @@ -53,6 +53,32 @@
       #define TWAIT_MASK 3
       #endif
       
      +/*
      + * Check for mouse activity, returning nonzero if we find any.
      + */
      +static int
      +check_mouse_activity(int delay EVENTLIST_2nd(_nc_eventlist * evl))
      +{
      +    int rc;
      +
      +#if USE_SYSMOUSE
      +    if ((SP->_mouse_type == M_SYSMOUSE)
      +	&& (SP->_sysmouse_head < SP->_sysmouse_tail)) {
      +	return 2;
      +    }
      +#endif
      +    rc = _nc_timed_wait(TWAIT_MASK, delay, (int *) 0 EVENTLIST_2nd(evl));
      +#if USE_SYSMOUSE
      +    if ((SP->_mouse_type == M_SYSMOUSE)
      +	&& (SP->_sysmouse_head < SP->_sysmouse_tail)
      +	&& (rc == 0)
      +	&& (errno == EINTR)) {
      +	rc |= 2;
      +    }
      +#endif
      +    return rc;
      +}
      +
       static inline int
       fifo_peek(void)
       {
      @@ -88,7 +114,7 @@
       {
           int n;
           int ch = 0;
      -    int mask;
      +    int mask = 0;
       
           (void) mask;
           if (tail == -1)
      @@ -101,11 +127,11 @@
       
       #ifdef NCURSES_WGETCH_EVENTS
           if (evl
      -#if USE_GPM_SUPPORT || defined(USE_EMX_MOUSE)
      +#if USE_GPM_SUPPORT || USE_EMX_MOUSE || USE_SYSMOUSE
       	|| (SP->_mouse_fd >= 0)
       #endif
       	) {
      -	mask = _nc_timed_wait(TWAIT_MASK, -1, (int *) 0, evl);
      +	mask = check_mouse_activity(-1 EVENTLIST_2nd(evl));
           } else
       	mask = 0;
       
      @@ -114,18 +140,32 @@
       	ungetch(KEY_EVENT);
       	return KEY_EVENT;
           }
      -#elif USE_GPM_SUPPORT || defined(USE_EMX_MOUSE)
      -    if (SP->_mouse_fd >= 0)
      -	mask = _nc_timed_wait(TWAIT_MASK, -1, (int *) 0 EVENTLIST_2nd(evl));
      +#elif USE_GPM_SUPPORT || USE_EMX_MOUSE || USE_SYSMOUSE
      +    if (SP->_mouse_fd >= 0) {
      +	mask = check_mouse_activity(-1 EVENTLIST_2nd(evl));
      +    }
       #endif
       
      -#if USE_GPM_SUPPORT || defined(USE_EMX_MOUSE)
      +#if USE_GPM_SUPPORT || USE_EMX_MOUSE
           if ((SP->_mouse_fd >= 0) && (mask & 2)) {
       	SP->_mouse_event(SP);
       	ch = KEY_MOUSE;
       	n = 1;
           } else
       #endif
      +#if USE_SYSMOUSE
      +	if ((SP->_mouse_type == M_SYSMOUSE)
      +	    && (SP->_sysmouse_head < SP->_sysmouse_tail)) {
      +	SP->_mouse_event(SP);
      +	ch = KEY_MOUSE;
      +	n = 1;
      +    } else if ((SP->_mouse_type == M_SYSMOUSE)
      +	       && (mask <= 0) && errno == EINTR) {
      +	SP->_mouse_event(SP);
      +	ch = KEY_MOUSE;
      +	n = 1;
      +    } else
      +#endif
           {				/* Can block... */
       	unsigned char c2 = 0;
       	n = read(SP->_ifd, &c2, 1);
      @@ -214,13 +254,19 @@
            * stuff its contents in the FIFO queue, and pop off
            * the first character to return it.
            */
      -    if (head == -1 && !SP->_raw && !SP->_cbreak) {
      +    if (head == -1 &&
      +	!SP->_notty &&
      +	!SP->_raw &&
      +	!SP->_cbreak &&
      +	!SP->_called_wgetch) {
       	char buf[MAXCOLUMNS], *sp;
       	int rc;
       
       	TR(TRACE_IEVENT, ("filling queue in cooked mode"));
       
      +	SP->_called_wgetch = TRUE;
       	rc = wgetnstr(win, buf, MAXCOLUMNS);
      +	SP->_called_wgetch = FALSE;
       
       	/* ungetch in reverse order */
       #ifdef NCURSES_WGETCH_EVENTS
      @@ -265,10 +311,7 @@
       	TR(TRACE_IEVENT, ("delay is %d milliseconds", delay));
       
       	if (head == -1) {	/* fifo is empty */
      -	    int rc = _nc_timed_wait(TWAIT_MASK,
      -				    delay,
      -				    (int *) 0
      -				    EVENTLIST_2nd(evl));
      +	    int rc = check_mouse_activity(delay EVENTLIST_2nd(evl));
       
       #ifdef NCURSES_WGETCH_EVENTS
       	    if (rc & 4) {
      @@ -308,10 +351,8 @@
       		break;
       	} while
       	    (ch == KEY_MOUSE
      -	     && (((rc = _nc_timed_wait(TWAIT_MASK,
      -				       SP->_maxclick,
      -				       (int *) 0
      -				       EVENTLIST_2nd(evl))) != 0
      +	     && (((rc = check_mouse_activity(SP->_maxclick
      +					     EVENTLIST_2nd(evl))) != 0
       		  && !(rc & 4))
       		 || !SP->_mouse_parse(runcount)));
       #ifdef NCURSES_WGETCH_EVENTS
      @@ -513,14 +554,11 @@
       	    int rc;
       
       	    TR(TRACE_IEVENT, ("waiting for rest of sequence"));
      -	    rc = _nc_timed_wait(TWAIT_MASK,
      -				timeleft,
      -				&timeleft
      -				EVENTLIST_2nd(evl));
      +	    rc = check_mouse_activity(timeleft EVENTLIST_2nd(evl));
       #ifdef NCURSES_WGETCH_EVENTS
       	    if (rc & 4) {
       		TR(TRACE_IEVENT, ("interrupted by a user event"));
      -		/* FIXME Should have preserved timeleft for reusal... */
      +		/* FIXME Should have preserved remainder timeleft for reusal... */
       		peek = head;	/* Restart interpreting later */
       		return KEY_EVENT;
       	    }
      diff -urNd -urNd ncurses-5.3/ncurses/base/lib_insch.c ncurses-5.3.20030906.orig/ncurses/base/lib_insch.c
      --- ncurses-5.3/ncurses/base/lib_insch.c	Sat Jun  9 18:47:38 2001
      +++ ncurses-5.3.20030906.orig/ncurses/base/lib_insch.c	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -29,6 +29,8 @@
       /****************************************************************************
        *  Author: Zeyd M. Ben-Halim  1992,1995               *
        *     and: Eric S. Raymond                          *
      + *     and: Sven Verdoolaege                                                *
      + *     and: Thomas E. Dickey                                                *
        ****************************************************************************/
       
       /*
      @@ -39,29 +41,98 @@
       */
       
       #include 
      +#include 
       
      -MODULE_ID("$Id: lib_insch.c,v 1.15 2001/06/09 23:47:38 skimo Exp $")
      +MODULE_ID("$Id: lib_insch.c,v 1.18 2002/11/23 21:41:05 tom Exp $")
      +
      +/*
      + * Insert the given character, updating the current location to simplify
      + * inserting a string.
      + */
      +void
      +_nc_insert_ch(WINDOW *win, chtype ch)
      +{
      +    NCURSES_CH_T wch;
      +    int count;
      +
      +    switch (ch) {
      +    case '\t':
      +	for (count = (TABSIZE - (win->_curx % TABSIZE)); count > 0; count--)
      +	    _nc_insert_ch(win, ' ');
      +	break;
      +    case '\n':
      +    case '\r':
      +    case '\b':
      +	SetChar2(wch, ch);
      +	_nc_waddch_nosync(win, wch);
      +	break;
      +    default:
      +	if (is7bits(ch) && iscntrl(ch)) {
      +	    _nc_insert_ch(win, '^');
      +	    _nc_insert_ch(win, '@' + (ch));
      +	} else if (win->_curx <= win->_maxx) {
      +	    struct ldat *line = &(win->_line[win->_cury]);
      +	    NCURSES_CH_T *end = &(line->text[win->_curx]);
      +	    NCURSES_CH_T *temp1 = &(line->text[win->_maxx]);
      +	    NCURSES_CH_T *temp2 = temp1 - 1;
      +
      +	    SetChar2(wch, ch);
      +
      +	    CHANGED_TO_EOL(line, win->_curx, win->_maxx);
      +	    while (temp1 > end)
      +		*temp1-- = *temp2--;
      +
      +	    *temp1 = _nc_render(win, wch);
      +
      +	    win->_curx++;
      +	}
      +	break;
      +    }
      +}
       
       NCURSES_EXPORT(int)
       winsch(WINDOW *win, chtype c)
       {
      +    NCURSES_SIZE_T oy;
      +    NCURSES_SIZE_T ox;
           int code = ERR;
       
           T((T_CALLED("winsch(%p, %s)"), win, _tracechtype(c)));
       
      -    if (win) {
      -	struct ldat *line = &(win->_line[win->_cury]);
      -	NCURSES_CH_T *end = &(line->text[win->_curx]);
      -	NCURSES_CH_T *temp1 = &(line->text[win->_maxx]);
      -	NCURSES_CH_T *temp2 = temp1 - 1;
      -	NCURSES_CH_T wch;
      -	SetChar2(wch, c);
      +    if (win != 0) {
      +	oy = win->_cury;
      +	ox = win->_curx;
       
      -	CHANGED_TO_EOL(line, win->_curx, win->_maxx);
      -	while (temp1 > end)
      -	    *temp1-- = *temp2--;
      +	_nc_insert_ch(win, c);
       
      -	*temp1 = _nc_render(win, wch);
      +	win->_curx = ox;
      +	win->_cury = oy;
      +	_nc_synchook(win);
      +	code = OK;
      +    }
      +    returnCode(code);
      +}
      +
      +NCURSES_EXPORT(int)
      +winsnstr(WINDOW *win, const char *s, int n)
      +{
      +    int code = ERR;
      +    NCURSES_SIZE_T oy;
      +    NCURSES_SIZE_T ox;
      +    const unsigned char *str = (const unsigned char *) s;
      +    const unsigned char *cp;
      +
      +    T((T_CALLED("winsnstr(%p,%s,%d)"), win, _nc_visbufn(s, n), n));
      +
      +    if (win != 0 && str != 0) {
      +	oy = win->_cury;
      +	ox = win->_curx;
      +	for (cp = str; *cp && (n <= 0 || (cp - str) < n); cp++) {
      +	    _nc_insert_ch(win, (chtype) UChar(*cp));
      +	}
      +	win->_curx = ox;
      +	win->_cury = oy;
      +	_nc_synchook(win);
       	code = OK;
           }
           returnCode(code);
      diff -urNd -urNd ncurses-5.3/ncurses/base/lib_insdel.c ncurses-5.3.20030906.orig/ncurses/base/lib_insdel.c
      --- ncurses-5.3/ncurses/base/lib_insdel.c	Tue Dec 18 19:10:49 2001
      +++ ncurses-5.3.20030906.orig/ncurses/base/lib_insdel.c	Fri Sep 12 16:41:24 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2001,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -42,14 +42,14 @@
       
       #include 
       
      -MODULE_ID("$Id: lib_insdel.c,v 1.11 2001/12/19 01:10:49 tom Exp $")
      +MODULE_ID("$Id: lib_insdel.c,v 1.12 2003/07/26 22:40:06 tom Exp $")
       
       NCURSES_EXPORT(int)
       winsdelln(WINDOW *win, int n)
       {
           int code = ERR;
       
      -    T((T_CALLED("winsdel(%p,%d)"), win, n));
      +    T((T_CALLED("winsdelln(%p,%d)"), win, n));
       
           if (win) {
       	if (n != 0) {
      diff -urNd -urNd ncurses-5.3/ncurses/base/lib_mouse.c ncurses-5.3.20030906.orig/ncurses/base/lib_mouse.c
      --- ncurses-5.3/ncurses/base/lib_mouse.c	Sat Sep 28 11:08:58 2002
      +++ ncurses-5.3.20030906.orig/ncurses/base/lib_mouse.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2000,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -29,6 +29,7 @@
       /****************************************************************************
        *  Author: Zeyd M. Ben-Halim  1992,1995               *
        *     and: Eric S. Raymond                          *
      + *     and: Thomas E. Dickey 1996-2003                                      *
        ****************************************************************************/
       
       /*
      @@ -74,7 +75,11 @@
       #endif
       
       #include 
      +
      +MODULE_ID("$Id: lib_mouse.c,v 1.67 2003/05/31 22:18:18 tom Exp $")
      +
       #include 
      +#include 
       
       #if USE_GPM_SUPPORT
       #ifndef LINT			/* don't need this for llib-lncurses */
      @@ -84,18 +89,33 @@
       #endif
       #endif
       
      -MODULE_ID("$Id: lib_mouse.c,v 1.61 2002/09/28 16:08:58 tom Exp $")
      +#if USE_SYSMOUSE
      +#undef buttons			/* symbol conflict in consio.h */
      +#undef mouse_info		/* symbol conflict in consio.h */
      +#include 
      +#if (__FreeBSD_version >= 400017)
      +#include 
      +#include 
      +#else
      +#include 
      +#endif
      +#endif /* use_SYSMOUSE */
       
       #define MY_TRACE TRACE_ICALLS|TRACE_IEVENT
       
      -#define INVALID_EVENT	-1
      +#define	MASK_RELEASE(x)		((001 << (6 * ((x) - 1))))
      +#define	MASK_PRESS(x)		((002 << (6 * ((x) - 1))))
      +#define	MASK_CLICK(x)		((004 << (6 * ((x) - 1))))
      +#define	MASK_DOUBLE_CLICK(x)	((010 << (6 * ((x) - 1))))
      +#define	MASK_TRIPLE_CLICK(x)	((020 << (6 * ((x) - 1))))
      +#define	MASK_RESERVED_EVENT(x)	((040 << (6 * ((x) - 1))))
       
      -static int mousetype;
      -#define M_XTERM		-1	/* use xterm's mouse tracking? */
      -#define M_NONE		0	/* no mouse device */
      -#define M_GPM		1	/* use GPM */
      -#define M_QNX		2	/* QNX mouse on console */
      -#define M_QNX_TERM	3	/* QNX mouse on pterm/xterm (using qansi-m) */
      +#define BUTTON_CLICKED  (BUTTON1_CLICKED  | BUTTON2_CLICKED  | BUTTON3_CLICKED)
      +#define BUTTON_PRESSED  (BUTTON1_PRESSED  | BUTTON2_PRESSED  | BUTTON3_PRESSED)
      +#define BUTTON_RELEASED (BUTTON1_RELEASED | BUTTON2_RELEASED | BUTTON3_RELEASED)
      +
      +#define INVALID_EVENT	-1
      +#define NORMAL_EVENT	0
       
       #if USE_GPM_SUPPORT
       #ifndef LINT
      @@ -117,7 +137,11 @@
        */
       static MEVENT events[EV_MAX];	/* hold the last mouse event seen */
       static MEVENT *eventp = events;	/* next free slot in event queue */
      +
      +#undef  NEXT
       #define NEXT(ep)	((ep == events + EV_MAX - 1) ? events : ep + 1)
      +
      +#undef  PREV
       #define PREV(ep)	((ep == events) ? events + EV_MAX - 1 : ep - 1)
       
       #ifdef TRACE
      @@ -135,7 +159,7 @@
       }
       #endif
       
      -#ifdef USE_EMX_MOUSE
      +#if USE_EMX_MOUSE
       
       #  define TOP_ROW          0
       #  define LEFT_COL         0
      @@ -229,31 +253,110 @@
           mouse_activated = state;
       }
       
      +#endif /* USE_EMX_MOUSE */
      +
      +#if USE_SYSMOUSE
      +static void
      +handle_sysmouse(int sig GCC_UNUSED)
      +{
      +    struct mouse_info the_mouse;
      +    MEVENT *work;
      +
      +    the_mouse.operation = MOUSE_GETINFO;
      +    if (SP != 0
      +	&& SP->_mouse_fd >= 0
      +	&& SP->_sysmouse_tail < FIFO_SIZE
      +	&& ioctl(SP->_mouse_fd, CONS_MOUSECTL, &the_mouse) != -1) {
      +
      +	if (SP->_sysmouse_head > SP->_sysmouse_tail) {
      +	    SP->_sysmouse_tail = 0;
      +	    SP->_sysmouse_head = 0;
      +	}
      +	work = &(SP->_sysmouse_fifo[SP->_sysmouse_tail]);
      +	memset(work, 0, sizeof(*work));
      +	work->id = NORMAL_EVENT;	/* there's only one mouse... */
      +
      +	SP->_sysmouse_old_buttons = SP->_sysmouse_new_buttons;
      +	SP->_sysmouse_new_buttons = the_mouse.u.data.buttons & 0x7;
      +
      +	if (SP->_sysmouse_new_buttons) {
      +	    if (SP->_sysmouse_new_buttons & 1)
      +		work->bstate |= BUTTON1_PRESSED;
      +	    if (SP->_sysmouse_new_buttons & 2)
      +		work->bstate |= BUTTON2_PRESSED;
      +	    if (SP->_sysmouse_new_buttons & 4)
      +		work->bstate |= BUTTON3_PRESSED;
      +	} else {
      +	    if (SP->_sysmouse_old_buttons & 1)
      +		work->bstate |= BUTTON1_RELEASED;
      +	    if (SP->_sysmouse_old_buttons & 2)
      +		work->bstate |= BUTTON2_RELEASED;
      +	    if (SP->_sysmouse_old_buttons & 4)
      +		work->bstate |= BUTTON3_RELEASED;
      +	}
      +
      +	/* for cosmetic bug in syscons.c on FreeBSD 3.[34] */
      +	the_mouse.operation = MOUSE_HIDE;
      +	ioctl(SP->_mouse_fd, CONS_MOUSECTL, &the_mouse);
      +	the_mouse.operation = MOUSE_SHOW;
      +	ioctl(SP->_mouse_fd, CONS_MOUSECTL, &the_mouse);
      +
      +	/*
      +	 * We're only interested if the button is pressed or released.
      +	 * FIXME: implement continuous event-tracking.
      +	 */
      +	if (SP->_sysmouse_new_buttons != SP->_sysmouse_old_buttons) {
      +	    SP->_sysmouse_tail += 1;
      +	}
      +	work->x = the_mouse.u.data.x / SP->_sysmouse_char_width;
      +	work->y = the_mouse.u.data.y / SP->_sysmouse_char_height;
      +    }
      +}
       #endif
       
       static int initialized;
       
       static void
      +init_xterm_mouse(void)
      +{
      +    SP->_mouse_type = M_XTERM;
      +    SP->_mouse_xtermcap = tigetstr("XM");
      +    if (!VALID_STRING(SP->_mouse_xtermcap))
      +	SP->_mouse_xtermcap = "\033[?1000%?%p1%{1}%=%th%el%;";
      +}
      +
      +#if !USE_EMX_MOUSE
      +static void
      +enable_xterm_mouse(int enable)
      +{
      +    putp(tparm(SP->_mouse_xtermcap, enable));
      +}
      +#endif /* !USE_EMX_MOUSE */
      +
      +static void
       initialize_mousetype(void)
       {
           static const char *xterm_kmous = "\033[M";
       
           /* Try gpm first, because gpm may be configured to run in xterm */
       #if USE_GPM_SUPPORT
      -    /* GPM: initialize connection to gpm server */
      -    gpm_connect.eventMask = GPM_DOWN | GPM_UP;
      -    gpm_connect.defaultMask = ~(gpm_connect.eventMask | GPM_HARD);
      -    gpm_connect.minMod = 0;
      -    gpm_connect.maxMod = ~((1 << KG_SHIFT) | (1 << KG_SHIFTL) | (1 << KG_SHIFTR));
      -    if (Gpm_Open(&gpm_connect, 0) >= 0) {	/* returns the file-descriptor */
      -	mousetype = M_GPM;
      -	SP->_mouse_fd = gpm_fd;
      -	return;
      +    /* GPM does printf's without checking if stdout is a terminal */
      +    if (isatty(fileno(stdout))) {
      +	/* GPM: initialize connection to gpm server */
      +	gpm_connect.eventMask = GPM_DOWN | GPM_UP;
      +	gpm_connect.defaultMask = ~(gpm_connect.eventMask | GPM_HARD);
      +	gpm_connect.minMod = 0;
      +	gpm_connect.maxMod = ~((1 << KG_SHIFT) | (1 << KG_SHIFTL) | (1 << KG_SHIFTR));
      +	if (Gpm_Open(&gpm_connect, 0) >= 0) {	/* returns the file-descriptor */
      +	    SP->_mouse_type = M_GPM;
      +	    SP->_mouse_fd = gpm_fd;
      +	    return;
      +	}
           }
       #endif
       
           /* OS/2 VIO */
      -#ifdef USE_EMX_MOUSE
      +#if USE_EMX_MOUSE
           if (!mouse_thread
       	&& strstr(cur_term->type.term_names, "xterm") == 0
       	&& key_mouse) {
      @@ -287,22 +390,87 @@
       		printf("mouse thread error %d=%#x", rc, rc);
       		return;
       	    } else {
      -		mousetype = M_XTERM;
      +		SP->_mouse_type = M_XTERM;
       		return;
       	    }
       	}
           }
       #endif
       
      +#if USE_SYSMOUSE
      +    {
      +	struct mouse_info the_mouse;
      +	char *the_device = 0;
      +
      +	if (isatty(SP->_ifd))
      +	    the_device = ttyname(SP->_ifd);
      +	if (the_device == 0)
      +	    the_device = "/dev/tty";
      +
      +	SP->_mouse_fd = open(the_device, O_RDWR);
      +
      +	if (SP->_mouse_fd >= 0) {
      +	    /*
      +	     * sysmouse does not have a usable user interface for obtaining
      +	     * mouse events.  The logical way to proceed (reading data on a
      +	     * stream) only works if one opens the device as root.  Even in
      +	     * that mode, careful examination shows we lose events
      +	     * occasionally.  The interface provided for user programs is to
      +	     * establish a signal handler.  really.
      +	     *
      +	     * Take over SIGUSR2 for this purpose since SIGUSR1 is more
      +	     * likely to be used by an application.  getch() will have to
      +	     * handle the misleading EINTR's.
      +	     */
      +	    signal(SIGUSR2, SIG_IGN);
      +	    the_mouse.operation = MOUSE_MODE;
      +	    the_mouse.u.mode.mode = 0;
      +	    the_mouse.u.mode.signal = SIGUSR2;
      +	    if (ioctl(SP->_mouse_fd, CONS_MOUSECTL, &the_mouse) != -1) {
      +		signal(SIGUSR2, handle_sysmouse);
      +		the_mouse.operation = MOUSE_SHOW;
      +		ioctl(SP->_mouse_fd, CONS_MOUSECTL, &the_mouse);
      +
      +#if defined(FBIO_MODEINFO) || defined(CONS_MODEINFO)	/* FreeBSD > 2.x */
      +		{
      +#ifndef FBIO_GETMODE		/* FreeBSD 3.x */
      +#define FBIO_GETMODE    CONS_GET
      +#define FBIO_MODEINFO   CONS_MODEINFO
      +#endif /* FBIO_GETMODE */
      +		    video_info_t the_video;
      +
      +		    if (ioctl(SP->_mouse_fd,
      +			      FBIO_GETMODE,
      +			      &the_video.vi_mode) != -1
      +			&& ioctl(SP->_mouse_fd,
      +				 FBIO_MODEINFO,
      +				 &the_video) != -1) {
      +			SP->_sysmouse_char_width = the_video.vi_cwidth;
      +			SP->_sysmouse_char_height = the_video.vi_cheight;
      +		    }
      +		}
      +#endif /* defined(FBIO_MODEINFO) || defined(CONS_MODEINFO) */
      +
      +		if (SP->_sysmouse_char_width <= 0)
      +		    SP->_sysmouse_char_width = 8;
      +		if (SP->_sysmouse_char_height <= 0)
      +		    SP->_sysmouse_char_height = 16;
      +		SP->_mouse_type = M_SYSMOUSE;
      +		return;
      +	    }
      +	}
      +    }
      +#endif /* USE_SYSMOUSE */
      +
           /* we know how to recognize mouse events under "xterm" */
           if (key_mouse != 0) {
       	if (!strcmp(key_mouse, xterm_kmous)) {
      -	    mousetype = M_XTERM;
      +	    init_xterm_mouse();
       	    return;
       	}
           } else if (strstr(cur_term->type.term_names, "xterm") != 0) {
       	(void) _nc_add_to_try(&(SP->_keytry), xterm_kmous, KEY_MOUSE);
      -	mousetype = M_XTERM;
      +	init_xterm_mouse();
       	return;
           }
       }
      @@ -323,7 +491,7 @@
       
       	initialize_mousetype();
       
      -	T(("_nc_mouse_init() set mousetype to %d", mousetype));
      +	T(("_nc_mouse_init() set mousetype to %d", SP->_mouse_type));
           }
       }
       
      @@ -334,74 +502,113 @@
       static bool
       _nc_mouse_event(SCREEN * sp GCC_UNUSED)
       {
      -#if USE_GPM_SUPPORT
      -    /* GPM: query server for event, return TRUE if we find one */
      -    Gpm_Event ev;
      +    bool result = FALSE;
       
      -    if (Gpm_GetEvent(&ev) == 1) {
      -	eventp->id = 0;		/* there's only one mouse... */
      +    switch (SP->_mouse_type) {
      +    case M_XTERM:
      +	/* xterm: never have to query, mouse events are in the keyboard stream */
      +#if USE_EMX_MOUSE
      +	{
      +	    char kbuf[3];
       
      -	eventp->bstate = 0;
      -	switch (ev.type & 0x0f) {
      -	case (GPM_DOWN):
      -	    if (ev.buttons & GPM_B_LEFT)
      -		eventp->bstate |= BUTTON1_PRESSED;
      -	    if (ev.buttons & GPM_B_MIDDLE)
      -		eventp->bstate |= BUTTON2_PRESSED;
      -	    if (ev.buttons & GPM_B_RIGHT)
      -		eventp->bstate |= BUTTON3_PRESSED;
      -	    break;
      -	case (GPM_UP):
      -	    if (ev.buttons & GPM_B_LEFT)
      -		eventp->bstate |= BUTTON1_RELEASED;
      -	    if (ev.buttons & GPM_B_MIDDLE)
      -		eventp->bstate |= BUTTON2_RELEASED;
      -	    if (ev.buttons & GPM_B_RIGHT)
      -		eventp->bstate |= BUTTON3_RELEASED;
      -	    break;
      -	default:
      -	    break;
      +	    int i, res = read(M_FD(sp), &kbuf, 3);	/* Eat the prefix */
      +	    if (res != 3)
      +		printf("Got %d chars instead of 3 for prefix.\n", res);
      +	    for (i = 0; i < res; i++) {
      +		if (kbuf[i] != key_mouse[i])
      +		    printf("Got char %d instead of %d for prefix.\n",
      +			   (int) kbuf[i], (int) key_mouse[i]);
      +	    }
      +	    result = TRUE;
       	}
      +#endif /* USE_EMX_MOUSE */
      +	break;
       
      -	eventp->x = ev.x - 1;
      -	eventp->y = ev.y - 1;
      -	eventp->z = 0;
      +#if USE_GPM_SUPPORT
      +    case M_GPM:
      +	{
      +	    /* query server for event, return TRUE if we find one */
      +	    Gpm_Event ev;
       
      -	/* bump the next-free pointer into the circular list */
      -	eventp = NEXT(eventp);
      -	return (TRUE);
      -    }
      +	    if (Gpm_GetEvent(&ev) == 1) {
      +		/* there's only one mouse... */
      +		eventp->id = NORMAL_EVENT;
      +
      +		eventp->bstate = 0;
      +		switch (ev.type & 0x0f) {
      +		case (GPM_DOWN):
      +		    if (ev.buttons & GPM_B_LEFT)
      +			eventp->bstate |= BUTTON1_PRESSED;
      +		    if (ev.buttons & GPM_B_MIDDLE)
      +			eventp->bstate |= BUTTON2_PRESSED;
      +		    if (ev.buttons & GPM_B_RIGHT)
      +			eventp->bstate |= BUTTON3_PRESSED;
      +		    break;
      +		case (GPM_UP):
      +		    if (ev.buttons & GPM_B_LEFT)
      +			eventp->bstate |= BUTTON1_RELEASED;
      +		    if (ev.buttons & GPM_B_MIDDLE)
      +			eventp->bstate |= BUTTON2_RELEASED;
      +		    if (ev.buttons & GPM_B_RIGHT)
      +			eventp->bstate |= BUTTON3_RELEASED;
      +		    break;
      +		default:
      +		    break;
      +		}
      +
      +		eventp->x = ev.x - 1;
      +		eventp->y = ev.y - 1;
      +		eventp->z = 0;
      +
      +		/* bump the next-free pointer into the circular list */
      +		eventp = NEXT(eventp);
      +		result = TRUE;
      +	    }
      +	}
      +	break;
       #endif
       
      -#ifdef USE_EMX_MOUSE
      -    {
      -	char kbuf[3];
      +#if USE_SYSMOUSE
      +    case M_SYSMOUSE:
      +	if (SP->_sysmouse_head < SP->_sysmouse_tail) {
      +	    *eventp = SP->_sysmouse_fifo[SP->_sysmouse_head];
       
      -	int i, res = read(M_FD(sp), &kbuf, 3);	/* Eat the prefix */
      -	if (res != 3)
      -	    printf("Got %d chars instead of 3 for prefix.\n", res);
      -	for (i = 0; i < res; i++) {
      -	    if (kbuf[i] != key_mouse[i])
      -		printf("Got char %d instead of %d for prefix.\n",
      -		       (int) kbuf[i], (int) key_mouse[i]);
      +	    /*
      +	     * Point the fifo-head to the next possible location.  If there
      +	     * are none, reset the indices.  This may be interrupted by the
      +	     * signal handler, doing essentially the same reset.
      +	     */
      +	    SP->_sysmouse_head += 1;
      +	    if (SP->_sysmouse_head == SP->_sysmouse_tail) {
      +		SP->_sysmouse_tail = 0;
      +		SP->_sysmouse_head = 0;
      +	    }
      +
      +	    /* bump the next-free pointer into the circular list */
      +	    eventp = NEXT(eventp);
      +	    result = TRUE;
       	}
      -	return TRUE;
      +	break;
      +#endif /* USE_SYSMOUSE */
      +
      +    case M_NONE:
      +	break;
           }
      -#endif /* USE_EMX_MOUSE */
       
      -    /* xterm: never have to query, mouse events are in the keyboard stream */
      -    return (FALSE);		/* no event waiting */
      +    return result;		/* true if we found an event */
       }
       
       static bool
       _nc_mouse_inline(SCREEN * sp)
       /* mouse report received in the keyboard stream -- parse its info */
       {
      +    bool result = FALSE;
      +
           TR(MY_TRACE, ("_nc_mouse_inline() called"));
       
      -    if (mousetype == M_XTERM) {
      +    if (SP->_mouse_type == M_XTERM) {
       	unsigned char kbuf[4];
      -	MEVENT *prev;
      +	mmask_t prev;
       	size_t grabbed;
       	int res;
       
      @@ -438,7 +645,7 @@
       	for (grabbed = 0; grabbed < 3; grabbed += res) {
       
       	    /* For VIO mouse we add extra bit 64 to disambiguate button-up. */
      -#ifdef USE_EMX_MOUSE
      +#if USE_EMX_MOUSE
       	    res = read(M_FD(sp) >= 0 ? M_FD(sp) : sp->_ifd, &kbuf, 3);
       #else
       	    res = read(sp->_ifd, kbuf + grabbed, 3 - grabbed);
      @@ -451,59 +658,65 @@
       	TR(TRACE_IEVENT,
       	   ("_nc_mouse_inline sees the following xterm data: '%s'", kbuf));
       
      -	eventp->id = 0;		/* there's only one mouse... */
      +	/* there's only one mouse... */
      +	eventp->id = NORMAL_EVENT;
       
       	/* processing code goes here */
       	eventp->bstate = 0;
      +	prev = PREV(eventp)->bstate;
      +
      +#if USE_EMX_MOUSE
      +#define PRESS_POSITION(n) \
      +	eventp->bstate = MASK_PRESS(n); \
      +	if (kbuf[0] & 0x40) \
      +	    eventp->bstate = MASK_RELEASE(n)
      +#else
      +#define PRESS_POSITION(n) \
      +	eventp->bstate = (prev & MASK_PRESS(n) \
      +			? REPORT_MOUSE_POSITION \
      +			: MASK_PRESS(n))
      +#endif
      +
       	switch (kbuf[0] & 0x3) {
       	case 0x0:
      -	    eventp->bstate = BUTTON1_PRESSED;
      -#ifdef USE_EMX_MOUSE
      -	    if (kbuf[0] & 0x40)
      -		eventp->bstate = BUTTON1_RELEASED;
      -#endif
      +	    PRESS_POSITION(1);
       	    break;
       
       	case 0x1:
      -	    eventp->bstate = BUTTON2_PRESSED;
      -#ifdef USE_EMX_MOUSE
      -	    if (kbuf[0] & 0x40)
      -		eventp->bstate = BUTTON2_RELEASED;
      -#endif
      +	    PRESS_POSITION(2);
       	    break;
       
       	case 0x2:
      -	    eventp->bstate = BUTTON3_PRESSED;
      -#ifdef USE_EMX_MOUSE
      -	    if (kbuf[0] & 0x40)
      -		eventp->bstate = BUTTON3_RELEASED;
      -#endif
      +	    PRESS_POSITION(3);
       	    break;
       
       	case 0x3:
       	    /*
      -	     * Release events aren't reported for individual buttons,
      -	     * just for the button set as a whole...
      -	     */
      -	    eventp->bstate =
      -		(BUTTON1_RELEASED |
      -		 BUTTON2_RELEASED |
      -		 BUTTON3_RELEASED);
      -	    /*
      -	     * ...however, because there are no kinds of mouse events under
      -	     * xterm that can intervene between press and release, we can
      -	     * deduce which buttons were actually released by looking at the
      -	     * previous event.
      +	     * Release events aren't reported for individual buttons, just for
      +	     * the button set as a whole.  However, because there are normally
      +	     * no mouse events under xterm that intervene between press and
      +	     * release, we can infer the button actually released by looking at
      +	     * the previous event.
       	     */
      -	    prev = PREV(eventp);
      -	    if (!(prev->bstate & BUTTON1_PRESSED))
      -		eventp->bstate &= ~BUTTON1_RELEASED;
      -	    if (!(prev->bstate & BUTTON2_PRESSED))
      -		eventp->bstate &= ~BUTTON2_RELEASED;
      -	    if (!(prev->bstate & BUTTON3_PRESSED))
      -		eventp->bstate &= ~BUTTON3_RELEASED;
      +	    if (prev & (BUTTON_PRESSED | BUTTON_RELEASED)) {
      +		eventp->bstate = BUTTON_RELEASED;
      +		if (!(prev & BUTTON1_PRESSED))
      +		    eventp->bstate &= ~BUTTON1_RELEASED;
      +		if (!(prev & BUTTON2_PRESSED))
      +		    eventp->bstate &= ~BUTTON2_RELEASED;
      +		if (!(prev & BUTTON3_PRESSED))
      +		    eventp->bstate &= ~BUTTON3_RELEASED;
      +	    } else {
      +		/*
      +		 * XFree86 xterm will return a stream of release-events to
      +		 * let the application know where the mouse is going, if the
      +		 * private mode 1002 or 1003 is enabled.
      +		 */
      +		eventp->bstate = REPORT_MOUSE_POSITION;
      +	    }
       	    break;
       	}
      +	result = (eventp->bstate & REPORT_MOUSE_POSITION) ? TRUE : FALSE;
       
       	if (kbuf[0] & 4) {
       	    eventp->bstate |= BUTTON_SHIFT;
      @@ -529,7 +742,7 @@
       #endif
           }
       
      -    return (FALSE);
      +    return (result);
       }
       
       static void
      @@ -542,16 +755,16 @@
       
           if (on) {
       
      -	switch (mousetype) {
      +	switch (SP->_mouse_type) {
       	case M_XTERM:
       #if NCURSES_EXT_FUNCS
       	    keyok(KEY_MOUSE, on);
       #endif
       	    TPUTS_TRACE("xterm mouse initialization");
      -#ifdef USE_EMX_MOUSE
      +#if USE_EMX_MOUSE
       	    server_state(1);
       #else
      -	    putp("\033[?1000h");
      +	    enable_xterm_mouse(1);
       #endif
       	    break;
       #if USE_GPM_SUPPORT
      @@ -559,6 +772,13 @@
       	    SP->_mouse_fd = gpm_fd;
       	    break;
       #endif
      +#if USE_SYSMOUSE
      +	case M_SYSMOUSE:
      +	    signal(SIGUSR2, handle_sysmouse);
      +	    break;
      +#endif
      +	case M_NONE:
      +	    return;
       	}
       	/* Make runtime binding to cut down on object size of applications that
       	 * do not use the mouse (e.g., 'clear').
      @@ -571,19 +791,26 @@
       
           } else {
       
      -	switch (mousetype) {
      +	switch (SP->_mouse_type) {
       	case M_XTERM:
       	    TPUTS_TRACE("xterm mouse deinitialization");
      -#ifdef USE_EMX_MOUSE
      +#if USE_EMX_MOUSE
       	    server_state(0);
       #else
      -	    putp("\033[?1000l");
      +	    enable_xterm_mouse(0);
       #endif
       	    break;
       #if USE_GPM_SUPPORT
       	case M_GPM:
       	    break;
       #endif
      +#if USE_SYSMOUSE
      +	case M_SYSMOUSE:
      +	    signal(SIGUSR2, SIG_IGN);
      +	    break;
      +#endif
      +	case M_NONE:
      +	    return;
       	}
           }
           _nc_flush();
      @@ -631,7 +858,7 @@
       	   ("_nc_mouse_parse: returning simple mouse event %s at slot %ld",
       	    _tracemouse(prev),
       	    (long) (prev - events)));
      -	return (prev->id >= 0)
      +	return (prev->id >= NORMAL_EVENT)
       	    ? ((prev->bstate & eventmask) ? TRUE : FALSE)
       	    : FALSE;
           }
      @@ -657,7 +884,7 @@
       	merge = FALSE;
       	for (ep = runp; (next = NEXT(ep)) != eventp; ep = next) {
       	    if (ep->x == next->x && ep->y == next->y
      -		&& (ep->bstate & (BUTTON1_PRESSED | BUTTON2_PRESSED | BUTTON3_PRESSED))
      +		&& (ep->bstate & BUTTON_PRESSED)
       		&& (!(ep->bstate & BUTTON1_PRESSED)
       		    == !(next->bstate & BUTTON1_RELEASED))
       		&& (!(ep->bstate & BUTTON2_PRESSED)
      @@ -729,10 +956,8 @@
       		    continue;
       
       		/* merge click events forward */
      -		if ((ep->bstate &
      -		     (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED))
      -		    && (follower->bstate &
      -			(BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED))) {
      +		if ((ep->bstate & BUTTON_CLICKED)
      +		    && (follower->bstate & BUTTON_CLICKED)) {
       		    if ((eventmask & BUTTON1_DOUBLE_CLICKED)
       			&& (follower->bstate & BUTTON1_CLICKED)) {
       			follower->bstate &= ~BUTTON1_CLICKED;
      @@ -760,8 +985,7 @@
       		     (BUTTON1_DOUBLE_CLICKED
       		      | BUTTON2_DOUBLE_CLICKED
       		      | BUTTON3_DOUBLE_CLICKED))
      -		    && (follower->bstate &
      -			(BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED))) {
      +		    && (follower->bstate & BUTTON_CLICKED)) {
       		    if ((eventmask & BUTTON1_TRIPLE_CLICKED)
       			&& (follower->bstate & BUTTON1_CLICKED)) {
       			follower->bstate &= ~BUTTON1_CLICKED;
      @@ -831,7 +1055,7 @@
       {
           TR(MY_TRACE, ("_nc_mouse_wrap() called"));
       
      -    switch (mousetype) {
      +    switch (SP->_mouse_type) {
           case M_XTERM:
       	if (eventmask)
       	    mouse_activate(FALSE);
      @@ -841,6 +1065,13 @@
           case M_GPM:
       	break;
       #endif
      +#if USE_SYSMOUSE
      +    case M_SYSMOUSE:
      +	mouse_activate(FALSE);
      +	break;
      +#endif
      +    case M_NONE:
      +	break;
           }
       }
       
      @@ -850,11 +1081,27 @@
       {
           TR(MY_TRACE, ("_nc_mouse_resume() called"));
       
      -    /* xterm: re-enable reporting */
      -    if (mousetype == M_XTERM && eventmask)
      -	mouse_activate(TRUE);
      +    switch (SP->_mouse_type) {
      +    case M_XTERM:
      +	/* xterm: re-enable reporting */
      +	if (eventmask)
      +	    mouse_activate(TRUE);
      +	break;
       
      -    /* GPM: reclaim our event set */
      +#if USE_GPM_SUPPORT
      +    case M_GPM:
      +	/* GPM: reclaim our event set */
      +	break;
      +#endif
      +
      +#if USE_SYSMOUSE
      +    case M_SYSMOUSE:
      +	mouse_activate(TRUE);
      +	break;
      +#endif
      +    case M_NONE:
      +	break;
      +    }
       }
       
       /**************************************************************************
      @@ -869,7 +1116,7 @@
       {
           T((T_CALLED("getmouse(%p)"), aevent));
       
      -    if (aevent && (mousetype != M_NONE)) {
      +    if (aevent && (SP->_mouse_type != M_NONE)) {
       	/* compute the current-event pointer */
       	MEVENT *prev = PREV(eventp);
       
      @@ -917,14 +1164,14 @@
       	returnBits(0);
       
           _nc_mouse_init();
      -    if (mousetype != M_NONE) {
      +    if (SP->_mouse_type != M_NONE) {
       	eventmask = newmask &
      -	    (BUTTON_ALT | BUTTON_CTRL | BUTTON_SHIFT
      -	     | BUTTON1_PRESSED | BUTTON1_RELEASED | BUTTON1_CLICKED
      +	    (REPORT_MOUSE_POSITION | BUTTON_ALT | BUTTON_CTRL | BUTTON_SHIFT
      +	     | BUTTON_PRESSED
      +	     | BUTTON_RELEASED
      +	     | BUTTON_CLICKED
       	     | BUTTON1_DOUBLE_CLICKED | BUTTON1_TRIPLE_CLICKED
      -	     | BUTTON2_PRESSED | BUTTON2_RELEASED | BUTTON2_CLICKED
       	     | BUTTON2_DOUBLE_CLICKED | BUTTON2_TRIPLE_CLICKED
      -	     | BUTTON3_PRESSED | BUTTON3_RELEASED | BUTTON3_CLICKED
       	     | BUTTON3_DOUBLE_CLICKED | BUTTON3_TRIPLE_CLICKED);
       
       	mouse_activate(eventmask != 0);
      @@ -977,7 +1224,7 @@
       NCURSES_EXPORT(int)
       _nc_has_mouse(void)
       {
      -    return (mousetype == M_NONE ? 0 : 1);
      +    return (SP->_mouse_type == M_NONE ? 0 : 1);
       }
       
       NCURSES_EXPORT(bool)
      @@ -1010,5 +1257,3 @@
           }
           returnBool(result);
       }
      -
      -/* lib_mouse.c ends here */
      diff -urNd -urNd ncurses-5.3/ncurses/base/lib_newterm.c ncurses-5.3.20030906.orig/ncurses/base/lib_newterm.c
      --- ncurses-5.3/ncurses/base/lib_newterm.c	Sat Oct 12 10:24:08 2002
      +++ ncurses-5.3.20030906.orig/ncurses/base/lib_newterm.c	Tue May 13 20:08:22 2003
      @@ -47,7 +47,7 @@
       #include 		/* clear_screen, cup & friends, cur_term */
       #include 
       
      -MODULE_ID("$Id: lib_newterm.c,v 1.56 2002/10/12 15:24:08 tom Exp $")
      +MODULE_ID("$Id: lib_newterm.c,v 1.57 2002/10/20 00:10:56 Philippe.Blain Exp $")
       
       #ifndef ONLCR			/* Allows compilation under the QNX 4.2 OS */
       #define ONLCR 0
      @@ -119,13 +119,6 @@
           if (filter_mode) {
       	LINES = 1;
       
      -	if (VALID_NUMERIC(init_tabs))
      -	    TABSIZE = init_tabs;
      -	else
      -	    TABSIZE = 8;
      -
      -	T(("TABSIZE = %d", TABSIZE));
      -
       	clear_screen = 0;
       	cursor_down = parm_down_cursor = 0;
       	cursor_address = 0;
      diff -urNd -urNd ncurses-5.3/ncurses/base/lib_printw.c ncurses-5.3.20030906.orig/ncurses/base/lib_printw.c
      --- ncurses-5.3/ncurses/base/lib_printw.c	Sat Oct  5 17:52:21 2002
      +++ ncurses-5.3.20030906.orig/ncurses/base/lib_printw.c	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -39,10 +39,10 @@
       
       #include 
       
      -MODULE_ID("$Id: lib_printw.c,v 1.13 2002/10/05 22:52:21 tom Exp $")
      +MODULE_ID("$Id: lib_printw.c,v 1.15 2003/02/08 20:50:13 tom Exp $")
       
       NCURSES_EXPORT(int)
      -printw(NCURSES_CONST char *fmt,...)
      +printw(const char *fmt,...)
       {
           va_list argp;
           int code;
      @@ -62,7 +62,7 @@
       }
       
       NCURSES_EXPORT(int)
      -wprintw(WINDOW *win, NCURSES_CONST char *fmt,...)
      +wprintw(WINDOW *win, const char *fmt,...)
       {
           va_list argp;
           int code;
      @@ -82,7 +82,7 @@
       }
       
       NCURSES_EXPORT(int)
      -mvprintw(int y, int x, NCURSES_CONST char *fmt,...)
      +mvprintw(int y, int x, const char *fmt,...)
       {
           va_list argp;
           int code;
      @@ -103,7 +103,7 @@
       }
       
       NCURSES_EXPORT(int)
      -mvwprintw(WINDOW *win, int y, int x, NCURSES_CONST char *fmt,...)
      +mvwprintw(WINDOW *win, int y, int x, const char *fmt,...)
       {
           va_list argp;
           int code;
      @@ -124,7 +124,7 @@
       }
       
       NCURSES_EXPORT(int)
      -vwprintw(WINDOW *win, NCURSES_CONST char *fmt, va_list argp)
      +vwprintw(WINDOW *win, const char *fmt, va_list argp)
       {
           char *buf;
           int code = ERR;
      @@ -134,9 +134,6 @@
       
           if ((buf = _nc_printf_string(fmt, argp)) != 0) {
       	code = waddstr(win, buf);
      -#if USE_SAFE_SPRINTF
      -	free(buf);
      -#endif
           }
           returnCode(code);
       }
      diff -urNd -urNd ncurses-5.3/ncurses/base/lib_scroll.c ncurses-5.3.20030906.orig/ncurses/base/lib_scroll.c
      --- ncurses-5.3/ncurses/base/lib_scroll.c	Tue Dec 18 19:06:55 2001
      +++ ncurses-5.3.20030906.orig/ncurses/base/lib_scroll.c	Fri Sep 12 16:41:24 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998,2001,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -27,7 +27,7 @@
        ****************************************************************************/
       
       /****************************************************************************
      - *  Author: Thomas E. Dickey 1996-2001                                      *
      + *  Author: Thomas E. Dickey 1996-2003                                      *
        *     and: Zeyd M. Ben-Halim  1992,1995               *
        *     and: Eric S. Raymond                          *
        ****************************************************************************/
      @@ -43,7 +43,7 @@
       
       #include 
       
      -MODULE_ID("$Id: lib_scroll.c,v 1.23 2001/12/19 01:06:55 tom Exp $")
      +MODULE_ID("$Id: lib_scroll.c,v 1.24 2003/07/26 23:25:26 tom Exp $")
       
       NCURSES_EXPORT(void)
       _nc_scroll_window(WINDOW *win, int const n, NCURSES_SIZE_T const top,
      @@ -77,24 +77,15 @@
           /* shift n lines downwards */
           if (n < 0) {
       	limit = top - n;
      -	if (limit > win->_maxy)
      -	    limit = win->_maxy;
      -	for (line = bottom; line >= limit; line--) {
      -	    if (line + n >= 0) {
      -		TR(TRACE_MOVE, ("...copying %d to %d", line + n, line));
      -		memcpy(win->_line[line].text,
      -		       win->_line[line + n].text,
      -		       to_copy);
      -		if_USE_SCROLL_HINTS(win->_line[line].oldindex =
      -				    win->_line[line + n].oldindex);
      -	    } else {
      -		TR(TRACE_MOVE, ("...filling %d", line));
      -		for (j = 0; j <= win->_maxx; j++)
      -		    win->_line[line].text[j] = blank;
      -		if_USE_SCROLL_HINTS(win->_line[line].oldindex = _NEWINDEX);
      -	    }
      +	for (line = bottom; line >= limit && line >= 0; line--) {
      +	    TR(TRACE_MOVE, ("...copying %d to %d", line + n, line));
      +	    memcpy(win->_line[line].text,
      +		   win->_line[line + n].text,
      +		   to_copy);
      +	    if_USE_SCROLL_HINTS(win->_line[line].oldindex =
      +				win->_line[line + n].oldindex);
       	}
      -	for (line = top; line < limit; line++) {
      +	for (line = top; line < limit && line <= win->_maxy; line++) {
       	    TR(TRACE_MOVE, ("...filling %d", line));
       	    for (j = 0; j <= win->_maxx; j++)
       		win->_line[line].text[j] = blank;
      @@ -105,25 +96,14 @@
           /* shift n lines upwards */
           if (n > 0) {
       	limit = bottom - n;
      -	if (limit < 0)
      -	    limit = 0;
      -	for (line = top; line <= limit; line++) {
      -	    if (line + n <= win->_maxy) {
      -		TR(TRACE_MOVE, ("...copying %d to %d", line + n, line));
      -		memcpy(win->_line[line].text,
      -		       win->_line[line + n].text,
      -		       to_copy);
      -		if_USE_SCROLL_HINTS(win->_line[line].oldindex =
      -				    win->_line[line + n].oldindex);
      -	    } else {
      -		TR(TRACE_MOVE, ("...filling %d", line));
      -		for (j = 0; j <= win->_maxx; j++)
      -		    win->_line[line].text[j] = blank;
      -		if_USE_SCROLL_HINTS(win->_line[line].oldindex = _NEWINDEX);
      -	    }
      +	for (line = top; line <= limit && line <= win->_maxy; line++) {
      +	    memcpy(win->_line[line].text,
      +		   win->_line[line + n].text,
      +		   to_copy);
      +	    if_USE_SCROLL_HINTS(win->_line[line].oldindex =
      +				win->_line[line + n].oldindex);
       	}
      -	for (line = bottom; line > limit; line--) {
      -	    TR(TRACE_MOVE, ("...filling %d", line));
      +	for (line = bottom; line > limit && line >= 0; line--) {
       	    for (j = 0; j <= win->_maxx; j++)
       		win->_line[line].text[j] = blank;
       	    if_USE_SCROLL_HINTS(win->_line[line].oldindex = _NEWINDEX);
      @@ -142,11 +122,9 @@
       	returnCode(ERR);
           }
       
      -    if (n == 0)
      -	returnCode(OK);
      -
      -    _nc_scroll_window(win, n, win->_regtop, win->_regbottom, win->_nc_bkgd);
      -
      -    _nc_synchook(win);
      +    if (n != 0) {
      +	_nc_scroll_window(win, n, win->_regtop, win->_regbottom, win->_nc_bkgd);
      +	_nc_synchook(win);
      +    }
           returnCode(OK);
       }
      diff -urNd -urNd ncurses-5.3/ncurses/base/lib_set_term.c ncurses-5.3.20030906.orig/ncurses/base/lib_set_term.c
      --- ncurses-5.3/ncurses/base/lib_set_term.c	Sat Sep 14 17:48:00 2002
      +++ ncurses-5.3.20030906.orig/ncurses/base/lib_set_term.c	Fri Sep 12 16:41:56 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -43,7 +43,7 @@
       #include 		/* cur_term */
       #include 
       
      -MODULE_ID("$Id: lib_set_term.c,v 1.71 2002/09/14 22:48:00 tom Exp $")
      +MODULE_ID("$Id: lib_set_term.c,v 1.78 2003/08/09 20:41:12 tom Exp $")
       
       NCURSES_EXPORT(SCREEN *)
       set_term(SCREEN * screenp)
      @@ -61,7 +61,6 @@
           stdscr = SP->_stdscr;
           COLORS = SP->_color_count;
           COLOR_PAIRS = SP->_pair_count;
      -    memcpy(acs_map, SP->_acs_map, sizeof(SP->_acs_map[0]) * ACS_LEN);
       
           T((T_RETURN("%p"), oldSP));
           return (oldSP);
      @@ -84,6 +83,7 @@
       delscreen(SCREEN * sp)
       {
           SCREEN **scan = &_nc_screen_chain;
      +    int i;
       
           T((T_CALLED("delscreen(%p)"), sp));
       
      @@ -100,8 +100,13 @@
           (void) _nc_freewin(sp->_stdscr);
       
           if (sp->_slk != 0) {
      -	FreeIfNeeded(sp->_slk->ent);
      -	FreeIfNeeded(sp->_slk->buffer);
      +	if (sp->_slk->ent != 0) {
      +	    for (i = 0; i < sp->_slk->labcnt; ++i) {
      +		FreeIfNeeded(sp->_slk->ent[i].ent_text);
      +		FreeIfNeeded(sp->_slk->ent[i].form_text);
      +	    }
      +	    free(sp->_slk->ent);
      +	}
       	free(sp->_slk);
       	sp->_slk = 0;
           }
      @@ -204,7 +209,7 @@
       #endif
       
       NCURSES_EXPORT(int)
      -_nc_setupscreen(short slines, short const scolumns, FILE * output)
      +_nc_setupscreen(short slines, short const scolumns, FILE *output)
       /* OS-independent screen initializations */
       {
           int bottom_stolen = 0;
      @@ -377,8 +382,15 @@
           _nc_init_acs();
       #if USE_WIDEC_SUPPORT
           _nc_init_wacs();
      +
      +    SP->_screen_acs_fix = (_nc_unicode_locale() && _nc_locale_breaks_acs());
      +    {
      +	char *env = _nc_get_locale();
      +	SP->_posix_locale = ((env == 0)
      +			     || !strcmp(env, "C")
      +			     || !strcmp(env, "POSIX"));
      +    }
       #endif
      -    memcpy(SP->_acs_map, acs_map, sizeof(chtype) * ACS_LEN);
       
           _nc_idcok = TRUE;
           _nc_idlok = FALSE;
      diff -urNd -urNd ncurses-5.3/ncurses/base/lib_slk.c ncurses-5.3.20030906.orig/ncurses/base/lib_slk.c
      --- ncurses-5.3/ncurses/base/lib_slk.c	Sat Sep 28 12:46:40 2002
      +++ ncurses-5.3.20030906.orig/ncurses/base/lib_slk.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2000,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -41,7 +41,7 @@
       #include 
       #include 		/* num_labels, label_*, plab_norm */
       
      -MODULE_ID("$Id: lib_slk.c,v 1.24 2002/09/28 17:46:40 tom Exp $")
      +MODULE_ID("$Id: lib_slk.c,v 1.28 2003/05/24 21:10:28 tom Exp $")
       
       /*
        * We'd like to move these into the screen context structure, but cannot,
      @@ -64,12 +64,26 @@
       	wmove(win, 0, 0);
       
       	for (i = 0; i < SP->_slk->maxlab; i++) {
      -	    mvwprintw(win, 0, SP->_slk->ent[i].x, "F%d", i + 1);
      +	    mvwprintw(win, 0, SP->_slk->ent[i].ent_x, "F%d", i + 1);
       	}
           }
       }
       
       /*
      + * Free any memory related to soft labels, return an error.
      + */
      +static int
      +slk_failed(void)
      +{
      +    if (SP->_slk) {
      +	FreeIfNeeded(SP->_slk->ent);
      +	free(SP->_slk);
      +	SP->_slk = (SLK *) 0;
      +    }
      +    return ERR;
      +}
      +
      +/*
        * Initialize soft labels.
        * Called from newterm()
        */
      @@ -78,19 +92,26 @@
       {
           int i, x;
           int res = OK;
      -    char *p;
           unsigned max_length;
       
      -    T(("slk_initialize()"));
      +    T((T_CALLED("_nc_slk_initialize()")));
       
           if (SP->_slk) {		/* we did this already, so simply return */
      -	return (OK);
      +	returnCode(OK);
           } else if ((SP->_slk = typeCalloc(SLK, 1)) == 0)
      -	return (ERR);
      +	returnCode(ERR);
       
           SP->_slk->ent = NULL;
      -    SP->_slk->buffer = NULL;
      -    SP->_slk->attr = A_STANDOUT;
      +
      +    /*
      +     * If we use colors, vidputs() will suppress video attributes that conflict
      +     * with colors.  In that case, we're still guaranteed that "reverse" would
      +     * work.
      +     */
      +    if ((no_color_video & 1) == 0)
      +	SP->_slk->attr = A_STANDOUT;
      +    else
      +	SP->_slk->attr = A_REVERSE;
       
           SP->_slk->maxlab = ((num_labels > 0)
       			? num_labels
      @@ -106,19 +127,19 @@
       	|| SP->_slk->labcnt <= 0
       	|| (SP->_slk->ent = typeCalloc(slk_ent,
       				       (unsigned) SP->_slk->labcnt)) == NULL)
      -	goto exception;
      +	returnCode(slk_failed());
       
           max_length = SP->_slk->maxlen;
      -    p = SP->_slk->buffer = (char *) calloc((unsigned) (2 * SP->_slk->labcnt),
      -					   (1 + max_length));
      -    if (SP->_slk->buffer == NULL)
      -	goto exception;
      -
           for (i = 0; i < SP->_slk->labcnt; i++) {
      -	SP->_slk->ent[i].text = p;
      -	p += (1 + max_length);
      -	SP->_slk->ent[i].form_text = p;
      -	p += (1 + max_length);
      +
      +	if ((SP->_slk->ent[i].ent_text = (char *)_nc_doalloc(0, max_length + 1)) == 0)
      +	    returnCode(slk_failed());
      +	memset(SP->_slk->ent[i].ent_text, 0, max_length + 1);
      +
      +	if ((SP->_slk->ent[i].form_text = (char *)_nc_doalloc(0, max_length + 1)) == 0)
      +	    returnCode(slk_failed());
      +	memset(SP->_slk->ent[i].form_text, 0, max_length + 1);
      +
       	memset(SP->_slk->ent[i].form_text, ' ', max_length);
       	SP->_slk->ent[i].visible = (i < SP->_slk->maxlab);
           }
      @@ -129,7 +150,7 @@
       	    gap = 1;
       
       	for (i = x = 0; i < SP->_slk->maxlab; i++) {
      -	    SP->_slk->ent[i].x = x;
      +	    SP->_slk->ent[i].ent_x = x;
       	    x += max_length;
       	    x += (i == 3 || i == 7) ? gap : 1;
       	}
      @@ -141,7 +162,7 @@
       	    if (gap < 1)
       		gap = 1;
       	    for (i = x = 0; i < SP->_slk->maxlab; i++) {
      -		SP->_slk->ent[i].x = x;
      +		SP->_slk->ent[i].ent_x = x;
       		x += max_length;
       		x += (i == 3) ? gap : 1;
       	    }
      @@ -153,24 +174,17 @@
       		if (gap < 1)
       		    gap = 1;
       		for (i = x = 0; i < SP->_slk->maxlab; i++) {
      -		    SP->_slk->ent[i].x = x;
      +		    SP->_slk->ent[i].ent_x = x;
       		    x += max_length;
       		    x += (i == 2 || i == 4) ? gap : 1;
       		}
       	    } else
      -		goto exception;
      +		returnCode(slk_failed());
       	}
           }
           SP->_slk->dirty = TRUE;
           if ((SP->_slk->win = stwin) == NULL) {
      -      exception:
      -	if (SP->_slk) {
      -	    FreeIfNeeded(SP->_slk->buffer);
      -	    FreeIfNeeded(SP->_slk->ent);
      -	    free(SP->_slk);
      -	    SP->_slk = (SLK *) 0;
      -	    res = (ERR);
      -	}
      +	returnCode(slk_failed());
           }
       
           /* We now reset the format so that the next newterm has again
      @@ -179,7 +193,7 @@
            */
           SP->slk_format = _nc_slk_format;
           _nc_slk_format = 0;
      -    return (res);
      +    returnCode(res);
       }
       
       /*
      diff -urNd -urNd ncurses-5.3/ncurses/base/lib_slklab.c ncurses-5.3.20030906.orig/ncurses/base/lib_slklab.c
      --- ncurses-5.3/ncurses/base/lib_slklab.c	Sat Dec  9 20:43:27 2000
      +++ ncurses-5.3.20030906.orig/ncurses/base/lib_slklab.c	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
      + * Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -38,7 +38,7 @@
        */
       #include 
       
      -MODULE_ID("$Id: lib_slklab.c,v 1.6 2000/12/10 02:43:27 tom Exp $")
      +MODULE_ID("$Id: lib_slklab.c,v 1.7 2003/03/29 22:53:48 tom Exp $")
       
       NCURSES_EXPORT(char *)
       slk_label(int n)
      @@ -47,5 +47,5 @@
       
           if (SP == NULL || SP->_slk == NULL || n < 1 || n > SP->_slk->labcnt)
       	returnPtr(0);
      -    returnPtr(SP->_slk->ent[n - 1].text);
      +    returnPtr(SP->_slk->ent[n - 1].ent_text);
       }
      diff -urNd -urNd ncurses-5.3/ncurses/base/lib_slkrefr.c ncurses-5.3.20030906.orig/ncurses/base/lib_slkrefr.c
      --- ncurses-5.3/ncurses/base/lib_slkrefr.c	Sat Dec  9 20:43:27 2000
      +++ ncurses-5.3.20030906.orig/ncurses/base/lib_slkrefr.c	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
      + * Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -38,7 +38,7 @@
       #include 
       #include 		/* num_labels, label_*, plab_norm */
       
      -MODULE_ID("$Id: lib_slkrefr.c,v 1.10 2000/12/10 02:43:27 tom Exp $")
      +MODULE_ID("$Id: lib_slkrefr.c,v 1.11 2003/03/29 22:53:48 tom Exp $")
       
       /*
        * Write the soft labels to the soft-key window.
      @@ -58,7 +58,7 @@
       			putp(tparm(plab_norm, i + 1, slk->ent[i].form_text));
       		    }
       		} else {
      -		    wmove(slk->win, SLK_LINES(fmt) - 1, slk->ent[i].x);
      +		    wmove(slk->win, SLK_LINES(fmt) - 1, slk->ent[i].ent_x);
       		    if (SP && SP->_slk)
       			wattrset(slk->win, SP->_slk->attr);
       		    waddnstr(slk->win, slk->ent[i].form_text,
      diff -urNd -urNd ncurses-5.3/ncurses/base/lib_slkset.c ncurses-5.3.20030906.orig/ncurses/base/lib_slkset.c
      --- ncurses-5.3/ncurses/base/lib_slkset.c	Sat Jun  2 17:50:29 2001
      +++ ncurses-5.3.20030906.orig/ncurses/base/lib_slkset.c	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2001,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -38,13 +38,14 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: lib_slkset.c,v 1.7 2001/06/02 22:50:29 skimo Exp $")
      +MODULE_ID("$Id: lib_slkset.c,v 1.10 2003/04/12 21:32:16 tom Exp $")
       
       NCURSES_EXPORT(int)
       slk_set(int i, const char *astr, int format)
       {
           SLK *slk = SP->_slk;
           size_t len;
      +    int offset;
           const char *str = astr;
           const char *p;
       
      @@ -64,33 +65,30 @@
           --i;			/* Adjust numbering of labels */
       
           len = (size_t) (p - str);
      -    if (len > (unsigned) slk->maxlen)
      +    if (len > (size_t) slk->maxlen)
       	len = slk->maxlen;
           if (len == 0)
      -	slk->ent[i].text[0] = 0;
      +	slk->ent[i].ent_text[0] = 0;
           else
      -	(void) strncpy(slk->ent[i].text, str, len);
      +	strncpy(slk->ent[i].ent_text, str, len)[len] = 0;
           memset(slk->ent[i].form_text, ' ', (unsigned) slk->maxlen);
      -    slk->ent[i].text[slk->maxlen] = 0;
      -    /* len = strlen(slk->ent[i].text); */
      +    slk->ent[i].ent_text[slk->maxlen] = 0;
       
           switch (format) {
      +    default:
           case 0:			/* left-justified */
      -	memcpy(slk->ent[i].form_text,
      -	       slk->ent[i].text,
      -	       len);
      +	offset = 0;
       	break;
           case 1:			/* centered */
      -	memcpy(slk->ent[i].form_text + (slk->maxlen - len) / 2,
      -	       slk->ent[i].text,
      -	       len);
      +	offset = (slk->maxlen - len) / 2;
       	break;
           case 2:			/* right-justified */
      -	memcpy(slk->ent[i].form_text + slk->maxlen - len,
      -	       slk->ent[i].text,
      -	       len);
      +	offset = slk->maxlen - len;
       	break;
           }
      +    memcpy(slk->ent[i].form_text + offset,
      +	   slk->ent[i].ent_text,
      +	   len);
           slk->ent[i].form_text[slk->maxlen] = 0;
           slk->ent[i].dirty = TRUE;
           returnCode(OK);
      diff -urNd -urNd ncurses-5.3/ncurses/base/resizeterm.c ncurses-5.3.20030906.orig/ncurses/base/resizeterm.c
      --- ncurses-5.3/ncurses/base/resizeterm.c	Sat Jul 13 16:32:57 2002
      +++ ncurses-5.3.20030906.orig/ncurses/base/resizeterm.c	Tue May 13 20:08:22 2003
      @@ -41,10 +41,13 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: resizeterm.c,v 1.14 2002/07/13 21:32:57 tom Exp $")
      +MODULE_ID("$Id: resizeterm.c,v 1.15 2002/12/28 01:21:34 tom Exp $")
       
       #define stolen_lines (screen_lines - SP->_lines_avail)
       
      +static int current_lines;
      +static int current_cols;
      +
       NCURSES_EXPORT(bool)
       is_term_resized(int ToLines, int ToCols)
       {
      @@ -99,7 +102,7 @@
       adjust_window(WINDOW *win, int ToLines, int ToCols, int stolen)
       {
           int result;
      -    int bottom = screen_lines + SP->_topstolen - stolen;
      +    int bottom = current_lines + SP->_topstolen - stolen;
           int myLines = win->_maxy + 1;
           int myCols = win->_maxx + 1;
       
      @@ -109,13 +112,13 @@
              getbegy(win), getbegx(win)));
       
           if (win->_begy >= bottom) {
      -	win->_begy += (ToLines - screen_lines);
      +	win->_begy += (ToLines - current_lines);
           } else {
      -	if (myLines == screen_lines - stolen
      -	    && ToLines != screen_lines)
      +	if (myLines == current_lines - stolen
      +	    && ToLines != current_lines)
       	    myLines = ToLines - stolen;
      -	else if (myLines == screen_lines
      -		 && ToLines != screen_lines)
      +	else if (myLines == current_lines
      +		 && ToLines != current_lines)
       	    myLines = ToLines;
           }
       
      @@ -125,12 +128,12 @@
           if (myCols > ToCols)
       	myCols = ToCols;
       
      -    if (myLines == screen_lines
      -	&& ToLines != screen_lines)
      -	myCols = ToLines;
      +    if (myLines == current_lines
      +	&& ToLines != current_lines)
      +	myLines = ToLines;
       
      -    if (myCols == screen_columns
      -	&& ToCols != screen_columns)
      +    if (myCols == current_cols
      +	&& ToCols != current_cols)
       	myCols = ToCols;
       
           result = wresize(win, myLines, myCols);
      @@ -216,15 +219,19 @@
              screen_lines, screen_columns));
       
           if (is_term_resized(ToLines, ToCols)) {
      -	int myLines = screen_lines;
      -	int myCols = screen_columns;
      +	int myLines = current_lines = screen_lines;
      +	int myCols = current_cols = screen_columns;
       
       	if (ToLines > screen_lines) {
       	    increase_size(myLines = ToLines, myCols, was_stolen);
      +	    current_lines = myLines;
      +	    current_cols = myCols;
       	}
       
       	if (ToCols > screen_columns) {
       	    increase_size(myLines, myCols = ToCols, was_stolen);
      +	    current_lines = myLines;
      +	    current_cols = myCols;
       	}
       
       	if (ToLines < myLines ||
      diff -urNd -urNd ncurses-5.3/ncurses/base/safe_sprintf.c ncurses-5.3.20030906.orig/ncurses/base/safe_sprintf.c
      --- ncurses-5.3/ncurses/base/safe_sprintf.c	Sat Jul  7 19:58:34 2001
      +++ ncurses-5.3.20030906.orig/ncurses/base/safe_sprintf.c	Fri Sep 12 16:41:56 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2001,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -33,7 +33,7 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: safe_sprintf.c,v 1.14 2001/07/08 00:58:34 tom Exp $")
      +MODULE_ID("$Id: safe_sprintf.c,v 1.18 2003/08/09 21:52:04 tom Exp $")
       
       #if USE_SAFE_SPRINTF
       
      @@ -56,10 +56,13 @@
           char *buffer;
           char *format;
           int len = 0;
      +    size_t fmt_len;
      +    char fmt_arg[BUFSIZ];
       
           if (fmt == 0 || *fmt == '\0')
      -	return -1;
      -    if ((format = typeMalloc(char, strlen(fmt) + 1)) == 0)
      +	return 0;
      +    fmt_len = strlen(fmt) + 1;
      +    if ((format = typeMalloc(char, fmt_len)) == 0)
       	  return -1;
           if ((buffer = typeMalloc(char, length)) == 0) {
       	free(format);
      @@ -106,7 +109,12 @@
       		    } else if (state == Prec) {
       			prec = ival;
       		    }
      -		    sprintf(&format[--f], "%d", ival);
      +		    sprintf(fmt_arg, "%d", ival);
      +		    fmt_len += strlen(fmt_arg);
      +		    if ((format = realloc(format, fmt_len)) == 0) {
      +			return -1;
      +		    }
      +		    strcpy(&format[--f], fmt_arg);
       		    f = strlen(format);
       		} else if (isalpha(UChar(*fmt))) {
       		    done = TRUE;
      @@ -203,42 +211,52 @@
        * Wrapper for vsprintf that allocates a buffer big enough to hold the result.
        */
       NCURSES_EXPORT(char *)
      -_nc_printf_string
      -(const char *fmt, va_list ap)
      +_nc_printf_string(const char *fmt, va_list ap)
       {
      +    static char *buf;
      +    static size_t used;
      +    char *result = 0;
      +
      +    if (fmt != 0) {
       #if USE_SAFE_SPRINTF
      -    char *buf = 0;
      -    int len = _nc_printf_length(fmt, ap);
      +	int len = _nc_printf_length(fmt, ap);
       
      -    if (len > 0) {
      -	if ((buf = typeMalloc(char, len + 1)) == 0)
      -	      return (0);
      -	vsprintf(buf, fmt, ap);
      -    }
      +	if ((int) used < len + 1) {
      +	    used = 2 * (len + 1);
      +	    buf = typeRealloc(char, used, buf);
      +	}
      +	if (buf != 0) {
      +	    *buf = '\0';
      +	    if (len >= 0) {
      +		vsprintf(buf, fmt, ap);
      +	    }
      +	    result = buf;
      +	}
       #else
      -    static int rows, cols;
      -    static char *buf;
      -    static size_t len;
      +	static int rows, cols;
       
      -    if (screen_lines > rows || screen_columns > cols) {
      -	if (screen_lines > rows)
      -	    rows = screen_lines;
      -	if (screen_columns > cols)
      -	    cols = screen_columns;
      -	len = (rows * (cols + 1)) + 1;
      -	buf = typeRealloc(char, len, buf);
      -	if (buf == 0) {
      -	    return (0);
      +	if (screen_lines > rows || screen_columns > cols) {
      +	    if (screen_lines > rows)
      +		rows = screen_lines;
      +	    if (screen_columns > cols)
      +		cols = screen_columns;
      +	    used = (rows * (cols + 1)) + 1;
      +	    buf = typeRealloc(char, used, buf);
       	}
      -    }
       
      -    if (buf != 0) {
      +	if (buf != 0) {
       # if HAVE_VSNPRINTF
      -	vsnprintf(buf, len, fmt, ap);	/* GNU extension */
      +	    vsnprintf(buf, used, fmt, ap);	/* GNU extension */
       # else
      -	vsprintf(buf, fmt, ap);	/* ANSI */
      +	    vsprintf(buf, fmt, ap);	/* ANSI */
       # endif
      -    }
      +	    result = buf;
      +	}
       #endif
      -    return buf;
      +    } else if (buf != 0) {	/* see _nc_freeall() */
      +	free(buf);
      +	buf = 0;
      +	used = 0;
      +    }
      +    return result;
       }
      diff -urNd -urNd ncurses-5.3/ncurses/base/tries.c ncurses-5.3.20030906.orig/ncurses/base/tries.c
      --- ncurses-5.3/ncurses/base/tries.c	Sat Dec 15 18:50:40 2001
      +++ ncurses-5.3.20030906.orig/ncurses/base/tries.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2001,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -39,15 +39,14 @@
       
       #include 
       
      -MODULE_ID("$Id: tries.c,v 1.15 2001/12/16 00:50:40 tom Exp $")
      +MODULE_ID("$Id: tries.c,v 1.19 2003/05/17 23:11:24 tom Exp $")
       
       /*
        * Expand a keycode into the string that it corresponds to, returning null if
        * no match was found, otherwise allocating a string of the result.
        */
       NCURSES_EXPORT(char *)
      -_nc_expand_try
      -(struct tries *tree, unsigned short code, int *count, size_t len)
      +_nc_expand_try(struct tries *tree, unsigned short code, int *count, size_t len)
       {
           struct tries *ptr = tree;
           char *result = 0;
      @@ -84,8 +83,7 @@
        * true if the code was found/removed.
        */
       NCURSES_EXPORT(int)
      -_nc_remove_key
      -(struct tries **tree, unsigned short code)
      +_nc_remove_key(struct tries **tree, unsigned short code)
       {
           T((T_CALLED("_nc_remove_key(%p,%d)"), tree, code));
       
      @@ -117,7 +115,7 @@
        * true if the string was found/removed.
        */
       NCURSES_EXPORT(int)
      -_nc_remove_string(struct tries **tree, char *string)
      +_nc_remove_string(struct tries **tree, const char *string)
       {
           T((T_CALLED("_nc_remove_string(%p,%s)"), tree, _nc_visbuf(string)));
       
      @@ -125,18 +123,17 @@
       	returnCode(FALSE);
       
           while (*tree != 0) {
      -	if ((unsigned char) (*tree)->ch == (unsigned char) *string) {
      +	if (UChar((*tree)->ch) == UChar(*string)) {
       	    if (string[1] != 0)
       		returnCode(_nc_remove_string(&(*tree)->child, string + 1));
      -	    if ((*tree)->child) {
      -		/* don't cut the whole sub-tree */
      -		(*tree)->value = 0;
      -	    } else {
      +	    if ((*tree)->child == 0) {
       		struct tries *to_free = *tree;
       		*tree = (*tree)->sibling;
       		free(to_free);
      +		returnCode(TRUE);
      +	    } else {
      +		returnCode(FALSE);
       	    }
      -	    returnCode(TRUE);
       	}
       	tree = &(*tree)->sibling;
           }
      diff -urNd -urNd ncurses-5.3/ncurses/base/vsscanf.c ncurses-5.3.20030906.orig/ncurses/base/vsscanf.c
      --- ncurses-5.3/ncurses/base/vsscanf.c	Sat Sep  7 12:27:56 2002
      +++ ncurses-5.3.20030906.orig/ncurses/base/vsscanf.c	Sun Jul 20 14:02:08 2003
      @@ -38,7 +38,7 @@
       
       #if !HAVE_VSSCANF
       
      -MODULE_ID("$Id: vsscanf.c,v 1.16 2002/09/07 17:27:56 tom Exp $")
      +MODULE_ID("$Id: vsscanf.c,v 1.17 2003/05/24 21:10:28 tom Exp $")
       
       #if !(HAVE_VFSCANF || HAVE__DOSCAN)
       
      @@ -230,7 +230,7 @@
       		/* find a chunk */
       		state = sUnknown;
       		chunk = cUnknown;
      -		other = cUnknown;
      +		other = oUnknown;
       		pointer = 0;
       		for (n = 0; format[n] != 0 && state != sFinal; ++n) {
       		    my_fmt[n] = format[n];
      diff -urNd -urNd ncurses-5.3/ncurses/curses.priv.h ncurses-5.3.20030906.orig/ncurses/curses.priv.h
      --- ncurses-5.3/ncurses/curses.priv.h	Sat Oct 12 10:49:10 2002
      +++ ncurses-5.3.20030906.orig/ncurses/curses.priv.h	Fri Sep 12 16:42:24 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -34,7 +34,7 @@
       
       
       /*
      - * $Id: curses.priv.h,v 1.228 2002/10/12 15:49:10 tom Exp $
      + * $Id: curses.priv.h,v 1.252 2003/08/23 21:38:49 tom Exp $
        *
        *	curses.priv.h
        *
      @@ -130,7 +130,9 @@
       
       /* EMX mouse support */
       #ifdef __EMX__
      -#define USE_EMX_MOUSE
      +#define USE_EMX_MOUSE 1
      +#else
      +#define USE_EMX_MOUSE 0
       #endif
       
       #define DEFAULT_MAXCLICK 166
      @@ -259,21 +261,32 @@
       
       struct ldat
       {
      -	NCURSES_CH_T	*text;	    	/* text of the line */
      -	NCURSES_SIZE_T	firstchar;  	/* first changed character in the line */
      -	NCURSES_SIZE_T	lastchar;   	/* last changed character in the line */
      -	NCURSES_SIZE_T	oldindex;   	/* index of the line at last update */
      +	NCURSES_CH_T	*text;		/* text of the line */
      +	NCURSES_SIZE_T	firstchar;	/* first changed character in the line */
      +	NCURSES_SIZE_T	lastchar;	/* last changed character in the line */
      +	NCURSES_SIZE_T	oldindex;	/* index of the line at last update */
       };
       
      +typedef enum {
      +	M_XTERM	= -1		/* use xterm's mouse tracking? */
      +	,M_NONE = 0		/* no mouse device */
      +#if USE_GPM_SUPPORT
      +	,M_GPM			/* use GPM */
      +#endif
      +#if USE_SYSMOUSE
      +	,M_SYSMOUSE		/* FreeBSD sysmouse on console */
      +#endif
      +} MouseType;
      +
       /*
        * Structure for soft labels.
        */
       
       typedef struct
       {
      -	char *text;             /* text for the label */
      +	char *ent_text;         /* text for the label */
       	char *form_text;        /* formatted text (left/center/...) */
      -	int x;                  /* x coordinate of this field */
      +	int ent_x;              /* x coordinate of this field */
       	char dirty;             /* this label has changed */
       	char visible;           /* field is visible */
       } slk_ent;
      @@ -283,11 +296,10 @@
       	char hidden;            /* soft labels are hidden */
       	WINDOW *win;
       	slk_ent *ent;
      -	char*  buffer;           /* buffer for labels */
      -	short  maxlab;           /* number of available labels */
      -	short  labcnt;           /* number of allocated labels */
      -	short  maxlen;           /* length of labels */
      -        chtype attr;             /* soft label attribute */
      +	short  maxlab;          /* number of available labels */
      +	short  labcnt;          /* number of allocated labels */
      +	short  maxlen;          /* length of labels */
      +	chtype attr;            /* soft label attribute */
       } SLK;
       
       typedef struct {
      @@ -308,7 +320,7 @@
       	char            *_setbuf;       /* buffered I/O for output          */
       	int		_buffered;      /* setvbuf uses _setbuf data        */
       	int             _checkfd;       /* filedesc for typeahead check     */
      -	struct term     *_term;         /* terminal type information        */
      +	TERMINAL        *_term;         /* terminal type information        */
       	short           _lines;         /* screen lines                     */
       	short           _columns;       /* screen columns                   */
       
      @@ -326,6 +338,7 @@
       	bool            _tried;         /* keypad mode was initialized      */
       	bool            _keypad_on;     /* keypad mode is currently on      */
       
      +	bool		_called_wgetch;	/* check for recursion in wgetch()  */
       	int    	        _fifo[FIFO_SIZE];       /* input push-back buffer   */
       	short           _fifohead,      /* head of fifo queue               */
       	                _fifotail,      /* tail of fifo queue               */
      @@ -339,6 +352,7 @@
       	int             _cursor;        /* visibility of the cursor         */
       	int             _cursrow;       /* physical cursor row              */
       	int             _curscol;       /* physical cursor column           */
      +	bool		_notty;		/* true if we cannot switch non-tty */
       	int             _nl;            /* True if NL -> CR/NL is on        */
       	int             _raw;           /* True if in raw mode              */
       	int             _cbreak;        /* 1 if in cbreak mode              */
      @@ -405,7 +419,7 @@
       #endif
       	chtype          _xmc_suppress;  /* attributes to suppress if xmc     */
       	chtype          _xmc_triggers;  /* attributes to process if xmc      */
      -	chtype          _acs_map[ACS_LEN];
      +	chtype          _acs_map[ACS_LEN]; /* the real alternate-charset map */
       
       	/* used in lib_vidattr.c */
       	bool            _use_rmso;	/* true if we may use 'rmso'         */
      @@ -426,6 +440,7 @@
       	/*
       	 * These are the data that support the mouse interface.
       	 */
      +	MouseType	_mouse_type;
       	int             _maxclick;
       	bool            (*_mouse_event) (SCREEN *);
       	bool            (*_mouse_inline)(SCREEN *);
      @@ -433,6 +448,16 @@
       	void            (*_mouse_resume)(SCREEN *);
       	void            (*_mouse_wrap)  (SCREEN *);
       	int             _mouse_fd;      /* file-descriptor, if any */
      +	NCURSES_CONST char *_mouse_xtermcap; /* string to enable/disable mouse */
      +#if USE_SYSMOUSE
      +	MEVENT		_sysmouse_fifo[FIFO_SIZE];
      +	int		_sysmouse_head;
      +	int		_sysmouse_tail;
      +	int		_sysmouse_char_width;	/* character width */
      +	int		_sysmouse_char_height;	/* character height */
      +	int		_sysmouse_old_buttons;
      +	int		_sysmouse_new_buttons;
      +#endif
       
       	/*
       	 * This supports automatic resizing
      @@ -461,6 +486,14 @@
       	HASHMAP 	*hashtab;
       	int		hashtab_len;
       
      +	/* recent versions of 'screen' have partially-working support for
      +	 * UTF-8, but do not permit ACS at the same time (see tty_update.c).
      +	 */
      +#if USE_WIDEC_SUPPORT
      +	bool		_posix_locale;
      +	bool		_screen_acs_fix;
      +#endif
      +
       	bool            _cleanup;	/* cleanup after int/quit signal */
       	int             (*_outch)(int);	/* output handler if not putc */
       };
      @@ -471,21 +504,19 @@
       #include 
       #endif
       
      -/*
      - * The margins are used in resizeterm() to retain the original layout after
      - * resizing.
      - */
       	WINDOWLIST {
      +	WINDOW	win;	/* first, so WINDOW_EXT() works */
       	WINDOWLIST *next;
      -#if HAVE_RESIZETERM
      -	int	l_margin;
      -	int	r_margin;
      -	int	t_margin;
      -	int	b_margin;
      +#ifdef _XOPEN_SOURCE_EXTENDED
      +	char addch_work[(MB_LEN_MAX * 9) + 1];
      +	int addch_used;
      +	int addch_x;
      +	int addch_y;
       #endif
      -	WINDOW	win;
       };
       
      +#define WINDOW_EXT(win,field) (((WINDOWLIST *)(win))->field)
      +
       /* The terminfo source is assumed to be 7-bit ASCII */
       #define is7bits(c)	((unsigned)(c) < 128)
       
      @@ -539,18 +570,29 @@
       #define O_BINARY 0
       #endif
       
      +#ifdef TRACE
      +#define TRACE_OUTCHARS(n) _nc_outchars += (n);
      +#else
      +#define TRACE_OUTCHARS(n) /* nothing */
      +#endif
      +
       #define UChar(c)	((unsigned char)(c))
       #define ChCharOf(c)	((c) & (chtype)A_CHARTEXT)
       #define ChAttrOf(c)     ((c) & (chtype)A_ATTRIBUTES)
       
      +#ifndef MB_LEN_MAX
      +#define MB_LEN_MAX 8 /* should be >= MB_CUR_MAX, but that may be a function */
      +#endif
      +
       #if USE_WIDEC_SUPPORT /* { */
      +#define NulChar		0,0,0,0	/* FIXME: see CCHARW_MAX */
       #define CharOf(c)	((c).chars[0])
       #define AttrOf(c)	((c).attr)
       #define AddAttr(c,a)	(c).attr |= a
       #define RemAttr(c,a)	(c).attr &= ~(a)
       #define SetAttr(c,a)	(c).attr = a
      -#define NewChar(ch)	{ ChAttrOf(ch), { ChCharOf(ch) } }
      -#define NewChar2(c,a)	{ a, { c } }
      +#define NewChar(ch)	{ ChAttrOf(ch), { ChCharOf(ch), NulChar } }
      +#define NewChar2(c,a)	{ a, { c, NulChar } }
       #define CharEq(a,b)	(!memcmp(&a, &b, sizeof(a)))
       #define SetChar(ch,c,a)	do { 							    \
       			    NCURSES_CH_T *_cp = &ch;				    \
      @@ -562,9 +604,14 @@
       #define CARG_CH_T	const NCURSES_CH_T *
       #define PUTC_DATA	char PUTC_buf[MB_LEN_MAX]; int PUTC_i, PUTC_n; \
       			mbstate_t PUT_st; wchar_t PUTC_ch
      +#define PUTC_INIT	memset (&PUT_st, '\0', sizeof (PUT_st));		    \
      +			PUTC_i = 0
       #define PUTC(ch,b)	do { if(!isnac(ch)) { 					    \
      -			    memset (&PUT_st, '\0', sizeof (PUT_st));		    \
      -			    PUTC_i = 0;						    \
      +			if (Charable(ch)) {					    \
      +			    fputc(CharOf(ch), b);				    \
      +			    TRACE_OUTCHARS(1);					    \
      +			} else {						    \
      +			    PUTC_INIT;						    \
       			    do {						    \
       				PUTC_ch = PUTC_i < CCHARW_MAX ?			    \
       					    (ch).chars[PUTC_i] : L'\0';		    \
      @@ -577,7 +624,8 @@
       				fwrite(PUTC_buf, (unsigned) PUTC_n, 1, b);	    \
       				++PUTC_i;					    \
       			    } while (PUTC_ch != L'\0');				    \
      -			} } while (0)
      +			    TRACE_OUTCHARS(PUTC_i);				    \
      +			} } } while (0)
       
       #define BLANK		{ WA_NORMAL, ' ' }
       #define ISBLANK(ch)	((ch).chars[0] == L' ' && (ch).chars[1] == L'\0')
      @@ -585,9 +633,10 @@
       #define WA_NAC		1
       #define isnac(ch)	(AttrOf(ch) & WA_NAC)
       #define if_WIDEC(code)  code
      -#define Charable(ch)	(!isnac(ch) &&  			   	\
      -			 (ch).chars[1] == L'\0' &&			\
      -                         (wctob(CharOf(ch)) == (char)CharOf(ch)))
      +#define Charable(ch)	((SP != 0 && SP->_posix_locale)			\
      +			 || (!isnac(ch) &&				\
      +			     (ch).chars[1] == L'\0' &&			\
      +                             _nc_is_charable(CharOf(ch))))
       
       #define L(ch)		L ## ch
       #else /* }{ */
      @@ -743,7 +792,7 @@
       
       #define ALL_BUT_COLOR ((chtype)~(A_COLOR))
       #define IGNORE_COLOR_OFF FALSE
      -#define NONBLANK_ATTR (A_BOLD|A_DIM|A_BLINK)
      +#define NONBLANK_ATTR (A_NORMAL|A_BOLD|A_DIM|A_BLINK)
       #define XMC_CHANGES(c) ((c) & SP->_xmc_suppress)
       
       #define toggle_attr_on(S,at) {\
      @@ -781,7 +830,7 @@
       		: ((enter_insert_mode && exit_insert_mode) \
       		  ? SP->_smir_cost + SP->_rmir_cost + (SP->_ip_cost * count) \
       		  : ((insert_character != 0) \
      -		    ? (SP->_ich1_cost * count) \
      +		    ? ((SP->_ich1_cost + SP->_ip_cost) * count) \
       		    : INFINITY)))
       
       #if USE_XMC_SUPPORT
      @@ -847,6 +896,13 @@
       #define getcwd(buf,len) getwd(buf)
       #endif
       
      +/* charable.c */
      +#if USE_WIDEC_SUPPORT
      +extern NCURSES_EXPORT(bool) _nc_is_charable(wchar_t);
      +extern NCURSES_EXPORT(int) _nc_to_char(wint_t);
      +extern NCURSES_EXPORT(wint_t) _nc_to_widechar(int);
      +#endif
      +
       /* doupdate.c */
       #if USE_XMC_SUPPORT
       extern NCURSES_EXPORT(void) _nc_do_xmc_glitch (attr_t);
      @@ -872,6 +928,9 @@
       /* lib_getch.c */
       extern NCURSES_EXPORT(int) _nc_wgetch(WINDOW *, unsigned long *, int EVENTLIST_2nd(_nc_eventlist *));
       
      +/* lib_insch.c */
      +extern NCURSES_EXPORT(void) _nc_insert_ch(WINDOW *, chtype);
      +
       /* lib_mvcur.c */
       #define INFINITY	1000000	/* cost: too high to use */
       
      @@ -890,6 +949,12 @@
       
       /* lib_mvcur.c */
       #define INFINITY	1000000	/* cost: too high to use */
      +#define BAUDBYTE	9	/* 9 = 7 bits + 1 parity + 1 stop */
      +
      +/* lib_setup.c */
      +extern NCURSES_EXPORT(char *) _nc_get_locale(void);
      +extern NCURSES_EXPORT(int) _nc_unicode_locale(void);
      +extern NCURSES_EXPORT(int) _nc_locale_breaks_acs(void);
       
       /* lib_wacs.c */
       #if USE_WIDEC_SUPPORT
      @@ -897,9 +962,10 @@
       #endif
       
       typedef struct {
      -    char *s_head;
      -    char *s_tail;
      -    size_t s_size;
      +    char *s_head;	/* beginning of the string (may be null) */
      +    char *s_tail;	/* end of the string (may be null) */
      +    size_t s_size;	/* current remaining size available */
      +    size_t s_init;	/* total size available */
       } string_desc;
       
       /* strings.c */
      @@ -931,14 +997,15 @@
       extern NCURSES_EXPORT(void) _nc_add_to_try (struct tries **, const char *, unsigned short);
       extern NCURSES_EXPORT(char *) _nc_expand_try (struct tries *, unsigned short, int *, size_t);
       extern NCURSES_EXPORT(int) _nc_remove_key (struct tries **, unsigned short);
      -extern NCURSES_EXPORT(int) _nc_remove_string (struct tries **, char *);
      +extern NCURSES_EXPORT(int) _nc_remove_string (struct tries **, const char *);
       
       /* elsewhere ... */
      +extern NCURSES_EXPORT(NCURSES_CH_T) _nc_render (WINDOW *, NCURSES_CH_T);
       extern NCURSES_EXPORT(WINDOW *) _nc_makenew (int, int, int, int, int);
       extern NCURSES_EXPORT(char *) _nc_home_terminfo (void);
       extern NCURSES_EXPORT(char *) _nc_trace_buf (int, size_t);
      -extern NCURSES_EXPORT(NCURSES_CH_T) _nc_render (WINDOW *, NCURSES_CH_T);
      -extern NCURSES_EXPORT(int)  _nc_access (const char *, int);
      +extern NCURSES_EXPORT(char *) _nc_trace_bufcat (int, const char *);
      +extern NCURSES_EXPORT(int) _nc_access (const char *, int);
       extern NCURSES_EXPORT(int) _nc_baudrate (int);
       extern NCURSES_EXPORT(int) _nc_freewin (WINDOW *);
       extern NCURSES_EXPORT(int) _nc_getenv_num (const char *);
      diff -urNd -urNd ncurses-5.3/ncurses/llib-lncurses ncurses-5.3.20030906.orig/ncurses/llib-lncurses
      --- ncurses-5.3/ncurses/llib-lncurses	Sat Aug 31 16:34:07 2002
      +++ ncurses-5.3.20030906.orig/ncurses/llib-lncurses	Fri Sep 12 16:42:59 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -27,7 +27,7 @@
        ****************************************************************************/
       
       /****************************************************************************
      - *  Author: Thomas E. Dickey 1996-2001,2002                                 *
      + *  Author: Thomas E. Dickey 1996-2002,2003                                 *
        ****************************************************************************/
       /* LINTLIBRARY */
       
      @@ -59,8 +59,8 @@
       
       #undef _nc_scroll_oldhash
       void	_nc_scroll_oldhash(
      -		int	n, 
      -		int	top, 
      +		int	n,
      +		int	top,
       		int	bot)
       		{ /* void */ }
       
      @@ -70,25 +70,25 @@
       
       #undef _nc_render
       chtype	_nc_render(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		chtype	ch)
       		{ return(*(chtype *)0); }
       
       #undef _nc_waddch_nosync
       int	_nc_waddch_nosync(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		const chtype c)
       		{ return(*(int *)0); }
       
       #undef waddch
       int	waddch(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		const chtype ch)
       		{ return(*(int *)0); }
       
       #undef wechochar
       int	wechochar(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		const chtype ch)
       		{ return(*(int *)0); }
       
      @@ -96,15 +96,15 @@
       
       #undef waddnstr
       int	waddnstr(
      -		WINDOW	*win, 
      -		const char *astr, 
      +		WINDOW	*win,
      +		const char *astr,
       		int	n)
       		{ return(*(int *)0); }
       
       #undef waddchnstr
       int	waddchnstr(
      -		WINDOW	*win, 
      -		const chtype *astr, 
      +		WINDOW	*win,
      +		const chtype *astr,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -118,13 +118,13 @@
       
       #undef wbkgdset
       void	wbkgdset(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		chtype	ch)
       		{ /* void */ }
       
       #undef wbkgd
       int	wbkgd(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		chtype	ch)
       		{ return(*(int *)0); }
       
      @@ -132,14 +132,14 @@
       
       #undef wborder
       int	wborder(
      -		WINDOW	*win, 
      -		chtype	ls, 
      -		chtype	rs, 
      -		chtype	ts, 
      -		chtype	bs, 
      -		chtype	tl, 
      -		chtype	tr, 
      -		chtype	bl, 
      +		WINDOW	*win,
      +		chtype	ls,
      +		chtype	rs,
      +		chtype	ts,
      +		chtype	bs,
      +		chtype	tl,
      +		chtype	tr,
      +		chtype	bl,
       		chtype	br)
       		{ return(*(int *)0); }
       
      @@ -147,10 +147,10 @@
       
       #undef wchgat
       int	wchgat(
      -		WINDOW	*win, 
      -		int	n, 
      -		attr_t	attr, 
      -		short	color, 
      +		WINDOW	*win,
      +		int	n,
      +		attr_t	attr,
      +		short	color,
       		const void *opts)
       		{ return(*(int *)0); }
       
      @@ -165,7 +165,7 @@
       
       #undef clearok
       int	clearok(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
      @@ -192,22 +192,26 @@
       #undef COLORS
       int	COLORS;
       
      +#undef _nc_reset_colors
      +NCURSES_BOOL _nc_reset_colors(void)
      +		{ return(*(NCURSES_BOOL *)0); }
      +
       #undef start_color
       int	start_color(void)
       		{ return(*(int *)0); }
       
       #undef init_pair
       int	init_pair(
      -		short	pair, 
      -		short	f, 
      +		short	pair,
      +		short	f,
       		short	b)
       		{ return(*(int *)0); }
       
       #undef init_color
       int	init_color(
      -		short	color, 
      -		short	r, 
      -		short	g, 
      +		short	color,
      +		short	r,
      +		short	g,
       		short	b)
       		{ return(*(int *)0); }
       
      @@ -221,24 +225,24 @@
       
       #undef color_content
       int	color_content(
      -		short	color, 
      -		short	*r, 
      -		short	*g, 
      +		short	color,
      +		short	*r,
      +		short	*g,
       		short	*b)
       		{ return(*(int *)0); }
       
       #undef pair_content
       int	pair_content(
      -		short	pair, 
      -		short	*f, 
      +		short	pair,
      +		short	*f,
       		short	*b)
       		{ return(*(int *)0); }
       
       #undef _nc_do_color
       void	_nc_do_color(
      -		int	old_pair, 
      -		int	pair, 
      -		NCURSES_BOOL reverse, 
      +		int	old_pair,
      +		int	pair,
      +		NCURSES_BOOL reverse,
       		int	(*outc)(
       		int	p1))
       		{ /* void */ }
      @@ -247,8 +251,8 @@
       
       #undef wcolor_set
       int	wcolor_set(
      -		WINDOW	*win, 
      -		short	color_pair_number, 
      +		WINDOW	*win,
      +		short	color_pair_number,
       		void	*opts)
       		{ return(*(int *)0); }
       
      @@ -304,7 +308,7 @@
       
       #undef addchnstr
       int	addchnstr(
      -		const chtype *a1, 
      +		const chtype *a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -315,7 +319,7 @@
       
       #undef addnstr
       int	addnstr(
      -		const char *a1, 
      +		const char *a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -341,27 +345,27 @@
       
       #undef attr_get
       int	attr_get(
      -		attr_t	*a1, 
      -		short	*a2, 
      +		attr_t	*a1,
      +		short	*a2,
       		void	*z)
       		{ return(*(int *)0); }
       
       #undef attr_off
       int	attr_off(
      -		attr_t	a1, 
      +		attr_t	a1,
       		void	*z)
       		{ return(*(int *)0); }
       
       #undef attr_on
       int	attr_on(
      -		attr_t	a1, 
      +		attr_t	a1,
       		void	*z)
       		{ return(*(int *)0); }
       
       #undef attr_set
       int	attr_set(
      -		attr_t	a1, 
      -		short	a2, 
      +		attr_t	a1,
      +		short	a2,
       		void	*z)
       		{ return(*(int *)0); }
       
      @@ -377,28 +381,28 @@
       
       #undef border
       int	border(
      -		chtype	a1, 
      -		chtype	a2, 
      -		chtype	a3, 
      -		chtype	a4, 
      -		chtype	a5, 
      -		chtype	a6, 
      -		chtype	a7, 
      +		chtype	a1,
      +		chtype	a2,
      +		chtype	a3,
      +		chtype	a4,
      +		chtype	a5,
      +		chtype	a6,
      +		chtype	a7,
       		chtype	z)
       		{ return(*(int *)0); }
       
       #undef box
       int	box(
      -		WINDOW	*a1, 
      -		chtype	a2, 
      +		WINDOW	*a1,
      +		chtype	a2,
       		chtype	z)
       		{ return(*(int *)0); }
       
       #undef chgat
       int	chgat(
      -		int	a1, 
      -		attr_t	a2, 
      -		short	a3, 
      +		int	a1,
      +		attr_t	a2,
      +		short	a3,
       		const void *z)
       		{ return(*(int *)0); }
       
      @@ -416,7 +420,7 @@
       
       #undef color_set
       int	color_set(
      -		short	a1, 
      +		short	a1,
       		void	*z)
       		{ return(*(int *)0); }
       
      @@ -453,7 +457,7 @@
       
       #undef getnstr
       int	getnstr(
      -		char	*a1, 
      +		char	*a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -464,7 +468,7 @@
       
       #undef hline
       int	hline(
      -		chtype	a1, 
      +		chtype	a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -474,7 +478,7 @@
       
       #undef inchnstr
       int	inchnstr(
      -		chtype	*a1, 
      +		chtype	*a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -485,7 +489,7 @@
       
       #undef innstr
       int	innstr(
      -		char	*a1, 
      +		char	*a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -505,7 +509,7 @@
       
       #undef insnstr
       int	insnstr(
      -		const char *a1, 
      +		const char *a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -521,323 +525,323 @@
       
       #undef move
       int	move(
      -		int	a1, 
      +		int	a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvaddch
       int	mvaddch(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		const chtype z)
       		{ return(*(int *)0); }
       
       #undef mvaddchnstr
       int	mvaddchnstr(
      -		int	a1, 
      -		int	a2, 
      -		const chtype *a3, 
      +		int	a1,
      +		int	a2,
      +		const chtype *a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvaddchstr
       int	mvaddchstr(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		const chtype *z)
       		{ return(*(int *)0); }
       
       #undef mvaddnstr
       int	mvaddnstr(
      -		int	a1, 
      -		int	a2, 
      -		const char *a3, 
      +		int	a1,
      +		int	a2,
      +		const char *a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvaddstr
       int	mvaddstr(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		const char *z)
       		{ return(*(int *)0); }
       
       #undef mvchgat
       int	mvchgat(
      -		int	a1, 
      -		int	a2, 
      -		int	a3, 
      -		attr_t	a4, 
      -		short	a5, 
      +		int	a1,
      +		int	a2,
      +		int	a3,
      +		attr_t	a4,
      +		short	a5,
       		const void *z)
       		{ return(*(int *)0); }
       
       #undef mvdelch
       int	mvdelch(
      -		int	a1, 
      +		int	a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvgetch
       int	mvgetch(
      -		int	a1, 
      +		int	a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvgetnstr
       int	mvgetnstr(
      -		int	a1, 
      -		int	a2, 
      -		char	*a3, 
      +		int	a1,
      +		int	a2,
      +		char	*a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvgetstr
       int	mvgetstr(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		char	*z)
       		{ return(*(int *)0); }
       
       #undef mvhline
       int	mvhline(
      -		int	a1, 
      -		int	a2, 
      -		chtype	a3, 
      +		int	a1,
      +		int	a2,
      +		chtype	a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvinch
       chtype	mvinch(
      -		int	a1, 
      +		int	a1,
       		int	z)
       		{ return(*(chtype *)0); }
       
       #undef mvinchnstr
       int	mvinchnstr(
      -		int	a1, 
      -		int	a2, 
      -		chtype	*a3, 
      +		int	a1,
      +		int	a2,
      +		chtype	*a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvinchstr
       int	mvinchstr(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		chtype	*z)
       		{ return(*(int *)0); }
       
       #undef mvinnstr
       int	mvinnstr(
      -		int	a1, 
      -		int	a2, 
      -		char	*a3, 
      +		int	a1,
      +		int	a2,
      +		char	*a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvinsch
       int	mvinsch(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		chtype	z)
       		{ return(*(int *)0); }
       
       #undef mvinsnstr
       int	mvinsnstr(
      -		int	a1, 
      -		int	a2, 
      -		const char *a3, 
      +		int	a1,
      +		int	a2,
      +		const char *a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvinsstr
       int	mvinsstr(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		const char *z)
       		{ return(*(int *)0); }
       
       #undef mvinstr
       int	mvinstr(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		char	*z)
       		{ return(*(int *)0); }
       
       #undef mvvline
       int	mvvline(
      -		int	a1, 
      -		int	a2, 
      -		chtype	a3, 
      +		int	a1,
      +		int	a2,
      +		chtype	a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwaddch
       int	mvwaddch(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		const chtype z)
       		{ return(*(int *)0); }
       
       #undef mvwaddchnstr
       int	mvwaddchnstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		const chtype *a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		const chtype *a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwaddchstr
       int	mvwaddchstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		const chtype *z)
       		{ return(*(int *)0); }
       
       #undef mvwaddnstr
       int	mvwaddnstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		const char *a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		const char *a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwaddstr
       int	mvwaddstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		const char *z)
       		{ return(*(int *)0); }
       
       #undef mvwchgat
       int	mvwchgat(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		int	a4, 
      -		attr_t	a5, 
      -		short	a6, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		int	a4,
      +		attr_t	a5,
      +		short	a6,
       		const void *z)
       		{ return(*(int *)0); }
       
       #undef mvwdelch
       int	mvwdelch(
      -		WINDOW	*a1, 
      -		int	a2, 
      +		WINDOW	*a1,
      +		int	a2,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwgetch
       int	mvwgetch(
      -		WINDOW	*a1, 
      -		int	a2, 
      +		WINDOW	*a1,
      +		int	a2,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwgetnstr
       int	mvwgetnstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		char	*a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		char	*a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwgetstr
       int	mvwgetstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		char	*z)
       		{ return(*(int *)0); }
       
       #undef mvwhline
       int	mvwhline(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		chtype	a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		chtype	a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwinch
       chtype	mvwinch(
      -		WINDOW	*a1, 
      -		int	a2, 
      +		WINDOW	*a1,
      +		int	a2,
       		int	z)
       		{ return(*(chtype *)0); }
       
       #undef mvwinchnstr
       int	mvwinchnstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		chtype	*a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		chtype	*a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwinchstr
       int	mvwinchstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		chtype	*z)
       		{ return(*(int *)0); }
       
       #undef mvwinnstr
       int	mvwinnstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		char	*a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		char	*a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwinsch
       int	mvwinsch(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		chtype	z)
       		{ return(*(int *)0); }
       
       #undef mvwinsnstr
       int	mvwinsnstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		const char *a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		const char *a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwinsstr
       int	mvwinsstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		const char *z)
       		{ return(*(int *)0); }
       
       #undef mvwinstr
       int	mvwinstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		char	*z)
       		{ return(*(int *)0); }
       
       #undef mvwvline
       int	mvwvline(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		chtype	a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		chtype	a4,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -867,7 +871,7 @@
       
       #undef setscrreg
       int	setscrreg(
      -		int	a1, 
      +		int	a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -886,8 +890,8 @@
       
       #undef touchline
       int	touchline(
      -		WINDOW	*a1, 
      -		int	a2, 
      +		WINDOW	*a1,
      +		int	a2,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -903,67 +907,67 @@
       
       #undef vline
       int	vline(
      -		chtype	a1, 
      +		chtype	a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef vw_printw
       int	vw_printw(
      -		WINDOW	*a1, 
      -		char	*a2, 
      +		WINDOW	*a1,
      +		const char *a2,
       		va_list	z)
       		{ return(*(int *)0); }
       
       #undef vw_scanw
       int	vw_scanw(
      -		WINDOW	*a1, 
      -		char	*a2, 
      +		WINDOW	*a1,
      +		char	*a2,
       		va_list	z)
       		{ return(*(int *)0); }
       
       #undef waddchstr
       int	waddchstr(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		const chtype *z)
       		{ return(*(int *)0); }
       
       #undef waddstr
       int	waddstr(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		const char *z)
       		{ return(*(int *)0); }
       
       #undef wattron
       int	wattron(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef wattroff
       int	wattroff(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef wattrset
       int	wattrset(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef wattr_get
       int	wattr_get(
      -		WINDOW	*a1, 
      -		attr_t	*a2, 
      -		short	*a3, 
      +		WINDOW	*a1,
      +		attr_t	*a2,
      +		short	*a3,
       		void	*z)
       		{ return(*(int *)0); }
       
       #undef wattr_set
       int	wattr_set(
      -		WINDOW	*a1, 
      -		attr_t	a2, 
      -		short	a3, 
      +		WINDOW	*a1,
      +		attr_t	a2,
      +		short	a3,
       		void	*z)
       		{ return(*(int *)0); }
       
      @@ -974,13 +978,13 @@
       
       #undef wgetstr
       int	wgetstr(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		char	*z)
       		{ return(*(int *)0); }
       
       #undef winchstr
       int	winchstr(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		chtype	*z)
       		{ return(*(int *)0); }
       
      @@ -991,13 +995,13 @@
       
       #undef winsstr
       int	winsstr(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		const char *z)
       		{ return(*(int *)0); }
       
       #undef winstr
       int	winstr(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		char	*z)
       		{ return(*(int *)0); }
       
      @@ -1013,8 +1017,8 @@
       
       #undef mouse_trafo
       NCURSES_BOOL mouse_trafo(
      -		int	*a1, 
      -		int	*a2, 
      +		int	*a1,
      +		int	*a2,
       		NCURSES_BOOL z)
       		{ return(*(NCURSES_BOOL *)0); }
       
      @@ -1027,8 +1031,8 @@
       
       #undef _nc_wgetch
       int	_nc_wgetch(
      -		WINDOW	*win, 
      -		unsigned long *result, 
      +		WINDOW	*win,
      +		unsigned long *result,
       		int	use_meta)
       		{ return(*(int *)0); }
       
      @@ -1041,8 +1045,8 @@
       
       #undef wgetnstr
       int	wgetnstr(
      -		WINDOW	*win, 
      -		char	*str, 
      +		WINDOW	*win,
      +		char	*str,
       		int	maxlen)
       		{ return(*(int *)0); }
       
      @@ -1050,8 +1054,8 @@
       
       #undef whline
       int	whline(
      -		WINDOW	*win, 
      -		chtype	ch, 
      +		WINDOW	*win,
      +		chtype	ch,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -1059,7 +1063,7 @@
       
       #undef immedok
       void	immedok(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ /* void */ }
       
      @@ -1067,8 +1071,8 @@
       
       #undef winchnstr
       int	winchnstr(
      -		WINDOW	*win, 
      -		chtype	*str, 
      +		WINDOW	*win,
      +		chtype	*str,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -1080,26 +1084,30 @@
       
       /* ./base/lib_insch.c */
       
      +#undef _nc_insert_ch
      +void	_nc_insert_ch(
      +		WINDOW	*win,
      +		chtype	ch)
      +		{ /* void */ }
      +
       #undef winsch
       int	winsch(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		chtype	c)
       		{ return(*(int *)0); }
       
      -/* ./base/lib_insdel.c */
      -
      -#undef winsdelln
      -int	winsdelln(
      -		WINDOW	*win, 
      +#undef winsnstr
      +int	winsnstr(
      +		WINDOW	*win,
      +		const char *s,
       		int	n)
       		{ return(*(int *)0); }
       
      -/* ./base/lib_insstr.c */
      +/* ./base/lib_insdel.c */
       
      -#undef winsnstr
      -int	winsnstr(
      -		WINDOW	*win, 
      -		const char *s, 
      +#undef winsdelln
      +int	winsdelln(
      +		WINDOW	*win,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -1107,8 +1115,8 @@
       
       #undef winnstr
       int	winnstr(
      -		WINDOW	*win, 
      -		char	*str, 
      +		WINDOW	*win,
      +		char	*str,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -1122,7 +1130,7 @@
       
       #undef leaveok
       int	leaveok(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
      @@ -1140,14 +1148,14 @@
       
       #undef mousemask
       mmask_t	mousemask(
      -		mmask_t	newmask, 
      +		mmask_t	newmask,
       		mmask_t	*oldmask)
       		{ return(*(mmask_t *)0); }
       
       #undef wenclose
       NCURSES_BOOL wenclose(
      -		const WINDOW *win, 
      -		int	y, 
      +		const WINDOW *win,
      +		int	y,
       		int	x)
       		{ return(*(NCURSES_BOOL *)0); }
       
      @@ -1162,9 +1170,9 @@
       
       #undef wmouse_trafo
       NCURSES_BOOL wmouse_trafo(
      -		const WINDOW *win, 
      -		int	*pY, 
      -		int	*pX, 
      +		const WINDOW *win,
      +		int	*pY,
      +		int	*pX,
       		NCURSES_BOOL to_screen)
       		{ return(*(NCURSES_BOOL *)0); }
       
      @@ -1172,8 +1180,8 @@
       
       #undef wmove
       int	wmove(
      -		WINDOW	*win, 
      -		int	y, 
      +		WINDOW	*win,
      +		int	y,
       		int	x)
       		{ return(*(int *)0); }
       
      @@ -1181,7 +1189,7 @@
       
       #undef _nc_msec_cost
       int	_nc_msec_cost(
      -		const char *const cap, 
      +		const char *const cap,
       		int	affcnt)
       		{ return(*(int *)0); }
       
      @@ -1199,9 +1207,9 @@
       
       #undef mvcur
       int	mvcur(
      -		int	yold, 
      -		int	xold, 
      -		int	ynew, 
      +		int	yold,
      +		int	xold,
      +		int	ynew,
       		int	xnew)
       		{ return(*(int *)0); }
       
      @@ -1212,8 +1220,8 @@
       
       #undef mvwin
       int	mvwin(
      -		WINDOW	*win, 
      -		int	by, 
      +		WINDOW	*win,
      +		int	by,
       		int	bx)
       		{ return(*(int *)0); }
       
      @@ -1225,8 +1233,8 @@
       
       #undef newterm
       SCREEN	*newterm(
      -		char	*name, 
      -		FILE	*ofp, 
      +		char	*name,
      +		FILE	*ofp,
       		FILE	*ifp)
       		{ return(*(SCREEN **)0); }
       
      @@ -1239,36 +1247,36 @@
       
       #undef newwin
       WINDOW	*newwin(
      -		int	num_lines, 
      -		int	num_columns, 
      -		int	begy, 
      +		int	num_lines,
      +		int	num_columns,
      +		int	begy,
       		int	begx)
       		{ return(*(WINDOW **)0); }
       
       #undef derwin
       WINDOW	*derwin(
      -		WINDOW	*orig, 
      -		int	num_lines, 
      -		int	num_columns, 
      -		int	begy, 
      +		WINDOW	*orig,
      +		int	num_lines,
      +		int	num_columns,
      +		int	begy,
       		int	begx)
       		{ return(*(WINDOW **)0); }
       
       #undef subwin
       WINDOW	*subwin(
      -		WINDOW	*w, 
      -		int	l, 
      -		int	c, 
      -		int	y, 
      +		WINDOW	*w,
      +		int	l,
      +		int	c,
      +		int	y,
       		int	x)
       		{ return(*(WINDOW **)0); }
       
       #undef _nc_makenew
       WINDOW	*_nc_makenew(
      -		int	num_lines, 
      -		int	num_columns, 
      -		int	begy, 
      -		int	begx, 
      +		int	num_lines,
      +		int	num_columns,
      +		int	begy,
      +		int	begx,
       		int	flags)
       		{ return(*(WINDOW **)0); }
       
      @@ -1286,26 +1294,26 @@
       
       #undef overlay
       int	overlay(
      -		const WINDOW *win1, 
      +		const WINDOW *win1,
       		WINDOW	*win2)
       		{ return(*(int *)0); }
       
       #undef overwrite
       int	overwrite(
      -		const WINDOW *win1, 
      +		const WINDOW *win1,
       		WINDOW	*win2)
       		{ return(*(int *)0); }
       
       #undef copywin
       int	copywin(
      -		const WINDOW *src, 
      -		WINDOW	*dst, 
      -		int	sminrow, 
      -		int	smincol, 
      -		int	dminrow, 
      -		int	dmincol, 
      -		int	dmaxrow, 
      -		int	dmaxcol, 
      +		const WINDOW *src,
      +		WINDOW	*dst,
      +		int	sminrow,
      +		int	smincol,
      +		int	dminrow,
      +		int	dmincol,
      +		int	dmaxrow,
      +		int	dmaxcol,
       		int	over)
       		{ return(*(int *)0); }
       
      @@ -1313,44 +1321,44 @@
       
       #undef newpad
       WINDOW	*newpad(
      -		int	l, 
      +		int	l,
       		int	c)
       		{ return(*(WINDOW **)0); }
       
       #undef subpad
       WINDOW	*subpad(
      -		WINDOW	*orig, 
      -		int	l, 
      -		int	c, 
      -		int	begy, 
      +		WINDOW	*orig,
      +		int	l,
      +		int	c,
      +		int	begy,
       		int	begx)
       		{ return(*(WINDOW **)0); }
       
       #undef prefresh
       int	prefresh(
      -		WINDOW	*win, 
      -		int	pminrow, 
      -		int	pmincol, 
      -		int	sminrow, 
      -		int	smincol, 
      -		int	smaxrow, 
      +		WINDOW	*win,
      +		int	pminrow,
      +		int	pmincol,
      +		int	sminrow,
      +		int	smincol,
      +		int	smaxrow,
       		int	smaxcol)
       		{ return(*(int *)0); }
       
       #undef pnoutrefresh
       int	pnoutrefresh(
      -		WINDOW	*win, 
      -		int	pminrow, 
      -		int	pmincol, 
      -		int	sminrow, 
      -		int	smincol, 
      -		int	smaxrow, 
      +		WINDOW	*win,
      +		int	pminrow,
      +		int	pmincol,
      +		int	sminrow,
      +		int	smincol,
      +		int	smaxrow,
       		int	smaxcol)
       		{ return(*(int *)0); }
       
       #undef pechochar
       int	pechochar(
      -		WINDOW	*pad, 
      +		WINDOW	*pad,
       		const chtype ch)
       		{ return(*(int *)0); }
       
      @@ -1358,38 +1366,38 @@
       
       #undef printw
       int	printw(
      -		char	*fmt, 
      +		const char *fmt,
       		...)
       		{ return(*(int *)0); }
       
       #undef wprintw
       int	wprintw(
      -		WINDOW	*win, 
      -		char	*fmt, 
      +		WINDOW	*win,
      +		const char *fmt,
       		...)
       		{ return(*(int *)0); }
       
       #undef mvprintw
       int	mvprintw(
      -		int	y, 
      -		int	x, 
      -		char	*fmt, 
      +		int	y,
      +		int	x,
      +		const char *fmt,
       		...)
       		{ return(*(int *)0); }
       
       #undef mvwprintw
       int	mvwprintw(
      -		WINDOW	*win, 
      -		int	y, 
      -		int	x, 
      -		char	*fmt, 
      +		WINDOW	*win,
      +		int	y,
      +		int	x,
      +		const char *fmt,
       		...)
       		{ return(*(int *)0); }
       
       #undef vwprintw
       int	vwprintw(
      -		WINDOW	*win, 
      -		char	*fmt, 
      +		WINDOW	*win,
      +		const char *fmt,
       		va_list	argp)
       		{ return(*(int *)0); }
       
      @@ -1397,8 +1405,8 @@
       
       #undef wredrawln
       int	wredrawln(
      -		WINDOW	*win, 
      -		int	beg, 
      +		WINDOW	*win,
      +		int	beg,
       		int	num)
       		{ return(*(int *)0); }
       
      @@ -1418,8 +1426,8 @@
       
       #undef restartterm
       int	restartterm(
      -		char	*termp, 
      -		int	filenum, 
      +		char	*termp,
      +		int	filenum,
       		int	*errret)
       		{ return(*(int *)0); }
       
      @@ -1427,38 +1435,38 @@
       
       #undef vwscanw
       int	vwscanw(
      -		WINDOW	*win, 
      -		char	*fmt, 
      +		WINDOW	*win,
      +		char	*fmt,
       		va_list	argp)
       		{ return(*(int *)0); }
       
       #undef scanw
       int	scanw(
      -		char	*fmt, 
      +		char	*fmt,
       		...)
       		{ return(*(int *)0); }
       
       #undef wscanw
       int	wscanw(
      -		WINDOW	*win, 
      -		char	*fmt, 
      +		WINDOW	*win,
      +		char	*fmt,
       		...)
       		{ return(*(int *)0); }
       
       #undef mvscanw
       int	mvscanw(
      -		int	y, 
      -		int	x, 
      -		char	*fmt, 
      +		int	y,
      +		int	x,
      +		char	*fmt,
       		...)
       		{ return(*(int *)0); }
       
       #undef mvwscanw
       int	mvwscanw(
      -		WINDOW	*win, 
      -		int	y, 
      -		int	x, 
      -		char	*fmt, 
      +		WINDOW	*win,
      +		int	y,
      +		int	x,
      +		char	*fmt,
       		...)
       		{ return(*(int *)0); }
       
      @@ -1471,7 +1479,7 @@
       
       #undef putwin
       int	putwin(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		FILE	*filep)
       		{ return(*(int *)0); }
       
      @@ -1499,16 +1507,16 @@
       
       #undef _nc_scroll_window
       void	_nc_scroll_window(
      -		WINDOW	*win, 
      -		int const n, 
      -		short const top, 
      -		short const bottom, 
      +		WINDOW	*win,
      +		int const n,
      +		short const top,
      +		short const bottom,
       		chtype	blank)
       		{ /* void */ }
       
       #undef wscrl
       int	wscrl(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -1516,7 +1524,7 @@
       
       #undef scrollok
       int	scrollok(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
      @@ -1524,8 +1532,8 @@
       
       #undef wsetscrreg
       int	wsetscrreg(
      -		WINDOW	*win, 
      -		int	top, 
      +		WINDOW	*win,
      +		int	top,
       		int	bottom)
       		{ return(*(int *)0); }
       
      @@ -1543,24 +1551,24 @@
       
       #undef _nc_setupscreen
       int	_nc_setupscreen(
      -		short	slines, 
      -		short const scolumns, 
      +		short	slines,
      +		short const scolumns,
       		FILE	*output)
       		{ return(*(int *)0); }
       
       #undef _nc_ripoffline
       int	_nc_ripoffline(
      -		int	line, 
      +		int	line,
       		int	(*init)(
      -		WINDOW	*p1, 
      +		WINDOW	*p1,
       		int	p2))
       		{ return(*(int *)0); }
       
       #undef ripoffline
       int	ripoffline(
      -		int	line, 
      +		int	line,
       		int	(*init)(
      -		WINDOW	*p1, 
      +		WINDOW	*p1,
       		int	p2))
       		{ return(*(int *)0); }
       
      @@ -1571,7 +1579,7 @@
       
       #undef _nc_slk_initialize
       int	_nc_slk_initialize(
      -		WINDOW	*stwin, 
      +		WINDOW	*stwin,
       		int	cols)
       		{ return(*(int *)0); }
       
      @@ -1583,8 +1591,8 @@
       
       #undef slk_attr_set
       int	slk_attr_set(
      -		const attr_t attr, 
      -		short	color_pair_number, 
      +		const attr_t attr,
      +		short	color_pair_number,
       		void	*opts)
       		{ return(*(int *)0); }
       
      @@ -1656,8 +1664,8 @@
       
       #undef slk_set
       int	slk_set(
      -		int	i, 
      -		const char *astr, 
      +		int	i,
      +		const char *astr,
       		int	format)
       		{ return(*(int *)0); }
       
      @@ -1671,7 +1679,7 @@
       
       #undef is_linetouched
       NCURSES_BOOL is_linetouched(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		int	line)
       		{ return(*(NCURSES_BOOL *)0); }
       
      @@ -1682,9 +1690,9 @@
       
       #undef wtouchln
       int	wtouchln(
      -		WINDOW	*win, 
      -		int	y, 
      -		int	n, 
      +		WINDOW	*win,
      +		int	y,
      +		int	n,
       		int	changed)
       		{ return(*(int *)0); }
       
      @@ -1692,7 +1700,7 @@
       
       #undef _traceattr2
       char	*_traceattr2(
      -		int	bufnum, 
      +		int	bufnum,
       		attr_t	newmode)
       		{ return(*(char **)0); }
       
      @@ -1708,13 +1716,13 @@
       
       #undef _nc_altcharset_name
       const char *_nc_altcharset_name(
      -		attr_t	attr, 
      +		attr_t	attr,
       		chtype	ch)
       		{ return(*(const char **)0); }
       
       #undef _tracechtype2
       char	*_tracechtype2(
      -		int	bufnum, 
      +		int	bufnum,
       		chtype	ch)
       		{ return(*(char **)0); }
       
      @@ -1724,15 +1732,15 @@
       		{ return(*(char **)0); }
       
       #undef _nc_retrace_chtype
      -attr_t	_nc_retrace_chtype(
      -		attr_t	code)
      -		{ return(*(attr_t *)0); }
      +chtype	_nc_retrace_chtype(
      +		chtype	code)
      +		{ return(*(chtype *)0); }
       
       /* ./trace/lib_tracedmp.c */
       
       #undef _tracedump
       void	_tracedump(
      -		const char *name, 
      +		const char *name,
       		WINDOW	*win)
       		{ /* void */ }
       
      @@ -1767,7 +1775,7 @@
       
       #undef vidputs
       int	vidputs(
      -		chtype	newmode, 
      +		chtype	newmode,
       		int	(*outc)(
       		int	p1))
       		{ return(*(int *)0); }
      @@ -1785,8 +1793,8 @@
       
       #undef wvline
       int	wvline(
      -		WINDOW	*win, 
      -		chtype	ch, 
      +		WINDOW	*win,
      +		chtype	ch,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -1794,8 +1802,8 @@
       
       #undef wattr_off
       int	wattr_off(
      -		WINDOW	*win, 
      -		attr_t	at, 
      +		WINDOW	*win,
      +		attr_t	at,
       		void	*opts)
       		{ return(*(int *)0); }
       
      @@ -1803,8 +1811,8 @@
       
       #undef wattr_on
       int	wattr_on(
      -		WINDOW	*win, 
      -		attr_t	at, 
      +		WINDOW	*win,
      +		attr_t	at,
       		void	*opts)
       		{ return(*(int *)0); }
       
      @@ -1824,14 +1832,14 @@
       
       #undef mvderwin
       int	mvderwin(
      -		WINDOW	*win, 
      -		int	y, 
      +		WINDOW	*win,
      +		int	y,
       		int	x)
       		{ return(*(int *)0); }
       
       #undef syncok
       int	syncok(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL bf)
       		{ return(*(int *)0); }
       
      @@ -1865,7 +1873,7 @@
       
       #undef _nc_printf_string
       char	*_nc_printf_string(
      -		const char *fmt, 
      +		const char *fmt,
       		va_list	ap)
       		{ return(*(char **)0); }
       
      @@ -1885,9 +1893,9 @@
       
       #undef _nc_scrolln
       int	_nc_scrolln(
      -		int	n, 
      -		int	top, 
      -		int	bot, 
      +		int	n,
      +		int	top,
      +		int	bot,
       		int	maxy)
       		{ return(*(int *)0); }
       
      @@ -1916,7 +1924,7 @@
       
       #undef _nc_varargs
       char	*_nc_varargs(
      -		const char *fmt, 
      +		const char *fmt,
       		va_list	ap)
       		{ return(*(char **)0); }
       
      @@ -1938,11 +1946,19 @@
       void	_nc_vsscanf(void)
       		{ /* void */ }
       
      +/* ./base/lib_freeall.c */
      +
      +#include 
      +
      +#undef _nc_freeall
      +void	_nc_freeall(void)
      +		{ /* void */ }
      +
       /* ./base/define_key.c */
       
       #undef define_key
       int	define_key(
      -		char	*str, 
      +		const char *str,
       		int	keycode)
       		{ return(*(int *)0); }
       
      @@ -1950,13 +1966,13 @@
       
       #undef _nc_toggle_attr_on
       void	_nc_toggle_attr_on(
      -		attr_t	*S, 
      +		attr_t	*S,
       		attr_t	at)
       		{ /* void */ }
       
       #undef _nc_toggle_attr_off
       void	_nc_toggle_attr_off(
      -		attr_t	*S, 
      +		attr_t	*S,
       		attr_t	at)
       		{ /* void */ }
       
      @@ -1975,11 +1991,18 @@
       		chtype	c)
       		{ /* void */ }
       
      +/* ./base/key_defined.c */
      +
      +#undef key_defined
      +int	key_defined(
      +		const char *str)
      +		{ return(*(int *)0); }
      +
       /* ./base/keybound.c */
       
       #undef keybound
       char	*keybound(
      -		int	code, 
      +		int	code,
       		int	count)
       		{ return(*(char **)0); }
       
      @@ -1987,7 +2010,7 @@
       
       #undef keyok
       int	keyok(
      -		int	c, 
      +		int	c,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
      @@ -1999,23 +2022,15 @@
       
       #undef assume_default_colors
       int	assume_default_colors(
      -		int	fg, 
      +		int	fg,
       		int	bg)
       		{ return(*(int *)0); }
       
      -/* ./base/lib_freeall.c */
      -
      -#include 
      -
      -#undef _nc_freeall
      -void	_nc_freeall(void)
      -		{ /* void */ }
      -
       /* ./tinfo/lib_print.c */
       
       #undef mcprint
       int	mcprint(
      -		char	*data, 
      +		char	*data,
       		int	len)
       		{ return(*(int *)0); }
       
      @@ -2023,19 +2038,19 @@
       
       #undef is_term_resized
       NCURSES_BOOL is_term_resized(
      -		int	ToLines, 
      +		int	ToLines,
       		int	ToCols)
       		{ return(*(NCURSES_BOOL *)0); }
       
       #undef resize_term
       int	resize_term(
      -		int	ToLines, 
      +		int	ToLines,
       		int	ToCols)
       		{ return(*(int *)0); }
       
       #undef resizeterm
       int	resizeterm(
      -		int	ToLines, 
      +		int	ToLines,
       		int	ToCols)
       		{ return(*(int *)0); }
       
      @@ -2050,22 +2065,22 @@
       
       #undef _nc_expand_try
       char	*_nc_expand_try(
      -		struct tries *tree, 
      -		unsigned short code, 
      -		int	*count, 
      +		struct tries *tree,
      +		unsigned short code,
      +		int	*count,
       		size_t	len)
       		{ return(*(char **)0); }
       
       #undef _nc_remove_key
       int	_nc_remove_key(
      -		struct tries **tree, 
      +		struct tries **tree,
       		unsigned short code)
       		{ return(*(int *)0); }
       
       #undef _nc_remove_string
       int	_nc_remove_string(
      -		struct tries **tree, 
      -		char	*string)
      +		struct tries **tree,
      +		const char *string)
       		{ return(*(int *)0); }
       
       /* ./base/version.c */
      @@ -2078,8 +2093,8 @@
       
       #undef wresize
       int	wresize(
      -		WINDOW	*win, 
      -		int	ToLines, 
      +		WINDOW	*win,
      +		int	ToLines,
       		int	ToCols)
       		{ return(*(int *)0); }
       
      @@ -2090,6 +2105,11 @@
       		char	*path)
       		{ return(*(char **)0); }
       
      +#undef _nc_pathlast
      +unsigned _nc_pathlast(
      +		const char *path)
      +		{ return(*(unsigned *)0); }
      +
       #undef _nc_basename
       char	*_nc_basename(
       		char	*path)
      @@ -2097,7 +2117,7 @@
       
       #undef _nc_access
       int	_nc_access(
      -		const char *path, 
      +		const char *path,
       		int	mode)
       		{ return(*(int *)0); }
       
      @@ -2109,8 +2129,8 @@
       
       #undef _nc_add_to_try
       void	_nc_add_to_try(
      -		struct tries **tree, 
      -		const char *str, 
      +		struct tries **tree,
      +		const char *str,
       		unsigned short code)
       		{ /* void */ }
       
      @@ -2133,13 +2153,13 @@
       
       #undef _nc_wrap_entry
       void	_nc_wrap_entry(
      -		ENTRY	*const ep, 
      +		ENTRY	*const ep,
       		NCURSES_BOOL copy_strings)
       		{ /* void */ }
       
       #undef _nc_merge_entry
       void	_nc_merge_entry(
      -		TERMTYPE *const to, 
      +		TERMTYPE *const to,
       		TERMTYPE *const from)
       		{ /* void */ }
       
      @@ -2147,13 +2167,13 @@
       
       #undef _nc_align_termtype
       void	_nc_align_termtype(
      -		TERMTYPE *to, 
      +		TERMTYPE *to,
       		TERMTYPE *from)
       		{ /* void */ }
       
       #undef _nc_copy_termtype
       void	_nc_copy_termtype(
      -		TERMTYPE *dst, 
      +		TERMTYPE *dst,
       		TERMTYPE *src)
       		{ /* void */ }
       
      @@ -2161,15 +2181,15 @@
       
       #undef _nc_captoinfo
       char	*_nc_captoinfo(
      -		const char *cap, 
      -		const char *s, 
      +		const char *cap,
      +		const char *s,
       		int const parametrized)
       		{ return(*(char **)0); }
       
       #undef _nc_infotocap
       char	*_nc_infotocap(
      -		const char *cap, 
      -		const char *str, 
      +		const char *cap,
      +		const char *str,
       		int const parametrized)
       		{ return(*(char **)0); }
       
      @@ -2231,19 +2251,19 @@
       
       #undef _nc_warning
       void	_nc_warning(
      -		const char *const fmt, 
      +		const char *const fmt,
       		...)
       		{ /* void */ }
       
       #undef _nc_err_abort
       void	_nc_err_abort(
      -		const char *const fmt, 
      +		const char *const fmt,
       		...)
       		{ /* void */ }
       
       #undef _nc_syserr_abort
       void	_nc_syserr_abort(
      -		const char *const fmt, 
      +		const char *const fmt,
       		...)
       		{ /* void */ }
       
      @@ -2251,8 +2271,8 @@
       
       #undef _nc_tic_expand
       char	*_nc_tic_expand(
      -		const char *srcp, 
      -		NCURSES_BOOL tic_format, 
      +		const char *srcp,
      +		NCURSES_BOOL tic_format,
       		int	numbers)
       		{ return(*(char **)0); }
       
      @@ -2262,14 +2282,14 @@
       
       #undef _nc_find_entry
       struct name_table_entry const *_nc_find_entry(
      -		const char *string, 
      +		const char *string,
       		const struct name_table_entry *const *hash_table)
       		{ return(*(struct name_table_entry const **)0); }
       
       #undef _nc_find_type_entry
       struct name_table_entry const *_nc_find_type_entry(
      -		const char *string, 
      -		int	type, 
      +		const char *string,
      +		int	type,
       		const struct name_table_entry *table)
       		{ return(*(struct name_table_entry const **)0); }
       
      @@ -2290,16 +2310,16 @@
       
       #undef _nc_entry_match
       NCURSES_BOOL _nc_entry_match(
      -		char	*n1, 
      +		char	*n1,
       		char	*n2)
       		{ return(*(NCURSES_BOOL *)0); }
       
       #undef _nc_read_entry_source
       void	_nc_read_entry_source(
      -		FILE	*fp, 
      -		char	*buf, 
      -		int	literal, 
      -		NCURSES_BOOL silent, 
      +		FILE	*fp,
      +		char	*buf,
      +		int	literal,
      +		NCURSES_BOOL silent,
       		NCURSES_BOOL (*hook)(
       		ENTRY	*p1))
       		{ /* void */ }
      @@ -2333,7 +2353,7 @@
       
       #undef _nc_trans_string
       char	_nc_trans_string(
      -		char	*ptr, 
      +		char	*ptr,
       		char	*last)
       		{ return(*(char *)0); }
       
      @@ -2349,7 +2369,7 @@
       
       #undef _nc_reset_input
       void	_nc_reset_input(
      -		FILE	*fp, 
      +		FILE	*fp,
       		char	*buf)
       		{ /* void */ }
       
      @@ -2357,7 +2377,7 @@
       
       #undef _nc_doalloc
       void	*_nc_doalloc(
      -		void	*oldp, 
      +		void	*oldp,
       		size_t	amount)
       		{ return(*(void **)0); }
       
      @@ -2425,8 +2445,8 @@
       #include 
       
       struct speed {
      -    int s;			
      -    int sp;			
      +    int s;
      +    int sp;
       };
       
       #undef _nc_baudrate
      @@ -2524,13 +2544,13 @@
       
       #undef idlok
       int	idlok(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
       #undef idcok
       void	idcok(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ /* void */ }
       
      @@ -2541,31 +2561,31 @@
       
       #undef nodelay
       int	nodelay(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
       #undef notimeout
       int	notimeout(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL f)
       		{ return(*(int *)0); }
       
       #undef wtimeout
       void	wtimeout(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		int	delay)
       		{ /* void */ }
       
       #undef keypad
       int	keypad(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
       #undef meta
       int	meta(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
      @@ -2617,7 +2637,7 @@
       
       #undef intrflush
       int	intrflush(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
      @@ -2625,11 +2645,8 @@
       
       #include 
       
      -#undef use_env
      -void	use_env(
      -		NCURSES_BOOL f)
      -		{ /* void */ }
      -
      +#undef ttytype
      +char	ttytype[256 ];
       #undef LINES
       int	LINES;
       #undef COLS
      @@ -2637,17 +2654,31 @@
       #undef TABSIZE
       int	TABSIZE;
       
      +#undef use_env
      +void	use_env(
      +		NCURSES_BOOL f)
      +		{ /* void */ }
      +
       #undef _nc_update_screensize
       void	_nc_update_screensize(void)
       		{ /* void */ }
       
      -#undef ttytype
      -char	ttytype[256 ];
      +#undef _nc_get_locale
      +char	*_nc_get_locale(void)
      +		{ return(*(char **)0); }
      +
      +#undef _nc_unicode_locale
      +int	_nc_unicode_locale(void)
      +		{ return(*(int *)0); }
      +
      +#undef _nc_locale_breaks_acs
      +int	_nc_locale_breaks_acs(void)
      +		{ return(*(int *)0); }
       
       #undef setupterm
       int	setupterm(
      -		char	*tname, 
      -		int	Filedes, 
      +		char	*tname,
      +		int	Filedes,
       		int	*errret)
       		{ return(*(int *)0); }
       
      @@ -2660,7 +2691,7 @@
       
       #undef tgetent
       int	tgetent(
      -		char	*bufp, 
      +		char	*bufp,
       		const char *name)
       		{ return(*(int *)0); }
       
      @@ -2682,7 +2713,7 @@
       
       #undef tgetstr
       char	*tgetstr(
      -		char	*id, 
      +		char	*id,
       		char	**area)
       		{ return(*(char **)0); }
       
      @@ -2696,8 +2727,8 @@
       
       #undef tgoto
       char	*tgoto(
      -		const char *string, 
      -		int	x, 
      +		const char *string,
      +		int	x,
       		int	y)
       		{ return(*(char **)0); }
       
      @@ -2731,9 +2762,16 @@
       #undef _nc_tparm_err
       int	_nc_tparm_err;
       
      +#undef _nc_tparm_analyze
      +int	_nc_tparm_analyze(
      +		const char *string,
      +		char	*p_is_s[9 ],
      +		int	*popcount)
      +		{ return(*(int *)0); }
      +
       #undef tparm
       char	*tparm(
      -		char	*string, 
      +		char	*string,
       		...)
       		{ return(*(char **)0); }
       
      @@ -2767,8 +2805,8 @@
       
       #undef tputs
       int	tputs(
      -		const char *string, 
      -		int	affcnt, 
      +		const char *string,
      +		int	affcnt,
       		int	(*outc)(
       		int	p1))
       		{ return(*(int *)0); }
      @@ -2789,15 +2827,25 @@
       
       #undef _tracef
       void	_tracef(
      -		const char *fmt, 
      +		const char *fmt,
       		...)
       		{ /* void */ }
       
      +#undef _nc_retrace_bool
      +NCURSES_BOOL _nc_retrace_bool(
      +		NCURSES_BOOL code)
      +		{ return(*(NCURSES_BOOL *)0); }
      +
       #undef _nc_retrace_int
       int	_nc_retrace_int(
       		int	code)
       		{ return(*(int *)0); }
       
      +#undef _nc_retrace_unsigned
      +unsigned _nc_retrace_unsigned(
      +		unsigned code)
      +		{ return(*(unsigned *)0); }
      +
       #undef _nc_retrace_ptr
       char	*_nc_retrace_ptr(
       		char	*code)
      @@ -2876,8 +2924,8 @@
       
       #undef _nc_timed_wait
       int	_nc_timed_wait(
      -		int	mode, 
      -		int	milliseconds, 
      +		int	mode,
      +		int	milliseconds,
       		int	*timeleft)
       		{ return(*(int *)0); }
       
      @@ -2890,8 +2938,8 @@
       
       #undef _nc_name_match
       int	_nc_name_match(
      -		const char *const namelst, 
      -		const char *const name, 
      +		const char *const namelst,
      +		const char *const name,
       		const char *const delim)
       		{ return(*(int *)0); }
       
      @@ -2914,14 +2962,14 @@
       
       #undef _nc_parse_entry
       int	_nc_parse_entry(
      -		struct entry *entryp, 
      -		int	literal, 
      +		struct entry *entryp,
      +		int	literal,
       		NCURSES_BOOL silent)
       		{ return(*(int *)0); }
       
       #undef _nc_capcmp
       int	_nc_capcmp(
      -		const char *s, 
      +		const char *s,
       		const char *t)
       		{ return(*(int *)0); }
       
      @@ -2944,14 +2992,14 @@
       
       #undef _nc_read_file_entry
       int	_nc_read_file_entry(
      -		const char *const filename, 
      +		const char *const filename,
       		TERMTYPE *ptr)
       		{ return(*(int *)0); }
       
       #undef _nc_read_entry
       int	_nc_read_entry(
      -		const char *const tn, 
      -		char	*const filename, 
      +		const char *const tn,
      +		char	*const filename,
       		TERMTYPE *const tp)
       		{ return(*(int *)0); }
       
      @@ -2959,7 +3007,7 @@
       
       #undef _nc_read_termcap_entry
       int	_nc_read_termcap_entry(
      -		const char *const tn, 
      +		const char *const tn,
       		TERMTYPE *const tp)
       		{ return(*(int *)0); }
       
      @@ -2967,7 +3015,7 @@
       
       #undef _nc_set_buffer
       void	_nc_set_buffer(
      -		FILE	*ofp, 
      +		FILE	*ofp,
       		NCURSES_BOOL buffered)
       		{ /* void */ }
       
      @@ -2975,32 +3023,32 @@
       
       #undef _nc_str_init
       string_desc *_nc_str_init(
      -		string_desc *dst, 
      -		char	*src, 
      +		string_desc *dst,
      +		char	*src,
       		size_t	len)
       		{ return(*(string_desc **)0); }
       
       #undef _nc_str_null
       string_desc *_nc_str_null(
      -		string_desc *dst, 
      +		string_desc *dst,
       		size_t	len)
       		{ return(*(string_desc **)0); }
       
       #undef _nc_str_copy
       string_desc *_nc_str_copy(
      -		string_desc *dst, 
      +		string_desc *dst,
       		string_desc *src)
       		{ return(*(string_desc **)0); }
       
       #undef _nc_safe_strcat
       NCURSES_BOOL _nc_safe_strcat(
      -		string_desc *dst, 
      +		string_desc *dst,
       		const char *src)
       		{ return(*(NCURSES_BOOL *)0); }
       
       #undef _nc_safe_strcpy
       NCURSES_BOOL _nc_safe_strcpy(
      -		string_desc *dst, 
      +		string_desc *dst,
       		const char *src)
       		{ return(*(NCURSES_BOOL *)0); }
       
      @@ -3013,10 +3061,16 @@
       
       #undef _nc_trace_buf
       char	*_nc_trace_buf(
      -		int	bufnum, 
      +		int	bufnum,
       		size_t	want)
       		{ return(*(char **)0); }
       
      +#undef _nc_trace_bufcat
      +char	*_nc_trace_bufcat(
      +		int	bufnum,
      +		const char *value)
      +		{ return(*(char **)0); }
      +
       /* ./trace/trace_tries.c */
       
       #undef _nc_trace_tries
      @@ -3035,7 +3089,7 @@
       
       #undef _nc_visbuf2
       const char *_nc_visbuf2(
      -		int	bufnum, 
      +		int	bufnum,
       		const char *buf)
       		{ return(*(const char **)0); }
       
      @@ -3044,6 +3098,12 @@
       		const char *buf)
       		{ return(*(const char **)0); }
       
      +#undef _nc_visbufn
      +const char *_nc_visbufn(
      +		const char *buf,
      +		int	len)
      +		{ return(*(const char **)0); }
      +
       /* ./tinfo/write_entry.c */
       
       #undef _nc_set_writedir
      diff -urNd -urNd ncurses-5.3/ncurses/llib-lncursesw ncurses-5.3.20030906.orig/ncurses/llib-lncursesw
      --- ncurses-5.3/ncurses/llib-lncursesw	Sat Aug 31 16:58:14 2002
      +++ ncurses-5.3.20030906.orig/ncurses/llib-lncursesw	Fri Sep 12 16:42:59 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 2001,2002 Free Software Foundation, Inc.                   *
      + * Copyright (c) 2001-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -27,7 +27,7 @@
        ****************************************************************************/
       
       /****************************************************************************
      - *  Author: Thomas E. Dickey 2001,2002                                      *
      + *  Author: Thomas E. Dickey 2001-2003                                      *
        ****************************************************************************/
       /* LINTLIBRARY */
       
      @@ -59,8 +59,8 @@
       
       #undef _nc_scroll_oldhash
       void	_nc_scroll_oldhash(
      -		int	n, 
      -		int	top, 
      +		int	n,
      +		int	top,
       		int	bot)
       		{ /* void */ }
       
      @@ -70,37 +70,37 @@
       
       #undef _nc_render
       cchar_t	_nc_render(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		cchar_t	ch)
       		{ return(*(cchar_t *)0); }
       
       #undef _nc_waddch_nosync
       int	_nc_waddch_nosync(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		const cchar_t c)
       		{ return(*(int *)0); }
       
       #undef waddch
       int	waddch(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		const chtype ch)
       		{ return(*(int *)0); }
       
       #undef wechochar
       int	wechochar(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		const chtype ch)
       		{ return(*(int *)0); }
       
       #undef wadd_wch
       int	wadd_wch(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		const cchar_t *wch)
       		{ return(*(int *)0); }
       
       #undef wecho_wchar
       int	wecho_wchar(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		const cchar_t *wch)
       		{ return(*(int *)0); }
       
      @@ -108,15 +108,15 @@
       
       #undef waddnstr
       int	waddnstr(
      -		WINDOW	*win, 
      -		const char *astr, 
      +		WINDOW	*win,
      +		const char *astr,
       		int	n)
       		{ return(*(int *)0); }
       
       #undef waddchnstr
       int	waddchnstr(
      -		WINDOW	*win, 
      -		const chtype *astr, 
      +		WINDOW	*win,
      +		const chtype *astr,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -127,15 +127,15 @@
       
       #undef wadd_wchnstr
       int	wadd_wchnstr(
      -		WINDOW	*win, 
      -		const cchar_t *const astr, 
      +		WINDOW	*win,
      +		const cchar_t *const astr,
       		int	n)
       		{ return(*(int *)0); }
       
       #undef waddnwstr
       int	waddnwstr(
      -		WINDOW	*win, 
      -		const wchar_t *str, 
      +		WINDOW	*win,
      +		const wchar_t *str,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -149,25 +149,25 @@
       
       #undef wbkgrndset
       void	wbkgrndset(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		const cchar_t *ch)
       		{ /* void */ }
       
       #undef wbkgdset
       void	wbkgdset(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		chtype	ch)
       		{ /* void */ }
       
       #undef wbkgrnd
       int	wbkgrnd(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		const cchar_t *ch)
       		{ return(*(int *)0); }
       
       #undef wbkgd
       int	wbkgd(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		chtype	ch)
       		{ return(*(int *)0); }
       
      @@ -175,14 +175,14 @@
       
       #undef wborder
       int	wborder(
      -		WINDOW	*win, 
      -		chtype	ls, 
      -		chtype	rs, 
      -		chtype	ts, 
      -		chtype	bs, 
      -		chtype	tl, 
      -		chtype	tr, 
      -		chtype	bl, 
      +		WINDOW	*win,
      +		chtype	ls,
      +		chtype	rs,
      +		chtype	ts,
      +		chtype	bs,
      +		chtype	tl,
      +		chtype	tr,
      +		chtype	bl,
       		chtype	br)
       		{ return(*(int *)0); }
       
      @@ -190,10 +190,10 @@
       
       #undef wchgat
       int	wchgat(
      -		WINDOW	*win, 
      -		int	n, 
      -		attr_t	attr, 
      -		short	color, 
      +		WINDOW	*win,
      +		int	n,
      +		attr_t	attr,
      +		short	color,
       		const void *opts)
       		{ return(*(int *)0); }
       
      @@ -208,7 +208,7 @@
       
       #undef clearok
       int	clearok(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
      @@ -235,22 +235,26 @@
       #undef COLORS
       int	COLORS;
       
      +#undef _nc_reset_colors
      +NCURSES_BOOL _nc_reset_colors(void)
      +		{ return(*(NCURSES_BOOL *)0); }
      +
       #undef start_color
       int	start_color(void)
       		{ return(*(int *)0); }
       
       #undef init_pair
       int	init_pair(
      -		short	pair, 
      -		short	f, 
      +		short	pair,
      +		short	f,
       		short	b)
       		{ return(*(int *)0); }
       
       #undef init_color
       int	init_color(
      -		short	color, 
      -		short	r, 
      -		short	g, 
      +		short	color,
      +		short	r,
      +		short	g,
       		short	b)
       		{ return(*(int *)0); }
       
      @@ -264,24 +268,24 @@
       
       #undef color_content
       int	color_content(
      -		short	color, 
      -		short	*r, 
      -		short	*g, 
      +		short	color,
      +		short	*r,
      +		short	*g,
       		short	*b)
       		{ return(*(int *)0); }
       
       #undef pair_content
       int	pair_content(
      -		short	pair, 
      -		short	*f, 
      +		short	pair,
      +		short	*f,
       		short	*b)
       		{ return(*(int *)0); }
       
       #undef _nc_do_color
       void	_nc_do_color(
      -		int	old_pair, 
      -		int	pair, 
      -		NCURSES_BOOL reverse, 
      +		int	old_pair,
      +		int	pair,
      +		NCURSES_BOOL reverse,
       		int	(*outc)(
       		int	p1))
       		{ /* void */ }
      @@ -290,8 +294,8 @@
       
       #undef wcolor_set
       int	wcolor_set(
      -		WINDOW	*win, 
      -		short	color_pair_number, 
      +		WINDOW	*win,
      +		short	color_pair_number,
       		void	*opts)
       		{ return(*(int *)0); }
       
      @@ -347,7 +351,7 @@
       
       #undef addchnstr
       int	addchnstr(
      -		const chtype *a1, 
      +		const chtype *a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -358,7 +362,7 @@
       
       #undef addnstr
       int	addnstr(
      -		const char *a1, 
      +		const char *a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -384,27 +388,27 @@
       
       #undef attr_get
       int	attr_get(
      -		attr_t	*a1, 
      -		short	*a2, 
      +		attr_t	*a1,
      +		short	*a2,
       		void	*z)
       		{ return(*(int *)0); }
       
       #undef attr_off
       int	attr_off(
      -		attr_t	a1, 
      +		attr_t	a1,
       		void	*z)
       		{ return(*(int *)0); }
       
       #undef attr_on
       int	attr_on(
      -		attr_t	a1, 
      +		attr_t	a1,
       		void	*z)
       		{ return(*(int *)0); }
       
       #undef attr_set
       int	attr_set(
      -		attr_t	a1, 
      -		short	a2, 
      +		attr_t	a1,
      +		short	a2,
       		void	*z)
       		{ return(*(int *)0); }
       
      @@ -420,28 +424,28 @@
       
       #undef border
       int	border(
      -		chtype	a1, 
      -		chtype	a2, 
      -		chtype	a3, 
      -		chtype	a4, 
      -		chtype	a5, 
      -		chtype	a6, 
      -		chtype	a7, 
      +		chtype	a1,
      +		chtype	a2,
      +		chtype	a3,
      +		chtype	a4,
      +		chtype	a5,
      +		chtype	a6,
      +		chtype	a7,
       		chtype	z)
       		{ return(*(int *)0); }
       
       #undef box
       int	box(
      -		WINDOW	*a1, 
      -		chtype	a2, 
      +		WINDOW	*a1,
      +		chtype	a2,
       		chtype	z)
       		{ return(*(int *)0); }
       
       #undef chgat
       int	chgat(
      -		int	a1, 
      -		attr_t	a2, 
      -		short	a3, 
      +		int	a1,
      +		attr_t	a2,
      +		short	a3,
       		const void *z)
       		{ return(*(int *)0); }
       
      @@ -459,7 +463,7 @@
       
       #undef color_set
       int	color_set(
      -		short	a1, 
      +		short	a1,
       		void	*z)
       		{ return(*(int *)0); }
       
      @@ -496,7 +500,7 @@
       
       #undef getnstr
       int	getnstr(
      -		char	*a1, 
      +		char	*a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -507,7 +511,7 @@
       
       #undef hline
       int	hline(
      -		chtype	a1, 
      +		chtype	a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -517,7 +521,7 @@
       
       #undef inchnstr
       int	inchnstr(
      -		chtype	*a1, 
      +		chtype	*a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -528,7 +532,7 @@
       
       #undef innstr
       int	innstr(
      -		char	*a1, 
      +		char	*a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -548,7 +552,7 @@
       
       #undef insnstr
       int	insnstr(
      -		const char *a1, 
      +		const char *a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -564,323 +568,323 @@
       
       #undef move
       int	move(
      -		int	a1, 
      +		int	a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvaddch
       int	mvaddch(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		const chtype z)
       		{ return(*(int *)0); }
       
       #undef mvaddchnstr
       int	mvaddchnstr(
      -		int	a1, 
      -		int	a2, 
      -		const chtype *a3, 
      +		int	a1,
      +		int	a2,
      +		const chtype *a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvaddchstr
       int	mvaddchstr(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		const chtype *z)
       		{ return(*(int *)0); }
       
       #undef mvaddnstr
       int	mvaddnstr(
      -		int	a1, 
      -		int	a2, 
      -		const char *a3, 
      +		int	a1,
      +		int	a2,
      +		const char *a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvaddstr
       int	mvaddstr(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		const char *z)
       		{ return(*(int *)0); }
       
       #undef mvchgat
       int	mvchgat(
      -		int	a1, 
      -		int	a2, 
      -		int	a3, 
      -		attr_t	a4, 
      -		short	a5, 
      +		int	a1,
      +		int	a2,
      +		int	a3,
      +		attr_t	a4,
      +		short	a5,
       		const void *z)
       		{ return(*(int *)0); }
       
       #undef mvdelch
       int	mvdelch(
      -		int	a1, 
      +		int	a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvgetch
       int	mvgetch(
      -		int	a1, 
      +		int	a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvgetnstr
       int	mvgetnstr(
      -		int	a1, 
      -		int	a2, 
      -		char	*a3, 
      +		int	a1,
      +		int	a2,
      +		char	*a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvgetstr
       int	mvgetstr(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		char	*z)
       		{ return(*(int *)0); }
       
       #undef mvhline
       int	mvhline(
      -		int	a1, 
      -		int	a2, 
      -		chtype	a3, 
      +		int	a1,
      +		int	a2,
      +		chtype	a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvinch
       chtype	mvinch(
      -		int	a1, 
      +		int	a1,
       		int	z)
       		{ return(*(chtype *)0); }
       
       #undef mvinchnstr
       int	mvinchnstr(
      -		int	a1, 
      -		int	a2, 
      -		chtype	*a3, 
      +		int	a1,
      +		int	a2,
      +		chtype	*a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvinchstr
       int	mvinchstr(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		chtype	*z)
       		{ return(*(int *)0); }
       
       #undef mvinnstr
       int	mvinnstr(
      -		int	a1, 
      -		int	a2, 
      -		char	*a3, 
      +		int	a1,
      +		int	a2,
      +		char	*a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvinsch
       int	mvinsch(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		chtype	z)
       		{ return(*(int *)0); }
       
       #undef mvinsnstr
       int	mvinsnstr(
      -		int	a1, 
      -		int	a2, 
      -		const char *a3, 
      +		int	a1,
      +		int	a2,
      +		const char *a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvinsstr
       int	mvinsstr(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		const char *z)
       		{ return(*(int *)0); }
       
       #undef mvinstr
       int	mvinstr(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		char	*z)
       		{ return(*(int *)0); }
       
       #undef mvvline
       int	mvvline(
      -		int	a1, 
      -		int	a2, 
      -		chtype	a3, 
      +		int	a1,
      +		int	a2,
      +		chtype	a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwaddch
       int	mvwaddch(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		const chtype z)
       		{ return(*(int *)0); }
       
       #undef mvwaddchnstr
       int	mvwaddchnstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		const chtype *a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		const chtype *a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwaddchstr
       int	mvwaddchstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		const chtype *z)
       		{ return(*(int *)0); }
       
       #undef mvwaddnstr
       int	mvwaddnstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		const char *a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		const char *a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwaddstr
       int	mvwaddstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		const char *z)
       		{ return(*(int *)0); }
       
       #undef mvwchgat
       int	mvwchgat(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		int	a4, 
      -		attr_t	a5, 
      -		short	a6, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		int	a4,
      +		attr_t	a5,
      +		short	a6,
       		const void *z)
       		{ return(*(int *)0); }
       
       #undef mvwdelch
       int	mvwdelch(
      -		WINDOW	*a1, 
      -		int	a2, 
      +		WINDOW	*a1,
      +		int	a2,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwgetch
       int	mvwgetch(
      -		WINDOW	*a1, 
      -		int	a2, 
      +		WINDOW	*a1,
      +		int	a2,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwgetnstr
       int	mvwgetnstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		char	*a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		char	*a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwgetstr
       int	mvwgetstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		char	*z)
       		{ return(*(int *)0); }
       
       #undef mvwhline
       int	mvwhline(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		chtype	a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		chtype	a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwinch
       chtype	mvwinch(
      -		WINDOW	*a1, 
      -		int	a2, 
      +		WINDOW	*a1,
      +		int	a2,
       		int	z)
       		{ return(*(chtype *)0); }
       
       #undef mvwinchnstr
       int	mvwinchnstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		chtype	*a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		chtype	*a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwinchstr
       int	mvwinchstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		chtype	*z)
       		{ return(*(int *)0); }
       
       #undef mvwinnstr
       int	mvwinnstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		char	*a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		char	*a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwinsch
       int	mvwinsch(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		chtype	z)
       		{ return(*(int *)0); }
       
       #undef mvwinsnstr
       int	mvwinsnstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		const char *a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		const char *a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwinsstr
       int	mvwinsstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		const char *z)
       		{ return(*(int *)0); }
       
       #undef mvwinstr
       int	mvwinstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		char	*z)
       		{ return(*(int *)0); }
       
       #undef mvwvline
       int	mvwvline(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		chtype	a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		chtype	a4,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -910,19 +914,19 @@
       
       #undef setscrreg
       int	setscrreg(
      -		int	a1, 
      +		int	a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef slk_attr_off
       int	slk_attr_off(
      -		const attr_t a1, 
      +		const attr_t a1,
       		void	*z)
       		{ return(*(int *)0); }
       
       #undef slk_attr_on
       int	slk_attr_on(
      -		attr_t	a1, 
      +		attr_t	a1,
       		void	*z)
       		{ return(*(int *)0); }
       
      @@ -941,8 +945,8 @@
       
       #undef touchline
       int	touchline(
      -		WINDOW	*a1, 
      -		int	a2, 
      +		WINDOW	*a1,
      +		int	a2,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -958,67 +962,67 @@
       
       #undef vline
       int	vline(
      -		chtype	a1, 
      +		chtype	a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef vw_printw
       int	vw_printw(
      -		WINDOW	*a1, 
      -		char	*a2, 
      +		WINDOW	*a1,
      +		const char *a2,
       		va_list	z)
       		{ return(*(int *)0); }
       
       #undef vw_scanw
       int	vw_scanw(
      -		WINDOW	*a1, 
      -		char	*a2, 
      +		WINDOW	*a1,
      +		char	*a2,
       		va_list	z)
       		{ return(*(int *)0); }
       
       #undef waddchstr
       int	waddchstr(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		const chtype *z)
       		{ return(*(int *)0); }
       
       #undef waddstr
       int	waddstr(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		const char *z)
       		{ return(*(int *)0); }
       
       #undef wattron
       int	wattron(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef wattroff
       int	wattroff(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef wattrset
       int	wattrset(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef wattr_get
       int	wattr_get(
      -		WINDOW	*a1, 
      -		attr_t	*a2, 
      -		short	*a3, 
      +		WINDOW	*a1,
      +		attr_t	*a2,
      +		short	*a3,
       		void	*z)
       		{ return(*(int *)0); }
       
       #undef wattr_set
       int	wattr_set(
      -		WINDOW	*a1, 
      -		attr_t	a2, 
      -		short	a3, 
      +		WINDOW	*a1,
      +		attr_t	a2,
      +		short	a3,
       		void	*z)
       		{ return(*(int *)0); }
       
      @@ -1029,13 +1033,13 @@
       
       #undef wgetstr
       int	wgetstr(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		char	*z)
       		{ return(*(int *)0); }
       
       #undef winchstr
       int	winchstr(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		chtype	*z)
       		{ return(*(int *)0); }
       
      @@ -1046,13 +1050,13 @@
       
       #undef winsstr
       int	winsstr(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		const char *z)
       		{ return(*(int *)0); }
       
       #undef winstr
       int	winstr(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		char	*z)
       		{ return(*(int *)0); }
       
      @@ -1073,7 +1077,7 @@
       
       #undef add_wchnstr
       int	add_wchnstr(
      -		const cchar_t *a1, 
      +		const cchar_t *a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -1084,7 +1088,7 @@
       
       #undef addnwstr
       int	addnwstr(
      -		const wchar_t *a1, 
      +		const wchar_t *a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -1105,20 +1109,20 @@
       
       #undef border_set
       int	border_set(
      -		const cchar_t *a1, 
      -		const cchar_t *a2, 
      -		const cchar_t *a3, 
      -		const cchar_t *a4, 
      -		const cchar_t *a5, 
      -		const cchar_t *a6, 
      -		const cchar_t *a7, 
      +		const cchar_t *a1,
      +		const cchar_t *a2,
      +		const cchar_t *a3,
      +		const cchar_t *a4,
      +		const cchar_t *a5,
      +		const cchar_t *a6,
      +		const cchar_t *a7,
       		const cchar_t *z)
       		{ return(*(int *)0); }
       
       #undef box_set
       int	box_set(
      -		WINDOW	*a1, 
      -		const cchar_t *a2, 
      +		WINDOW	*a1,
      +		const cchar_t *a2,
       		const cchar_t *z)
       		{ return(*(int *)0); }
       
      @@ -1129,12 +1133,12 @@
       
       #undef get_wch
       int	get_wch(
      -		wint_t *z)
      +		wint_t	*z)
       		{ return(*(int *)0); }
       
       #undef get_wstr
       int	get_wstr(
      -		wint_t *z)
      +		wint_t	*z)
       		{ return(*(int *)0); }
       
       #undef getbkgrnd
      @@ -1144,13 +1148,13 @@
       
       #undef getn_wstr
       int	getn_wstr(
      -		wint_t *a1, 
      +		wint_t	*a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef hline_set
       int	hline_set(
      -		const cchar_t *a1, 
      +		const cchar_t *a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -1161,7 +1165,7 @@
       
       #undef in_wchnstr
       int	in_wchnstr(
      -		cchar_t	*a1, 
      +		cchar_t	*a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -1172,13 +1176,13 @@
       
       #undef innwstr
       int	innwstr(
      -		wchar_t *a1, 
      +		wchar_t	*a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef ins_nwstr
       int	ins_nwstr(
      -		const wchar_t *a1, 
      +		const wchar_t *a1,
       		int	z)
       		{ return(*(int *)0); }
       
      @@ -1194,335 +1198,335 @@
       
       #undef inwstr
       int	inwstr(
      -		wchar_t *z)
      +		wchar_t	*z)
       		{ return(*(int *)0); }
       
       #undef mvadd_wch
       int	mvadd_wch(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		const cchar_t *z)
       		{ return(*(int *)0); }
       
       #undef mvadd_wchnstr
       int	mvadd_wchnstr(
      -		int	a1, 
      -		int	a2, 
      -		const cchar_t *a3, 
      +		int	a1,
      +		int	a2,
      +		const cchar_t *a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvadd_wchstr
       int	mvadd_wchstr(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		const cchar_t *z)
       		{ return(*(int *)0); }
       
       #undef mvaddnwstr
       int	mvaddnwstr(
      -		int	a1, 
      -		int	a2, 
      -		const wchar_t *a3, 
      +		int	a1,
      +		int	a2,
      +		const wchar_t *a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvaddwstr
       int	mvaddwstr(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		const wchar_t *z)
       		{ return(*(int *)0); }
       
       #undef mvget_wch
       int	mvget_wch(
      -		int	a1, 
      -		int	a2, 
      -		wint_t *z)
      +		int	a1,
      +		int	a2,
      +		wint_t	*z)
       		{ return(*(int *)0); }
       
       #undef mvget_wstr
       int	mvget_wstr(
      -		int	a1, 
      -		int	a2, 
      -		wint_t *z)
      +		int	a1,
      +		int	a2,
      +		wint_t	*z)
       		{ return(*(int *)0); }
       
       #undef mvgetn_wstr
       int	mvgetn_wstr(
      -		int	a1, 
      -		int	a2, 
      -		wint_t *a3, 
      +		int	a1,
      +		int	a2,
      +		wint_t	*a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvhline_set
       int	mvhline_set(
      -		int	a1, 
      -		int	a2, 
      -		const cchar_t *a3, 
      +		int	a1,
      +		int	a2,
      +		const cchar_t *a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvin_wch
       int	mvin_wch(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		cchar_t	*z)
       		{ return(*(int *)0); }
       
       #undef mvin_wchnstr
       int	mvin_wchnstr(
      -		int	a1, 
      -		int	a2, 
      -		cchar_t	*a3, 
      +		int	a1,
      +		int	a2,
      +		cchar_t	*a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvin_wchstr
       int	mvin_wchstr(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		cchar_t	*z)
       		{ return(*(int *)0); }
       
       #undef mvinnwstr
       int	mvinnwstr(
      -		int	a1, 
      -		int	a2, 
      -		wchar_t *a3, 
      +		int	a1,
      +		int	a2,
      +		wchar_t	*a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvins_nwstr
       int	mvins_nwstr(
      -		int	a1, 
      -		int	a2, 
      -		const wchar_t *a3, 
      +		int	a1,
      +		int	a2,
      +		const wchar_t *a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvins_wch
       int	mvins_wch(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		const cchar_t *z)
       		{ return(*(int *)0); }
       
       #undef mvins_wstr
       int	mvins_wstr(
      -		int	a1, 
      -		int	a2, 
      +		int	a1,
      +		int	a2,
       		const wchar_t *z)
       		{ return(*(int *)0); }
       
       #undef mvinwstr
       int	mvinwstr(
      -		int	a1, 
      -		int	a2, 
      -		wchar_t *z)
      +		int	a1,
      +		int	a2,
      +		wchar_t	*z)
       		{ return(*(int *)0); }
       
       #undef mvvline_set
       int	mvvline_set(
      -		int	a1, 
      -		int	a2, 
      -		const cchar_t *a3, 
      +		int	a1,
      +		int	a2,
      +		const cchar_t *a3,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwadd_wch
       int	mvwadd_wch(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		const cchar_t *z)
       		{ return(*(int *)0); }
       
       #undef mvwadd_wchnstr
       int	mvwadd_wchnstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		const cchar_t *a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		const cchar_t *a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwadd_wchstr
       int	mvwadd_wchstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		const cchar_t *z)
       		{ return(*(int *)0); }
       
       #undef mvwaddnwstr
       int	mvwaddnwstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		const wchar_t *a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		const wchar_t *a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwaddwstr
       int	mvwaddwstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		const wchar_t *z)
       		{ return(*(int *)0); }
       
       #undef mvwget_wch
       int	mvwget_wch(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		wint_t *z)
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		wint_t	*z)
       		{ return(*(int *)0); }
       
       #undef mvwget_wstr
       int	mvwget_wstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		wint_t *z)
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		wint_t	*z)
       		{ return(*(int *)0); }
       
       #undef mvwgetn_wstr
       int	mvwgetn_wstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		wint_t *a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		wint_t	*a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwhline_set
       int	mvwhline_set(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		const cchar_t *a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		const cchar_t *a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwin_wch
       int	mvwin_wch(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		cchar_t	*z)
       		{ return(*(int *)0); }
       
       #undef mvwin_wchnstr
       int	mvwin_wchnstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		cchar_t	*a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		cchar_t	*a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwin_wchstr
       int	mvwin_wchstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		cchar_t	*z)
       		{ return(*(int *)0); }
       
       #undef mvwinnwstr
       int	mvwinnwstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		wchar_t *a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		wchar_t	*a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwins_nwstr
       int	mvwins_nwstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		const wchar_t *a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		const wchar_t *a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef mvwins_wch
       int	mvwins_wch(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		const cchar_t *z)
       		{ return(*(int *)0); }
       
       #undef mvwins_wstr
       int	mvwins_wstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
       		const wchar_t *z)
       		{ return(*(int *)0); }
       
       #undef mvwinwstr
       int	mvwinwstr(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		wchar_t *z)
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		wchar_t	*z)
       		{ return(*(int *)0); }
       
       #undef mvwvline_set
       int	mvwvline_set(
      -		WINDOW	*a1, 
      -		int	a2, 
      -		int	a3, 
      -		const cchar_t *a4, 
      +		WINDOW	*a1,
      +		int	a2,
      +		int	a3,
      +		const cchar_t *a4,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef vline_set
       int	vline_set(
      -		const cchar_t *a1, 
      +		const cchar_t *a1,
       		int	z)
       		{ return(*(int *)0); }
       
       #undef wadd_wchstr
       int	wadd_wchstr(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		const cchar_t *z)
       		{ return(*(int *)0); }
       
       #undef waddwstr
       int	waddwstr(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		const wchar_t *z)
       		{ return(*(int *)0); }
       
       #undef wget_wstr
       int	wget_wstr(
      -		WINDOW	*a1, 
      -		wint_t *z)
      +		WINDOW	*a1,
      +		wint_t	*z)
       		{ return(*(int *)0); }
       
       #undef win_wchstr
       int	win_wchstr(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		cchar_t	*z)
       		{ return(*(int *)0); }
       
       #undef wins_wstr
       int	wins_wstr(
      -		WINDOW	*a1, 
      +		WINDOW	*a1,
       		const wchar_t *z)
       		{ return(*(int *)0); }
       
       #undef mouse_trafo
       NCURSES_BOOL mouse_trafo(
      -		int	*a1, 
      -		int	*a2, 
      +		int	*a1,
      +		int	*a2,
       		NCURSES_BOOL z)
       		{ return(*(NCURSES_BOOL *)0); }
       
      @@ -1535,8 +1539,8 @@
       
       #undef _nc_wgetch
       int	_nc_wgetch(
      -		WINDOW	*win, 
      -		unsigned long *result, 
      +		WINDOW	*win,
      +		unsigned long *result,
       		int	use_meta)
       		{ return(*(int *)0); }
       
      @@ -1549,8 +1553,8 @@
       
       #undef wgetnstr
       int	wgetnstr(
      -		WINDOW	*win, 
      -		char	*str, 
      +		WINDOW	*win,
      +		char	*str,
       		int	maxlen)
       		{ return(*(int *)0); }
       
      @@ -1558,8 +1562,8 @@
       
       #undef whline
       int	whline(
      -		WINDOW	*win, 
      -		chtype	ch, 
      +		WINDOW	*win,
      +		chtype	ch,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -1567,7 +1571,7 @@
       
       #undef immedok
       void	immedok(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ /* void */ }
       
      @@ -1575,8 +1579,8 @@
       
       #undef winchnstr
       int	winchnstr(
      -		WINDOW	*win, 
      -		chtype	*str, 
      +		WINDOW	*win,
      +		chtype	*str,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -1588,26 +1592,30 @@
       
       /* ./base/lib_insch.c */
       
      +#undef _nc_insert_ch
      +void	_nc_insert_ch(
      +		WINDOW	*win,
      +		chtype	ch)
      +		{ /* void */ }
      +
       #undef winsch
       int	winsch(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		chtype	c)
       		{ return(*(int *)0); }
       
      -/* ./base/lib_insdel.c */
      -
      -#undef winsdelln
      -int	winsdelln(
      -		WINDOW	*win, 
      +#undef winsnstr
      +int	winsnstr(
      +		WINDOW	*win,
      +		const char *s,
       		int	n)
       		{ return(*(int *)0); }
       
      -/* ./base/lib_insstr.c */
      +/* ./base/lib_insdel.c */
       
      -#undef winsnstr
      -int	winsnstr(
      -		WINDOW	*win, 
      -		const char *s, 
      +#undef winsdelln
      +int	winsdelln(
      +		WINDOW	*win,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -1615,8 +1623,8 @@
       
       #undef winnstr
       int	winnstr(
      -		WINDOW	*win, 
      -		char	*str, 
      +		WINDOW	*win,
      +		char	*str,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -1630,7 +1638,7 @@
       
       #undef leaveok
       int	leaveok(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
      @@ -1648,14 +1656,14 @@
       
       #undef mousemask
       mmask_t	mousemask(
      -		mmask_t	newmask, 
      +		mmask_t	newmask,
       		mmask_t	*oldmask)
       		{ return(*(mmask_t *)0); }
       
       #undef wenclose
       NCURSES_BOOL wenclose(
      -		const WINDOW *win, 
      -		int	y, 
      +		const WINDOW *win,
      +		int	y,
       		int	x)
       		{ return(*(NCURSES_BOOL *)0); }
       
      @@ -1670,9 +1678,9 @@
       
       #undef wmouse_trafo
       NCURSES_BOOL wmouse_trafo(
      -		const WINDOW *win, 
      -		int	*pY, 
      -		int	*pX, 
      +		const WINDOW *win,
      +		int	*pY,
      +		int	*pX,
       		NCURSES_BOOL to_screen)
       		{ return(*(NCURSES_BOOL *)0); }
       
      @@ -1680,8 +1688,8 @@
       
       #undef wmove
       int	wmove(
      -		WINDOW	*win, 
      -		int	y, 
      +		WINDOW	*win,
      +		int	y,
       		int	x)
       		{ return(*(int *)0); }
       
      @@ -1689,7 +1697,7 @@
       
       #undef _nc_msec_cost
       int	_nc_msec_cost(
      -		const char *const cap, 
      +		const char *const cap,
       		int	affcnt)
       		{ return(*(int *)0); }
       
      @@ -1707,9 +1715,9 @@
       
       #undef mvcur
       int	mvcur(
      -		int	yold, 
      -		int	xold, 
      -		int	ynew, 
      +		int	yold,
      +		int	xold,
      +		int	ynew,
       		int	xnew)
       		{ return(*(int *)0); }
       
      @@ -1720,8 +1728,8 @@
       
       #undef mvwin
       int	mvwin(
      -		WINDOW	*win, 
      -		int	by, 
      +		WINDOW	*win,
      +		int	by,
       		int	bx)
       		{ return(*(int *)0); }
       
      @@ -1733,8 +1741,8 @@
       
       #undef newterm
       SCREEN	*newterm(
      -		char	*name, 
      -		FILE	*ofp, 
      +		char	*name,
      +		FILE	*ofp,
       		FILE	*ifp)
       		{ return(*(SCREEN **)0); }
       
      @@ -1747,36 +1755,36 @@
       
       #undef newwin
       WINDOW	*newwin(
      -		int	num_lines, 
      -		int	num_columns, 
      -		int	begy, 
      +		int	num_lines,
      +		int	num_columns,
      +		int	begy,
       		int	begx)
       		{ return(*(WINDOW **)0); }
       
       #undef derwin
       WINDOW	*derwin(
      -		WINDOW	*orig, 
      -		int	num_lines, 
      -		int	num_columns, 
      -		int	begy, 
      +		WINDOW	*orig,
      +		int	num_lines,
      +		int	num_columns,
      +		int	begy,
       		int	begx)
       		{ return(*(WINDOW **)0); }
       
       #undef subwin
       WINDOW	*subwin(
      -		WINDOW	*w, 
      -		int	l, 
      -		int	c, 
      -		int	y, 
      +		WINDOW	*w,
      +		int	l,
      +		int	c,
      +		int	y,
       		int	x)
       		{ return(*(WINDOW **)0); }
       
       #undef _nc_makenew
       WINDOW	*_nc_makenew(
      -		int	num_lines, 
      -		int	num_columns, 
      -		int	begy, 
      -		int	begx, 
      +		int	num_lines,
      +		int	num_columns,
      +		int	begy,
      +		int	begx,
       		int	flags)
       		{ return(*(WINDOW **)0); }
       
      @@ -1794,26 +1802,26 @@
       
       #undef overlay
       int	overlay(
      -		const WINDOW *win1, 
      +		const WINDOW *win1,
       		WINDOW	*win2)
       		{ return(*(int *)0); }
       
       #undef overwrite
       int	overwrite(
      -		const WINDOW *win1, 
      +		const WINDOW *win1,
       		WINDOW	*win2)
       		{ return(*(int *)0); }
       
       #undef copywin
       int	copywin(
      -		const WINDOW *src, 
      -		WINDOW	*dst, 
      -		int	sminrow, 
      -		int	smincol, 
      -		int	dminrow, 
      -		int	dmincol, 
      -		int	dmaxrow, 
      -		int	dmaxcol, 
      +		const WINDOW *src,
      +		WINDOW	*dst,
      +		int	sminrow,
      +		int	smincol,
      +		int	dminrow,
      +		int	dmincol,
      +		int	dmaxrow,
      +		int	dmaxcol,
       		int	over)
       		{ return(*(int *)0); }
       
      @@ -1821,44 +1829,44 @@
       
       #undef newpad
       WINDOW	*newpad(
      -		int	l, 
      +		int	l,
       		int	c)
       		{ return(*(WINDOW **)0); }
       
       #undef subpad
       WINDOW	*subpad(
      -		WINDOW	*orig, 
      -		int	l, 
      -		int	c, 
      -		int	begy, 
      +		WINDOW	*orig,
      +		int	l,
      +		int	c,
      +		int	begy,
       		int	begx)
       		{ return(*(WINDOW **)0); }
       
       #undef prefresh
       int	prefresh(
      -		WINDOW	*win, 
      -		int	pminrow, 
      -		int	pmincol, 
      -		int	sminrow, 
      -		int	smincol, 
      -		int	smaxrow, 
      +		WINDOW	*win,
      +		int	pminrow,
      +		int	pmincol,
      +		int	sminrow,
      +		int	smincol,
      +		int	smaxrow,
       		int	smaxcol)
       		{ return(*(int *)0); }
       
       #undef pnoutrefresh
       int	pnoutrefresh(
      -		WINDOW	*win, 
      -		int	pminrow, 
      -		int	pmincol, 
      -		int	sminrow, 
      -		int	smincol, 
      -		int	smaxrow, 
      +		WINDOW	*win,
      +		int	pminrow,
      +		int	pmincol,
      +		int	sminrow,
      +		int	smincol,
      +		int	smaxrow,
       		int	smaxcol)
       		{ return(*(int *)0); }
       
       #undef pechochar
       int	pechochar(
      -		WINDOW	*pad, 
      +		WINDOW	*pad,
       		const chtype ch)
       		{ return(*(int *)0); }
       
      @@ -1866,38 +1874,38 @@
       
       #undef printw
       int	printw(
      -		char	*fmt, 
      +		const char *fmt,
       		...)
       		{ return(*(int *)0); }
       
       #undef wprintw
       int	wprintw(
      -		WINDOW	*win, 
      -		char	*fmt, 
      +		WINDOW	*win,
      +		const char *fmt,
       		...)
       		{ return(*(int *)0); }
       
       #undef mvprintw
       int	mvprintw(
      -		int	y, 
      -		int	x, 
      -		char	*fmt, 
      +		int	y,
      +		int	x,
      +		const char *fmt,
       		...)
       		{ return(*(int *)0); }
       
       #undef mvwprintw
       int	mvwprintw(
      -		WINDOW	*win, 
      -		int	y, 
      -		int	x, 
      -		char	*fmt, 
      +		WINDOW	*win,
      +		int	y,
      +		int	x,
      +		const char *fmt,
       		...)
       		{ return(*(int *)0); }
       
       #undef vwprintw
       int	vwprintw(
      -		WINDOW	*win, 
      -		char	*fmt, 
      +		WINDOW	*win,
      +		const char *fmt,
       		va_list	argp)
       		{ return(*(int *)0); }
       
      @@ -1905,8 +1913,8 @@
       
       #undef wredrawln
       int	wredrawln(
      -		WINDOW	*win, 
      -		int	beg, 
      +		WINDOW	*win,
      +		int	beg,
       		int	num)
       		{ return(*(int *)0); }
       
      @@ -1926,8 +1934,8 @@
       
       #undef restartterm
       int	restartterm(
      -		char	*termp, 
      -		int	filenum, 
      +		char	*termp,
      +		int	filenum,
       		int	*errret)
       		{ return(*(int *)0); }
       
      @@ -1935,38 +1943,38 @@
       
       #undef vwscanw
       int	vwscanw(
      -		WINDOW	*win, 
      -		char	*fmt, 
      +		WINDOW	*win,
      +		char	*fmt,
       		va_list	argp)
       		{ return(*(int *)0); }
       
       #undef scanw
       int	scanw(
      -		char	*fmt, 
      +		char	*fmt,
       		...)
       		{ return(*(int *)0); }
       
       #undef wscanw
       int	wscanw(
      -		WINDOW	*win, 
      -		char	*fmt, 
      +		WINDOW	*win,
      +		char	*fmt,
       		...)
       		{ return(*(int *)0); }
       
       #undef mvscanw
       int	mvscanw(
      -		int	y, 
      -		int	x, 
      -		char	*fmt, 
      +		int	y,
      +		int	x,
      +		char	*fmt,
       		...)
       		{ return(*(int *)0); }
       
       #undef mvwscanw
       int	mvwscanw(
      -		WINDOW	*win, 
      -		int	y, 
      -		int	x, 
      -		char	*fmt, 
      +		WINDOW	*win,
      +		int	y,
      +		int	x,
      +		char	*fmt,
       		...)
       		{ return(*(int *)0); }
       
      @@ -1979,7 +1987,7 @@
       
       #undef putwin
       int	putwin(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		FILE	*filep)
       		{ return(*(int *)0); }
       
      @@ -2007,16 +2015,16 @@
       
       #undef _nc_scroll_window
       void	_nc_scroll_window(
      -		WINDOW	*win, 
      -		int const n, 
      -		short const top, 
      -		short const bottom, 
      +		WINDOW	*win,
      +		int const n,
      +		short const top,
      +		short const bottom,
       		cchar_t	blank)
       		{ /* void */ }
       
       #undef wscrl
       int	wscrl(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -2024,7 +2032,7 @@
       
       #undef scrollok
       int	scrollok(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
      @@ -2032,8 +2040,8 @@
       
       #undef wsetscrreg
       int	wsetscrreg(
      -		WINDOW	*win, 
      -		int	top, 
      +		WINDOW	*win,
      +		int	top,
       		int	bottom)
       		{ return(*(int *)0); }
       
      @@ -2051,24 +2059,24 @@
       
       #undef _nc_setupscreen
       int	_nc_setupscreen(
      -		short	slines, 
      -		short const scolumns, 
      +		short	slines,
      +		short const scolumns,
       		FILE	*output)
       		{ return(*(int *)0); }
       
       #undef _nc_ripoffline
       int	_nc_ripoffline(
      -		int	line, 
      +		int	line,
       		int	(*init)(
      -		WINDOW	*p1, 
      +		WINDOW	*p1,
       		int	p2))
       		{ return(*(int *)0); }
       
       #undef ripoffline
       int	ripoffline(
      -		int	line, 
      +		int	line,
       		int	(*init)(
      -		WINDOW	*p1, 
      +		WINDOW	*p1,
       		int	p2))
       		{ return(*(int *)0); }
       
      @@ -2079,7 +2087,7 @@
       
       #undef _nc_slk_initialize
       int	_nc_slk_initialize(
      -		WINDOW	*stwin, 
      +		WINDOW	*stwin,
       		int	cols)
       		{ return(*(int *)0); }
       
      @@ -2091,8 +2099,8 @@
       
       #undef slk_attr_set
       int	slk_attr_set(
      -		const attr_t attr, 
      -		short	color_pair_number, 
      +		const attr_t attr,
      +		short	color_pair_number,
       		void	*opts)
       		{ return(*(int *)0); }
       
      @@ -2164,8 +2172,8 @@
       
       #undef slk_set
       int	slk_set(
      -		int	i, 
      -		const char *astr, 
      +		int	i,
      +		const char *astr,
       		int	format)
       		{ return(*(int *)0); }
       
      @@ -2179,7 +2187,7 @@
       
       #undef is_linetouched
       NCURSES_BOOL is_linetouched(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		int	line)
       		{ return(*(NCURSES_BOOL *)0); }
       
      @@ -2190,9 +2198,9 @@
       
       #undef wtouchln
       int	wtouchln(
      -		WINDOW	*win, 
      -		int	y, 
      -		int	n, 
      +		WINDOW	*win,
      +		int	y,
      +		int	n,
       		int	changed)
       		{ return(*(int *)0); }
       
      @@ -2200,7 +2208,7 @@
       
       #undef _traceattr2
       char	*_traceattr2(
      -		int	bufnum, 
      +		int	bufnum,
       		attr_t	newmode)
       		{ return(*(char **)0); }
       
      @@ -2216,13 +2224,13 @@
       
       #undef _nc_altcharset_name
       const char *_nc_altcharset_name(
      -		attr_t	attr, 
      +		attr_t	attr,
       		chtype	ch)
       		{ return(*(const char **)0); }
       
       #undef _tracechtype2
       char	*_tracechtype2(
      -		int	bufnum, 
      +		int	bufnum,
       		chtype	ch)
       		{ return(*(char **)0); }
       
      @@ -2232,13 +2240,13 @@
       		{ return(*(char **)0); }
       
       #undef _nc_retrace_chtype
      -attr_t	_nc_retrace_chtype(
      -		attr_t	code)
      -		{ return(*(attr_t *)0); }
      +chtype	_nc_retrace_chtype(
      +		chtype	code)
      +		{ return(*(chtype *)0); }
       
       #undef _tracecchar_t2
       char	*_tracecchar_t2(
      -		int	bufnum, 
      +		int	bufnum,
       		const cchar_t *ch)
       		{ return(*(char **)0); }
       
      @@ -2251,7 +2259,7 @@
       
       #undef _tracedump
       void	_tracedump(
      -		const char *name, 
      +		const char *name,
       		WINDOW	*win)
       		{ /* void */ }
       
      @@ -2286,7 +2294,7 @@
       
       #undef vidputs
       int	vidputs(
      -		chtype	newmode, 
      +		chtype	newmode,
       		int	(*outc)(
       		int	p1))
       		{ return(*(int *)0); }
      @@ -2304,8 +2312,8 @@
       
       #undef wvline
       int	wvline(
      -		WINDOW	*win, 
      -		chtype	ch, 
      +		WINDOW	*win,
      +		chtype	ch,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -2313,8 +2321,8 @@
       
       #undef wattr_off
       int	wattr_off(
      -		WINDOW	*win, 
      -		attr_t	at, 
      +		WINDOW	*win,
      +		attr_t	at,
       		void	*opts)
       		{ return(*(int *)0); }
       
      @@ -2322,8 +2330,8 @@
       
       #undef wattr_on
       int	wattr_on(
      -		WINDOW	*win, 
      -		attr_t	at, 
      +		WINDOW	*win,
      +		attr_t	at,
       		void	*opts)
       		{ return(*(int *)0); }
       
      @@ -2343,14 +2351,14 @@
       
       #undef mvderwin
       int	mvderwin(
      -		WINDOW	*win, 
      -		int	y, 
      +		WINDOW	*win,
      +		int	y,
       		int	x)
       		{ return(*(int *)0); }
       
       #undef syncok
       int	syncok(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL bf)
       		{ return(*(int *)0); }
       
      @@ -2384,7 +2392,7 @@
       
       #undef _nc_printf_string
       char	*_nc_printf_string(
      -		const char *fmt, 
      +		const char *fmt,
       		va_list	ap)
       		{ return(*(char **)0); }
       
      @@ -2404,9 +2412,9 @@
       
       #undef _nc_scrolln
       int	_nc_scrolln(
      -		int	n, 
      -		int	top, 
      -		int	bot, 
      +		int	n,
      +		int	top,
      +		int	bot,
       		int	maxy)
       		{ return(*(int *)0); }
       
      @@ -2435,7 +2443,7 @@
       
       #undef _nc_varargs
       char	*_nc_varargs(
      -		const char *fmt, 
      +		const char *fmt,
       		va_list	ap)
       		{ return(*(char **)0); }
       
      @@ -2457,18 +2465,43 @@
       void	_nc_vsscanf(void)
       		{ /* void */ }
       
      +/* ./base/lib_freeall.c */
      +
      +#include 
      +
      +#undef _nc_freeall
      +void	_nc_freeall(void)
      +		{ /* void */ }
      +
      +/* ./widechar/charable.c */
      +
      +#undef _nc_is_charable
      +NCURSES_BOOL _nc_is_charable(
      +		wchar_t	ch)
      +		{ return(*(NCURSES_BOOL *)0); }
      +
      +#undef _nc_to_char
      +int	_nc_to_char(
      +		wint_t	ch)
      +		{ return(*(int *)0); }
      +
      +#undef _nc_to_widechar
      +wint_t	_nc_to_widechar(
      +		int	ch)
      +		{ return(*(wint_t *)0); }
      +
       /* ./widechar/lib_box_set.c */
       
       #undef wborder_set
       int	wborder_set(
      -		WINDOW	*win, 
      -		const cchar_t *ls, 
      -		const cchar_t *rs, 
      -		const cchar_t *ts, 
      -		const cchar_t *bs, 
      -		const cchar_t *tl, 
      -		const cchar_t *tr, 
      -		const cchar_t *bl, 
      +		WINDOW	*win,
      +		const cchar_t *ls,
      +		const cchar_t *rs,
      +		const cchar_t *ts,
      +		const cchar_t *bs,
      +		const cchar_t *tl,
      +		const cchar_t *tr,
      +		const cchar_t *bl,
       		const cchar_t *br)
       		{ return(*(int *)0); }
       
      @@ -2476,19 +2509,19 @@
       
       #undef setcchar
       int	setcchar(
      -		cchar_t	*wcval, 
      -		const wchar_t *wch, 
      -		const attr_t attrs, 
      -		short	color_pair, 
      +		cchar_t	*wcval,
      +		const wchar_t *wch,
      +		const attr_t attrs,
      +		short	color_pair,
       		const void *opts)
       		{ return(*(int *)0); }
       
       #undef getcchar
       int	getcchar(
      -		const cchar_t *wcval, 
      -		wchar_t *wch, 
      -		attr_t	*attrs, 
      -		short	*color_pair, 
      +		const cchar_t *wcval,
      +		wchar_t	*wch,
      +		attr_t	*attrs,
      +		short	*color_pair,
       		void	*opts)
       		{ return(*(int *)0); }
       
      @@ -2496,28 +2529,28 @@
       
       #undef wget_wch
       int	wget_wch(
      -		WINDOW	*win, 
      -		wint_t *result)
      +		WINDOW	*win,
      +		wint_t	*result)
       		{ return(*(int *)0); }
       
       /* ./widechar/lib_erasewchar.c */
       
       #undef erasewchar
       int	erasewchar(
      -		wchar_t *wch)
      +		wchar_t	*wch)
       		{ return(*(int *)0); }
       
       #undef killwchar
       int	killwchar(
      -		wchar_t *wch)
      +		wchar_t	*wch)
       		{ return(*(int *)0); }
       
       /* ./widechar/lib_get_wstr.c */
       
       #undef wgetn_wstr
       int	wgetn_wstr(
      -		WINDOW	*win, 
      -		wint_t *str, 
      +		WINDOW	*win,
      +		wint_t	*str,
       		int	maxlen)
       		{ return(*(int *)0); }
       
      @@ -2525,8 +2558,8 @@
       
       #undef whline_set
       int	whline_set(
      -		WINDOW	*win, 
      -		const cchar_t *ch, 
      +		WINDOW	*win,
      +		const cchar_t *ch,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -2534,7 +2567,7 @@
       
       #undef win_wch
       int	win_wch(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		cchar_t	*wcval)
       		{ return(*(int *)0); }
       
      @@ -2542,17 +2575,8 @@
       
       #undef win_wchnstr
       int	win_wchnstr(
      -		WINDOW	*win, 
      -		cchar_t	*wchstr, 
      -		int	n)
      -		{ return(*(int *)0); }
      -
      -/* ./widechar/lib_ins_nwstr.c */
      -
      -#undef wins_nwstr
      -int	wins_nwstr(
      -		WINDOW	*win, 
      -		const wchar_t *wstr, 
      +		WINDOW	*win,
      +		cchar_t	*wchstr,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -2560,23 +2584,39 @@
       
       #undef wins_wch
       int	wins_wch(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		const cchar_t *wch)
       		{ return(*(int *)0); }
       
      +#undef wins_nwstr
      +int	wins_nwstr(
      +		WINDOW	*win,
      +		const wchar_t *wstr,
      +		int	n)
      +		{ return(*(int *)0); }
      +
       /* ./widechar/lib_inwstr.c */
       
       #undef winnwstr
       int	winnwstr(
      -		WINDOW	*win, 
      -		wchar_t *wstr, 
      +		WINDOW	*win,
      +		wchar_t	*wstr,
       		int	n)
       		{ return(*(int *)0); }
       
       #undef winwstr
       int	winwstr(
      -		WINDOW	*win, 
      -		wchar_t *wstr)
      +		WINDOW	*win,
      +		wchar_t	*wstr)
      +		{ return(*(int *)0); }
      +
      +/* ./widechar/lib_slk_wset.c */
      +
      +#undef slk_wset
      +int	slk_wset(
      +		int	i,
      +		const wchar_t *astr,
      +		int	format)
       		{ return(*(int *)0); }
       
       /* ./widechar/lib_unget_wch.c */
      @@ -2590,17 +2630,17 @@
       
       #undef vid_puts
       int	vid_puts(
      -		attr_t	newmode, 
      -		short	pair, 
      -		void	*opts, 
      +		attr_t	newmode,
      +		short	pair,
      +		void	*opts,
       		int	(*outc)(
       		int	p1))
       		{ return(*(int *)0); }
       
       #undef vid_attr
       int	vid_attr(
      -		attr_t	newmode, 
      -		short	pair, 
      +		attr_t	newmode,
      +		short	pair,
       		void	*opts)
       		{ return(*(int *)0); }
       
      @@ -2612,8 +2652,8 @@
       
       #undef wvline_set
       int	wvline_set(
      -		WINDOW	*win, 
      -		const cchar_t *ch, 
      +		WINDOW	*win,
      +		const cchar_t *ch,
       		int	n)
       		{ return(*(int *)0); }
       
      @@ -2629,7 +2669,7 @@
       /* ./widechar/lib_wunctrl.c */
       
       #undef wunctrl
      -wchar_t *wunctrl(
      +wchar_t	*wunctrl(
       		cchar_t	*wc)
       		{ return(*(wchar_t **)0); }
       
      @@ -2637,7 +2677,7 @@
       
       #undef define_key
       int	define_key(
      -		char	*str, 
      +		const char *str,
       		int	keycode)
       		{ return(*(int *)0); }
       
      @@ -2645,13 +2685,13 @@
       
       #undef _nc_toggle_attr_on
       void	_nc_toggle_attr_on(
      -		attr_t	*S, 
      +		attr_t	*S,
       		attr_t	at)
       		{ /* void */ }
       
       #undef _nc_toggle_attr_off
       void	_nc_toggle_attr_off(
      -		attr_t	*S, 
      +		attr_t	*S,
       		attr_t	at)
       		{ /* void */ }
       
      @@ -2670,11 +2710,18 @@
       		chtype	c)
       		{ /* void */ }
       
      +/* ./base/key_defined.c */
      +
      +#undef key_defined
      +int	key_defined(
      +		const char *str)
      +		{ return(*(int *)0); }
      +
       /* ./base/keybound.c */
       
       #undef keybound
       char	*keybound(
      -		int	code, 
      +		int	code,
       		int	count)
       		{ return(*(char **)0); }
       
      @@ -2682,7 +2729,7 @@
       
       #undef keyok
       int	keyok(
      -		int	c, 
      +		int	c,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
      @@ -2694,23 +2741,15 @@
       
       #undef assume_default_colors
       int	assume_default_colors(
      -		int	fg, 
      +		int	fg,
       		int	bg)
       		{ return(*(int *)0); }
       
      -/* ./base/lib_freeall.c */
      -
      -#include 
      -
      -#undef _nc_freeall
      -void	_nc_freeall(void)
      -		{ /* void */ }
      -
       /* ./tinfo/lib_print.c */
       
       #undef mcprint
       int	mcprint(
      -		char	*data, 
      +		char	*data,
       		int	len)
       		{ return(*(int *)0); }
       
      @@ -2718,19 +2757,19 @@
       
       #undef is_term_resized
       NCURSES_BOOL is_term_resized(
      -		int	ToLines, 
      +		int	ToLines,
       		int	ToCols)
       		{ return(*(NCURSES_BOOL *)0); }
       
       #undef resize_term
       int	resize_term(
      -		int	ToLines, 
      +		int	ToLines,
       		int	ToCols)
       		{ return(*(int *)0); }
       
       #undef resizeterm
       int	resizeterm(
      -		int	ToLines, 
      +		int	ToLines,
       		int	ToCols)
       		{ return(*(int *)0); }
       
      @@ -2745,22 +2784,22 @@
       
       #undef _nc_expand_try
       char	*_nc_expand_try(
      -		struct tries *tree, 
      -		unsigned short code, 
      -		int	*count, 
      +		struct tries *tree,
      +		unsigned short code,
      +		int	*count,
       		size_t	len)
       		{ return(*(char **)0); }
       
       #undef _nc_remove_key
       int	_nc_remove_key(
      -		struct tries **tree, 
      +		struct tries **tree,
       		unsigned short code)
       		{ return(*(int *)0); }
       
       #undef _nc_remove_string
       int	_nc_remove_string(
      -		struct tries **tree, 
      -		char	*string)
      +		struct tries **tree,
      +		const char *string)
       		{ return(*(int *)0); }
       
       /* ./base/version.c */
      @@ -2773,8 +2812,8 @@
       
       #undef wresize
       int	wresize(
      -		WINDOW	*win, 
      -		int	ToLines, 
      +		WINDOW	*win,
      +		int	ToLines,
       		int	ToCols)
       		{ return(*(int *)0); }
       
      @@ -2785,6 +2824,11 @@
       		char	*path)
       		{ return(*(char **)0); }
       
      +#undef _nc_pathlast
      +unsigned _nc_pathlast(
      +		const char *path)
      +		{ return(*(unsigned *)0); }
      +
       #undef _nc_basename
       char	*_nc_basename(
       		char	*path)
      @@ -2792,7 +2836,7 @@
       
       #undef _nc_access
       int	_nc_access(
      -		const char *path, 
      +		const char *path,
       		int	mode)
       		{ return(*(int *)0); }
       
      @@ -2804,8 +2848,8 @@
       
       #undef _nc_add_to_try
       void	_nc_add_to_try(
      -		struct tries **tree, 
      -		const char *str, 
      +		struct tries **tree,
      +		const char *str,
       		unsigned short code)
       		{ /* void */ }
       
      @@ -2828,13 +2872,13 @@
       
       #undef _nc_wrap_entry
       void	_nc_wrap_entry(
      -		ENTRY	*const ep, 
      +		ENTRY	*const ep,
       		NCURSES_BOOL copy_strings)
       		{ /* void */ }
       
       #undef _nc_merge_entry
       void	_nc_merge_entry(
      -		TERMTYPE *const to, 
      +		TERMTYPE *const to,
       		TERMTYPE *const from)
       		{ /* void */ }
       
      @@ -2842,13 +2886,13 @@
       
       #undef _nc_align_termtype
       void	_nc_align_termtype(
      -		TERMTYPE *to, 
      +		TERMTYPE *to,
       		TERMTYPE *from)
       		{ /* void */ }
       
       #undef _nc_copy_termtype
       void	_nc_copy_termtype(
      -		TERMTYPE *dst, 
      +		TERMTYPE *dst,
       		TERMTYPE *src)
       		{ /* void */ }
       
      @@ -2856,15 +2900,15 @@
       
       #undef _nc_captoinfo
       char	*_nc_captoinfo(
      -		const char *cap, 
      -		const char *s, 
      +		const char *cap,
      +		const char *s,
       		int const parametrized)
       		{ return(*(char **)0); }
       
       #undef _nc_infotocap
       char	*_nc_infotocap(
      -		const char *cap, 
      -		const char *str, 
      +		const char *cap,
      +		const char *str,
       		int const parametrized)
       		{ return(*(char **)0); }
       
      @@ -2926,19 +2970,19 @@
       
       #undef _nc_warning
       void	_nc_warning(
      -		const char *const fmt, 
      +		const char *const fmt,
       		...)
       		{ /* void */ }
       
       #undef _nc_err_abort
       void	_nc_err_abort(
      -		const char *const fmt, 
      +		const char *const fmt,
       		...)
       		{ /* void */ }
       
       #undef _nc_syserr_abort
       void	_nc_syserr_abort(
      -		const char *const fmt, 
      +		const char *const fmt,
       		...)
       		{ /* void */ }
       
      @@ -2946,8 +2990,8 @@
       
       #undef _nc_tic_expand
       char	*_nc_tic_expand(
      -		const char *srcp, 
      -		NCURSES_BOOL tic_format, 
      +		const char *srcp,
      +		NCURSES_BOOL tic_format,
       		int	numbers)
       		{ return(*(char **)0); }
       
      @@ -2957,14 +3001,14 @@
       
       #undef _nc_find_entry
       struct name_table_entry const *_nc_find_entry(
      -		const char *string, 
      +		const char *string,
       		const struct name_table_entry *const *hash_table)
       		{ return(*(struct name_table_entry const **)0); }
       
       #undef _nc_find_type_entry
       struct name_table_entry const *_nc_find_type_entry(
      -		const char *string, 
      -		int	type, 
      +		const char *string,
      +		int	type,
       		const struct name_table_entry *table)
       		{ return(*(struct name_table_entry const **)0); }
       
      @@ -2985,16 +3029,16 @@
       
       #undef _nc_entry_match
       NCURSES_BOOL _nc_entry_match(
      -		char	*n1, 
      +		char	*n1,
       		char	*n2)
       		{ return(*(NCURSES_BOOL *)0); }
       
       #undef _nc_read_entry_source
       void	_nc_read_entry_source(
      -		FILE	*fp, 
      -		char	*buf, 
      -		int	literal, 
      -		NCURSES_BOOL silent, 
      +		FILE	*fp,
      +		char	*buf,
      +		int	literal,
      +		NCURSES_BOOL silent,
       		NCURSES_BOOL (*hook)(
       		ENTRY	*p1))
       		{ /* void */ }
      @@ -3028,7 +3072,7 @@
       
       #undef _nc_trans_string
       char	_nc_trans_string(
      -		char	*ptr, 
      +		char	*ptr,
       		char	*last)
       		{ return(*(char *)0); }
       
      @@ -3044,7 +3088,7 @@
       
       #undef _nc_reset_input
       void	_nc_reset_input(
      -		FILE	*fp, 
      +		FILE	*fp,
       		char	*buf)
       		{ /* void */ }
       
      @@ -3052,7 +3096,7 @@
       
       #undef _nc_doalloc
       void	*_nc_doalloc(
      -		void	*oldp, 
      +		void	*oldp,
       		size_t	amount)
       		{ return(*(void **)0); }
       
      @@ -3120,8 +3164,8 @@
       #include 
       
       struct speed {
      -    int s;			
      -    int sp;			
      +    int s;
      +    int sp;
       };
       
       #undef _nc_baudrate
      @@ -3202,7 +3246,7 @@
       
       #undef key_name
       char	*key_name(
      -		wchar_t c)
      +		wchar_t	c)
       		{ return(*(char **)0); }
       
       /* ./tinfo/lib_longname.c */
      @@ -3224,13 +3268,13 @@
       
       #undef idlok
       int	idlok(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
       #undef idcok
       void	idcok(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ /* void */ }
       
      @@ -3241,31 +3285,31 @@
       
       #undef nodelay
       int	nodelay(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
       #undef notimeout
       int	notimeout(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL f)
       		{ return(*(int *)0); }
       
       #undef wtimeout
       void	wtimeout(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		int	delay)
       		{ /* void */ }
       
       #undef keypad
       int	keypad(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
       #undef meta
       int	meta(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
      @@ -3317,7 +3361,7 @@
       
       #undef intrflush
       int	intrflush(
      -		WINDOW	*win, 
      +		WINDOW	*win,
       		NCURSES_BOOL flag)
       		{ return(*(int *)0); }
       
      @@ -3325,11 +3369,8 @@
       
       #include 
       
      -#undef use_env
      -void	use_env(
      -		NCURSES_BOOL f)
      -		{ /* void */ }
      -
      +#undef ttytype
      +char	ttytype[256 ];
       #undef LINES
       int	LINES;
       #undef COLS
      @@ -3337,17 +3378,31 @@
       #undef TABSIZE
       int	TABSIZE;
       
      +#undef use_env
      +void	use_env(
      +		NCURSES_BOOL f)
      +		{ /* void */ }
      +
       #undef _nc_update_screensize
       void	_nc_update_screensize(void)
       		{ /* void */ }
       
      -#undef ttytype
      -char	ttytype[256 ];
      +#undef _nc_get_locale
      +char	*_nc_get_locale(void)
      +		{ return(*(char **)0); }
      +
      +#undef _nc_unicode_locale
      +int	_nc_unicode_locale(void)
      +		{ return(*(int *)0); }
      +
      +#undef _nc_locale_breaks_acs
      +int	_nc_locale_breaks_acs(void)
      +		{ return(*(int *)0); }
       
       #undef setupterm
       int	setupterm(
      -		char	*tname, 
      -		int	Filedes, 
      +		char	*tname,
      +		int	Filedes,
       		int	*errret)
       		{ return(*(int *)0); }
       
      @@ -3360,7 +3415,7 @@
       
       #undef tgetent
       int	tgetent(
      -		char	*bufp, 
      +		char	*bufp,
       		const char *name)
       		{ return(*(int *)0); }
       
      @@ -3382,7 +3437,7 @@
       
       #undef tgetstr
       char	*tgetstr(
      -		char	*id, 
      +		char	*id,
       		char	**area)
       		{ return(*(char **)0); }
       
      @@ -3396,8 +3451,8 @@
       
       #undef tgoto
       char	*tgoto(
      -		const char *string, 
      -		int	x, 
      +		const char *string,
      +		int	x,
       		int	y)
       		{ return(*(char **)0); }
       
      @@ -3431,9 +3486,16 @@
       #undef _nc_tparm_err
       int	_nc_tparm_err;
       
      +#undef _nc_tparm_analyze
      +int	_nc_tparm_analyze(
      +		const char *string,
      +		char	*p_is_s[9 ],
      +		int	*popcount)
      +		{ return(*(int *)0); }
      +
       #undef tparm
       char	*tparm(
      -		char	*string, 
      +		char	*string,
       		...)
       		{ return(*(char **)0); }
       
      @@ -3467,8 +3529,8 @@
       
       #undef tputs
       int	tputs(
      -		const char *string, 
      -		int	affcnt, 
      +		const char *string,
      +		int	affcnt,
       		int	(*outc)(
       		int	p1))
       		{ return(*(int *)0); }
      @@ -3489,15 +3551,25 @@
       
       #undef _tracef
       void	_tracef(
      -		const char *fmt, 
      +		const char *fmt,
       		...)
       		{ /* void */ }
       
      +#undef _nc_retrace_bool
      +NCURSES_BOOL _nc_retrace_bool(
      +		NCURSES_BOOL code)
      +		{ return(*(NCURSES_BOOL *)0); }
      +
       #undef _nc_retrace_int
       int	_nc_retrace_int(
       		int	code)
       		{ return(*(int *)0); }
       
      +#undef _nc_retrace_unsigned
      +unsigned _nc_retrace_unsigned(
      +		unsigned code)
      +		{ return(*(unsigned *)0); }
      +
       #undef _nc_retrace_ptr
       char	*_nc_retrace_ptr(
       		char	*code)
      @@ -3576,8 +3648,8 @@
       
       #undef _nc_timed_wait
       int	_nc_timed_wait(
      -		int	mode, 
      -		int	milliseconds, 
      +		int	mode,
      +		int	milliseconds,
       		int	*timeleft)
       		{ return(*(int *)0); }
       
      @@ -3590,8 +3662,8 @@
       
       #undef _nc_name_match
       int	_nc_name_match(
      -		const char *const namelst, 
      -		const char *const name, 
      +		const char *const namelst,
      +		const char *const name,
       		const char *const delim)
       		{ return(*(int *)0); }
       
      @@ -3614,14 +3686,14 @@
       
       #undef _nc_parse_entry
       int	_nc_parse_entry(
      -		struct entry *entryp, 
      -		int	literal, 
      +		struct entry *entryp,
      +		int	literal,
       		NCURSES_BOOL silent)
       		{ return(*(int *)0); }
       
       #undef _nc_capcmp
       int	_nc_capcmp(
      -		const char *s, 
      +		const char *s,
       		const char *t)
       		{ return(*(int *)0); }
       
      @@ -3644,14 +3716,14 @@
       
       #undef _nc_read_file_entry
       int	_nc_read_file_entry(
      -		const char *const filename, 
      +		const char *const filename,
       		TERMTYPE *ptr)
       		{ return(*(int *)0); }
       
       #undef _nc_read_entry
       int	_nc_read_entry(
      -		const char *const tn, 
      -		char	*const filename, 
      +		const char *const tn,
      +		char	*const filename,
       		TERMTYPE *const tp)
       		{ return(*(int *)0); }
       
      @@ -3659,7 +3731,7 @@
       
       #undef _nc_read_termcap_entry
       int	_nc_read_termcap_entry(
      -		const char *const tn, 
      +		const char *const tn,
       		TERMTYPE *const tp)
       		{ return(*(int *)0); }
       
      @@ -3667,7 +3739,7 @@
       
       #undef _nc_set_buffer
       void	_nc_set_buffer(
      -		FILE	*ofp, 
      +		FILE	*ofp,
       		NCURSES_BOOL buffered)
       		{ /* void */ }
       
      @@ -3675,32 +3747,32 @@
       
       #undef _nc_str_init
       string_desc *_nc_str_init(
      -		string_desc *dst, 
      -		char	*src, 
      +		string_desc *dst,
      +		char	*src,
       		size_t	len)
       		{ return(*(string_desc **)0); }
       
       #undef _nc_str_null
       string_desc *_nc_str_null(
      -		string_desc *dst, 
      +		string_desc *dst,
       		size_t	len)
       		{ return(*(string_desc **)0); }
       
       #undef _nc_str_copy
       string_desc *_nc_str_copy(
      -		string_desc *dst, 
      +		string_desc *dst,
       		string_desc *src)
       		{ return(*(string_desc **)0); }
       
       #undef _nc_safe_strcat
       NCURSES_BOOL _nc_safe_strcat(
      -		string_desc *dst, 
      +		string_desc *dst,
       		const char *src)
       		{ return(*(NCURSES_BOOL *)0); }
       
       #undef _nc_safe_strcpy
       NCURSES_BOOL _nc_safe_strcpy(
      -		string_desc *dst, 
      +		string_desc *dst,
       		const char *src)
       		{ return(*(NCURSES_BOOL *)0); }
       
      @@ -3713,10 +3785,16 @@
       
       #undef _nc_trace_buf
       char	*_nc_trace_buf(
      -		int	bufnum, 
      +		int	bufnum,
       		size_t	want)
       		{ return(*(char **)0); }
       
      +#undef _nc_trace_bufcat
      +char	*_nc_trace_bufcat(
      +		int	bufnum,
      +		const char *value)
      +		{ return(*(char **)0); }
      +
       /* ./trace/trace_tries.c */
       
       #undef _nc_trace_tries
      @@ -3735,7 +3813,7 @@
       
       #undef _nc_visbuf2
       const char *_nc_visbuf2(
      -		int	bufnum, 
      +		int	bufnum,
       		const char *buf)
       		{ return(*(const char **)0); }
       
      @@ -3744,9 +3822,15 @@
       		const char *buf)
       		{ return(*(const char **)0); }
       
      +#undef _nc_visbufn
      +const char *_nc_visbufn(
      +		const char *buf,
      +		int	len)
      +		{ return(*(const char **)0); }
      +
       #undef _nc_viswbuf2
       const char *_nc_viswbuf2(
      -		int	bufnum, 
      +		int	bufnum,
       		const wchar_t *buf)
       		{ return(*(const char **)0); }
       
      @@ -3755,16 +3839,22 @@
       		const wchar_t *buf)
       		{ return(*(const char **)0); }
       
      +#undef _nc_viswbufn
      +const char *_nc_viswbufn(
      +		const wchar_t *buf,
      +		int	len)
      +		{ return(*(const char **)0); }
      +
       #undef _nc_viscbuf2
       const char *_nc_viscbuf2(
      -		int	bufnum, 
      -		const cchar_t *buf, 
      +		int	bufnum,
      +		const cchar_t *buf,
       		int	len)
       		{ return(*(const char **)0); }
       
       #undef _nc_viscbuf
       const char *_nc_viscbuf(
      -		const cchar_t *buf, 
      +		const cchar_t *buf,
       		int	len)
       		{ return(*(const char **)0); }
       
      diff -urNd -urNd ncurses-5.3/ncurses/modules ncurses-5.3.20030906.orig/ncurses/modules
      --- ncurses-5.3/ncurses/modules	Sat May 11 15:14:41 2002
      +++ ncurses-5.3.20030906.orig/ncurses/modules	Sun Jul 20 14:02:09 2003
      @@ -1,4 +1,4 @@
      -# $Id: modules,v 1.90 2002/05/11 20:14:41 tom Exp $
      +# $Id: modules,v 1.96 2003/07/05 16:01:45 tom Exp $
       ##############################################################################
       # Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.                #
       #                                                                            #
      @@ -61,7 +61,6 @@
       lib_initscr	lib		$(base)		$(INCDIR)/tic.h
       lib_insch	lib		$(base)
       lib_insdel	lib		$(base)
      -lib_insstr	lib		$(base)
       lib_instr	lib		$(base)
       lib_isendwin	lib		$(base)
       lib_leaveok	lib		$(base)
      @@ -120,8 +119,12 @@
       sigaction	lib		$(base)
       vsscanf 	lib		$(base)
       
      +# actually an extension, but with its own configure option (--disable-leaks)
      +lib_freeall	lib		$(base)
      +
       # XSI extensions to the base library (wide-character)
       @ widechar
      +charable	lib		$(wide)
       lib_box_set	lib		$(wide)
       lib_cchar	lib		$(wide)
       lib_get_wch	lib		$(wide)
      @@ -130,9 +133,9 @@
       lib_hline_set	lib		$(wide)
       lib_in_wch	lib		$(wide)
       lib_in_wchnstr	lib		$(wide)
      -lib_ins_nwstr	lib		$(wide)
       lib_ins_wch	lib		$(wide)
       lib_inwstr	lib		$(wide)
      +lib_slk_wset	lib		$(wide)
       lib_unget_wch	lib		$(wide)
       lib_vid_attr	lib		$(wide)		../include/term.h
       lib_vline_set	lib		$(wide)
      @@ -143,10 +146,10 @@
       @ ext_funcs
       define_key	lib		$(base)
       expanded	lib		.
      +key_defined	lib		$(base)
       keybound	lib		$(base)
       keyok		lib		$(base)
       lib_dft_fgbg	lib		$(base)		../include/term.h
      -lib_freeall	lib		$(base)
       lib_print	lib		$(tinfo)	../include/term.h
       resizeterm	lib		$(base)		../include/term.h
       trace_xnames	lib		$(trace)	../include/term.h $(INCDIR)/term_entry.h
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/MKkeys_list.sh ncurses-5.3.20030906.orig/ncurses/tinfo/MKkeys_list.sh
      --- ncurses-5.3/ncurses/tinfo/MKkeys_list.sh	Sat Jun 16 11:50:35 2001
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/MKkeys_list.sh	Tue May 13 20:08:22 2003
      @@ -1,7 +1,7 @@
       #! /bin/sh
      -# $Id: MKkeys_list.sh,v 1.2 2001/06/16 16:50:35 tom Exp $
      +# $Id: MKkeys_list.sh,v 1.3 2003/01/11 22:24:53 tom Exp $
       ##############################################################################
      -# Copyright (c) 2001 Free Software Foundation, Inc.                          #
      +# Copyright (c) 2001,2003 Free Software Foundation, Inc.                     #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -39,7 +39,7 @@
       
       data=data$$
       trap 'rm -f $data' 0 1 2 5 15
      -sed -e 's/[	]\+/	/g' < $DATA >$data
      +sed -e 's/[	][	]*/	/g' < $DATA >$data
       
       cat <
       #include 
       
      -MODULE_ID("$Id: access.c,v 1.9 2001/06/23 22:11:49 tom Exp $")
      +MODULE_ID("$Id: access.c,v 1.10 2003/07/05 19:31:28 tom Exp $")
       
       #define LOWERCASE(c) ((isalpha(UChar(c)) && isupper(UChar(c))) ? tolower(UChar(c)) : (c))
       
      @@ -64,19 +64,28 @@
           return result;
       }
       
      -NCURSES_EXPORT(char *)
      -_nc_basename(char *path)
      +/*
      + * Return index of the basename
      + */
      +NCURSES_EXPORT(unsigned)
      +_nc_pathlast(const char *path)
       {
      -    char *result = strrchr(path, '/');
      +    const char *test = strrchr(path, '/');
       #ifdef __EMX__
      -    if (result == 0)
      -	result = strrchr(path, '\\');
      +    if (test == 0)
      +	test = strrchr(path, '\\');
       #endif
      -    if (result == 0)
      -	result = path;
      +    if (test == 0)
      +	test = path;
           else
      -	result++;
      -    return result;
      +	test++;
      +    return (test - path);
      +}
      +
      +NCURSES_EXPORT(char *)
      +_nc_basename(char *path)
      +{
      +    return path + _nc_pathlast(path);
       }
       
       NCURSES_EXPORT(int)
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/alloc_entry.c ncurses-5.3.20030906.orig/ncurses/tinfo/alloc_entry.c
      --- ncurses-5.3/ncurses/tinfo/alloc_entry.c	Sat Sep  7 15:04:15 2002
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/alloc_entry.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -47,7 +47,7 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: alloc_entry.c,v 1.37 2002/09/07 20:04:15 tom Exp $")
      +MODULE_ID("$Id: alloc_entry.c,v 1.38 2003/05/24 21:10:28 tom Exp $")
       
       #define ABSENT_OFFSET    -1
       #define CANCELLED_OFFSET -2
      @@ -61,10 +61,10 @@
       _nc_init_entry(TERMTYPE * const tp)
       /* initialize a terminal type data block */
       {
      -    int i;
      +    unsigned i;
       
           if (stringbuf == 0)
      -	stringbuf = malloc(MAX_STRTAB);
      +	stringbuf = (char *) malloc(MAX_STRTAB);
       
       #if NCURSES_XNAMES
           tp->num_Booleans = BOOLCOUNT;
      @@ -126,7 +126,8 @@
       /* copy the string parts to allocated storage, preserving pointers to it */
       {
           int offsets[MAX_ENTRY_SIZE / 2], useoffsets[MAX_USES];
      -    int i, n;
      +    unsigned i, n;
      +    unsigned nuses = ep->nuses;
           TERMTYPE *tp = &(ep->tterm);
       
           if (copy_strings) {
      @@ -141,7 +142,7 @@
       	    }
       	}
       
      -	for (i = 0; i < ep->nuses; i++) {
      +	for (i = 0; i < nuses; i++) {
       	    if (ep->uses[i].name == 0) {
       		ep->uses[i].name = _nc_save_str(ep->uses[i].name);
       	    }
      @@ -160,7 +161,7 @@
       	    offsets[i] = tp->Strings[i] - stringbuf;
           }
       
      -    for (i = 0; i < ep->nuses; i++) {
      +    for (i = 0; i < nuses; i++) {
       	if (ep->uses[i].name == 0)
       	    useoffsets[i] = ABSENT_OFFSET;
       	else
      @@ -200,7 +201,7 @@
           }
       #endif
       
      -    for (i = 0; i < ep->nuses; i++) {
      +    for (i = 0; i < nuses; i++) {
       	if (useoffsets[i] == ABSENT_OFFSET)
       	    ep->uses[i].name = 0;
       	else
      @@ -209,11 +210,10 @@
       }
       
       NCURSES_EXPORT(void)
      -_nc_merge_entry
      -(TERMTYPE * const to, TERMTYPE * const from)
      +_nc_merge_entry(TERMTYPE * const to, TERMTYPE * const from)
       /* merge capabilities from `from' entry into `to' entry */
       {
      -    int i;
      +    unsigned i;
       
       #if NCURSES_XNAMES
           _nc_align_termtype(to, from);
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/alloc_ttype.c ncurses-5.3.20030906.orig/ncurses/tinfo/alloc_ttype.c
      --- ncurses-5.3/ncurses/tinfo/alloc_ttype.c	Sat Sep 28 10:28:43 2002
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/alloc_ttype.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1999-2000,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1999-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -43,7 +43,7 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: alloc_ttype.c,v 1.13 2002/09/28 15:28:43 tom Exp $")
      +MODULE_ID("$Id: alloc_ttype.c,v 1.14 2003/05/24 21:10:28 tom Exp $")
       
       #if NCURSES_XNAMES
       /*
      @@ -92,8 +92,10 @@
       }
       
       static void
      -realign_data(TERMTYPE * to, char **ext_Names, int ext_Booleans, int
      -	     ext_Numbers, int ext_Strings)
      +realign_data(TERMTYPE * to, char **ext_Names,
      +	     int ext_Booleans,
      +	     int ext_Numbers,
      +	     int ext_Strings)
       {
           int n, m, base;
           int limit = (to->ext_Booleans + to->ext_Numbers + to->ext_Strings);
      @@ -371,8 +373,7 @@
       }
       
       NCURSES_EXPORT(void)
      -_nc_align_termtype
      -(TERMTYPE * to, TERMTYPE * from)
      +_nc_align_termtype(TERMTYPE * to, TERMTYPE * from)
       {
           int na = NUM_EXT_NAMES(to);
           int nb = NUM_EXT_NAMES(from);
      @@ -457,10 +458,9 @@
       #endif
       
       NCURSES_EXPORT(void)
      -_nc_copy_termtype
      -(TERMTYPE * dst, TERMTYPE * src)
      +_nc_copy_termtype(TERMTYPE * dst, TERMTYPE * src)
       {
      -    int i;
      +    unsigned i;
       
           *dst = *src;		/* ...to copy the sizes and string-tables */
           dst->Booleans = typeMalloc(char, NUM_BOOLEANS(dst));
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/comp_parse.c ncurses-5.3.20030906.orig/ncurses/tinfo/comp_parse.c
      --- ncurses-5.3/ncurses/tinfo/comp_parse.c	Sat Sep  7 15:01:28 2002
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/comp_parse.c	Fri Sep 12 16:41:41 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -52,7 +52,7 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: comp_parse.c,v 1.53 2002/09/07 20:01:28 tom Exp $")
      +MODULE_ID("$Id: comp_parse.c,v 1.55 2003/08/02 23:53:42 tom Exp $")
       
       static void sanity_check(TERMTYPE *);
       NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype) (TERMTYPE *) = sanity_check;
      @@ -163,7 +163,7 @@
        ****************************************************************************/
       
       NCURSES_EXPORT(void)
      -_nc_read_entry_source(FILE * fp, char *buf,
      +_nc_read_entry_source(FILE *fp, char *buf,
       		      int literal, bool silent,
       		      bool(*hook) (ENTRY *))
       /* slurp all entries in the given file into core */
      @@ -216,7 +216,8 @@
       {
           ENTRY *qp, *rp, *lastread = 0;
           bool keepgoing;
      -    int i, j, unresolved, total_unresolved, multiples;
      +    int i, unresolved, total_unresolved, multiples;
      +    unsigned j;
       
           DEBUG(2, ("RESOLUTION BEGINNING"));
       
      @@ -397,7 +398,7 @@
       	 */
       	for_entry_list(qp) {
       	    for_each_boolean(j, &(qp->tterm)) {
      -		if ((int) qp->tterm.Booleans[j] == CANCELLED_BOOLEAN)
      +		if (qp->tterm.Booleans[j] == CANCELLED_BOOLEAN)
       		    qp->tterm.Booleans[j] = ABSENT_BOOLEAN;
       	    }
       	    for_each_number(j, &(qp->tterm)) {
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/comp_scan.c ncurses-5.3.20030906.orig/ncurses/tinfo/comp_scan.c
      --- ncurses-5.3/ncurses/tinfo/comp_scan.c	Sat Sep  7 15:04:09 2002
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/comp_scan.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -50,7 +50,7 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: comp_scan.c,v 1.61 2002/09/07 20:04:09 tom Exp $")
      +MODULE_ID("$Id: comp_scan.c,v 1.64 2003/05/31 23:27:20 tom Exp $")
       
       /*
        * Maximum length of string capability we'll accept before raising an error.
      @@ -93,10 +93,10 @@
       _nc_disable_period = FALSE;	/* used by tic -a option */
       #endif
       
      +static bool end_of_stream(void);
       static int last_char(void);
       static int next_char(void);
       static long stream_pos(void);
      -static bool end_of_stream(void);
       static void push_back(char c);
       
       /* Assume we may be looking at a termcap-style continuation */
      @@ -148,8 +148,11 @@
           static const char terminfo_punct[] = "@%&*!#";
           static char *buffer;
       
      +    char *after_list;
      +    char *after_name;
           char *numchk;
           char *ptr;
      +    char *s;
           char numbuf[80];
           int ch;
           int dot_flag = FALSE;
      @@ -173,8 +176,12 @@
       	return (retval);
           }
       
      -    if (end_of_stream())
      +    if (end_of_stream()) {
      +	if (buffer != 0) {
      +	    FreeAndNull(buffer);
      +	}
       	return (EOF);
      +    }
       
         start_token:
           token_start = stream_pos();
      @@ -227,17 +234,21 @@
       	*(ptr++) = ch;
       
       	if (first_column) {
      -	    char *desc;
      -
       	    _nc_comment_start = token_start;
       	    _nc_comment_end = _nc_curr_file_pos;
       	    _nc_start_line = _nc_curr_line;
       
       	    _nc_syntax = ERR;
      +	    after_name = 0;
      +	    after_list = 0;
       	    while ((ch = next_char()) != '\n') {
      -		if (ch == EOF)
      +		if (ch == EOF) {
       		    _nc_err_abort(MSG_NO_MEMORY);
      -		else if (ch == ':' && last_char() != ',') {
      +		} else if (ch == '|') {
      +		    after_list = ptr;
      +		    if (after_name == 0)
      +			after_name = ptr;
      +		} else if (ch == ':' && last_char() != ',') {
       		    _nc_syntax = SYN_TERMCAP;
       		    separator = ':';
       		    break;
      @@ -245,14 +256,18 @@
       		    _nc_syntax = SYN_TERMINFO;
       		    separator = ',';
       		    /*
      -		     * Fall-through here is not an accident.  The idea is that
      -		     * if we see a comma, we figure this is terminfo unless we
      -		     * subsequently run into a colon -- but we don't stop
      -		     * looking for that colon until hitting a newline.  This
      +		     * If we did not see a '|', then we found a name with no
      +		     * aliases or description.
      +		     */
      +		    if (after_name == 0)
      +			break;
      +		    /*
      +		     * If we see a comma, we assume this is terminfo unless we
      +		     * subsequently run into a colon.  But we don't stop
      +		     * looking for a colon until hitting a newline.  This
       		     * allows commas to be embedded in description fields of
       		     * either syntax.
       		     */
      -		    /* FALLTHRU */
       		} else
       		    ch = eat_escaped_newline(ch);
       
      @@ -277,53 +292,53 @@
       
       	    /*
       	     * This is the soonest we have the terminal name fetched.  Set up
      -	     * for following warning messages.
      +	     * for following warning messages.  If there's no '|', then there
      +	     * is no description.
       	     */
      -	    ptr = strchr(buffer, '|');
      -	    if (ptr == (char *) NULL)
      -		ptr = buffer + strlen(buffer);
      -	    ch = *ptr;
      -	    *ptr = '\0';
      -	    _nc_set_type(buffer);
      -	    *ptr = ch;
      +	    if (after_name != 0) {
      +		ch = *after_name;
      +		*after_name = '\0';
      +		_nc_set_type(buffer);
      +		*after_name = ch;
      +	    }
       
       	    /*
       	     * Compute the boundary between the aliases and the description
       	     * field for syntax-checking purposes.
       	     */
      -	    desc = strrchr(buffer, '|');
      -	    if (!silent && desc) {
      -		if (*desc == '\0')
      -		    _nc_warning("empty longname field");
      -		else if (strchr(desc, ' ') == (char *) NULL)
      -		    _nc_warning("older tic versions may treat the description field as an alias");
      +	    if (after_list != 0) {
      +		if (!silent) {
      +		    if (*after_list == '\0')
      +			_nc_warning("empty longname field");
      +		    else if (strchr(after_list, ' ') == 0)
      +			_nc_warning("older tic versions may treat the description field as an alias");
      +		}
      +	    } else {
      +		after_list = buffer + strlen(buffer);
      +		DEBUG(1, ("missing description"));
       	    }
      -	    if (!desc)
      -		desc = buffer + strlen(buffer);
       
       	    /*
       	     * Whitespace in a name field other than the long name can confuse
       	     * rdist and some termcap tools.  Slashes are a no-no.  Other
       	     * special characters can be dangerous due to shell expansion.
       	     */
      -	    for (ptr = buffer; ptr < desc; ptr++) {
      -		if (isspace(UChar(*ptr))) {
      +	    for (s = buffer; s < after_list; ++s) {
      +		if (isspace(UChar(*s))) {
       		    if (!silent)
       			_nc_warning("whitespace in name or alias field");
       		    break;
      -		} else if (*ptr == '/') {
      +		} else if (*s == '/') {
       		    if (!silent)
       			_nc_warning("slashes aren't allowed in names or aliases");
       		    break;
      -		} else if (strchr("$[]!*?", *ptr)) {
      +		} else if (strchr("$[]!*?", *s)) {
       		    if (!silent)
      -			_nc_warning("dubious character `%c' in name or alias field", *ptr);
      +			_nc_warning("dubious character `%c' in name or alias field", *s);
       		    break;
       		}
       	    }
       
      -	    ptr = buffer;
      -
       	    _nc_curr_token.tk_name = buffer;
       	    type = NAMES;
       	} else {
      @@ -684,7 +699,7 @@
        */
       
       NCURSES_EXPORT(void)
      -_nc_reset_input(FILE * fp, char *buf)
      +_nc_reset_input(FILE *fp, char *buf)
       {
           pushtype = NO_PUSHBACK;
           if (pushname != 0)
      @@ -766,7 +781,7 @@
       		if (used == 0)
       		    _nc_curr_file_pos = ftell(yyin);
       
      -		if (fgets(result + used, allocated - used, yyin) != NULL) {
      +		if (fgets(result + used, allocated - used, yyin) != 0) {
       		    bufstart = result;
       		    if (used == 0) {
       			_nc_curr_line++;
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/free_ttype.c ncurses-5.3.20030906.orig/ncurses/tinfo/free_ttype.c
      --- ncurses-5.3/ncurses/tinfo/free_ttype.c	Sun Sep  1 15:29:03 2002
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/free_ttype.c	Fri Sep 12 16:41:56 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1999-2000,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1999-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -43,11 +43,43 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: free_ttype.c,v 1.8 2002/09/01 20:29:03 tom Exp $")
      +MODULE_ID("$Id: free_ttype.c,v 1.10 2003/08/09 21:22:03 tom Exp $")
       
       NCURSES_EXPORT(void)
       _nc_free_termtype(TERMTYPE * ptr)
       {
      +    T(("_nc_free_termtype(%s)", ptr->term_names));
      +
      +    if (ptr->str_table == 0
      +	|| (ptr->term_names < ptr->str_table
      +	    || ptr->term_names >= ptr->str_table + MAX_ENTRY_SIZE)) {
      +	FreeIfNeeded(ptr->term_names);
      +    }
      +#if NO_LEAKS
      +    else {
      +	if (ptr->str_table != 0
      +	    && (ptr->term_names < ptr->str_table + MAX_ENTRY_SIZE)) {
      +	    int j;
      +	    char *last = ptr->str_table;
      +	    /*
      +	     * We should have saved the entry-size someplace.  Too late,
      +	     * but this is useful for the memory-leak checking, though more
      +	     * work/time than should be in the normal library.
      +	     */
      +	    for (j = 0; j < NUM_STRINGS(ptr); j++) {
      +		char *s = ptr->Strings[j];
      +		if (VALID_STRING(s)) {
      +		    char *t = s + strlen(s) + 1;
      +		    if (t > last)
      +			last = t;
      +		}
      +	    }
      +	    if (last < ptr->term_names) {
      +		FreeIfNeeded(ptr->term_names);
      +	    }
      +	}
      +    }
      +#endif
           FreeIfNeeded(ptr->str_table);
           FreeIfNeeded(ptr->Booleans);
           FreeIfNeeded(ptr->Numbers);
      @@ -66,7 +98,9 @@
       use_extended_names(bool flag)
       {
           int oldflag = _nc_user_definable;
      +
      +    T((T_CALLED("use_extended_names(%d)"), flag));
           _nc_user_definable = flag;
      -    return oldflag;
      +    returnBool(oldflag);
       }
       #endif
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/lib_acs.c ncurses-5.3.20030906.orig/ncurses/tinfo/lib_acs.c
      --- ncurses-5.3/ncurses/tinfo/lib_acs.c	Sun Sep  1 14:26:57 2002
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/lib_acs.c	Tue May 13 20:08:22 2003
      @@ -34,7 +34,7 @@
       #include 
       #include 		/* ena_acs, acs_chars */
       
      -MODULE_ID("$Id: lib_acs.c,v 1.22 2002/09/01 19:26:57 tom Exp $")
      +MODULE_ID("$Id: lib_acs.c,v 1.25 2002/12/28 16:26:46 tom Exp $")
       
       #if BROKEN_LINKER
       NCURSES_EXPORT_VAR(chtype *)
      @@ -55,101 +55,88 @@
       NCURSES_EXPORT(void)
       _nc_init_acs(void)
       {
      +    chtype *fake_map = acs_map;
      +    chtype *real_map = SP != 0 ? SP->_acs_map : fake_map;
      +    int j;
      +
           T(("initializing ACS map"));
      -#if !BROKEN_LINKER
      -    memset(acs_map, 0, sizeof(acs_map));
      -#endif
      +
      +    /*
      +     * If we're using this from curses (rather than terminfo), we are storing
      +     * the mapping information in the SCREEN struct so we can decide how to
      +     * render it.
      +     */
      +    if (real_map != fake_map) {
      +	for (j = 1; j < ACS_LEN; ++j) {
      +	    real_map[j] = 0;
      +	    fake_map[j] = A_ALTCHARSET | j;
      +	}
      +    } else {
      +	for (j = 1; j < ACS_LEN; ++j) {
      +	    real_map[j] = 0;
      +	}
      +    }
       
           /*
            * Initializations for a UNIX-like multi-terminal environment.  Use
            * ASCII chars and count on the terminfo description to do better.
            */
      -    ACS_ULCORNER = '+';		/* should be upper left corner */
      -    ACS_LLCORNER = '+';		/* should be lower left corner */
      -    ACS_URCORNER = '+';		/* should be upper right corner */
      -    ACS_LRCORNER = '+';		/* should be lower right corner */
      -    ACS_RTEE = '+';		/* should be tee pointing left */
      -    ACS_LTEE = '+';		/* should be tee pointing right */
      -    ACS_BTEE = '+';		/* should be tee pointing up */
      -    ACS_TTEE = '+';		/* should be tee pointing down */
      -    ACS_HLINE = '-';		/* should be horizontal line */
      -    ACS_VLINE = '|';		/* should be vertical line */
      -    ACS_PLUS = '+';		/* should be large plus or crossover */
      -    ACS_S1 = '~';		/* should be scan line 1 */
      -    ACS_S9 = '_';		/* should be scan line 9 */
      -    ACS_DIAMOND = '+';		/* should be diamond */
      -    ACS_CKBOARD = ':';		/* should be checker board (stipple) */
      -    ACS_DEGREE = '\'';		/* should be degree symbol */
      -    ACS_PLMINUS = '#';		/* should be plus/minus */
      -    ACS_BULLET = 'o';		/* should be bullet */
      -    ACS_LARROW = '<';		/* should be arrow pointing left */
      -    ACS_RARROW = '>';		/* should be arrow pointing right */
      -    ACS_DARROW = 'v';		/* should be arrow pointing down */
      -    ACS_UARROW = '^';		/* should be arrow pointing up */
      -    ACS_BOARD = '#';		/* should be board of squares */
      -    ACS_LANTERN = '#';		/* should be lantern symbol */
      -    ACS_BLOCK = '#';		/* should be solid square block */
      +    real_map['l'] = '+';	/* should be upper left corner */
      +    real_map['m'] = '+';	/* should be lower left corner */
      +    real_map['k'] = '+';	/* should be upper right corner */
      +    real_map['j'] = '+';	/* should be lower right corner */
      +    real_map['u'] = '+';	/* should be tee pointing left */
      +    real_map['t'] = '+';	/* should be tee pointing right */
      +    real_map['v'] = '+';	/* should be tee pointing up */
      +    real_map['w'] = '+';	/* should be tee pointing down */
      +    real_map['q'] = '-';	/* should be horizontal line */
      +    real_map['x'] = '|';	/* should be vertical line */
      +    real_map['n'] = '+';	/* should be large plus or crossover */
      +    real_map['o'] = '~';	/* should be scan line 1 */
      +    real_map['s'] = '_';	/* should be scan line 9 */
      +    real_map['`'] = '+';	/* should be diamond */
      +    real_map['a'] = ':';	/* should be checker board (stipple) */
      +    real_map['f'] = '\'';	/* should be degree symbol */
      +    real_map['g'] = '#';	/* should be plus/minus */
      +    real_map['~'] = 'o';	/* should be bullet */
      +    real_map[','] = '<';	/* should be arrow pointing left */
      +    real_map['+'] = '>';	/* should be arrow pointing right */
      +    real_map['.'] = 'v';	/* should be arrow pointing down */
      +    real_map['-'] = '^';	/* should be arrow pointing up */
      +    real_map['h'] = '#';	/* should be board of squares */
      +    real_map['i'] = '#';	/* should be lantern symbol */
      +    real_map['0'] = '#';	/* should be solid square block */
           /* these defaults were invented for ncurses */
      -    ACS_S3 = '-';		/* should be scan line 3 */
      -    ACS_S7 = '-';		/* should be scan line 7 */
      -    ACS_LEQUAL = '<';		/* should be less-than-or-equal-to */
      -    ACS_GEQUAL = '>';		/* should be greater-than-or-equal-to */
      -    ACS_PI = '*';		/* should be greek pi */
      -    ACS_NEQUAL = '!';		/* should be not-equal */
      -    ACS_STERLING = 'f';		/* should be pound-sterling symbol */
      +    real_map['p'] = '-';	/* should be scan line 3 */
      +    real_map['r'] = '-';	/* should be scan line 7 */
      +    real_map['y'] = '<';	/* should be less-than-or-equal-to */
      +    real_map['z'] = '>';	/* should be greater-than-or-equal-to */
      +    real_map['{'] = '*';	/* should be greek pi */
      +    real_map['|'] = '!';	/* should be not-equal */
      +    real_map['}'] = 'f';	/* should be pound-sterling symbol */
      +
      +#if !USE_WIDEC_SUPPORT
      +    if (_nc_unicode_locale() && _nc_locale_breaks_acs()) {
      +	acs_chars = NULL;
      +	ena_acs = NULL;
      +    }
      +#endif
       
           if (ena_acs != NULL) {
       	TPUTS_TRACE("ena_acs");
       	putp(ena_acs);
           }
      -#define ALTCHAR(c)	((chtype)(((unsigned char)(c)) | A_ALTCHARSET))
       
           if (acs_chars != NULL) {
       	size_t i = 0;
       	size_t length = strlen(acs_chars);
       
      -	while (i < length)
      -	    switch (acs_chars[i]) {
      -	    case 'l':
      -	    case 'm':
      -	    case 'k':
      -	    case 'j':
      -	    case 'u':
      -	    case 't':
      -	    case 'v':
      -	    case 'w':
      -	    case 'q':
      -	    case 'x':
      -	    case 'n':
      -	    case 'o':
      -	    case 's':
      -	    case '`':
      -	    case 'a':
      -	    case 'f':
      -	    case 'g':
      -	    case '~':
      -	    case ',':
      -	    case '+':
      -	    case '.':
      -	    case '-':
      -	    case 'h':
      -	    case 'i':
      -	    case '0':
      -	    case 'p':
      -	    case 'r':
      -	    case 'y':
      -	    case 'z':
      -	    case '{':
      -	    case '|':
      -	    case '}':
      -		acs_map[(unsigned int) acs_chars[i]] =
      -		    ALTCHAR(acs_chars[i + 1]);
      -		i++;
      -		/* FALLTHRU */
      -	    default:
      -		i++;
      -		break;
      +	while (i + 1 < length) {
      +	    if (acs_chars[i] != 0 && UChar(acs_chars[i]) < ACS_LEN) {
      +		real_map[UChar(acs_chars[i])] = UChar(acs_chars[i + 1]) | A_ALTCHARSET;
       	    }
      +	    i += 2;
      +	}
           }
       #ifdef TRACE
           /* Show the equivalent mapping, noting if it does not match the
      @@ -159,9 +146,9 @@
       	size_t n, m;
       	char show[ACS_LEN + 1];
       	for (n = 1, m = 0; n < ACS_LEN; n++) {
      -	    if (acs_map[n] != 0) {
      +	    if (real_map[n] != 0) {
       		show[m++] = (char) n;
      -		show[m++] = ChCharOf(acs_map[n]);
      +		show[m++] = ChCharOf(real_map[n]);
       	    }
       	}
       	show[m] = 0;
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/lib_cur_term.c ncurses-5.3.20030906.orig/ncurses/tinfo/lib_cur_term.c
      --- ncurses-5.3/ncurses/tinfo/lib_cur_term.c	Sat Dec  9 20:55:07 2000
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/lib_cur_term.c	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -40,7 +40,7 @@
       #include 		/* TTY, cur_term */
       #include 		/* ospeed */
       
      -MODULE_ID("$Id: lib_cur_term.c,v 1.11 2000/12/10 02:55:07 tom Exp $")
      +MODULE_ID("$Id: lib_cur_term.c,v 1.12 2003/02/23 01:00:56 tom Exp $")
       
       NCURSES_EXPORT_VAR(TERMINAL *) cur_term = 0;
       
      @@ -49,11 +49,14 @@
       {
           TERMINAL *oldterm = cur_term;
       
      +    T((T_CALLED("set_curterm(%p)"), termp));
      +
           if ((cur_term = termp) != 0) {
       	ospeed = _nc_ospeed(cur_term->_baudrate);
       	PC = (pad_char != NULL) ? pad_char[0] : 0;
           }
      -    return oldterm;
      +    T((T_RETURN("%p"), oldterm));
      +    return (oldterm);
       }
       
       NCURSES_EXPORT(int)
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/lib_kernel.c ncurses-5.3.20030906.orig/ncurses/tinfo/lib_kernel.c
      --- ncurses-5.3/ncurses/tinfo/lib_kernel.c	Sat May 11 15:32:18 2002
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/lib_kernel.c	Tue May 13 20:08:22 2003
      @@ -48,12 +48,12 @@
       #include 
       #include 		/* cur_term */
       
      -MODULE_ID("$Id: lib_kernel.c,v 1.22 2002/05/11 20:32:18 tom Exp $")
      +MODULE_ID("$Id: lib_kernel.c,v 1.23 2003/01/26 00:24:53 tom Exp $")
       
       static int
       _nc_vdisable(void)
       {
      -    int value;
      +    int value = -1;
       #if defined(_POSIX_VDISABLE) && defined(HAVE_UNISTD_H)
           value = _POSIX_VDISABLE;
       #endif
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/lib_setup.c ncurses-5.3.20030906.orig/ncurses/tinfo/lib_setup.c
      --- ncurses-5.3/ncurses/tinfo/lib_setup.c	Sat Oct 12 16:50:18 2002
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/lib_setup.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -29,6 +29,7 @@
       /****************************************************************************
        *  Author: Zeyd M. Ben-Halim  1992,1995               *
        *     and: Eric S. Raymond                          *
      + *     and: Thomas E. Dickey 1996-2003                                      *
        ****************************************************************************/
       
       /*
      @@ -48,7 +49,7 @@
       
       #include 		/* lines, columns, cur_term */
       
      -MODULE_ID("$Id: lib_setup.c,v 1.70 2002/10/12 21:50:18 tom Exp $")
      +MODULE_ID("$Id: lib_setup.c,v 1.77 2003/05/24 21:10:28 tom Exp $")
       
       /****************************************************************************
        *
      @@ -90,9 +91,12 @@
       # endif
       #endif
       
      -static int _use_env = TRUE;
      +NCURSES_EXPORT_VAR(char) ttytype[NAMESIZE] = "";
      +NCURSES_EXPORT_VAR(int) LINES = 0;
      +NCURSES_EXPORT_VAR(int) COLS = 0;
      +NCURSES_EXPORT_VAR(int) TABSIZE = 0;
       
      -static void do_prototype(void);
      +static int _use_env = TRUE;
       
       NCURSES_EXPORT(void)
       use_env(bool f)
      @@ -102,10 +106,6 @@
           returnVoid;
       }
       
      -NCURSES_EXPORT_VAR(int) LINES = 0;
      -NCURSES_EXPORT_VAR(int) COLS = 0;
      -NCURSES_EXPORT_VAR(int) TABSIZE = 0;
      -
       static void
       _nc_get_screensize(int *linep, int *colp)
       /* Obtain lines/columns values from the environment and/or terminfo entry */
      @@ -199,7 +199,6 @@
           else
       	TABSIZE = 8;
           T(("TABSIZE = %d", TABSIZE));
      -
       }
       
       #if USE_SIZECHANGE
      @@ -241,7 +240,9 @@
       grab_entry(const char *const tn, TERMTYPE * const tp)
       /* return 1 if entry found, 0 if not found, -1 if database not accessible */
       {
      +#if USE_DATABASE
           char filename[PATH_MAX];
      +#endif
           int status;
       
           /*
      @@ -275,7 +276,7 @@
            * a string is cancelled, for merging entries).
            */
           if (status == 1) {
      -	int n;
      +	unsigned n;
       	for_each_boolean(n, tp) {
       	    if (!VALID_BOOLEAN(tp->Booleans[n]))
       		tp->Booleans[n] = FALSE;
      @@ -289,7 +290,82 @@
       }
       #endif
       
      -NCURSES_EXPORT_VAR(char) ttytype[NAMESIZE] = "";
      +/*
      +**	do_prototype()
      +**
      +**	Take the real command character out of the CC environment variable
      +**	and substitute it in for the prototype given in 'command_character'.
      +**
      +*/
      +static void
      +do_prototype(void)
      +{
      +    int i;
      +    char CC;
      +    char proto;
      +    char *tmp;
      +
      +    tmp = getenv("CC");
      +    CC = *tmp;
      +    proto = *command_character;
      +
      +    for_each_string(i, &(cur_term->type)) {
      +	for (tmp = cur_term->type.Strings[i]; *tmp; tmp++) {
      +	    if (*tmp == proto)
      +		*tmp = CC;
      +	}
      +    }
      +}
      +
      +/*
      + * Check if we are running in a UTF-8 locale.
      + */
      +NCURSES_EXPORT(char *)
      +_nc_get_locale(void)
      +{
      +    char *env;
      +    if (((env = getenv("LC_ALL")) != 0 && *env != '\0')
      +	|| ((env = getenv("LC_CTYPE")) != 0 && *env != '\0')
      +	|| ((env = getenv("LANG")) != 0 && *env != '\0')) {
      +	return env;
      +    }
      +    return 0;
      +}
      +
      +/*
      + * Check if we are running in a UTF-8 locale.
      + */
      +NCURSES_EXPORT(int)
      +_nc_unicode_locale(void)
      +{
      +    char *env = _nc_get_locale();
      +    if (env != 0) {
      +	if (strstr(env, ".UTF-8") != 0)
      +	    return 1;
      +    }
      +    return 0;
      +}
      +
      +/*
      + * Check for known broken cases where a UTF-8 locale breaks the alternate
      + * character set.
      + */
      +NCURSES_EXPORT(int)
      +_nc_locale_breaks_acs(void)
      +{
      +    char *env = getenv("TERM");
      +    if (env != 0) {
      +	if (strstr(env, "linux"))
      +	    return 1;		/* always broken */
      +	if (strstr(env, "screen") != 0
      +	    && ((env = getenv("TERMCAP")) != 0
      +		&& strstr(env, "screen") != 0)
      +	    && strstr(env, "hhII00") != 0) {
      +	    return 1;
      +	}
      +    }
      +    return 0;
      +}
       
       /*
        *	setupterm(termname, Filedes, errret)
      @@ -302,7 +378,6 @@
       NCURSES_EXPORT(int)
       setupterm(NCURSES_CONST char *tname, int Filedes, int *errret)
       {
      -    struct term *term_ptr;
           int status;
       
           START_TRACE();
      @@ -321,77 +396,89 @@
       
           T(("your terminal name is %s", tname));
       
      -    term_ptr = typeCalloc(TERMINAL, 1);
      +    /*
      +     * Allow output redirection.  This is what SVr3 does.  If stdout is
      +     * directed to a file, screen updates go to standard error.
      +     */
      +    if (Filedes == STDOUT_FILENO && !isatty(Filedes))
      +	Filedes = STDERR_FILENO;
       
      -    if (term_ptr == 0) {
      -	ret_error0(-1, "Not enough memory to create terminal structure.\n");
      -    }
      +    /*
      +     * Check if we have already initialized to use this terminal.  If so, we
      +     * do not need to re-read the terminfo entry, or obtain TTY settings.
      +     *
      +     * This is an improvement on SVr4 curses.  If an application mixes curses
      +     * and termcap calls, it may call both initscr and tgetent.  This is not
      +     * really a good thing to do, but can happen if someone tries using ncurses
      +     * with the readline library.  The problem we are fixing is that when
      +     * tgetent calls setupterm, the resulting Ottyb struct in cur_term is
      +     * zeroed.  A subsequent call to endwin uses the zeroed terminal settings
      +     * rather than the ones saved in initscr.  So we check if cur_term appears
      +     * to contain terminal settings for the same output file as our current
      +     * call - and copy those terminal settings.  (SVr4 curses does not do this,
      +     * however applications that are working around the problem will still work
      +     * properly with this feature).
      +     */
      +    if (cur_term != 0
      +	&& cur_term->Filedes == Filedes
      +	&& _nc_name_match(cur_term->type.term_names, tname, "|")) {
      +	T(("reusing existing terminal information and mode-settings"));
      +    } else {
      +	TERMINAL *term_ptr;
      +
      +	term_ptr = typeCalloc(TERMINAL, 1);
      +
      +	if (term_ptr == 0) {
      +	    ret_error0(-1,
      +		       "Not enough memory to create terminal structure.\n");
      +	}
       #if USE_DATABASE || USE_TERMCAP
      -    status = grab_entry(tname, &term_ptr->type);
      +	status = grab_entry(tname, &term_ptr->type);
       #else
      -    status = 0;
      +	status = 0;
       #endif
       
      -    /* try fallback list if entry on disk */
      -    if (status != 1) {
      -	const TERMTYPE *fallback = _nc_fallback(tname);
      +	/* try fallback list if entry on disk */
      +	if (status != 1) {
      +	    const TERMTYPE *fallback = _nc_fallback(tname);
       
      -	if (fallback) {
      -	    term_ptr->type = *fallback;
      -	    status = 1;
      +	    if (fallback) {
      +		term_ptr->type = *fallback;
      +		status = 1;
      +	    }
       	}
      -    }
       
      -    if (status == -1) {
      -	ret_error0(-1, "terminals database is inaccessible\n");
      -    } else if (status == 0) {
      -	ret_error(0, "'%s': unknown terminal type.\n", tname);
      -    }
      +	if (status == -1) {
      +	    ret_error0(-1, "terminals database is inaccessible\n");
      +	} else if (status == 0) {
      +	    ret_error(0, "'%s': unknown terminal type.\n", tname);
      +	}
       
      -    /*
      -     * Improve on SVr4 curses.  If an application mixes curses and termcap
      -     * calls, it may call both initscr and tgetent.  This is not really a
      -     * good thing to do, but can happen if someone tries using ncurses with
      -     * the readline library.  The problem we are fixing is that when
      -     * tgetent calls setupterm, the resulting Ottyb struct in cur_term is
      -     * zeroed.  A subsequent call to endwin uses the zeroed terminal
      -     * settings rather than the ones saved in initscr.  So we check if
      -     * cur_term appears to contain terminal settings for the same output
      -     * file as our current call - and copy those terminal settings.  (SVr4
      -     * curses does not do this, however applications that are working
      -     * around the problem will still work properly with this feature).
      -     */
      -    if (cur_term != 0) {
      -	if (cur_term->Filedes == Filedes)
      -	    term_ptr->Ottyb = cur_term->Ottyb;
      -    }
      +	set_curterm(term_ptr);
       
      -    set_curterm(term_ptr);
      +	if (command_character && getenv("CC"))
      +	    do_prototype();
       
      -    if (command_character && getenv("CC"))
      -	do_prototype();
      +	strncpy(ttytype, cur_term->type.term_names, NAMESIZE - 1);
      +	ttytype[NAMESIZE - 1] = '\0';
       
      -    strncpy(ttytype, cur_term->type.term_names, NAMESIZE - 1);
      -    ttytype[NAMESIZE - 1] = '\0';
      +	cur_term->Filedes = Filedes;
       
      -    /*
      -     * Allow output redirection.  This is what SVr3 does.  If stdout is
      -     * directed to a file, screen updates go to standard error.
      -     */
      -    if (Filedes == STDOUT_FILENO && !isatty(Filedes))
      -	Filedes = STDERR_FILENO;
      -    cur_term->Filedes = Filedes;
      +	/*
      +	 * If an application calls setupterm() rather than initscr() or
      +	 * newterm(), we will not have the def_prog_mode() call in
      +	 * _nc_setupscreen().  Do it now anyway, so we can initialize the
      +	 * baudrate.
      +	 */
      +	if (isatty(Filedes)) {
      +	    def_prog_mode();
      +	    baudrate();
      +	}
      +    }
       
           /*
      -     * If an application calls setupterm() rather than initscr() or newterm(),
      -     * we will not have the def_prog_mode() call in _nc_setupscreen().  Do it
      -     * now anyway, so we can initialize the baudrate.
      +     * We should always check the screensize, just in case.
            */
      -    if (isatty(Filedes)) {
      -	def_prog_mode();
      -	baudrate();
      -    }
      -
           _nc_get_screensize(&LINES, &COLS);
       
           if (errret)
      @@ -407,31 +494,3 @@
           }
           returnCode(OK);
       }
      -
      -/*
      -**	do_prototype()
      -**
      -**	Take the real command character out of the CC environment variable
      -**	and substitute it in for the prototype given in 'command_character'.
      -**
      -*/
      -
      -static void
      -do_prototype(void)
      -{
      -    int i;
      -    char CC;
      -    char proto;
      -    char *tmp;
      -
      -    tmp = getenv("CC");
      -    CC = *tmp;
      -    proto = *command_character;
      -
      -    for_each_string(i, &(cur_term->type)) {
      -	for (tmp = cur_term->type.Strings[i]; *tmp; tmp++) {
      -	    if (*tmp == proto)
      -		*tmp = CC;
      -	}
      -    }
      -}
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/lib_termcap.c ncurses-5.3.20030906.orig/ncurses/tinfo/lib_termcap.c
      --- ncurses-5.3/ncurses/tinfo/lib_termcap.c	Sat May 25 07:24:13 2002
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/lib_termcap.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -43,7 +43,7 @@
       
       #include 
       
      -MODULE_ID("$Id: lib_termcap.c,v 1.43 2002/05/25 12:24:13 tom Exp $")
      +MODULE_ID("$Id: lib_termcap.c,v 1.44 2003/05/24 21:10:28 tom Exp $")
       
       #define CSI       233
       #define ESC       033		/* ^[ */
      @@ -233,7 +233,7 @@
       NCURSES_EXPORT(int)
       tgetflag(NCURSES_CONST char *id)
       {
      -    int i;
      +    unsigned i;
       
           T((T_CALLED("tgetflag(%s)"), id));
           if (cur_term != 0) {
      @@ -261,7 +261,7 @@
       NCURSES_EXPORT(int)
       tgetnum(NCURSES_CONST char *id)
       {
      -    int i;
      +    unsigned i;
       
           T((T_CALLED("tgetnum(%s)"), id));
           if (cur_term != 0) {
      @@ -290,7 +290,7 @@
       NCURSES_EXPORT(char *)
       tgetstr(NCURSES_CONST char *id, char **area)
       {
      -    int i;
      +    unsigned i;
           char *result = NULL;
       
           T((T_CALLED("tgetstr(%s,%p)"), id, area));
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/lib_ti.c ncurses-5.3.20030906.orig/ncurses/tinfo/lib_ti.c
      --- ncurses-5.3/ncurses/tinfo/lib_ti.c	Sat Dec  9 20:55:08 2000
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/lib_ti.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -36,12 +36,12 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: lib_ti.c,v 1.22 2000/12/10 02:55:08 tom Exp $")
      +MODULE_ID("$Id: lib_ti.c,v 1.23 2003/05/24 21:10:28 tom Exp $")
       
       NCURSES_EXPORT(int)
       tigetflag(NCURSES_CONST char *str)
       {
      -    int i;
      +    unsigned i;
       
           T((T_CALLED("tigetflag(%s)"), str));
       
      @@ -62,7 +62,7 @@
       NCURSES_EXPORT(int)
       tigetnum(NCURSES_CONST char *str)
       {
      -    int i;
      +    unsigned i;
       
           T((T_CALLED("tigetnum(%s)"), str));
       
      @@ -84,7 +84,7 @@
       NCURSES_EXPORT(char *)
       tigetstr(NCURSES_CONST char *str)
       {
      -    int i;
      +    unsigned i;
       
           T((T_CALLED("tigetstr(%s)"), str));
       
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/lib_tparm.c ncurses-5.3.20030906.orig/ncurses/tinfo/lib_tparm.c
      --- ncurses-5.3/ncurses/tinfo/lib_tparm.c	Sat Oct  5 14:33:24 2002
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/lib_tparm.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -43,7 +43,7 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: lib_tparm.c,v 1.62 2002/10/05 19:33:24 Frank.Henigman Exp $")
      +MODULE_ID("$Id: lib_tparm.c,v 1.67 2003/05/24 20:18:50 tom Exp $")
       
       /*
        *	char *
      @@ -129,6 +129,9 @@
       static size_t out_size;
       static size_t out_used;
       
      +static char *fmt_buff;
      +static size_t fmt_size;
      +
       #if NO_LEAKS
       NCURSES_EXPORT(void)
       _nc_free_tparm(void)
      @@ -137,6 +140,8 @@
       	FreeAndNull(out_buff);
       	out_size = 0;
       	out_used = 0;
      +	FreeAndNull(fmt_buff);
      +	fmt_size = 0;
           }
       }
       #endif
      @@ -247,153 +252,136 @@
       static inline const char *
       parse_format(const char *s, char *format, int *len)
       {
      -    bool done = FALSE;
      -    bool allowminus = FALSE;
      -    bool dot = FALSE;
      -    bool err = FALSE;
      -    char *fmt = format;
      -    int my_width = 0;
      -    int my_prec = 0;
      -    int value = 0;
      -
           *len = 0;
      -    *format++ = '%';
      -    while (*s != '\0' && !done) {
      -	switch (*s) {
      -	case 'c':		/* FALLTHRU */
      -	case 'd':		/* FALLTHRU */
      -	case 'o':		/* FALLTHRU */
      -	case 'x':		/* FALLTHRU */
      -	case 'X':		/* FALLTHRU */
      -	case 's':
      -	    *format++ = *s;
      -	    done = TRUE;
      -	    break;
      -	case '.':
      -	    *format++ = *s++;
      -	    if (dot) {
      -		err = TRUE;
      -	    } else {		/* value before '.' is the width */
      -		dot = TRUE;
      -		my_width = value;
      -	    }
      -	    value = 0;
      -	    break;
      -	case '#':
      -	    *format++ = *s++;
      -	    break;
      -	case ' ':
      -	    *format++ = *s++;
      -	    break;
      -	case ':':
      -	    s++;
      -	    allowminus = TRUE;
      -	    break;
      -	case '-':
      -	    if (allowminus) {
      -		*format++ = *s++;
      -	    } else {
      +    if (format != 0) {
      +	bool done = FALSE;
      +	bool allowminus = FALSE;
      +	bool dot = FALSE;
      +	bool err = FALSE;
      +	char *fmt = format;
      +	int my_width = 0;
      +	int my_prec = 0;
      +	int value = 0;
      +
      +	*len = 0;
      +	*format++ = '%';
      +	while (*s != '\0' && !done) {
      +	    switch (*s) {
      +	    case 'c':		/* FALLTHRU */
      +	    case 'd':		/* FALLTHRU */
      +	    case 'o':		/* FALLTHRU */
      +	    case 'x':		/* FALLTHRU */
      +	    case 'X':		/* FALLTHRU */
      +	    case 's':
      +		*format++ = *s;
       		done = TRUE;
      -	    }
      -	    break;
      -	default:
      -	    if (isdigit(UChar(*s))) {
      -		value = (value * 10) + (*s - '0');
      -		if (value > 10000)
      +		break;
      +	    case '.':
      +		*format++ = *s++;
      +		if (dot) {
       		    err = TRUE;
      +		} else {	/* value before '.' is the width */
      +		    dot = TRUE;
      +		    my_width = value;
      +		}
      +		value = 0;
      +		break;
      +	    case '#':
       		*format++ = *s++;
      -	    } else {
      -		done = TRUE;
      +		break;
      +	    case ' ':
      +		*format++ = *s++;
      +		break;
      +	    case ':':
      +		s++;
      +		allowminus = TRUE;
      +		break;
      +	    case '-':
      +		if (allowminus) {
      +		    *format++ = *s++;
      +		} else {
      +		    done = TRUE;
      +		}
      +		break;
      +	    default:
      +		if (isdigit(UChar(*s))) {
      +		    value = (value * 10) + (*s - '0');
      +		    if (value > 10000)
      +			err = TRUE;
      +		    *format++ = *s++;
      +		} else {
      +		    done = TRUE;
      +		}
       	    }
       	}
      -    }
       
      -    /*
      -     * If we found an error, ignore (and remove) the flags.
      -     */
      -    if (err) {
      -	my_width = my_prec = value = 0;
      -	format = fmt;
      -	*format++ = '%';
      -	*format++ = *s;
      -    }
      +	/*
      +	 * If we found an error, ignore (and remove) the flags.
      +	 */
      +	if (err) {
      +	    my_width = my_prec = value = 0;
      +	    format = fmt;
      +	    *format++ = '%';
      +	    *format++ = *s;
      +	}
       
      -    /*
      -     * Any value after '.' is the precision.  If we did not see '.', then
      -     * the value is the width.
      -     */
      -    if (dot)
      -	my_prec = value;
      -    else
      -	my_width = value;
      +	/*
      +	 * Any value after '.' is the precision.  If we did not see '.', then
      +	 * the value is the width.
      +	 */
      +	if (dot)
      +	    my_prec = value;
      +	else
      +	    my_width = value;
       
      -    *format = '\0';
      -    /* return maximum string length in print */
      -    *len = (my_width > my_prec) ? my_width : my_prec;
      +	*format = '\0';
      +	/* return maximum string length in print */
      +	*len = (my_width > my_prec) ? my_width : my_prec;
      +    }
           return s;
       }
       
       #define isUPPER(c) ((c) >= 'A' && (c) <= 'Z')
       #define isLOWER(c) ((c) >= 'a' && (c) <= 'z')
       
      -static inline char *
      -tparam_internal(const char *string, va_list ap)
      +/*
      + * Analyze the string to see how many parameters we need from the varargs list,
      + * and what their types are.  We will only accept string parameters if they
      + * appear as a %l or %s format following an explicit parameter reference (e.g.,
      + * %p2%s).  All other parameters are numbers.
      + *
      + * 'number' counts coarsely the number of pop's we see in the string, and
      + * 'popcount' shows the highest parameter number in the string.  We would like
      + * to simply use the latter count, but if we are reading termcap strings, there
      + * may be cases that we cannot see the explicit parameter numbers.
      + */
      +NCURSES_EXPORT(int)
      +_nc_tparm_analyze(const char *string, char *p_is_s[NUM_PARM], int *popcount)
       {
      -#define NUM_VARS 26
      -    char *p_is_s[9];
      -    long param[9];
      -    int lastpop;
      -    int popcount;
      -    int number;
      -    int len;
      -    int level;
      -    int x, y;
      -    int i;
           size_t len2;
      -    register const char *cp;
      -    static size_t len_fmt;
      +    int i;
      +    int lastpop = -1;
      +    int len;
      +    int number = 0;
      +    const char *cp = string;
           static char dummy[] = "";
      -    static char *format;
      -    static int dynamic_var[NUM_VARS];
      -    static int static_vars[NUM_VARS];
       
      -    out_used = 0;
      -    if (string == NULL)
      -	return NULL;
      +    if (cp == 0)
      +	return 0;
       
      -    if ((len2 = strlen(string)) > len_fmt) {
      -	len_fmt = len2 + len_fmt + 2;
      -	if ((format = typeRealloc(char, len_fmt, format)) == 0)
      +    if ((len2 = strlen(cp)) > fmt_size) {
      +	fmt_size = len2 + fmt_size + 2;
      +	if ((fmt_buff = typeRealloc(char, fmt_size, fmt_buff)) == 0)
       	      return 0;
           }
       
      -    /*
      -     * Find the highest parameter-number referred to in the format string.
      -     * Use this value to limit the number of arguments copied from the
      -     * variable-length argument list.
      -     */
      -
      -    number = 0;
      -    lastpop = -1;
      -    popcount = 0;
      -    memset(p_is_s, 0, sizeof(p_is_s));
      +    memset(p_is_s, 0, sizeof(p_is_s[0]) * NUM_PARM);
      +    *popcount = 0;
       
      -    /*
      -     * Analyze the string to see how many parameters we need from the varargs
      -     * list, and what their types are.  We will only accept string parameters
      -     * if they appear as a %l or %s format following an explicit parameter
      -     * reference (e.g., %p2%s).  All other parameters are numbers.
      -     *
      -     * 'number' counts coarsely the number of pop's we see in the string, and
      -     * 'popcount' shows the highest parameter number in the string.  We would
      -     * like to simply use the latter count, but if we are reading termcap
      -     * strings, there may be cases that we cannot see the explicit parameter
      -     * numbers.
      -     */
      -    for (cp = string; (cp - string) < (int) len2;) {
      +    while ((cp - string) < (int) len2) {
       	if (*cp == '%') {
       	    cp++;
      -	    cp = parse_format(cp, format, &len);
      +	    cp = parse_format(cp, fmt_buff, &len);
       	    switch (*cp) {
       	    default:
       		break;
      @@ -416,11 +404,11 @@
       
       	    case 'p':
       		cp++;
      -		i = (*cp - '0');
      -		if (i >= 0 && i <= 9) {
      +		i = (UChar(*cp) - '0');
      +		if (i >= 0 && i <= NUM_PARM) {
       		    lastpop = i;
      -		    if (lastpop > popcount)
      -			popcount = lastpop;
      +		    if (lastpop > *popcount)
      +			*popcount = lastpop;
       		}
       		break;
       
      @@ -440,7 +428,7 @@
       
       	    case L_BRACE:
       		cp++;
      -		while (*cp >= '0' && *cp <= '9') {
      +		while (isdigit(UChar(*cp))) {
       		    cp++;
       		}
       		break;
      @@ -470,8 +458,8 @@
       
       	    case 'i':
       		lastpop = -1;
      -		if (popcount < 2)
      -		    popcount = 2;
      +		if (*popcount < 2)
      +		    *popcount = 2;
       		break;
       	    }
       	}
      @@ -479,8 +467,43 @@
       	    cp++;
           }
       
      -    if (number > 9)
      -	number = 9;
      +    if (number > NUM_PARM)
      +	number = NUM_PARM;
      +    return number;
      +}
      +
      +static inline char *
      +tparam_internal(const char *string, va_list ap)
      +{
      +#define NUM_VARS 26
      +    char *p_is_s[NUM_PARM];
      +    long param[NUM_PARM];
      +    int popcount;
      +    int number;
      +    int len;
      +    int level;
      +    int x, y;
      +    int i;
      +    const char *cp = string;
      +    size_t len2;
      +    static int dynamic_var[NUM_VARS];
      +    static int static_vars[NUM_VARS];
      +
      +    if (cp == NULL)
      +	return NULL;
      +
      +    out_used = 0;
      +    len2 = strlen(cp);
      +
      +    /*
      +     * Find the highest parameter-number referred to in the format string.
      +     * Use this value to limit the number of arguments copied from the
      +     * variable-length argument list.
      +     */
      +    number = _nc_tparm_analyze(cp, p_is_s, &popcount);
      +    if (fmt_buff == 0)
      +	return NULL;
      +
           for (i = 0; i < max(popcount, number); i++) {
       	/*
       	 * A few caps (such as plab_norm) have string-valued parms.
      @@ -517,18 +540,18 @@
       	    else
       		save_number(", %d", param[i], 0);
       	}
      -	_tracef(T_CALLED("%s(%s%s)"), tname, _nc_visbuf(string), out_buff);
      +	_tracef(T_CALLED("%s(%s%s)"), tname, _nc_visbuf(cp), out_buff);
       	out_used = 0;
           }
       #endif /* TRACE */
       
      -    while (*string) {
      -	if (*string != '%') {
      -	    save_char(*string);
      +    while ((cp - string) < (int) len2) {
      +	if (*cp != '%') {
      +	    save_char(UChar(*cp));
       	} else {
      -	    tparam_base = string++;
      -	    string = parse_format(string, format, &len);
      -	    switch (*string) {
      +	    tparam_base = cp++;
      +	    cp = parse_format(cp, fmt_buff, &len);
      +	    switch (*cp) {
       	    default:
       		break;
       	    case '%':
      @@ -539,7 +562,7 @@
       	    case 'o':		/* FALLTHRU */
       	    case 'x':		/* FALLTHRU */
       	    case 'X':		/* FALLTHRU */
      -		save_number(format, npop(), len);
      +		save_number(fmt_buff, npop(), len);
       		break;
       
       	    case 'c':		/* FALLTHRU */
      @@ -551,13 +574,13 @@
       		break;
       
       	    case 's':
      -		save_text(format, spop(), len);
      +		save_text(fmt_buff, spop(), len);
       		break;
       
       	    case 'p':
      -		string++;
      -		i = (*string - '1');
      -		if (i >= 0 && i < 9) {
      +		cp++;
      +		i = (UChar(*cp) - '1');
      +		if (i >= 0 && i < NUM_PARM) {
       		    if (p_is_s[i])
       			spush(p_is_s[i]);
       		    else
      @@ -566,39 +589,39 @@
       		break;
       
       	    case 'P':
      -		string++;
      -		if (isUPPER(*string)) {
      -		    i = (*string - 'A');
      +		cp++;
      +		if (isUPPER(*cp)) {
      +		    i = (UChar(*cp) - 'A');
       		    static_vars[i] = npop();
      -		} else if (isLOWER(*string)) {
      -		    i = (*string - 'a');
      +		} else if (isLOWER(*cp)) {
      +		    i = (UChar(*cp) - 'a');
       		    dynamic_var[i] = npop();
       		}
       		break;
       
       	    case 'g':
      -		string++;
      -		if (isUPPER(*string)) {
      -		    i = (*string - 'A');
      +		cp++;
      +		if (isUPPER(*cp)) {
      +		    i = (UChar(*cp) - 'A');
       		    npush(static_vars[i]);
      -		} else if (isLOWER(*string)) {
      -		    i = (*string - 'a');
      +		} else if (isLOWER(*cp)) {
      +		    i = (UChar(*cp) - 'a');
       		    npush(dynamic_var[i]);
       		}
       		break;
       
       	    case S_QUOTE:
      -		string++;
      -		npush(*string);
      -		string++;
      +		cp++;
      +		npush(UChar(*cp));
      +		cp++;
       		break;
       
       	    case L_BRACE:
       		number = 0;
      -		string++;
      -		while (*string >= '0' && *string <= '9') {
      -		    number = number * 10 + *string - '0';
      -		    string++;
      +		cp++;
      +		while (isdigit(UChar(*cp))) {
      +		    number = (number * 10) + (UChar(*cp) - '0');
      +		    cp++;
       		}
       		npush(number);
       		break;
      @@ -689,38 +712,38 @@
       		x = npop();
       		if (!x) {
       		    /* scan forward for %e or %; at level zero */
      -		    string++;
      +		    cp++;
       		    level = 0;
      -		    while (*string) {
      -			if (*string == '%') {
      -			    string++;
      -			    if (*string == '?')
      +		    while (*cp) {
      +			if (*cp == '%') {
      +			    cp++;
      +			    if (*cp == '?')
       				level++;
      -			    else if (*string == ';') {
      +			    else if (*cp == ';') {
       				if (level > 0)
       				    level--;
       				else
       				    break;
      -			    } else if (*string == 'e' && level == 0)
      +			    } else if (*cp == 'e' && level == 0)
       				break;
       			}
       
      -			if (*string)
      -			    string++;
      +			if (*cp)
      +			    cp++;
       		    }
       		}
       		break;
       
       	    case 'e':
       		/* scan forward for a %; at level zero */
      -		string++;
      +		cp++;
       		level = 0;
      -		while (*string) {
      -		    if (*string == '%') {
      -			string++;
      -			if (*string == '?')
      +		while (*cp) {
      +		    if (*cp == '%') {
      +			cp++;
      +			if (*cp == '?')
       			    level++;
      -			else if (*string == ';') {
      +			else if (*cp == ';') {
       			    if (level > 0)
       				level--;
       			    else
      @@ -728,22 +751,22 @@
       			}
       		    }
       
      -		    if (*string)
      -			string++;
      +		    if (*cp)
      +			cp++;
       		}
       		break;
       
       	    case ';':
       		break;
       
      -	    }			/* endswitch (*string) */
      -	}			/* endelse (*string == '%') */
      +	    }			/* endswitch (*cp) */
      +	}			/* endelse (*cp == '%') */
       
      -	if (*string == '\0')
      +	if (*cp == '\0')
       	    break;
       
      -	string++;
      -    }				/* endwhile (*string) */
      +	cp++;
      +    }				/* endwhile (*cp) */
       
           get_space(1);
           out_buff[out_used] = '\0';
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/lib_tputs.c ncurses-5.3.20030906.orig/ncurses/tinfo/lib_tputs.c
      --- ncurses-5.3/ncurses/tinfo/lib_tputs.c	Sat Aug 17 18:44:08 2002
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/lib_tputs.c	Fri Sep 12 16:42:24 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -45,7 +45,7 @@
       #include 		/* ospeed */
       #include 
       
      -MODULE_ID("$Id: lib_tputs.c,v 1.60 2002/08/17 23:44:08 tom Exp $")
      +MODULE_ID("$Id: lib_tputs.c,v 1.62 2003/08/23 21:39:20 tom Exp $")
       
       NCURSES_EXPORT_VAR(char) PC = 0;		/* used by termcap library */
       NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed = 0;	/* used by termcap library */
      @@ -65,7 +65,7 @@
           } else {
       	register int nullcount;
       
      -	nullcount = (ms * _nc_baudrate(ospeed)) / 10000;
      +	nullcount = (ms * _nc_baudrate(ospeed)) / (BAUDBYTE * 1000);
       	for (_nc_nulls_sent += nullcount; nullcount > 0; nullcount--)
       	    my_outch(PC);
       	if (my_outch == _nc_outch)
      @@ -84,9 +84,7 @@
       NCURSES_EXPORT(int)
       _nc_outch(int ch)
       {
      -#ifdef TRACE
      -    _nc_outchars++;
      -#endif /* TRACE */
      +    TRACE_OUTCHARS(1);
       
           if (SP != 0
       	&& SP->_cleanup) {
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/lib_ttyflags.c ncurses-5.3.20030906.orig/ncurses/tinfo/lib_ttyflags.c
      --- ncurses-5.3/ncurses/tinfo/lib_ttyflags.c	Sat Oct 12 16:28:16 2002
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/lib_ttyflags.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -38,7 +38,7 @@
       #include 
       #include 		/* cur_term */
       
      -MODULE_ID("$Id: lib_ttyflags.c,v 1.9 2002/10/12 21:28:16 tom Exp $")
      +MODULE_ID("$Id: lib_ttyflags.c,v 1.11 2003/05/17 23:50:37 tom Exp $")
       
       #undef tabs
       
      @@ -60,8 +60,10 @@
       _nc_get_tty_mode(TTY * buf)
       {
           if (cur_term == 0
      -	|| GET_TTY(cur_term->Filedes, buf) != 0)
      +	|| GET_TTY(cur_term->Filedes, buf) != 0) {
      +	memset(buf, 0, sizeof(*buf));
       	return (ERR);
      +    }
           TR(TRACE_BITS, ("_nc_get_tty_mode(%d): %s",
       		    cur_term->Filedes, _nc_trace_ttymode(buf)));
           return (OK);
      @@ -71,8 +73,11 @@
       _nc_set_tty_mode(TTY * buf)
       {
           if (cur_term == 0
      -	|| SET_TTY(cur_term->Filedes, buf) != 0)
      +	|| SET_TTY(cur_term->Filedes, buf) != 0) {
      +	if ((errno == ENOTTY) && (SP != 0))
      +	    SP->_notty = TRUE;
       	return (ERR);
      +    }
           TR(TRACE_BITS, ("_nc_set_tty_mode(%d): %s",
       		    cur_term->Filedes, _nc_trace_ttymode(buf)));
           return (OK);
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/parse_entry.c ncurses-5.3.20030906.orig/ncurses/tinfo/parse_entry.c
      --- ncurses-5.3/ncurses/tinfo/parse_entry.c	Sat Aug 31 12:02:02 2002
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/parse_entry.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -47,7 +47,7 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: parse_entry.c,v 1.57 2002/08/31 17:02:02 tom Exp $")
      +MODULE_ID("$Id: parse_entry.c,v 1.58 2003/05/24 22:51:38 tom Exp $")
       
       #ifdef LINT
       static short const parametrized[] =
      @@ -196,8 +196,7 @@
        */
       
       NCURSES_EXPORT(int)
      -_nc_parse_entry
      -(struct entry *entryp, int literal, bool silent)
      +_nc_parse_entry(struct entry *entryp, int literal, bool silent)
       {
           int token_type;
           struct name_table_entry const *entry_ptr;
      @@ -217,11 +216,21 @@
           entryp->startline = _nc_start_line;
           DEBUG(2, ("Comment range is %ld to %ld", entryp->cstart, entryp->cend));
       
      -    /* junk the 2-character termcap name, if present */
      +    /*
      +     * Strip off the 2-character termcap name, if present.  Originally termcap
      +     * used that as an indexing aid.  We can retain 2-character terminfo names,
      +     * but note that they would be lost if we translate to/from termcap.  This
      +     * feature is supposedly obsolete since "newer" BSD implementations do not
      +     * use it; however our reference for this feature is SunOS 4.x, which
      +     * implemented it.  Note that the resulting terminal type was never the
      +     * 2-character name, but was instead the first alias after that.
      +     */
           ptr = _nc_curr_token.tk_name;
      -    if (ptr[2] == '|') {
      -	ptr = _nc_curr_token.tk_name + 3;
      -	_nc_curr_token.tk_name[2] = '\0';
      +    if (_nc_syntax == SYN_TERMCAP) {
      +	if (ptr[2] == '|') {
      +	    ptr += 3;
      +	    _nc_curr_token.tk_name[2] = '\0';
      +	}
           }
       
           entryp->tterm.str_table = entryp->tterm.term_names = _nc_save_str(ptr);
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/read_entry.c ncurses-5.3.20030906.orig/ncurses/tinfo/read_entry.c
      --- ncurses-5.3/ncurses/tinfo/read_entry.c	Sat Dec  9 20:55:08 2000
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/read_entry.c	Sun Jul 20 14:02:09 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -29,6 +29,7 @@
       /****************************************************************************
        *  Author: Zeyd M. Ben-Halim  1992,1995               *
        *     and: Eric S. Raymond                          *
      + *     and: Thomas E. Dickey                                                *
        ****************************************************************************/
       
       /*
      @@ -41,10 +42,10 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: read_entry.c,v 1.72 2000/12/10 02:55:08 tom Exp $")
      +MODULE_ID("$Id: read_entry.c,v 1.76 2003/07/05 19:31:51 tom Exp $")
       
       #if !HAVE_TELL
      -#define tell(fd) 0		/* lseek() is POSIX, but not tell() - odd... */
      +#define tell(fd) lseek(fd, 0, SEEK_CUR)		/* lseek() is POSIX, but not tell() */
       #endif
       
       /*
      @@ -156,9 +157,10 @@
       {
           int name_size, bool_count, num_count, str_count, str_size;
           int i;
      -    char buf[MAX_ENTRY_SIZE];
      +    char buf[MAX_ENTRY_SIZE + 1];
      +    unsigned want, have;
       
      -    TR(TRACE_DATABASE, ("READ termtype header @%d", tell(fd)));
      +    TR(TRACE_DATABASE, ("READ termtype header @%ld", (long) tell(fd)));
       
           memset(ptr, 0, sizeof(*ptr));
       
      @@ -197,16 +199,19 @@
       	str_count = 0;
           }
       
      -    /* grab the name (a null-terminate string) */
      -    read(fd, buf, min(MAX_NAME_SIZE, (unsigned) name_size));
      -    buf[MAX_NAME_SIZE] = '\0';
      +    /* grab the name (a null-terminated string) */
      +    want = min(MAX_NAME_SIZE, (unsigned) name_size);
      +    if ((have = read(fd, buf, want)) != want) {
      +	memset(buf + have, 0, want - have);
      +    }
      +    buf[want] = '\0';
           ptr->term_names = typeCalloc(char, strlen(buf) + 1);
           if (ptr->term_names == NULL) {
       	return (0);
           }
           (void) strcpy(ptr->term_names, buf);
      -    if (name_size > MAX_NAME_SIZE)
      -	lseek(fd, (off_t) (name_size - MAX_NAME_SIZE), 1);
      +    if (have > MAX_NAME_SIZE)
      +	lseek(fd, (off_t) (have - MAX_NAME_SIZE), 1);
       
           /* grab the booleans */
           if ((ptr->Booleans = typeCalloc(char, max(BOOLCOUNT, bool_count))) == 0
      @@ -252,7 +257,7 @@
            * Read extended entries, if any, after the normal end of terminfo data.
            */
           even_boundary(str_size);
      -    TR(TRACE_DATABASE, ("READ extended_header @%d", tell(fd)));
      +    TR(TRACE_DATABASE, ("READ extended_header @%ld", (long) tell(fd)));
           if (_nc_user_definable && read_shorts(fd, buf, 5)) {
       	int ext_bool_count = LOW_MSB(buf + 0);
       	int ext_num_count = LOW_MSB(buf + 2);
      @@ -284,8 +289,8 @@
       			    ext_bool_count, ext_num_count, ext_str_count,
       			    ext_str_size, ext_str_limit));
       
      -	TR(TRACE_DATABASE, ("READ %d extended-booleans @%d",
      -			    ext_bool_count, tell(fd)));
      +	TR(TRACE_DATABASE, ("READ %d extended-booleans @%ld",
      +			    ext_bool_count, (long) tell(fd)));
       	if ((ptr->ext_Booleans = ext_bool_count) != 0) {
       	    if (read(fd, ptr->Booleans + BOOLCOUNT, (unsigned)
       		     ext_bool_count) != ext_bool_count)
      @@ -293,8 +298,8 @@
       	}
       	even_boundary(ext_bool_count);
       
      -	TR(TRACE_DATABASE, ("READ %d extended-numbers @%d",
      -			    ext_num_count, tell(fd)));
      +	TR(TRACE_DATABASE, ("READ %d extended-numbers @%ld",
      +			    ext_num_count, (long) tell(fd)));
       	if ((ptr->ext_Numbers = ext_num_count) != 0) {
       	    if (!read_shorts(fd, buf, ext_num_count))
       		return (0);
      @@ -302,13 +307,13 @@
       	    convert_shorts(buf, ptr->Numbers + NUMCOUNT, ext_num_count);
       	}
       
      -	TR(TRACE_DATABASE, ("READ extended-offsets @%d", tell(fd)));
      +	TR(TRACE_DATABASE, ("READ extended-offsets @%ld", (long) tell(fd)));
       	if ((ext_str_count || need)
       	    && !read_shorts(fd, buf, ext_str_count + need))
       	    return (0);
       
      -	TR(TRACE_DATABASE, ("READ %d bytes of extended-strings @%d",
      -			    ext_str_limit, tell(fd)));
      +	TR(TRACE_DATABASE, ("READ %d bytes of extended-strings @%ld",
      +			    ext_str_limit, (long) tell(fd)));
       
       	if (ext_str_limit) {
       	    if ((ptr->ext_str_table = typeMalloc(char, ext_str_limit)) == 0)
      @@ -374,8 +379,7 @@
       }
       
       NCURSES_EXPORT(int)
      -_nc_read_file_entry
      -(const char *const filename, TERMTYPE * ptr)
      +_nc_read_file_entry(const char *const filename, TERMTYPE * ptr)
       /* return 1 if read, 0 if not found or garbled */
       {
           int code, fd = -1;
      @@ -458,13 +462,20 @@
        */
       
       NCURSES_EXPORT(int)
      -_nc_read_entry
      -(const char *const tn, char *const filename, TERMTYPE * const tp)
      +_nc_read_entry(const char *const tn, char *const filename, TERMTYPE * const tp)
       {
           char *envp;
           char ttn[MAX_ALIAS + 3];
       
      -    /* truncate the terminal name to prevent dangerous buffer airline */
      +    if (strlen(tn) == 0
      +	|| strcmp(tn, ".") == 0
      +	|| strcmp(tn, "..") == 0
      +	|| _nc_pathlast(tn) != 0) {
      +	T(("illegal or missing entry name '%s'", tn));
      +	return 0;
      +    }
      +
      +    /* truncate the terminal name to prevent buffer overflow */
           (void) sprintf(ttn, "%c/%.*s", *tn, MAX_ALIAS, tn);
       
           /* This is System V behavior, in conjunction with our requirements for
      @@ -482,7 +493,7 @@
       	/* this is an ncurses extension */
       	if ((envp = _nc_home_terminfo()) != 0) {
       	    if (_nc_read_tic_entry(filename, envp, ttn, tp) == 1) {
      -		return (1);
      +		return 1;
       	    }
       	}
       
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/read_termcap.c ncurses-5.3.20030906.orig/ncurses/tinfo/read_termcap.c
      --- ncurses-5.3/ncurses/tinfo/read_termcap.c	Sat Oct 27 20:11:34 2001
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/read_termcap.c	Sun Jul 20 14:02:09 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc.         *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -57,7 +57,7 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: read_termcap.c,v 1.58 2001/10/28 01:11:34 tom Exp $")
      +MODULE_ID("$Id: read_termcap.c,v 1.60 2003/07/05 19:31:16 tom Exp $")
       
       #if !PURE_TERMINFO
       
      @@ -945,6 +945,15 @@
           static int lineno;
       
           T(("read termcap entry for %s", tn));
      +
      +    if (strlen(tn) == 0
      +	|| strcmp(tn, ".") == 0
      +	|| strcmp(tn, "..") == 0
      +	|| _nc_pathlast(tn) != 0) {
      +	T(("illegal or missing entry name '%s'", tn));
      +	return 0;
      +    }
      +
           if (use_terminfo_vars() && (p = getenv("TERMCAP")) != 0
       	&& !is_pathname(p) && _nc_name_match(p, tn, "|:")) {
       	/* TERMCAP holds a termcap entry */
      diff -urNd -urNd ncurses-5.3/ncurses/tinfo/strings.c ncurses-5.3.20030906.orig/ncurses/tinfo/strings.c
      --- ncurses-5.3/ncurses/tinfo/strings.c	Sat Dec  9 20:55:08 2000
      +++ ncurses-5.3.20030906.orig/ncurses/tinfo/strings.c	Fri Sep 12 16:42:10 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 2000 Free Software Foundation, Inc.                        *
      + * Copyright (c) 2000,2003 Free Software Foundation, Inc.                   *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -36,7 +36,7 @@
       
       #include 
       
      -MODULE_ID("$Id: strings.c,v 1.3 2000/12/10 02:55:08 tom Exp $")
      +MODULE_ID("$Id: strings.c,v 1.5 2003/08/16 23:46:00 tom Exp $")
       
       /****************************************************************************
        * Useful string functions (especially for mvcur)
      @@ -44,8 +44,7 @@
       
       #if !HAVE_STRSTR
       NCURSES_EXPORT(char *)
      -_nc_strstr
      -(const char *haystack, const char *needle)
      +_nc_strstr(const char *haystack, const char *needle)
       {
           size_t len1 = strlen(haystack);
           size_t len2 = strlen(needle);
      @@ -63,16 +62,18 @@
       #endif
       
       /*
      - * Initialize the descriptor so we can append to it.
      + * Initialize the descriptor so we can append to it.  Note that 'src' may
      + * be a null pointer (see _nc_str_null), so the corresponding strcat and
      + * strcpy calls have to allow for this.
        */
       NCURSES_EXPORT(string_desc *)
      -_nc_str_init
      -(string_desc * dst, char *src, size_t len)
      +_nc_str_init(string_desc * dst, char *src, size_t len)
       {
           if (dst != 0) {
       	dst->s_head = src;
       	dst->s_tail = src;
       	dst->s_size = len - 1;
      +	dst->s_init = dst->s_size;
       	if (src != 0)
       	    *src = 0;
           }
      @@ -83,8 +84,7 @@
        * Initialize the descriptor for only tracking the amount of memory used.
        */
       NCURSES_EXPORT(string_desc *)
      -_nc_str_null
      -(string_desc * dst, size_t len)
      +_nc_str_null(string_desc * dst, size_t len)
       {
           return _nc_str_init(dst, 0, len);
       }
      @@ -93,8 +93,7 @@
        * Copy a descriptor
        */
       NCURSES_EXPORT(string_desc *)
      -_nc_str_copy
      -(string_desc * dst, string_desc * src)
      +_nc_str_copy(string_desc * dst, string_desc * src)
       {
           *dst = *src;
           return dst;
      @@ -135,7 +134,7 @@
       		strcpy(dst->s_head, src);
       		dst->s_tail = dst->s_head + len;
       	    }
      -	    dst->s_size -= len;
      +	    dst->s_size = dst->s_init - len;
       	    return TRUE;
       	}
           }
      diff -urNd -urNd ncurses-5.3/ncurses/trace/lib_trace.c ncurses-5.3.20030906.orig/ncurses/trace/lib_trace.c
      --- ncurses-5.3/ncurses/trace/lib_trace.c	Sat Oct 12 10:20:15 2002
      +++ ncurses-5.3.20030906.orig/ncurses/trace/lib_trace.c	Fri Sep 12 16:41:56 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -40,7 +40,7 @@
       
       #include 
       
      -MODULE_ID("$Id: lib_trace.c,v 1.50 2002/10/12 15:20:15 tom Exp $")
      +MODULE_ID("$Id: lib_trace.c,v 1.52 2003/08/09 22:15:44 tom Exp $")
       
       NCURSES_EXPORT_VAR(unsigned) _nc_tracing = 0;	/* always define this */
       
      @@ -48,20 +48,21 @@
       NCURSES_EXPORT_VAR(const char *) _nc_tputs_trace = "";
       NCURSES_EXPORT_VAR(long) _nc_outchars = 0;
       
      -static FILE *tracefp;		/* default to writing to stderr */
      +static FILE *tracefp = 0;	/* default to writing to stderr */
       
       NCURSES_EXPORT(void)
      -trace(const unsigned int tracelevel GCC_UNUSED)
      +trace(const unsigned int tracelevel)
       {
           static bool been_here = FALSE;
           static char my_name[] = "trace";
       
      -    if (!been_here && tracelevel) {
      -	been_here = TRUE;
      +    if ((tracefp == 0) && tracelevel) {
      +	const char *mode = been_here ? "ab" : "wb";
       
      +	been_here = TRUE;
       	_nc_tracing = tracelevel;
       	if (_nc_access(my_name, W_OK) < 0
      -	    || (tracefp = fopen(my_name, "wb")) == 0) {
      +	    || (tracefp = fopen(my_name, mode)) == 0) {
       	    perror("curses: Can't open 'trace' file: ");
       	    exit(EXIT_FAILURE);
       	}
      @@ -74,8 +75,16 @@
       #elif HAVE_SETBUF		/* POSIX */
       	(void) setbuffer(tracefp, (char *) 0);
       #endif
      -	_tracef("TRACING NCURSES version %s (tracelevel=%#x)",
      -		curses_version(), tracelevel);
      +	_tracef("TRACING NCURSES version %s.%d (tracelevel=%#x)",
      +		NCURSES_VERSION,
      +		NCURSES_VERSION_PATCH,
      +		tracelevel);
      +    } else if (tracelevel == 0) {
      +	if (tracefp != 0) {
      +	    fclose(tracefp);
      +	    tracefp = 0;
      +	}
      +	_nc_tracing = tracelevel;
           } else if (_nc_tracing != tracelevel) {
       	_nc_tracing = tracelevel;
       	_tracef("tracelevel=%#x", tracelevel);
      diff -urNd -urNd ncurses-5.3/ncurses/trace/lib_traceatr.c ncurses-5.3.20030906.orig/ncurses/trace/lib_traceatr.c
      --- ncurses-5.3/ncurses/trace/lib_traceatr.c	Sat Sep 28 07:37:03 2002
      +++ ncurses-5.3.20030906.orig/ncurses/trace/lib_traceatr.c	Sun Jul 20 14:02:09 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -27,7 +27,7 @@
        ****************************************************************************/
       
       /****************************************************************************
      - *  Author: Thomas Dickey 1996-2001                                         *
      + *  Author: Thomas Dickey 1996-2003                                         *
        *     and: Zeyd M. Ben-Halim  1992,1995               *
        *     and: Eric S. Raymond                          *
        ****************************************************************************/
      @@ -39,7 +39,7 @@
       #include 
       #include 		/* acs_chars */
       
      -MODULE_ID("$Id: lib_traceatr.c,v 1.43 2002/09/28 12:37:03 tom Exp $")
      +MODULE_ID("$Id: lib_traceatr.c,v 1.47 2003/06/28 23:20:26 tom Exp $")
       
       #define COLOR_OF(c) (c < 0 || c > 7 ? "default" : colors[c].name)
       
      @@ -52,7 +52,7 @@
       _traceattr2(int bufnum, attr_t newmode)
       {
           char *buf = _nc_trace_buf(bufnum, BUFSIZ);
      -    char *tmp = buf;
      +    char temp[80];
           static const struct {
       	unsigned int val;
       	const char *name;
      @@ -92,39 +92,39 @@
           unsigned save_nc_tracing = _nc_tracing;
           _nc_tracing = 0;
       
      -    strcpy(tmp++, l_brace);
      +    strcpy(buf, l_brace);
       
           for (n = 0; n < SIZEOF(names); n++) {
       	if ((newmode & names[n].val) != 0) {
       	    if (buf[1] != '\0')
      -		strcat(tmp, "|");
      -	    strcat(tmp, names[n].name);
      -	    tmp += strlen(tmp);
      +		buf = _nc_trace_bufcat(bufnum, "|");
      +	    buf = _nc_trace_bufcat(bufnum, names[n].name);
       
       	    if (names[n].val == A_COLOR) {
       		short pairnum = PAIR_NUMBER(newmode);
       		short fg, bg;
       
      -		if (pair_content(pairnum, &fg, &bg) == OK)
      -		    (void) sprintf(tmp,
      +		if (pair_content(pairnum, &fg, &bg) == OK) {
      +		    (void) sprintf(temp,
       				   "{%d = {%s, %s}}",
       				   pairnum,
       				   COLOR_OF(fg),
      -				   COLOR_OF(bg)
      -			);
      -		else
      -		    (void) sprintf(tmp, "{%d}", pairnum);
      +				   COLOR_OF(bg));
      +		} else {
      +		    (void) sprintf(temp, "{%d}", pairnum);
      +		}
      +		buf = _nc_trace_bufcat(bufnum, temp);
       	    }
       	}
           }
           if (ChAttrOf(newmode) == A_NORMAL) {
       	if (buf[1] != '\0')
      -	    strcat(tmp, "|");
      -	strcat(tmp, "A_NORMAL");
      +	    (void) _nc_trace_bufcat(bufnum, "|");
      +	(void) _nc_trace_bufcat(bufnum, "A_NORMAL");
           }
       
           _nc_tracing = save_nc_tracing;
      -    return (strcat(buf, r_brace));
      +    return (_nc_trace_bufcat(bufnum, r_brace));
       }
       
       NCURSES_EXPORT(char *)
      @@ -146,7 +146,7 @@
       {
           const char *result = 0;
       
      -    if (attr & A_ALTCHARSET) {
      +    if ((attr & A_ALTCHARSET) && (acs_chars != 0)) {
       	char *cp;
       	char *found = 0;
       	static const struct {
      @@ -214,20 +214,21 @@
       NCURSES_EXPORT(char *)
       _tracechtype2(int bufnum, chtype ch)
       {
      -    char *buf = _nc_trace_buf(bufnum, BUFSIZ);
           const char *found;
       
      -    strcpy(buf, l_brace);
      +    strcpy(_nc_trace_buf(bufnum, BUFSIZ), l_brace);
           if ((found = _nc_altcharset_name(ChAttrOf(ch), ch)) != 0) {
      -	(void) strcat(buf, found);
      +	(void) _nc_trace_bufcat(bufnum, found);
           } else
      -	(void) strcat(buf, _tracechar(ChCharOf(ch)));
      +	(void) _nc_trace_bufcat(bufnum, _tracechar(ChCharOf(ch)));
       
      -    if (ChAttrOf(ch) != A_NORMAL)
      -	(void) sprintf(buf + strlen(buf), " | %s",
      +    if (ChAttrOf(ch) != A_NORMAL) {
      +	(void) _nc_trace_bufcat(bufnum, " | ");
      +	(void) _nc_trace_bufcat(bufnum,
       		_traceattr2(bufnum + 20, ChAttrOf(ch)));
      +    }
       
      -    return (strcat(buf, r_brace));
      +    return (_nc_trace_bufcat(bufnum, r_brace));
       }
       
       NCURSES_EXPORT(char *)
      @@ -256,15 +257,16 @@
           if (ch != 0) {
       	attr = AttrOfD(ch);
       	if ((found = _nc_altcharset_name(attr, CharOfD(ch))) != 0) {
      -	    (void) strcat(buf, found);
      +	    (void) _nc_trace_bufcat(bufnum, found);
       	    attr &= ~A_ALTCHARSET;
      -	} else if (!isnac(CHDEREF(ch))) {
      +	} else if (isnac(CHDEREF(ch))) {
      +	    (void) _nc_trace_bufcat(bufnum, "{NAC}");
      +	} else {
       	    PUTC_DATA;
       	    int n;
       
      -	    memset (&PUT_st, '\0', sizeof (PUT_st));
      -	    PUTC_i = 0;
      -	    (void) strcat(buf, "{ ");
      +	    PUTC_INIT;
      +	    (void) _nc_trace_bufcat(bufnum, "{ ");
       	    do {
       		PUTC_ch = PUTC_i < CCHARW_MAX ? ch->chars[PUTC_i] : L'\0';
       		PUTC_n = wcrtomb(PUTC_buf, ch->chars[PUTC_i], &PUT_st);
      @@ -274,19 +276,20 @@
       		    break;
       		for (n = 0; n < PUTC_n; n++) {
       		    if (n)
      -			(void) strcat(buf, ", ");
      -		    (void) strcat(buf, _tracechar(UChar(PUTC_buf[n])));
      +			(void) _nc_trace_bufcat(bufnum, ", ");
      +		    (void) _nc_trace_bufcat(bufnum, _tracechar(UChar(PUTC_buf[n])));
       		}
       		++PUTC_i;
       	    } while (PUTC_ch != L'\0');
      -	    (void) strcat(buf, " }");
      +	    (void) _nc_trace_bufcat(bufnum, " }");
      +	}
      +	if (attr != A_NORMAL) {
      +	    (void) _nc_trace_bufcat(bufnum, " | ");
      +	    (void) _nc_trace_bufcat(bufnum, _traceattr2(bufnum + 20, attr));
       	}
      -	if (attr != A_NORMAL)
      -	    (void) sprintf(buf + strlen(buf), " | %s",
      -		    _traceattr2(bufnum + 20, attr));
           }
       
      -    return (strcat(buf, r_brace));
      +    return (_nc_trace_bufcat(bufnum, r_brace));
       }
       
       NCURSES_EXPORT(char *)
      diff -urNd -urNd ncurses-5.3/ncurses/trace/lib_tracechr.c ncurses-5.3.20030906.orig/ncurses/trace/lib_tracechr.c
      --- ncurses-5.3/ncurses/trace/lib_tracechr.c	Sat May 25 18:34:19 2002
      +++ ncurses-5.3.20030906.orig/ncurses/trace/lib_tracechr.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -36,19 +36,36 @@
        */
       #include 
       
      -MODULE_ID("$Id: lib_tracechr.c,v 1.9 2002/05/25 23:34:19 tom Exp $")
      +#include 
      +
      +MODULE_ID("$Id: lib_tracechr.c,v 1.10 2003/06/14 11:05:42 tom Exp $")
       
       #ifdef TRACE
       NCURSES_EXPORT(char *)
       _tracechar(int ch)
       {
      -    static char crep[40];
      -    (void) sprintf(crep, "'%.30s' = %#03o",
      -		   ((ch > KEY_MIN || ch < 0)
      -		    ? keyname(ch)
      -		    : unctrl(ch)),
      -		   ch);
      -    return (crep);
      +    static char result[40];
      +    char *name;
      +
      +    if (ch > KEY_MIN || ch < 0) {
      +	name = keyname(ch);
      +	if (name == 0 || *name == '\0')
      +	    name = "NULL";
      +	(void) sprintf(result, "'%.30s' = %#03o", name, ch);
      +    } else if (!isprint(ch) || ch > 255) {
      +	/*
      +	 * workaround for glibc bug:
      +	 * sprintf changes the result from unctrl() to an empty string if it
      +	 * does not correspond to a valid multibyte sequence.
      +	 */
      +	(void) sprintf(result, "%#03o", ch);
      +    } else {
      +	name = unctrl(ch);
      +	if (name == 0 || *name == 0)
      +	    name = "null";	/* shouldn't happen */
      +	(void) sprintf(result, "'%.30s' = %#03o", name, ch);
      +    }
      +    return (result);
       }
       #else
       empty_module(_nc_lib_tracechr)
      diff -urNd -urNd ncurses-5.3/ncurses/trace/trace_buf.c ncurses-5.3.20030906.orig/ncurses/trace/trace_buf.c
      --- ncurses-5.3/ncurses/trace/trace_buf.c	Sat Jul 13 19:08:08 2002
      +++ ncurses-5.3.20030906.orig/ncurses/trace/trace_buf.c	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -35,15 +35,15 @@
       
       #include 
       
      -MODULE_ID("$Id: trace_buf.c,v 1.11 2002/07/14 00:08:08 tom Exp $")
      +MODULE_ID("$Id: trace_buf.c,v 1.12 2003/03/15 21:21:36 tom Exp $")
       
       typedef struct {
           char *text;
           size_t size;
       } LIST;
       
      -NCURSES_EXPORT(char *)
      -_nc_trace_buf(int bufnum, size_t want)
      +static char *
      +_nc_trace_alloc(int bufnum, size_t want)
       {
           char *result = 0;
           static LIST *list;
      @@ -65,8 +65,6 @@
       		  list[bufnum].size = want;
       	}
       
      -	if (list[bufnum].text != 0)
      -	    *(list[bufnum].text) = '\0';
       	result = list[bufnum].text;
           }
       #if NO_LEAKS
      @@ -82,3 +80,30 @@
       #endif
           return result;
       }
      +
      +/*
      + * (re)Allocate a buffer big enough for the caller's wants.
      + */
      +NCURSES_EXPORT(char *)
      +_nc_trace_buf(int bufnum, size_t want)
      +{
      +    char *result = _nc_trace_alloc(bufnum, want);
      +    if (result != 0)
      +	*result = '\0';
      +    return result;
      +}
      +
      +/*
      + * Append a new string to an existing buffer.
      + */
      +NCURSES_EXPORT(char *)
      +_nc_trace_bufcat(int bufnum, const char *value)
      +{
      +    char *buffer = _nc_trace_alloc(bufnum, 0);
      +    size_t have = strlen(buffer);
      +
      +    buffer = _nc_trace_alloc(bufnum, 1 + have + strlen(value));
      +    (void) strcpy(buffer + have, value);
      +
      +    return buffer;
      +}
      diff -urNd -urNd ncurses-5.3/ncurses/trace/varargs.c ncurses-5.3.20030906.orig/ncurses/trace/varargs.c
      --- ncurses-5.3/ncurses/trace/varargs.c	Sat Oct  5 18:04:17 2002
      +++ ncurses-5.3.20030906.orig/ncurses/trace/varargs.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 2001,2002 Free Software Foundation, Inc.                   *
      + * Copyright (c) 2001-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -34,7 +34,7 @@
       
       #include 
       
      -MODULE_ID("$Id: varargs.c,v 1.3 2002/10/05 23:04:17 tom Exp $")
      +MODULE_ID("$Id: varargs.c,v 1.4 2003/05/24 21:10:28 tom Exp $")
       
       #ifdef TRACE
       
      @@ -46,7 +46,7 @@
       
       #define VA_INT(type) ival = va_arg(ap, type)
       #define VA_FLT(type) fval = va_arg(ap, type)
      -#define VA_PTR(type) pval = (void *)va_arg(ap, type)
      +#define VA_PTR(type) pval = (char *)va_arg(ap, type)
       #define VA_STR(type) sval = va_arg(ap, type)
       
       /*
      diff -urNd -urNd ncurses-5.3/ncurses/trace/visbuf.c ncurses-5.3.20030906.orig/ncurses/trace/visbuf.c
      --- ncurses-5.3/ncurses/trace/visbuf.c	Sat Oct  5 19:03:43 2002
      +++ ncurses-5.3.20030906.orig/ncurses/trace/visbuf.c	Sun Jul 20 14:02:09 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 2001 Free Software Foundation, Inc.                        *
      + * Copyright (c) 2001-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -27,7 +27,7 @@
        ****************************************************************************/
       
       /****************************************************************************
      - *  Author: Thomas E. Dickey 1996-2001                                      *
      + *  Author: Thomas E. Dickey 1996-2003                                      *
        *     and: Zeyd M. Ben-Halim  1992,1995               *
        *     and: Eric S. Raymond                          *
        ****************************************************************************/
      @@ -41,7 +41,7 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: visbuf.c,v 1.6 2002/10/06 00:03:43 tom Exp $")
      +MODULE_ID("$Id: visbuf.c,v 1.8 2003/06/28 23:20:37 tom Exp $")
       
       static char *
       _nc_vischar(char *tp, unsigned c)
      @@ -187,9 +187,7 @@
       NCURSES_EXPORT(const char *)
       _nc_viscbuf2(int bufnum, const cchar_t * buf, int len)
       {
      -    size_t have = BUFSIZ;
      -    char *result = _nc_trace_buf(bufnum, have);
      -    char *tp = result;
      +    char *result = _nc_trace_buf(bufnum, BUFSIZ);
           int n;
           bool same = TRUE;
           attr_t attr = A_NORMAL;
      @@ -211,17 +209,18 @@
            * detailed trace function that displays each character separately.
            */
           if (same) {
      -	*tp++ = D_QUOTE;
      +	static const char d_quote[] =
      +	{D_QUOTE, 0};
      +
      +	result = _nc_trace_bufcat(bufnum, d_quote);
       	while (len-- > 0) {
       	    if ((found = _nc_altcharset_name(attr, CharOfD(buf))) != 0) {
      -		(void) strcpy(tp, found);
      -		tp += strlen(tp);
      +		result = _nc_trace_bufcat(bufnum, found);
       		attr &= ~A_ALTCHARSET;
       	    } else if (!isnac(CHDEREF(buf))) {
       		PUTC_DATA;
       
      -		memset(&PUT_st, '\0', sizeof(PUT_st));
      -		PUTC_i = 0;
      +		PUTC_INIT;
       		do {
       		    PUTC_ch = PUTC_i < CCHARW_MAX ? buf->chars[PUTC_i] : L'\0';
       		    PUTC_n = wcrtomb(PUTC_buf, buf->chars[PUTC_i], &PUT_st);
      @@ -230,33 +229,31 @@
       		    if (PUTC_n <= 0)
       			break;
       		    for (n = 0; n < PUTC_n; n++) {
      -			tp = _nc_vischar(tp, UChar(PUTC_buf[n]));
      +			char temp[80];
      +			_nc_vischar(temp, UChar(PUTC_buf[n]));
      +			result = _nc_trace_bufcat(bufnum, temp);
       		    }
       		    ++PUTC_i;
       		} while (PUTC_ch != L'\0');
       	    }
       	    buf++;
       	}
      -	*tp++ = D_QUOTE;
      -	*tp++ = '\0';
      -	if (attr != A_NORMAL)
      -	    (void) sprintf(tp, " | %s",
      -			   _traceattr2(bufnum + 20, attr));
      +	result = _nc_trace_bufcat(bufnum, d_quote);
      +	if (attr != A_NORMAL) {
      +	    result = _nc_trace_bufcat(bufnum, " | ");
      +	    result = _nc_trace_bufcat(bufnum, _traceattr2(bufnum + 20, attr));
      +	}
           } else {
      -	*tp++ = L_BRACE;
      +	static const char l_brace[] =
      +	{L_BRACE, 0};
      +	static const char r_brace[] =
      +	{R_BRACE, 0};
      +	strcpy(result, l_brace);
       	while (len-- > 0) {
      -	    char *temp = _tracecchar_t2(bufnum + 20, buf++);
      -	    size_t used = (tp - result);
      -	    size_t want = strlen(temp) + 5 + used;
      -	    if (want > have) {
      -		result = _nc_trace_buf(bufnum, have = want);
      -		tp = result + used;
      -	    }
      -	    (void) strcpy(tp, temp);
      -	    tp += strlen(tp);
      +	    result = _nc_trace_bufcat(bufnum,
      +				      _tracecchar_t2(bufnum + 20, buf++));
       	}
      -	*tp++ = R_BRACE;
      -	*tp++ = '\0';
      +	result = _nc_trace_bufcat(bufnum, r_brace);
           }
           return result;
       }
      diff -urNd -urNd ncurses-5.3/ncurses/tty/lib_mvcur.c ncurses-5.3.20030906.orig/ncurses/tty/lib_mvcur.c
      --- ncurses-5.3/ncurses/tty/lib_mvcur.c	Sat Sep 14 18:02:06 2002
      +++ ncurses-5.3.20030906.orig/ncurses/tty/lib_mvcur.c	Fri Sep 12 16:42:24 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -108,7 +108,9 @@
        * LONG_DIST and (b) further inward from the right or left edge than LONG_DIST,
        * we'll consider nonlocal.
        */
      -#define NOT_LOCAL(fy, fx, ty, tx)	((tx > LONG_DIST) && (tx < screen_lines - 1 - LONG_DIST) && (abs(ty-fy) + abs(tx-fx) > LONG_DIST))
      +#define NOT_LOCAL(fy, fx, ty, tx)	((tx > LONG_DIST) \
      + 		 && (tx < screen_columns - 1 - LONG_DIST) \
      +		 && (abs(ty-fy) + abs(tx-fx) > LONG_DIST))
       
       /****************************************************************************
        *
      @@ -152,12 +154,8 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: lib_mvcur.c,v 1.86 2002/09/14 23:02:06 Philippe.Blain Exp $")
      +MODULE_ID("$Id: lib_mvcur.c,v 1.93 2003/08/23 21:51:58 tom Exp $")
       
      -#define CURRENT_ROW	SP->_cursrow	/* phys cursor row */
      -#define CURRENT_COLUMN	SP->_curscol	/* phys cursor column */
      -#define CURRENT_ATTR	SP->_current_attr	/* current phys attribute */
      -#define REAL_ATTR	SP->_current_attr	/* phys current attribute */
       #define WANT_CHAR(y, x)	SP->_newscr->_line[y].text[x]	/* desired state */
       #define BAUDRATE	cur_term->_baudrate	/* bits per second */
       
      @@ -296,10 +294,11 @@
       _nc_mvcur_init(void)
       /* initialize the cost structure */
       {
      -    /*
      -     * 9 = 7 bits + 1 parity + 1 stop.
      -     */
      -    SP->_char_padding = (9 * 1000 * 10) / (BAUDRATE > 0 ? BAUDRATE : 9600);
      +    if (isatty(fileno(SP->_ofp)))
      +	SP->_char_padding = ((BAUDBYTE * 1000 * 10)
      +			     / (BAUDRATE > 0 ? BAUDRATE : 9600));
      +    else
      +	SP->_char_padding = 1;	/* must be nonzero */
           if (SP->_char_padding <= 0)
       	SP->_char_padding = 1;	/* must be nonzero */
           TR(TRACE_CHARPUT | TRACE_MOVE, ("char_padding %d msecs", SP->_char_padding));
      @@ -371,6 +370,13 @@
           SP->_dch1_cost = NormalizedCost(delete_character, 1);
           SP->_ich1_cost = NormalizedCost(insert_character, 1);
       
      +    /*
      +     * If this is a bce-terminal, we want to bias the choice so we use clr_eol
      +     * rather than spaces at the end of a line.
      +     */
      +    if (back_color_erase)
      +	SP->_el_cost = 0;
      +
           /* parameterized screen-update strings */
           SP->_dch_cost = NormalizedCost(tparm(parm_dch, 23), 1);
           SP->_ich_cost = NormalizedCost(tparm(parm_ich, 23), 1);
      @@ -508,10 +514,10 @@
       	    n = (from_y - to_y);
       
       	    if (parm_up_cursor
      -		&& SP->_cup_cost < vcost
      +		&& SP->_cuu_cost < vcost
       		&& _nc_safe_strcat(_nc_str_copy(target, &save),
       				   tparm(parm_up_cursor, n))) {
      -		vcost = SP->_cup_cost;
      +		vcost = SP->_cuu_cost;
       	    }
       
       	    if (cursor_up && (n * SP->_cuu1_cost < vcost)) {
      @@ -570,7 +576,6 @@
       		}
       #endif /* USE_HARD_TABS */
       
      -#if defined(REAL_ATTR) && defined(WANT_CHAR)
       		if (n <= 0 || n >= (int) check.s_size)
       		    ovw = FALSE;
       #if BSD_TPUTS
      @@ -601,7 +606,7 @@
       
       		    for (i = 0; i < n; i++) {
       			NCURSES_CH_T ch = WANT_CHAR(to_y, from_x + i);
      -			if (AttrOf(ch) != CURRENT_ATTR
      +			if (AttrOf(ch) != SP->_current_attr
       #if USE_WIDEC_SUPPORT
       			    || !Charable(ch)
       #endif
      @@ -619,9 +624,7 @@
       		    *check.s_tail = '\0';
       		    check.s_size -= n;
       		    lhcost += n * SP->_char_padding;
      -		} else
      -#endif /* defined(REAL_ATTR) && defined(WANT_CHAR) */
      -		{
      +		} else {
       		    lhcost = repeated_append(&check, lhcost, SP->_cuf1_cost,
       					     n, cursor_right);
       		}
      @@ -831,6 +834,8 @@
           if (usecost != INFINITY) {
       	TPUTS_TRACE("mvcur");
       	tputs(buffer, 1, _nc_outch);
      +	SP->_cursrow = ynew;
      +	SP->_curscol = xnew;
       	return (OK);
           } else
       	return (ERR);
      @@ -840,67 +845,94 @@
       mvcur(int yold, int xold, int ynew, int xnew)
       /* optimized cursor move from (yold, xold) to (ynew, xnew) */
       {
      +    attr_t oldattr;
      +    int code;
      +
           TR(TRACE_CALLS | TRACE_MOVE, (T_CALLED("mvcur(%d,%d,%d,%d)"),
       				  yold, xold, ynew, xnew));
       
      -    if (SP == 0)
      -	returnCode(ERR);
      +    if (SP == 0) {
      +	code = ERR;
      +    } else if (yold == ynew && xold == xnew) {
      +	code = OK;
      +    } else {
       
      -    if (yold == ynew && xold == xnew)
      -	returnCode(OK);
      +	/*
      +	 * Most work here is rounding for terminal boundaries getting the
      +	 * column position implied by wraparound or the lack thereof and
      +	 * rolling up the screen to get ynew on the screen.
      +	 */
      +	if (xnew >= screen_columns) {
      +	    ynew += xnew / screen_columns;
      +	    xnew %= screen_columns;
      +	}
       
      -    /*
      -     * Most work here is rounding for terminal boundaries getting the
      -     * column position implied by wraparound or the lack thereof and
      -     * rolling up the screen to get ynew on the screen.
      -     */
      +	/*
      +	 * Force restore even if msgr is on when we're in an alternate
      +	 * character set -- these have a strong tendency to screw up the CR &
      +	 * LF used for local character motions!
      +	 */
      +	oldattr = SP->_current_attr;
      +	if ((oldattr & A_ALTCHARSET)
      +	    || (oldattr && !move_standout_mode)) {
      +	    TR(TRACE_CHARPUT, ("turning off (%#lx) %s before move",
      +			       oldattr, _traceattr(oldattr)));
      +	    (void) vidattr(A_NORMAL);
      +	}
       
      -    if (xnew >= screen_columns) {
      -	ynew += xnew / screen_columns;
      -	xnew %= screen_columns;
      -    }
      -    if (xold >= screen_columns) {
      -	int l;
      +	if (xold >= screen_columns) {
      +	    int l;
       
      -	if (SP->_nl) {
      -	    l = (xold + 1) / screen_columns;
      -	    yold += l;
      -	    if (yold >= screen_lines)
      -		l -= (yold - screen_lines - 1);
      +	    if (SP->_nl) {
      +		l = (xold + 1) / screen_columns;
      +		yold += l;
      +		if (yold >= screen_lines)
      +		    l -= (yold - screen_lines - 1);
       
      -	    while (l > 0) {
      -		if (newline) {
      -		    TPUTS_TRACE("newline");
      -		    tputs(newline, 0, _nc_outch);
      -		} else
      -		    putchar('\n');
      -		l--;
      -		if (xold > 0) {
      -		    if (carriage_return) {
      -			TPUTS_TRACE("carriage_return");
      -			tputs(carriage_return, 0, _nc_outch);
      +		while (l > 0) {
      +		    if (newline) {
      +			TPUTS_TRACE("newline");
      +			putp(newline);
       		    } else
      -			putchar('\r');
      -		    xold = 0;
      +			putchar('\n');
      +		    l--;
      +		    if (xold > 0) {
      +			if (carriage_return) {
      +			    TPUTS_TRACE("carriage_return");
      +			    putp(carriage_return);
      +			} else
      +			    putchar('\r');
      +			xold = 0;
      +		    }
       		}
      +	    } else {
      +		/*
      +		 * If caller set nonl(), we cannot really use newlines to
      +		 * position to the next row.
      +		 */
      +		xold = -1;
      +		yold = -1;
       	    }
      -	} else {
      -	    /*
      -	     * If caller set nonl(), we cannot really use newlines to position
      -	     * to the next row.
      -	     */
      -	    xold = -1;
      -	    yold = -1;
       	}
      -    }
       
      -    if (yold > screen_lines - 1)
      -	yold = screen_lines - 1;
      -    if (ynew > screen_lines - 1)
      -	ynew = screen_lines - 1;
      +	if (yold > screen_lines - 1)
      +	    yold = screen_lines - 1;
      +	if (ynew > screen_lines - 1)
      +	    ynew = screen_lines - 1;
       
      -    /* destination location is on screen now */
      -    returnCode(onscreen_mvcur(yold, xold, ynew, xnew, TRUE));
      +	/* destination location is on screen now */
      +	code = onscreen_mvcur(yold, xold, ynew, xnew, TRUE);
      +
      +	/*
      +	 * Restore attributes if we disabled them before moving.
      +	 */
      +	if (oldattr != SP->_current_attr) {
      +	    TR(TRACE_CHARPUT, ("turning on (%#lx) %s after move",
      +			       oldattr, _traceattr(oldattr)));
      +	    (void) vidattr(oldattr);
      +	}
      +    }
      +    returnCode(code);
       }
       
       #if defined(TRACE) || defined(NCURSES_TEST)
      diff -urNd -urNd ncurses-5.3/ncurses/tty/lib_twait.c ncurses-5.3.20030906.orig/ncurses/tty/lib_twait.c
      --- ncurses-5.3/ncurses/tty/lib_twait.c	Sat Aug 31 19:28:18 2002
      +++ ncurses-5.3.20030906.orig/ncurses/tty/lib_twait.c	Tue May 13 20:08:22 2003
      @@ -61,7 +61,7 @@
       # endif
       #endif
       
      -MODULE_ID("$Id: lib_twait.c,v 1.46 2002/09/01 00:28:18 tom Exp $")
      +MODULE_ID("$Id: lib_twait.c,v 1.47 2003/01/25 18:21:17 tom Exp $")
       
       static long
       _nc_gettime(bool first)
      @@ -388,7 +388,7 @@
            * then come back for more.
            */
           if (result == 0 && milliseconds > 100) {
      -	napms(100);
      +	napms(100);	/* FIXME: this won't be right if I recur! */
       	milliseconds -= 100;
       	goto retry;
           }
      diff -urNd -urNd ncurses-5.3/ncurses/tty/tty_display.h ncurses-5.3.20030906.orig/ncurses/tty/tty_display.h
      --- ncurses-5.3/ncurses/tty/tty_display.h	Sat Dec  9 20:27:01 2000
      +++ ncurses-5.3.20030906.orig/ncurses/tty/tty_display.h	Fri Sep 12 16:41:41 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
      + * Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -29,6 +29,9 @@
       #ifndef TTY_DISPLAY_H
       #define TTY_DISPLAY_H 1
       
      +/*
      + * $Id: tty_display.h,v 1.5 2003/08/02 22:59:07 Philippe.Blain Exp $
      + */
       extern NCURSES_EXPORT(bool) _nc_tty_beep (void);
       extern NCURSES_EXPORT(bool) _nc_tty_check_resize (void);
       extern NCURSES_EXPORT(bool) _nc_tty_cursor (int);
      @@ -111,7 +114,7 @@
       		: ((enter_insert_mode && exit_insert_mode) \
       		  ? D->_smir_cost + D->_rmir_cost + (D->_ip_cost * count) \
       		  : ((insert_character != 0) \
      -		    ? (D->_ich1_cost * count) \
      +		    ? ((D->_ich1_cost + D->_ip_cost) * count) \
       		    : INFINITY)))
       
       #if USE_XMC_SUPPORT
      diff -urNd -urNd ncurses-5.3/ncurses/tty/tty_update.c ncurses-5.3.20030906.orig/ncurses/tty/tty_update.c
      --- ncurses-5.3/ncurses/tty/tty_update.c	Sat Sep 28 15:41:55 2002
      +++ ncurses-5.3.20030906.orig/ncurses/tty/tty_update.c	Fri Sep 12 16:42:24 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -29,6 +29,7 @@
       /****************************************************************************
        *  Author: Zeyd M. Ben-Halim  1992,1995               *
        *     and: Eric S. Raymond                          *
      + *     and: Thomas E. Dickey 1996-2002                                      *
        ****************************************************************************/
       
       /*-----------------------------------------------------------------
      @@ -72,7 +73,7 @@
       
       #include 
       
      -MODULE_ID("$Id: tty_update.c,v 1.177 2002/09/28 20:41:55 tom Exp $")
      +MODULE_ID("$Id: tty_update.c,v 1.199 2003/08/23 21:25:08 tom Exp $")
       
       /*
        * This define controls the line-breakout optimization.  Every once in a
      @@ -165,61 +166,90 @@
       static inline void
       GoTo(int const row, int const col)
       {
      -    attr_t oldattr = SP->_current_attr;
      -
           TR(TRACE_MOVE, ("GoTo(%d, %d) from (%d, %d)",
       		    row, col, SP->_cursrow, SP->_curscol));
       
           position_check(SP->_cursrow, SP->_curscol, "GoTo");
       
      -    /*
      -     * Force restore even if msgr is on when we're in an alternate
      -     * character set -- these have a strong tendency to screw up the
      -     * CR & LF used for local character motions!
      -     */
      -    if ((oldattr & A_ALTCHARSET)
      -	|| (oldattr && !move_standout_mode)) {
      -	TR(TRACE_CHARPUT, ("turning off (%#lx) %s before move",
      -			   oldattr, _traceattr(oldattr)));
      -	vidattr(A_NORMAL);
      -    }
      -
           mvcur(SP->_cursrow, SP->_curscol, row, col);
      -    SP->_cursrow = row;
      -    SP->_curscol = col;
           position_check(SP->_cursrow, SP->_curscol, "GoTo2");
       }
       
       static inline void
       PutAttrChar(CARG_CH_T ch)
       {
      +    int chlen = 1;
      +    NCURSES_CH_T my_ch;
           PUTC_DATA;
           NCURSES_CH_T tilde;
      +    NCURSES_ATTR_T attr = AttrOfD(ch);
      +
      +    TR(TRACE_CHARPUT, ("PutAttrChar(%s) at (%d, %d)",
      +		       _tracech_t(ch),
      +		       SP->_cursrow, SP->_curscol));
      +#if USE_WIDEC_SUPPORT
      +    /*
      +     * If this is not a valid character, there is nothing more to do.
      +     */
      +    if (isnac(CHDEREF(ch)))
      +	return;
      +    /*
      +     * Determine the number of character cells which the 'ch' value will use
      +     * on the screen.  It should be at least one.
      +     */
      +    if ((chlen = wcwidth(CharOf(CHDEREF(ch)))) <= 0) {
      +	static NCURSES_CH_T blank = NewChar(BLANK_TEXT);
      +
      +	ch = CHREF(blank);
      +	chlen = 1;
      +	TR(TRACE_CHARPUT, ("forced to blank"));
      +    }
      +#endif
       
      +    if ((attr & A_ALTCHARSET)
      +	&& SP->_acs_map != 0
      +	&& CharOfD(ch) < ACS_LEN) {
      +	my_ch = CHDEREF(ch);	/* work around const param */
      +#if USE_WIDEC_SUPPORT
      +	/*
      +	 * This is crude & ugly, but works most of the time.  It checks if the
      +	 * acs_chars string specified that we have a mapping for this
      +	 * character, and uses the wide-character mapping when we expect the
      +	 * normal one to be broken (by mis-design ;-).
      +	 */
      +	if (SP->_screen_acs_fix
      +	    && SP->_acs_map[CharOf(my_ch)] & A_ALTCHARSET) {
      +	    attr &= ~(A_ALTCHARSET);
      +	    my_ch = _nc_wacs[CharOf(my_ch)];
      +	}
      +#endif
      +	if (attr & A_ALTCHARSET) {
      +	    chtype temp = UChar(SP->_acs_map[CharOfD(ch)]);
      +	    if (temp != 0)
      +		SetChar(my_ch, temp, attr);
      +	    RemAttr(my_ch, A_ALTCHARSET);
      +	}
      +	ch = CHREF(my_ch);
      +    }
           if (tilde_glitch && (CharOfD(ch) == L('~'))) {
      -	SetChar(tilde, L('`'), AttrOfD(ch));
      +	SetChar(tilde, L('`'), attr);
       	ch = CHREF(tilde);
           }
       
      -    TR(TRACE_CHARPUT, ("PutAttrChar(%s) at (%d, %d)",
      -		       _tracech_t(ch),
      -		       SP->_cursrow, SP->_curscol));
      -    UpdateAttrs(AttrOfD(ch));
      +    UpdateAttrs(attr);
       #if !USE_WIDEC_SUPPORT
           /* FIXME - we do this special case for signal handling, should see how to
            * make it work for wide characters.
            */
           if (SP->_outch != 0) {
      -	SP->_outch((int) ch);
      +	SP->_outch(UChar(ch));
           } else
       #endif
           {
       	PUTC(CHDEREF(ch), SP->_ofp);	/* macro's fastest... */
      -#ifdef TRACE
      -	_nc_outchars++;
      -#endif /* TRACE */
      +	TRACE_OUTCHARS(1);
           }
      -    SP->_curscol++;
      +    SP->_curscol += chlen;
           if (char_padding) {
       	TPUTS_TRACE("char_padding");
       	putp(char_padding);
      @@ -456,7 +486,8 @@
       		    rep_count--;
       
       		UpdateAttrs(AttrOf(ntext0));
      -		putp(tparm(repeat_char, CharOf(ntext0), rep_count));
      +		tputs(tparm(repeat_char, CharOf(ntext0), rep_count),
      +		      rep_count, _nc_outch);
       		SP->_curscol += rep_count;
       
       		if (wrap_possible)
      @@ -888,12 +919,12 @@
           if (needclear) {
       	UpdateAttrs(AttrOf(blank));
       	TPUTS_TRACE("clr_eol");
      -	if (SP->_el_cost > (screen_columns - SP->_curscol)) {
      +	if (clr_eol && SP->_el_cost <= (screen_columns - SP->_curscol)) {
      +	    putp(clr_eol);
      +	} else {
       	    int count = (screen_columns - SP->_curscol);
       	    while (count-- > 0)
       		PutChar(CHREF(blank));
      -	} else {
      -	    putp(clr_eol);
       	}
           }
       }
      @@ -939,7 +970,7 @@
           int col;
           int top = total;
           int last = min(screen_columns, newscr->_maxx + 1);
      -    NCURSES_CH_T blank = ClrBlank(stdscr);
      +    NCURSES_CH_T blank = newscr->_line[total - 1].text[last - 1];
           bool ok;
       
           if (clr_eos && can_clear_with(CHREF(blank))) {
      @@ -959,17 +990,16 @@
       	}
       
       	/* don't use clr_eos for just one line if clr_eol available */
      -	if (top < total - 1 || (top < total && !clr_eol && !clr_bol)) {
      +	if (top < total) {
       	    GoTo(top, 0);
       	    ClrToEOS(blank);
      -	    total = top;
       	    if (SP->oldhash && SP->newhash) {
       		for (row = top; row < screen_lines; row++)
       		    SP->oldhash[row] = SP->newhash[row];
       	    }
       	}
           }
      -    return total;
      +    return top;
       }
       
       #if USE_XMC_SUPPORT
      @@ -1314,7 +1344,7 @@
       
       	    UpdateAttrs(AttrOf(blank));
       	    TPUTS_TRACE("clr_eos");
      -	    putp(clr_eos);
      +	    tputs(clr_eos, screen_lines, _nc_outch);
       	} else if (clr_eol) {
       	    SP->_cursrow = SP->_curscol = -1;
       
      @@ -1478,12 +1508,12 @@
       	GoTo(bot, 0);
       	UpdateAttrs(AttrOf(blank));
       	TPUTS_TRACE("scroll_forward");
      -	tputs(scroll_forward, 0, _nc_outch);
      +	putp(scroll_forward);
           } else if (n == 1 && delete_line && bot == maxy) {
       	GoTo(top, 0);
       	UpdateAttrs(AttrOf(blank));
       	TPUTS_TRACE("delete_line");
      -	tputs(delete_line, 0, _nc_outch);
      +	putp(delete_line);
           } else if (parm_index && top == miny && bot == maxy) {
       	GoTo(bot, 0);
       	UpdateAttrs(AttrOf(blank));
      @@ -1499,14 +1529,14 @@
       	UpdateAttrs(AttrOf(blank));
       	for (i = 0; i < n; i++) {
       	    TPUTS_TRACE("scroll_forward");
      -	    tputs(scroll_forward, 0, _nc_outch);
      +	    putp(scroll_forward);
       	}
           } else if (delete_line && bot == maxy) {
       	GoTo(top, 0);
       	UpdateAttrs(AttrOf(blank));
       	for (i = 0; i < n; i++) {
       	    TPUTS_TRACE("delete_line");
      -	    tputs(delete_line, 0, _nc_outch);
      +	    putp(delete_line);
       	}
           } else
       	return ERR;
      @@ -1536,12 +1566,12 @@
       	GoTo(top, 0);
       	UpdateAttrs(AttrOf(blank));
       	TPUTS_TRACE("scroll_reverse");
      -	tputs(scroll_reverse, 0, _nc_outch);
      +	putp(scroll_reverse);
           } else if (n == 1 && insert_line && bot == maxy) {
       	GoTo(top, 0);
       	UpdateAttrs(AttrOf(blank));
       	TPUTS_TRACE("insert_line");
      -	tputs(insert_line, 0, _nc_outch);
      +	putp(insert_line);
           } else if (parm_rindex && top == miny && bot == maxy) {
       	GoTo(top, 0);
       	UpdateAttrs(AttrOf(blank));
      @@ -1557,14 +1587,14 @@
       	UpdateAttrs(AttrOf(blank));
       	for (i = 0; i < n; i++) {
       	    TPUTS_TRACE("scroll_reverse");
      -	    tputs(scroll_reverse, 0, _nc_outch);
      +	    putp(scroll_reverse);
       	}
           } else if (insert_line && bot == maxy) {
       	GoTo(top, 0);
       	UpdateAttrs(AttrOf(blank));
       	for (i = 0; i < n; i++) {
       	    TPUTS_TRACE("insert_line");
      -	    tputs(insert_line, 0, _nc_outch);
      +	    putp(insert_line);
       	}
           } else
       	return ERR;
      @@ -1596,14 +1626,14 @@
           UpdateAttrs(AttrOf(blank));
           if (n == 1 && delete_line) {
       	TPUTS_TRACE("delete_line");
      -	tputs(delete_line, 0, _nc_outch);
      +	putp(delete_line);
           } else if (parm_delete_line) {
       	TPUTS_TRACE("parm_delete_line");
       	tputs(tparm(parm_delete_line, n, 0), n, _nc_outch);
           } else {			/* if (delete_line) */
       	for (i = 0; i < n; i++) {
       	    TPUTS_TRACE("delete_line");
      -	    tputs(delete_line, 0, _nc_outch);
      +	    putp(delete_line);
       	}
           }
       
      @@ -1611,20 +1641,28 @@
           UpdateAttrs(AttrOf(blank));
           if (n == 1 && insert_line) {
       	TPUTS_TRACE("insert_line");
      -	tputs(insert_line, 0, _nc_outch);
      +	putp(insert_line);
           } else if (parm_insert_line) {
       	TPUTS_TRACE("parm_insert_line");
       	tputs(tparm(parm_insert_line, n, 0), n, _nc_outch);
           } else {			/* if (insert_line) */
       	for (i = 0; i < n; i++) {
       	    TPUTS_TRACE("insert_line");
      -	    tputs(insert_line, 0, _nc_outch);
      +	    putp(insert_line);
       	}
           }
       
           return OK;
       }
       
      +/*
      + * Note:  some terminals require the cursor to be within the scrolling margins
      + * before setting them.  Generally, the cursor must be at the appropriate end
      + * of the scrolling margins when issuing an indexing operation (it is not
      + * apparent whether it must also be at the left margin; we do this just to be
      + * safe).  To make the related cursor movement a little faster, we use the
      + * save/restore cursor capabilities if the terminal has them.
      + */
       NCURSES_EXPORT(int)
       _nc_scrolln(int n, int top, int bot, int maxy)
       /* scroll region from top to bot by n lines */
      @@ -1658,13 +1696,13 @@
       		&& save_cursor && restore_cursor) {
       		cursor_saved = TRUE;
       		TPUTS_TRACE("save_cursor");
      -		tputs(save_cursor, 0, _nc_outch);
      +		putp(save_cursor);
       	    }
       	    TPUTS_TRACE("change_scroll_region");
      -	    tputs(tparm(change_scroll_region, top, bot), 0, _nc_outch);
      +	    putp(tparm(change_scroll_region, top, bot));
       	    if (cursor_saved) {
       		TPUTS_TRACE("restore_cursor");
      -		tputs(restore_cursor, 0, _nc_outch);
      +		putp(restore_cursor);
       	    } else {
       		SP->_cursrow = SP->_curscol = -1;
       	    }
      @@ -1672,7 +1710,7 @@
       	    res = scroll_csr_forward(n, top, bot, top, bot, blank);
       
       	    TPUTS_TRACE("change_scroll_region");
      -	    tputs(tparm(change_scroll_region, 0, maxy), 0, _nc_outch);
      +	    putp(tparm(change_scroll_region, 0, maxy));
       	    SP->_cursrow = SP->_curscol = -1;
       	}
       
      @@ -1686,7 +1724,7 @@
       	    && (non_dest_scroll_region || (memory_below && bot == maxy))) {
       	    NCURSES_CH_T blank2 = NewChar(BLANK_TEXT);
       	    if (bot == maxy && clr_eos) {
      -		GoTo(bot - n, 0);
      +		GoTo(bot - n + 1, 0);
       		ClrToEOS(blank2);
       	    } else {
       		for (i = 0; i < n; i++) {
      @@ -1704,13 +1742,13 @@
       		&& save_cursor && restore_cursor) {
       		cursor_saved = TRUE;
       		TPUTS_TRACE("save_cursor");
      -		tputs(save_cursor, 0, _nc_outch);
      +		putp(save_cursor);
       	    }
       	    TPUTS_TRACE("change_scroll_region");
      -	    tputs(tparm(change_scroll_region, top, bot), 0, _nc_outch);
      +	    putp(tparm(change_scroll_region, top, bot));
       	    if (cursor_saved) {
       		TPUTS_TRACE("restore_cursor");
      -		tputs(restore_cursor, 0, _nc_outch);
      +		putp(restore_cursor);
       	    } else {
       		SP->_cursrow = SP->_curscol = -1;
       	    }
      @@ -1718,7 +1756,7 @@
       	    res = scroll_csr_backward(-n, top, bot, top, bot, blank);
       
       	    TPUTS_TRACE("change_scroll_region");
      -	    tputs(tparm(change_scroll_region, 0, maxy), 0, _nc_outch);
      +	    putp(tparm(change_scroll_region, 0, maxy));
       	    SP->_cursrow = SP->_curscol = -1;
       	}
       
      @@ -1811,8 +1849,6 @@
       	SP->_default_color = FALSE;
       
       	mvcur(SP->_cursrow, SP->_curscol, screen_lines - 1, 0);
      -	SP->_cursrow = screen_lines - 1;
      -	SP->_curscol = 0;
       
       	ClrToEOL(blank, TRUE);
           }
      diff -urNd -urNd ncurses-5.3/ncurses/widechar/charable.c ncurses-5.3.20030906.orig/ncurses/widechar/charable.c
      --- ncurses-5.3/ncurses/widechar/charable.c	Wed Dec 31 18:00:00 1969
      +++ ncurses-5.3.20030906.orig/ncurses/widechar/charable.c	Sun Jul 20 14:02:09 2003
      @@ -0,0 +1,77 @@
      +/****************************************************************************
      + * Copyright (c) 2003 Free Software Foundation, Inc.                        *
      + *                                                                          *
      + * Permission is hereby granted, free of charge, to any person obtaining a  *
      + * copy of this software and associated documentation files (the            *
      + * "Software"), to deal in the Software without restriction, including      *
      + * without limitation the rights to use, copy, modify, merge, publish,      *
      + * distribute, distribute with modifications, sublicense, and/or sell       *
      + * copies of the Software, and to permit persons to whom the Software is    *
      + * furnished to do so, subject to the following conditions:                 *
      + *                                                                          *
      + * The above copyright notice and this permission notice shall be included  *
      + * in all copies or substantial portions of the Software.                   *
      + *                                                                          *
      + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
      + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
      + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
      + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
      + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
      + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
      + * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
      + *                                                                          *
      + * Except as contained in this notice, the name(s) of the above copyright   *
      + * holders shall not be used in advertising or otherwise to promote the     *
      + * sale, use or other dealings in this Software without prior written       *
      + * authorization.                                                           *
      + ****************************************************************************/
      +
      +/*
      +**	Support functions for wide/narrow conversion.
      +*/
      +
      +#include 
      +
      +MODULE_ID("$Id: charable.c,v 1.2 2003/07/05 18:04:08 tom Exp $")
      +
      +NCURSES_EXPORT(bool) _nc_is_charable(wchar_t ch)
      +{
      +    bool result;
      +#if HAVE_WCTOB
      +    result = (wctob(ch) == ch);
      +#else
      +    result = (_nc_to_char(ch) >= 0);
      +#endif
      +    return result;
      +}
      +
      +NCURSES_EXPORT(int) _nc_to_char(wint_t ch)
      +{
      +    int result;
      +#if HAVE_WCTOB
      +    result = wctob(ch);
      +#elif HAVE_WCTOMB
      +    char temp[MB_LEN_MAX];
      +    result = wctomb(temp, ch);
      +    if (strlen(temp) == 1)
      +	result = UChar(temp[0]);
      +    else
      +	result = -1;
      +#endif
      +    return result;
      +}
      +
      +NCURSES_EXPORT(wint_t) _nc_to_widechar(int ch)
      +{
      +    wint_t result;
      +#if HAVE_BTOWC
      +    result = btowc(ch);
      +#elif HAVE_MBTOWC
      +    char temp[2];
      +    temp[0] = ch;
      +    temp[1] = '\0';
      +    if (mbtowc((wchar_t *) (&result), temp, 1) != 1)
      +	result = WEOF;
      +#endif
      +    return result;
      +}
      diff -urNd -urNd ncurses-5.3/ncurses/widechar/lib_cchar.c ncurses-5.3.20030906.orig/ncurses/widechar/lib_cchar.c
      --- ncurses-5.3/ncurses/widechar/lib_cchar.c	Sat Aug 10 17:27:37 2002
      +++ ncurses-5.3.20030906.orig/ncurses/widechar/lib_cchar.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 2001,2002 Free Software Foundation, Inc.                   *
      + * Copyright (c) 2001-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -35,7 +35,7 @@
       
       #include 
       
      -MODULE_ID("$Id: lib_cchar.c,v 1.6 2002/08/10 22:27:37 tom Exp $")
      +MODULE_ID("$Id: lib_cchar.c,v 1.8 2003/05/25 00:07:41 tom Exp $")
       
       /* 
        * The SuSv2 description leaves some room for interpretation.  We'll assume wch
      @@ -55,26 +55,28 @@
       		      wcval, _nc_viswbuf(wch), attrs, color_pair, opts));
       
           if (opts != NULL || (len = wcslen(wch)) > CCHARW_MAX
      -	|| (len > 0 && wcwidth(wch[0]) < 0)) {
      +	|| (len > 1 && wcwidth(wch[0]) < 0)) {
       	code = ERR;
           } else {
       
      +	/*
      +	 * If we have a following spacing-character, stop at that point.  We
      +	 * are only interested in adding non-spacing characters.
      +	 */
       	for (i = 1; i < len; ++i) {
       	    if (wcwidth(wch[i]) != 0) {
      -		code = ERR;
      +		len = i;
       		break;
       	    }
       	}
       
      -	if (code != ERR) {
      -	    memset(wcval, 0, sizeof(*wcval));
      +	memset(wcval, 0, sizeof(*wcval));
       
      -	    if (len != 0) {
      -		SetAttr(*wcval, attrs | color_pair);
      -		memcpy(&wcval->chars, wch, len * sizeof(wchar_t));
      -		TR(TRACE_CCALLS, ("copy %d wchars, first is %s", len,
      -				  _tracecchar_t(wcval)));
      -	    }
      +	if (len != 0) {
      +	    SetAttr(*wcval, attrs | color_pair);
      +	    memcpy(&wcval->chars, wch, len * sizeof(wchar_t));
      +	    TR(TRACE_CCALLS, ("copy %d wchars, first is %s", len,
      +			      _tracecchar_t(wcval)));
       	}
           }
       
      @@ -100,6 +102,8 @@
       
       	if (wch == NULL) {
       	    code = len;
      +	} else if (attrs == 0 || color_pair == 0) {
      +	    code = ERR;
       	} else if (len >= 0) {
       	    *attrs = AttrOf(*wcval);
       	    *color_pair = AttrOf(*wcval) & A_COLOR;
      diff -urNd -urNd ncurses-5.3/ncurses/widechar/lib_get_wstr.c ncurses-5.3.20030906.orig/ncurses/widechar/lib_get_wstr.c
      --- ncurses-5.3/ncurses/widechar/lib_get_wstr.c	Sat Jul 20 14:28:29 2002
      +++ ncurses-5.3.20030906.orig/ncurses/widechar/lib_get_wstr.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 2002 Free Software Foundation, Inc.                        *
      + * Copyright (c) 2002,2003 Free Software Foundation, Inc.                   *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -40,7 +40,7 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: lib_get_wstr.c,v 1.4 2002/07/20 19:28:29 tom Exp $")
      +MODULE_ID("$Id: lib_get_wstr.c,v 1.6 2003/05/17 21:33:03 tom Exp $")
       
       /*
        * This wipes out the last character, no matter whether it was a tab, control
      @@ -109,6 +109,25 @@
       	wrefresh(win);
       
           while ((code = wget_wch(win, &ch)) != ERR) {
      +	/*
      +	 * Map special characters into key-codes.
      +	 */
      +	if (ch == '\r')
      +	    ch = '\n';
      +	if (ch == '\n') {
      +	    code = KEY_CODE_YES;
      +	    ch = KEY_ENTER;
      +	}
      +	if (ch < KEY_MIN) {
      +	    if (ch == erasec) {
      +		ch = KEY_BACKSPACE;
      +		code = KEY_CODE_YES;
      +	    }
      +	    if (ch == killc) {
      +		ch = KEY_EOL;
      +		code = KEY_CODE_YES;
      +	    }
      +	}
       	if (code == KEY_CODE_YES) {
       	    /*
       	     * Some terminals (the Wyse-50 is the most common) generate a \n
      @@ -116,21 +135,18 @@
       	     * choice whether to set kcud=\n for wget_wch(); terminating
       	     * *getn_wstr() with \n should work either way.
       	     */
      -	    if (ch == '\n'
      -		|| ch == '\r'
      -		|| ch == KEY_DOWN
      -		|| ch == KEY_ENTER) {
      +	    if (ch == KEY_DOWN || ch == KEY_ENTER) {
       		if (oldecho == TRUE
       		    && win->_cury == win->_maxy
       		    && win->_scroll)
       		    wechochar(win, (chtype) '\n');
       		break;
       	    }
      -	    if (ch == erasec || ch == KEY_LEFT || ch == KEY_BACKSPACE) {
      +	    if (ch == KEY_LEFT || ch == KEY_BACKSPACE) {
       		if (tmpstr > oldstr) {
       		    tmpstr = WipeOut(win, y, x, oldstr, tmpstr, oldecho);
       		}
      -	    } else if (ch == killc) {
      +	    } else if (ch == KEY_EOL) {
       		while (tmpstr > oldstr) {
       		    tmpstr = WipeOut(win, y, x, oldstr, tmpstr, oldecho);
       		}
      @@ -141,6 +157,7 @@
       	    beep();
       	} else {
       	    *tmpstr++ = ch;
      +	    *tmpstr = 0;
       	    if (oldecho == TRUE) {
       		int oldy = win->_cury;
       		cchar_t tmp;
      @@ -193,7 +210,7 @@
           *tmpstr = 0;
           if (code == ERR) {
       	if (tmpstr == oldstr) {
      -	    *tmpstr++ = (wchar_t)WEOF;
      +	    *tmpstr++ = (wchar_t) WEOF;
       	    *tmpstr = 0;
       	}
       	returnCode(ERR);
      diff -urNd -urNd ncurses-5.3/ncurses/widechar/lib_ins_wch.c ncurses-5.3.20030906.orig/ncurses/widechar/lib_ins_wch.c
      --- ncurses-5.3/ncurses/widechar/lib_ins_wch.c	Sun Mar 10 16:25:06 2002
      +++ ncurses-5.3.20030906.orig/ncurses/widechar/lib_ins_wch.c	Tue May 13 20:08:22 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 2002 Free Software Foundation, Inc.                        *
      + * Copyright (c) 2002,2003 Free Software Foundation, Inc.                   *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -39,16 +39,16 @@
       
       #include 
       
      -MODULE_ID("$Id: lib_ins_wch.c,v 1.1 2002/03/10 22:25:06 tom Exp $")
      +MODULE_ID("$Id: lib_ins_wch.c,v 1.3 2003/03/29 21:52:29 tom Exp $")
       
      -NCURSES_EXPORT(int)
      -wins_wch(WINDOW *win, const cchar_t * wch)
      +/*
      + * Insert the given character, updating the current location to simplify
      + * inserting a string.
      + */
      +static void
      +_nc_insert_wch(WINDOW *win, const cchar_t * wch)
       {
      -    int code = ERR;
      -
      -    T((T_CALLED("wins_wch(%p, %s)"), win, _tracecchar_t(wch)));
      -
      -    if (win) {
      +    if (win->_curx <= win->_maxx) {
       	struct ldat *line = &(win->_line[win->_cury]);
       	NCURSES_CH_T *end = &(line->text[win->_curx]);
       	NCURSES_CH_T *temp1 = &(line->text[win->_maxx]);
      @@ -59,6 +59,71 @@
       	    *temp1-- = *temp2--;
       
       	*temp1 = _nc_render(win, *wch);
      +
      +	win->_curx++;
      +    }
      +}
      +
      +NCURSES_EXPORT(int)
      +wins_wch(WINDOW *win, const cchar_t * wch)
      +{
      +    NCURSES_SIZE_T oy;
      +    NCURSES_SIZE_T ox;
      +    int code = ERR;
      +
      +    T((T_CALLED("wins_wch(%p, %s)"), win, _tracecchar_t(wch)));
      +
      +    if (win != 0) {
      +	oy = win->_cury;
      +	ox = win->_curx;
      +
      +	_nc_insert_wch(win, wch);
      +
      +	win->_curx = ox;
      +	win->_cury = oy;
      +	_nc_synchook(win);
      +	code = OK;
      +    }
      +    returnCode(code);
      +}
      +
      +NCURSES_EXPORT(int)
      +wins_nwstr(WINDOW *win, const wchar_t * wstr, int n)
      +{
      +    int code = ERR;
      +    NCURSES_SIZE_T oy;
      +    NCURSES_SIZE_T ox;
      +    const wchar_t *cp;
      +
      +    T((T_CALLED("wins_nwstr(%p,%s,%d)"), win, _nc_viswbufn(wstr, n), n));
      +
      +    if (win != 0
      +	&& wstr != 0) {
      +	if (n < 1)
      +	    n = wcslen(wstr);
      +	if (n > 0) {
      +	    oy = win->_cury;
      +	    ox = win->_curx;
      +	    for (cp = wstr; *cp && ((cp - wstr) < n); cp++) {
      +		if (wcwidth(*cp) > 1) {
      +		    cchar_t tmp_cchar;
      +		    wchar_t tmp_wchar = *cp;
      +		    memset(&tmp_cchar, 0, sizeof(tmp_cchar));
      +		    (void) setcchar(&tmp_cchar,
      +				    &tmp_wchar,
      +				    WA_NORMAL,
      +				    0,
      +				    (void *) 0);
      +		    _nc_insert_wch(win, &tmp_cchar);
      +		} else {
      +		    _nc_insert_ch(win, *cp);	/* tabs, other ASCII stuff */
      +		}
      +	    }
      +
      +	    win->_curx = ox;
      +	    win->_cury = oy;
      +	    _nc_synchook(win);
      +	}
       	code = OK;
           }
           returnCode(code);
      diff -urNd -urNd ncurses-5.3/ncurses/widechar/lib_slk_wset.c ncurses-5.3.20030906.orig/ncurses/widechar/lib_slk_wset.c
      --- ncurses-5.3/ncurses/widechar/lib_slk_wset.c	Wed Dec 31 18:00:00 1969
      +++ ncurses-5.3.20030906.orig/ncurses/widechar/lib_slk_wset.c	Sun Jul 20 14:02:08 2003
      @@ -0,0 +1,146 @@
      +/****************************************************************************
      + * Copyright (c) 2003 Free Software Foundation, Inc.                        *
      + *                                                                          *
      + * Permission is hereby granted, free of charge, to any person obtaining a  *
      + * copy of this software and associated documentation files (the            *
      + * "Software"), to deal in the Software without restriction, including      *
      + * without limitation the rights to use, copy, modify, merge, publish,      *
      + * distribute, distribute with modifications, sublicense, and/or sell       *
      + * copies of the Software, and to permit persons to whom the Software is    *
      + * furnished to do so, subject to the following conditions:                 *
      + *                                                                          *
      + * The above copyright notice and this permission notice shall be included  *
      + * in all copies or substantial portions of the Software.                   *
      + *                                                                          *
      + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
      + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
      + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
      + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
      + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
      + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
      + * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
      + *                                                                          *
      + * Except as contained in this notice, the name(s) of the above copyright   *
      + * holders shall not be used in advertising or otherwise to promote the     *
      + * sale, use or other dealings in this Software without prior written       *
      + * authorization.                                                           *
      + ****************************************************************************/
      +
      +/****************************************************************************
      + *  Author: Thomas E. Dickey, 2003                                          *
      + ****************************************************************************/
      +
      +/*
      + *	lib_slk_wset.c
      + *      Set soft label text.
      + */
      +#include 
      +#include 
      +
      +MODULE_ID("$Id: lib_slk_wset.c,v 1.4 2003/06/07 22:17:43 tom Exp $")
      +
      +NCURSES_EXPORT(int)
      +slk_wset(int i, const wchar_t * astr, int format)
      +{
      +    static wchar_t empty[] =
      +    {L'\0'};
      +    int result = ERR;
      +    SLK *slk = SP->_slk;
      +    int offset;
      +    size_t arglen;
      +    const wchar_t *p;
      +
      +    T((T_CALLED("slk_wset(%d, %s, %d)"), i, _nc_viswbuf(astr), format));
      +
      +    if (astr == 0)
      +	astr = empty;
      +    arglen = wcslen(astr);
      +    while (iswspace(*astr)) {
      +	--arglen;
      +	++astr;			/* skip over leading spaces  */
      +    }
      +    p = astr;
      +    while (iswprint(*p))
      +	p++;			/* The first non-print stops */
      +
      +    arglen = (size_t) (p - astr);
      +
      +    if (slk != NULL &&
      +	i >= 1 &&
      +	i <= slk->labcnt &&
      +	format >= 0 &&
      +	format <= 2) {
      +	char *new_text;
      +	size_t n;
      +	size_t used = 0;
      +	int mycols;
      +	mbstate_t state;
      +
      +	--i;			/* Adjust numbering of labels */
      +
      +	/*
      +	 * Reduce the actual number of columns to fit in the label field.
      +	 */
      +	while (arglen != 0 && wcswidth(astr, arglen) > slk->maxlen) {
      +	    --arglen;
      +	}
      +	mycols = wcswidth(astr, arglen);
      +
      +	/*
      +	 * translate the wide-character string to multibyte form.
      +	 */
      +	memset(&state, 0, sizeof(state));
      +
      +	if ((new_text = (char *) _nc_doalloc(0, MB_LEN_MAX * arglen)) == 0)
      +	    returnCode(ERR);
      +
      +	for (n = 0; n < arglen; ++n) {
      +	    used += wcrtomb(new_text + used, astr[n], &state);
      +	}
      +	new_text[used] = '\0';
      +
      +	if (used >= (size_t) (slk->maxlen + 1)) {
      +	    if ((slk->ent[i].ent_text = (char *) _nc_doalloc(slk->ent[i].ent_text,
      +							     used + 1)) == 0)
      +		returnCode(ERR);
      +	    if ((slk->ent[i].form_text = (char *) _nc_doalloc(slk->ent[i].form_text,
      +							      used + 1)) == 0)
      +		returnCode(ERR);
      +	}
      +
      +	(void) strcpy(slk->ent[i].ent_text, new_text);
      +	free(new_text);
      +
      +	sprintf(slk->ent[i].form_text, "%*s", (size_t) slk->maxlen, " ");
      +
      +	switch (format) {
      +	default:
      +	case 0:		/* left-aligned */
      +	    offset = 0;
      +	    break;
      +	case 1:		/* centered */
      +	    offset = (slk->maxlen - mycols) / 2;
      +	    break;
      +	case 2:		/* right-aligned */
      +	    offset = slk->maxlen - mycols;
      +	    break;
      +	}
      +	if (offset < 0)
      +	    offset = 0;
      +	strcpy(slk->ent[i].form_text + offset,
      +	       slk->ent[i].ent_text);
      +	/*
      +	 * Pad the display with blanks on the right, unless it is already
      +	 * right-aligned.
      +	 */
      +	if (format != 2 && mycols < slk->maxlen) {
      +	    sprintf(slk->ent[i].form_text + offset + used,
      +		    "%*s",
      +		    slk->maxlen - (mycols - offset),
      +		    " ");
      +	}
      +	slk->ent[i].dirty = TRUE;
      +	result = OK;
      +    }
      +    returnCode(result);
      +}
      diff -urNd -urNd ncurses-5.3/ncurses/widechar/lib_unget_wch.c ncurses-5.3.20030906.orig/ncurses/widechar/lib_unget_wch.c
      --- ncurses-5.3/ncurses/widechar/lib_unget_wch.c	Sat Jun 29 16:11:02 2002
      +++ ncurses-5.3.20030906.orig/ncurses/widechar/lib_unget_wch.c	Sun Jul 20 14:02:09 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 2002 Free Software Foundation, Inc.                        *
      + * Copyright (c) 2002,2003 Free Software Foundation, Inc.                        *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -39,7 +39,7 @@
       
       #include 
       
      -MODULE_ID("$Id: lib_unget_wch.c,v 1.3 2002/06/29 21:11:02 tom Exp $")
      +MODULE_ID("$Id: lib_unget_wch.c,v 1.5 2003/07/05 19:46:51 tom Exp $")
       
       NCURSES_EXPORT(int)
       unget_wch(const wchar_t wch)
      @@ -49,25 +49,29 @@
           size_t length;
           int n;
       
      -    T((T_CALLED("unget_wch(%#lx)"), wch));
      +    T((T_CALLED("unget_wch(%#lx)"), (unsigned long) wch));
       
           memset(&state, 0, sizeof(state));
           length = wcrtomb(0, wch, &state);
       
           if (length != (size_t) (-1)
       	&& length != 0) {
      -	char *string = malloc(length);
      +	char *string;
       
      -	memset(&state, 0, sizeof(state));
      -	wcrtomb(string, wch, &state);
      +	if ((string = (char *) malloc(length)) != 0) {
      +	    memset(&state, 0, sizeof(state));
      +	    wcrtomb(string, wch, &state);
       
      -	for (n = (int) (length - 1); n >= 0; --n) {
      -	    if (ungetch(string[n]) != OK) {
      -		result = ERR;
      -		break;
      +	    for (n = (int) (length - 1); n >= 0; --n) {
      +		if (ungetch(string[n]) != OK) {
      +		    result = ERR;
      +		    break;
      +		}
       	    }
      +	    free(string);
      +	} else {
      +	    result = ERR;
       	}
      -	free(string);
           } else {
       	result = ERR;
           }
      diff -urNd -urNd ncurses-5.3/ncurses/widechar/lib_wacs.c ncurses-5.3.20030906.orig/ncurses/widechar/lib_wacs.c
      --- ncurses-5.3/ncurses/widechar/lib_wacs.c	Sat Aug 31 14:44:17 2002
      +++ ncurses-5.3.20030906.orig/ncurses/widechar/lib_wacs.c	Tue May 13 20:08:22 2003
      @@ -33,23 +33,10 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: lib_wacs.c,v 1.5 2002/08/31 19:44:17 tom Exp $")
      +MODULE_ID("$Id: lib_wacs.c,v 1.6 2002/12/21 12:30:19 tom Exp $")
       
       NCURSES_EXPORT_VAR(cchar_t) * _nc_wacs = 0;
       
      -static int
      -_nc_unicode_locale(void)
      -{
      -    char *s;
      -    if (((s = getenv("LC_ALL")) != 0 && *s != '\0')
      -	|| ((s = getenv("LC_ALL")) != 0 && *s != '\0')
      -	|| ((s = getenv("LC_ALL")) != 0 && *s != '\0')) {
      -	if (strstr(s, ".UTF-8") != 0)
      -	    return 1;
      -    }
      -    return 0;
      -}
      -
       NCURSES_EXPORT(void)
       _nc_init_wacs(void)
       {
      diff -urNd -urNd ncurses-5.3/ncurses/widechar/lib_wunctrl.c ncurses-5.3.20030906.orig/ncurses/widechar/lib_wunctrl.c
      --- ncurses-5.3/ncurses/widechar/lib_wunctrl.c	Sat Sep 22 14:18:02 2001
      +++ ncurses-5.3.20030906.orig/ncurses/widechar/lib_wunctrl.c	Sun Jul 20 14:02:09 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 2001 Free Software Foundation, Inc.                        *
      + * Copyright (c) 2001,2003 Free Software Foundation, Inc.                   *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -37,7 +37,7 @@
       
       #if USE_WIDEC_SUPPORT
       
      -MODULE_ID("$Id: lib_wunctrl.c,v 1.6 2001/09/22 19:18:02 tom Exp $")
      +MODULE_ID("$Id: lib_wunctrl.c,v 1.7 2003/07/05 17:01:43 tom Exp $")
       
       NCURSES_EXPORT(wchar_t *)
       wunctrl(cchar_t * wc)
      @@ -46,8 +46,8 @@
       
           if (Charable(*wc)) {
       	const char *p;
      -	for (p = unctrl(wctob(CharOf(*wc))), sp = str; *p;)
      -	    *sp++ = btowc(*p++);
      +	for (p = unctrl(_nc_to_char(CharOf(*wc))), sp = str; *p;)
      +	    *sp++ = _nc_to_widechar(*p++);
       	return str;
           } else
       	return wc->chars;
      diff -urNd -urNd ncurses-5.3/panel/Makefile.in ncurses-5.3.20030906.orig/panel/Makefile.in
      --- ncurses-5.3/panel/Makefile.in	Sat Jan 19 18:41:18 2002
      +++ ncurses-5.3.20030906.orig/panel/Makefile.in	Fri Sep 12 16:42:40 2003
      @@ -1,6 +1,6 @@
      -# $Id: Makefile.in,v 1.41 2002/01/20 00:41:18 tom Exp $
      +# $Id: Makefile.in,v 1.45 2003/08/23 23:26:21 tom Exp $
       ##############################################################################
      -# Copyright (c) 1998,1999,2000,2001,2002 Free Software Foundation, Inc.      #
      +# Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.                #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -27,7 +27,7 @@
       # authorization.                                                             #
       ##############################################################################
       #
      -# Author: Thomas E. Dickey  1996,1997
      +# Author: Thomas E. Dickey 1996-2002
       #
       # Makefile for panels source code.
       #
      @@ -56,6 +56,11 @@
       datadir		= @datadir@
       
       LIBTOOL		= @LIBTOOL@
      +LIBTOOL_CLEAN	= @LIB_CLEAN@
      +LIBTOOL_COMPILE	= @LIB_COMPILE@
      +LIBTOOL_LINK	= @LIB_LINK@
      +LIBTOOL_INSTALL	= @LIB_INSTALL@
      +LIBTOOL_UNINSTALL = @LIB_UNINSTALL@
       
       INSTALL		= @INSTALL@
       INSTALL_LIB	= @INSTALL@ @INSTALL_LIB@
      @@ -72,8 +77,7 @@
       CPP		= @CPP@
       CFLAGS		= @CFLAGS@
       
      -CPPFLAGS	= @CPPFLAGS@ -I@top_srcdir@/ncurses \
      -		  -DHAVE_CONFIG_H
      +CPPFLAGS	= -I@top_srcdir@/ncurses -DHAVE_CONFIG_H @CPPFLAGS@
       
       CCFLAGS		= $(CPPFLAGS) $(CFLAGS)
       
      @@ -85,7 +89,7 @@
       
       CFLAGS_DEFAULT	= $(CFLAGS_@DFT_UPR_MODEL@)
       
      -LINK		= $(LIBTOOL) $(CC)
      +LINK		= $(LIBTOOL_LINK) $(CC)
       LDFLAGS		= @LDFLAGS@ @LD_MODEL@ @LIBS@
       
       SHLIB_DIRS	= -L../lib
      @@ -98,7 +102,7 @@
       REL_VERSION	= @cf_cv_rel_version@
       ABI_VERSION	= @cf_cv_abi_version@
       
      -RANLIB		= @RANLIB@
      +RANLIB		= @LIB_PREP@
       
       IMPORT_LIB	= @IMPORT_LIB@
       SHARED_LIB	= @SHARED_LIB@
      diff -urNd -urNd ncurses-5.3/progs/MKtermsort.sh ncurses-5.3.20030906.orig/progs/MKtermsort.sh
      --- ncurses-5.3/progs/MKtermsort.sh	Sat Jun 29 15:02:48 2002
      +++ ncurses-5.3.20030906.orig/progs/MKtermsort.sh	Tue May 13 20:08:22 2003
      @@ -1,10 +1,10 @@
       #!/bin/sh
      -# $Id: MKtermsort.sh,v 1.8 2002/06/29 20:02:48 tom Exp $
      +# $Id: MKtermsort.sh,v 1.9 2003/01/11 22:23:50 tom Exp $
       #
       # MKtermsort.sh -- generate indirection vectors for the various sort methods
       #
       ##############################################################################
      -# Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.                #
      +# Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.                #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -47,7 +47,7 @@
       
       data=data$$
       trap 'rm -f $data' 1 2 5 15
      -sed -e 's/[	]\+/	/g' < $DATA >$data
      +sed -e 's/[	][	]*/	/g' < $DATA >$data
       DATA=$data
       
       echo "/*";
      diff -urNd -urNd ncurses-5.3/progs/Makefile.in ncurses-5.3.20030906.orig/progs/Makefile.in
      --- ncurses-5.3/progs/Makefile.in	Sat Dec  8 12:48:01 2001
      +++ ncurses-5.3.20030906.orig/progs/Makefile.in	Fri Sep 12 16:42:40 2003
      @@ -1,6 +1,6 @@
      -# $Id: Makefile.in,v 1.56 2001/12/08 18:48:01 tom Exp $
      +# $Id: Makefile.in,v 1.60 2003/08/30 21:22:14 tom Exp $
       ##############################################################################
      -# Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc.           #
      +# Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.                #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -27,7 +27,7 @@
       # authorization.                                                             #
       ##############################################################################
       #
      -# Author: Thomas E. Dickey  1996,1997
      +# Author: Thomas E. Dickey 1996-2003
       #
       # Makefile for ncurses source code.
       #
      @@ -60,6 +60,11 @@
       datadir		= @datadir@
       
       LIBTOOL		= @LIBTOOL@
      +LIBTOOL_CLEAN	= @LIB_CLEAN@
      +LIBTOOL_COMPILE	= @LIB_COMPILE@
      +LIBTOOL_LINK	= @LIB_LINK@
      +LIBTOOL_INSTALL	= @LIB_INSTALL@
      +LIBTOOL_UNINSTALL = @LIB_UNINSTALL@
       
       INSTALL		= @INSTALL@
       INSTALL_PROGRAM	= @INSTALL_PROGRAM@
      @@ -73,8 +78,7 @@
       CFLAGS		= @CFLAGS@
       
       INCDIR		= $(srcdir)/../include
      -CPPFLAGS	= -I../progs -I$(srcdir) @CPPFLAGS@ \
      -		  -DHAVE_CONFIG_H
      +CPPFLAGS	= -I../progs -I$(srcdir) -DHAVE_CONFIG_H @CPPFLAGS@
       
       CCFLAGS		= $(CPPFLAGS) $(CFLAGS)
       
      @@ -87,15 +91,15 @@
       CFLAGS_DEFAULT	= $(CFLAGS_@DFT_UPR_MODEL@)
       
       LD		= @LD@
      -LINK		= @LINK_PROGS@ $(LIBTOOL) $(CC)
      +LINK		= @LINK_PROGS@ $(LIBTOOL_LINK) $(CC)
       LDFLAGS		= @EXTRA_LDFLAGS@ \
       		@PROG_ARGS@ @LDFLAGS@ @LD_MODEL@ @LIBS@ @EXTRA_LIBS@
       
      -LDFLAGS_LIBTOOL	= $(LDFLAGS)
      -LDFLAGS_NORMAL	= $(LDFLAGS)
      -LDFLAGS_DEBUG	= $(LDFLAGS) @CC_G_OPT@
      -LDFLAGS_PROFILE	= $(LDFLAGS) -pg
      -LDFLAGS_SHARED	= $(LDFLAGS) @LD_SHARED_OPTS@
      +LDFLAGS_LIBTOOL	= $(LDFLAGS) $(CFLAGS_LIBTOOL)
      +LDFLAGS_NORMAL	= $(LDFLAGS) $(CFLAGS_NORMAL)
      +LDFLAGS_DEBUG	= $(LDFLAGS) $(CFLAGS_DEBUG)
      +LDFLAGS_PROFILE	= $(LDFLAGS) $(CFLAGS_PROFILE) 
      +LDFLAGS_SHARED	= $(LDFLAGS) $(CFLAGS_SHARED) @LD_SHARED_OPTS@
       
       LDFLAGS_DEFAULT	= $(LDFLAGS_@DFT_UPR_MODEL@)
       
      @@ -150,31 +154,31 @@
       	echo "#define PROG_INIT      \"$(actual_init)\""      >>$@
       
       install.progs: $(AUTO_SRC) $(PROGS) $(DESTDIR)$(bindir)
      -@MAKE_TERMINFO@	$(LIBTOOL) $(INSTALL_PROGRAM) tic$x     $(DESTDIR)$(bindir)/$(actual_tic)
      -@MAKE_TERMINFO@	$(LIBTOOL) $(INSTALL_PROGRAM) toe$x     $(DESTDIR)$(bindir)/$(actual_toe)
      +@MAKE_TERMINFO@	$(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) tic$x     $(DESTDIR)$(bindir)/$(actual_tic)
      +@MAKE_TERMINFO@	$(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) toe$x     $(DESTDIR)$(bindir)/$(actual_toe)
       @MAKE_TERMINFO@	@echo "linking $(actual_infotocap) to $(actual_tic)"
       @MAKE_TERMINFO@	-@rm -f $(DESTDIR)$(bindir)/$(actual_infotocap)
       @MAKE_TERMINFO@	(cd $(DESTDIR)$(bindir) && $(LN_S) $(actual_tic) $(actual_infotocap))
       @MAKE_TERMINFO@	@echo "linking $(actual_captoinfo) to $(actual_tic)"
       @MAKE_TERMINFO@	-@rm -f $(DESTDIR)$(bindir)/$(actual_captoinfo)
       @MAKE_TERMINFO@	(cd $(DESTDIR)$(bindir) && $(LN_S) $(actual_tic) $(actual_captoinfo))
      -	$(LIBTOOL) $(INSTALL_PROGRAM) infocmp$x $(DESTDIR)$(bindir)/$(actual_infocmp)
      -	$(LIBTOOL) $(INSTALL_PROGRAM) clear$x   $(DESTDIR)$(bindir)/$(actual_clear)
      -	$(LIBTOOL) $(INSTALL_PROGRAM) tput$x    $(DESTDIR)$(bindir)/$(actual_tput)
      -	$(LIBTOOL) $(INSTALL_PROGRAM) tset$x    $(DESTDIR)$(bindir)/$(actual_tset)
      +	$(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) infocmp$x $(DESTDIR)$(bindir)/$(actual_infocmp)
      +	$(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) clear$x   $(DESTDIR)$(bindir)/$(actual_clear)
      +	$(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) tput$x    $(DESTDIR)$(bindir)/$(actual_tput)
      +	$(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) tset$x    $(DESTDIR)$(bindir)/$(actual_tset)
       	@echo "linking $(actual_reset) to $(actual_tset)"
       	-@rm -f $(DESTDIR)$(bindir)/$(actual_reset)
       	(cd $(DESTDIR)$(bindir) && $(LN_S) $(actual_tset) $(actual_reset))
       
       uninstall.progs:
      -@MAKE_TERMINFO@	-@$(LIBTOOL) rm -f $(DESTDIR)$(bindir)/$(actual_tic)
      -@MAKE_TERMINFO@	-@$(LIBTOOL) rm -f $(DESTDIR)$(bindir)/$(actual_toe)
      +@MAKE_TERMINFO@	-@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tic)
      +@MAKE_TERMINFO@	-@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_toe)
       @MAKE_TERMINFO@	-@rm -f $(DESTDIR)$(bindir)/$(actual_captoinfo)
       @MAKE_TERMINFO@	-@rm -f $(DESTDIR)$(bindir)/$(actual_infotocap)
      -	-@$(LIBTOOL) rm -f $(DESTDIR)$(bindir)/$(actual_infocmp)
      -	-@$(LIBTOOL) rm -f $(DESTDIR)$(bindir)/$(actual_clear)
      -	-@$(LIBTOOL) rm -f $(DESTDIR)$(bindir)/$(actual_tput)
      -	-@$(LIBTOOL) rm -f $(DESTDIR)$(bindir)/$(actual_tset)
      +	-@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_infocmp)
      +	-@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_clear)
      +	-@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tput)
      +	-@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tset)
       	-@rm -f $(DESTDIR)$(bindir)/$(actual_reset)
       
       $(DESTDIR)$(bindir) :
      @@ -225,7 +229,7 @@
       	@ECHO_LINK@ $(LINK) $(DEPS_TSET) $(LDFLAGS_DEFAULT) -o $@
       
       termsort.c: $(srcdir)/MKtermsort.sh
      -	sh -c "$(srcdir)/MKtermsort.sh $(AWK) $(srcdir)/../include/@TERMINFO_CAPS@" >$@
      +	sh $(srcdir)/MKtermsort.sh $(AWK) $(srcdir)/../include/@TERMINFO_CAPS@ >$@
       
       #
       # Utility productions start here
      diff -urNd -urNd ncurses-5.3/progs/dump_entry.c ncurses-5.3.20030906.orig/progs/dump_entry.c
      --- ncurses-5.3/progs/dump_entry.c	Sun Sep  1 12:54:43 2002
      +++ ncurses-5.3.20030906.orig/progs/dump_entry.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -39,7 +39,7 @@
       #include "termsort.c"		/* this C file is generated */
       #include 	/* so is this */
       
      -MODULE_ID("$Id: dump_entry.c,v 1.64 2002/09/01 17:54:43 tom Exp $")
      +MODULE_ID("$Id: dump_entry.c,v 1.66 2003/05/24 22:43:59 tom Exp $")
       
       #define INDENT			8
       #define DISCARD(string) string = ABSENT_STRING
      @@ -913,15 +913,23 @@
       	     */
       	    char *oldsgr = set_attributes;
       	    char *oldacsc = acs_chars;
      -	    set_attributes = ABSENT_STRING;
      -	    SHOW_WHY("# (sgr removed to fit entry within %d bytes)\n",
      -		     critlen);
      -	    if ((len = FMT_ENTRY()) > critlen) {
      -		acs_chars = ABSENT_STRING;
      -		SHOW_WHY("# (acsc removed to fit entry within %d bytes)\n",
      +	    bool changed = FALSE;
      +
      +	    if (VALID_STRING(set_attributes)) {
      +		set_attributes = ABSENT_STRING;
      +		SHOW_WHY("# (sgr removed to fit entry within %d bytes)\n",
       			 critlen);
      +		changed = TRUE;
       	    }
      -	    if ((len = FMT_ENTRY()) > critlen) {
      +	    if (!changed || ((len = FMT_ENTRY()) > critlen)) {
      +		if (VALID_STRING(acs_chars)) {
      +		    acs_chars = ABSENT_STRING;
      +		    SHOW_WHY("# (acsc removed to fit entry within %d bytes)\n",
      +			     critlen);
      +		    changed = TRUE;
      +		}
      +	    }
      +	    if (!changed || ((len = FMT_ENTRY()) > critlen)) {
       		int oldversion = tversion;
       
       		tversion = V_BSD;
      diff -urNd -urNd ncurses-5.3/progs/infocmp.c ncurses-5.3.20030906.orig/progs/infocmp.c
      --- ncurses-5.3/progs/infocmp.c	Sat Oct  5 20:13:04 2002
      +++ ncurses-5.3.20030906.orig/progs/infocmp.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -41,7 +41,7 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: infocmp.c,v 1.68 2002/10/06 01:13:04 tom Exp $")
      +MODULE_ID("$Id: infocmp.c,v 1.70 2003/05/24 21:05:47 tom Exp $")
       
       #define L_CURL "{"
       #define R_CURL "}"
      @@ -120,7 +120,7 @@
        ***************************************************************************/
       
       static int
      -capcmp(int idx, const char *s, const char *t)
      +capcmp(unsigned idx, const char *s, const char *t)
       /* capability comparison function */
       {
           if (!VALID_STRING(s) && !VALID_STRING(t))
      @@ -248,7 +248,7 @@
       entryeq(TERMTYPE * t1, TERMTYPE * t2)
       /* are two entries equivalent? */
       {
      -    int i;
      +    unsigned i;
       
           for (i = 0; i < NUM_BOOLEANS(t1); i++)
       	if (t1->Booleans[i] != t2->Booleans[i])
      @@ -268,7 +268,7 @@
       #define TIC_EXPAND(result) _nc_tic_expand(result, outform==F_TERMINFO, numbers)
       
       static void
      -print_uses(ENTRY * ep, FILE * fp)
      +print_uses(ENTRY * ep, FILE *fp)
       /* print an entry's use references */
       {
           int i;
      @@ -739,7 +739,7 @@
       		    (void) fputc('\n', stderr);
       		}
       	    }
      -	    exit(EXIT_FAILURE);
      +	    ExitProgram(EXIT_FAILURE);
       	}
       
       	heads[filecount] = _nc_head;
      @@ -936,7 +936,7 @@
       	else
       	    fprintf(stderr, "%s\n", tbl[n]);
           }
      -    exit(EXIT_FAILURE);
      +    ExitProgram(EXIT_FAILURE);
       }
       
       static char *
      @@ -975,7 +975,7 @@
       static void
       dump_initializers(TERMTYPE * term)
       {
      -    int n;
      +    unsigned n;
           int size;
           const char *str = 0;
       
      @@ -1145,7 +1145,7 @@
       
           if (temp == 0 || temp == optarg || *temp != 0) {
       	fprintf(stderr, "Expected a number, not \"%s\"\n", optarg);
      -	exit(EXIT_FAILURE);
      +	ExitProgram(EXIT_FAILURE);
           }
           return (int) value;
       }
      diff -urNd -urNd ncurses-5.3/progs/tic.c ncurses-5.3.20030906.orig/progs/tic.c
      --- ncurses-5.3/progs/tic.c	Sat Oct  5 14:59:41 2002
      +++ ncurses-5.3.20030906.orig/progs/tic.c	Sun Jul 20 14:02:09 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -45,7 +45,7 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: tic.c,v 1.102 2002/10/05 19:59:41 tom Exp $")
      +MODULE_ID("$Id: tic.c,v 1.107 2003/07/19 20:48:24 tom Exp $")
       
       const char *_nc_progname = "tic";
       
      @@ -58,7 +58,7 @@
       static void (*save_check_termtype) (TERMTYPE *);
       static void check_termtype(TERMTYPE * tt);
       
      -static const char usage_string[] = "[-V] [-v[n]] [-e names] [-CILNRTcfrswx1] source-file\n";
      +static const char usage_string[] = "[-V] [-v[n]] [-e names] [-o dir] [-R name] [-CILNTcfrswx1] source-file\n";
       
       static void
       cleanup(void)
      @@ -79,7 +79,7 @@
       {
           perror(msg);
           cleanup();
      -    exit(EXIT_FAILURE);
      +    ExitProgram(EXIT_FAILURE);
       }
       
       static void
      @@ -126,7 +126,7 @@
       	fputs(tbl[j], stderr);
       	putc('\n', stderr);
           }
      -    exit(EXIT_FAILURE);
      +    ExitProgram(EXIT_FAILURE);
       }
       
       #define L_BRACE '{'
      @@ -317,12 +317,12 @@
       
           if (fp == 0) {
       	fprintf(stderr, "%s: Can't open %s\n", _nc_progname, filename);
      -	exit(EXIT_FAILURE);
      +	ExitProgram(EXIT_FAILURE);
           }
           if (fstat(fileno(fp), &sb) < 0
       	|| (sb.st_mode & S_IFMT) != S_IFREG) {
       	fprintf(stderr, "%s: %s is not a file\n", _nc_progname, filename);
      -	exit(EXIT_FAILURE);
      +	ExitProgram(EXIT_FAILURE);
           }
           return fp;
       }
      @@ -769,6 +769,205 @@
       #define CUR tp->
       
       /*
      + * Check if the alternate character-set capabilities are consistent.
      + */
      +static void
      +check_acs(TERMTYPE * tp)
      +{
      +    if (VALID_STRING(acs_chars)) {
      +	const char *boxes = "lmkjtuvwqxn";
      +	char mapped[256];
      +	char missing[256];
      +	const char *p;
      +	char *q;
      +
      +	memset(mapped, 0, sizeof(mapped));
      +	for (p = acs_chars; *p != '\0'; p += 2) {
      +	    if (p[1] == '\0') {
      +		_nc_warning("acsc has odd number of characters");
      +		break;
      +	    }
      +	    mapped[UChar(p[0])] = p[1];
      +	}
      +	if (mapped['I'] && !mapped['i']) {
      +	    _nc_warning("acsc refers to 'I', which is probably an error");
      +	}
      +	for (p = boxes, q = missing; *p != '\0'; ++p) {
      +	    if (!mapped[UChar(p[0])]) {
      +		*q++ = p[0];
      +	    }
      +	    *q = '\0';
      +	}
      +	if (*missing != '\0' && strcmp(missing, boxes)) {
      +	    _nc_warning("acsc is missing some line-drawing mapping: %s", missing);
      +	}
      +    }
      +}
      +
      +/*
      + * Check if the color capabilities are consistent
      + */
      +static void
      +check_colors(TERMTYPE * tp)
      +{
      +    if ((max_colors > 0) != (max_pairs > 0)
      +	|| ((max_colors > max_pairs) && (initialize_pair == 0)))
      +	_nc_warning("inconsistent values for max_colors (%d) and max_pairs (%d)",
      +		    max_colors, max_pairs);
      +
      +    PAIRED(set_foreground, set_background);
      +    PAIRED(set_a_foreground, set_a_background);
      +    PAIRED(set_color_pair, initialize_pair);
      +
      +    if (VALID_STRING(set_foreground)
      +	&& VALID_STRING(set_a_foreground)
      +	&& !strcmp(set_foreground, set_a_foreground))
      +	_nc_warning("expected setf/setaf to be different");
      +
      +    if (VALID_STRING(set_background)
      +	&& VALID_STRING(set_a_background)
      +	&& !strcmp(set_background, set_a_background))
      +	_nc_warning("expected setb/setab to be different");
      +}
      +
      +static int
      +keypad_final(const char *string)
      +{
      +    int result = '\0';
      +
      +    if (VALID_STRING(string)
      +	&& *string++ == '\033'
      +	&& *string++ == 'O'
      +	&& strlen(string) == 1) {
      +	result = *string;
      +    }
      +
      +    return result;
      +}
      +
      +static int
      +keypad_index(const char *string)
      +{
      +    char *test;
      +    const char *list = "PQRSwxymtuvlqrsPpn";	/* app-keypad except "Enter" */
      +    int ch;
      +    int result = -1;
      +
      +    if ((ch = keypad_final(string)) != '\0') {
      +	test = strchr(list, ch);
      +	if (test != 0)
      +	    result = (test - list);
      +    }
      +    return result;
      +}
      +
      +/*
      + * Do a quick sanity-check for vt100-style keypads to see if the 5-key keypad
      + * is mapped inconsistently.
      + */
      +static void
      +check_keypad(TERMTYPE * tp)
      +{
      +    char show[80];
      +
      +    if (VALID_STRING(key_a1) &&
      +	VALID_STRING(key_a3) &&
      +	VALID_STRING(key_b2) &&
      +	VALID_STRING(key_c1) &&
      +	VALID_STRING(key_c3)) {
      +	char final[6];
      +	int list[5];
      +	int increase = 0;
      +	int j, k, kk;
      +	int last;
      +	int test;
      +
      +	final[0] = keypad_final(key_a1);
      +	final[1] = keypad_final(key_a3);
      +	final[2] = keypad_final(key_b2);
      +	final[3] = keypad_final(key_c1);
      +	final[4] = keypad_final(key_c3);
      +	final[5] = '\0';
      +
      +	/* special case: legacy coding using 1,2,3,0,. on the bottom */
      +	if (!strcmp(final, "qsrpn"))
      +	    return;
      +
      +	list[0] = keypad_index(key_a1);
      +	list[1] = keypad_index(key_a3);
      +	list[2] = keypad_index(key_b2);
      +	list[3] = keypad_index(key_c1);
      +	list[4] = keypad_index(key_c3);
      +
      +	/* check that they're all vt100 keys */
      +	for (j = 0; j < 5; ++j) {
      +	    if (list[j] < 0) {
      +		return;
      +	    }
      +	}
      +
      +	/* check if they're all in increasing order */
      +	for (j = 1; j < 5; ++j) {
      +	    if (list[j] > list[j - 1]) {
      +		++increase;
      +	    }
      +	}
      +	if (increase != 4) {
      +	    show[0] = '\0';
      +
      +	    for (j = 0, last = -1; j < 5; ++j) {
      +		for (k = 0, kk = -1, test = 100; k < 5; ++k) {
      +		    if (list[k] > last &&
      +			list[k] < test) {
      +			test = list[k];
      +			kk = k;
      +		    }
      +		}
      +		last = test;
      +		switch (kk) {
      +		case 0:
      +		    strcat(show, " ka1");
      +		    break;
      +		case 1:
      +		    strcat(show, " ka3");
      +		    break;
      +		case 2:
      +		    strcat(show, " kb2");
      +		    break;
      +		case 3:
      +		    strcat(show, " kc1");
      +		    break;
      +		case 4:
      +		    strcat(show, " kc3");
      +		    break;
      +		}
      +	    }
      +
      +	    _nc_warning("vt100 keypad order inconsistent: %s", show);
      +	}
      +
      +    } else if (VALID_STRING(key_a1) ||
      +	       VALID_STRING(key_a3) ||
      +	       VALID_STRING(key_b2) ||
      +	       VALID_STRING(key_c1) ||
      +	       VALID_STRING(key_c3)) {
      +	show[0] = '\0';
      +	if (keypad_index(key_a1) >= 0)
      +	    strcat(show, " ka1");
      +	if (keypad_index(key_a3) >= 0)
      +	    strcat(show, " ka3");
      +	if (keypad_index(key_b2) >= 0)
      +	    strcat(show, " kb2");
      +	if (keypad_index(key_c1) >= 0)
      +	    strcat(show, " kc1");
      +	if (keypad_index(key_c3) >= 0)
      +	    strcat(show, " kc3");
      +	if (*show != '\0')
      +	    _nc_warning("vt100 keypad map incomplete:%s", show);
      +    }
      +}
      +
      +/*
        * Returns the expected number of parameters for the given capability.
        */
       static int
      @@ -1076,17 +1275,9 @@
       	    check_params(tp, ExtStrname(tp, j, strnames), a);
           }
       
      -    /*
      -     * Quick check for color.  We could also check if the ANSI versus
      -     * non-ANSI strings are misused.
      -     */
      -    if ((max_colors > 0) != (max_pairs > 0)
      -	|| ((max_colors > max_pairs) && (initialize_pair == 0)))
      -	_nc_warning("inconsistent values for max_colors (%d) and max_pairs (%d)",
      -		    max_colors, max_pairs);
      -
      -    PAIRED(set_foreground, set_background);
      -    PAIRED(set_a_foreground, set_a_background);
      +    check_acs(tp);
      +    check_colors(tp);
      +    check_keypad(tp);
       
           /*
            * These may be mismatched because the terminal description relies on
      diff -urNd -urNd ncurses-5.3/progs/tput.c ncurses-5.3.20030906.orig/progs/tput.c
      --- ncurses-5.3/progs/tput.c	Sat Jul 20 14:09:47 2002
      +++ ncurses-5.3.20030906.orig/progs/tput.c	Tue May 13 20:08:23 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc.         *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -45,7 +45,7 @@
       #endif
       #include 
       
      -MODULE_ID("$Id: tput.c,v 1.31 2002/07/20 19:09:47 tom Exp $")
      +MODULE_ID("$Id: tput.c,v 1.33 2003/02/22 22:10:34 tom Exp $")
       
       #define PUTS(s)		fputs(s, stdout)
       #define PUTCHAR(c)	putchar(c)
      @@ -70,14 +70,14 @@
           vfprintf(stderr, fmt, argp);
           fprintf(stderr, "\n");
           va_end(argp);
      -    exit(status);
      +    ExitProgram(status);
       }
       
       static void
       usage(void)
       {
           fprintf(stderr, "usage: %s [-V] [-S] [-T term] capname\n", prg_name);
      -    exit(EXIT_FAILURE);
      +    ExitProgram(EXIT_FAILURE);
       }
       
       static void
      @@ -297,8 +297,10 @@
       	token = STRING;
       	if (argc > 1) {
       	    int k;
      -	    int numbers[10];
      -	    char *strings[10];
      +	    int popcount;
      +	    long numbers[1 + NUM_PARM];
      +	    char *strings[1 + NUM_PARM];
      +	    char *p_is_s[NUM_PARM];
       
       	    /* Nasty hack time. The tparm function needs to see numeric
       	     * parameters as numbers, not as pointers to their string
      @@ -312,7 +314,7 @@
       		if (tmp == 0 || *tmp != 0)
       		    numbers[k] = 0;
       	    }
      -	    for (k = argc; k <= 9; k++) {
      +	    for (k = argc; k <= NUM_PARM; k++) {
       		numbers[k] = 0;
       		strings[k] = 0;
       	    }
      @@ -325,10 +327,18 @@
       		s = tparm(s, numbers[1], strings[2], strings[3]);
       		break;
       	    default:
      +		(void) _nc_tparm_analyze(s, p_is_s, &popcount);
      +#define myParam(n) (p_is_s[n - 1] != 0 ? ((long) strings[n]) : numbers[n])
       		s = tparm(s,
      -			  numbers[1], numbers[2], numbers[3],
      -			  numbers[4], numbers[5], numbers[6],
      -			  numbers[7], numbers[8], numbers[9]);
      +			  myParam(1),
      +			  myParam(2),
      +			  myParam(3),
      +			  myParam(4),
      +			  myParam(5),
      +			  myParam(6),
      +			  myParam(7),
      +			  myParam(8),
      +			  myParam(9));
       		break;
       	    }
       	}
      diff -urNd -urNd ncurses-5.3/progs/tset.c ncurses-5.3.20030906.orig/progs/tset.c
      --- ncurses-5.3/progs/tset.c	Sat Aug 24 18:18:16 2002
      +++ ncurses-5.3.20030906.orig/progs/tset.c	Tue May 13 20:08:23 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -103,7 +103,7 @@
       #include 
       #include 
       
      -MODULE_ID("$Id: tset.c,v 0.53 2002/08/24 23:18:16 tom Exp $")
      +MODULE_ID("$Id: tset.c,v 0.55 2003/02/09 00:30:09 tom Exp $")
       
       extern char **environ;
       
      @@ -142,7 +142,7 @@
       	SET_TTY(STDERR_FILENO, &original);
           (void) fprintf(stderr, "\n");
           fflush(stderr);
      -    exit(EXIT_FAILURE);
      +    ExitProgram(EXIT_FAILURE);
           /* NOTREACHED */
       }
       
      @@ -627,8 +627,10 @@
        **************************************************************************/
       
       /* some BSD systems have these built in, some systems are missing
      - * one or more definitions. The safest solution is to override.
      + * one or more definitions. The safest solution is to override unless the
      + * commonly-altered ones are defined.
        */
      +#if !(defined(CERASE) && defined(CINTR) && defined(CKILL) && defined(CQUIT))
       #undef CEOF
       #undef CERASE
       #undef CINTR
      @@ -639,18 +641,39 @@
       #undef CSTART
       #undef CSTOP
       #undef CSUSP
      +#endif
       
       /* control-character defaults */
      +#ifndef CEOF
       #define CEOF	CTRL('D')
      +#endif
      +#ifndef CERASE
       #define CERASE	CTRL('H')
      +#endif
      +#ifndef CINTR
       #define CINTR	127		/* ^? */
      +#endif
      +#ifndef CKILL
       #define CKILL	CTRL('U')
      +#endif
      +#ifndef CLNEXT
       #define CLNEXT  CTRL('v')
      +#endif
      +#ifndef CRPRNT
       #define CRPRNT  CTRL('r')
      +#endif
      +#ifndef CQUIT
       #define CQUIT	CTRL('\\')
      +#endif
      +#ifndef CSTART
       #define CSTART	CTRL('Q')
      +#endif
      +#ifndef CSTOP
       #define CSTOP	CTRL('S')
      +#endif
      +#ifndef CSUSP
       #define CSUSP	CTRL('Z')
      +#endif
       
       #define	CHK(val, dft)	((int)val <= 0 ? dft : val)
       
      @@ -1183,8 +1206,8 @@
       #ifdef TERMIOS
       	if (!quiet) {
       	    report("Erase", VERASE, CERASE);
      -	    report("Kill", VKILL, CINTR);
      -	    report("Interrupt", VINTR, CKILL);
      +	    report("Kill", VKILL, CKILL);
      +	    report("Interrupt", VINTR, CINTR);
       	}
       #endif
           }
      @@ -1193,12 +1216,14 @@
       	err("The -S option is not supported under terminfo.");
       
           if (sflag) {
      +	int len;
       	/*
       	 * Figure out what shell we're using.  A hack, we look for an
       	 * environmental variable SHELL ending in "csh".
       	 */
       	if ((p = getenv("SHELL")) != 0
      -	    && !strcmp(p + strlen(p) - 3, "csh"))
      +	    && (len = strlen(p)) >= 3
      +	    && !strcmp(p + len - 3, "csh"))
       	    p = "set noglob;\nsetenv TERM %s;\nunset noglob;\n";
       	else
       	    p = "TERM=%s;\n";
      @@ -1207,5 +1232,3 @@
       
           return EXIT_SUCCESS;
       }
      -
      -/* tset.c ends here */
      diff -urNd -urNd ncurses-5.3/tack/Makefile.in ncurses-5.3.20030906.orig/tack/Makefile.in
      --- ncurses-5.3/tack/Makefile.in	Sat Dec  8 12:48:01 2001
      +++ ncurses-5.3.20030906.orig/tack/Makefile.in	Fri Sep 12 16:42:40 2003
      @@ -1,4 +1,4 @@
      -# $Id: Makefile.in,v 1.27 2001/12/08 18:48:01 tom Exp $
      +# $Id: Makefile.in,v 1.29 2003/08/23 23:24:08 tom Exp $
       # Makefile for tack
       #
       # The variable 'srcdir' refers to the source-distribution, and can be set with
      @@ -29,6 +29,11 @@
       datadir		= @datadir@
       
       LIBTOOL		= @LIBTOOL@
      +LIBTOOL_CLEAN	= @LIB_CLEAN@
      +LIBTOOL_COMPILE	= @LIB_COMPILE@
      +LIBTOOL_LINK	= @LIB_LINK@
      +LIBTOOL_INSTALL	= @LIB_INSTALL@
      +LIBTOOL_UNINSTALL = @LIB_UNINSTALL@
       
       INSTALL		= @INSTALL@
       INSTALL_PROGRAM	= @INSTALL_PROGRAM@
      @@ -55,15 +60,15 @@
       CFLAGS_DEFAULT	= $(CFLAGS_@DFT_UPR_MODEL@)
       
       LD		= @LD@
      -LINK		= @LINK_PROGS@ $(LIBTOOL) $(CC)
      +LINK		= @LINK_PROGS@ $(LIBTOOL_LINK) $(CC)
       LDFLAGS		= @EXTRA_LDFLAGS@ \
       		@PROG_ARGS@ @LDFLAGS@ @LD_MODEL@ @LIBS@ @EXTRA_LIBS@
       
      -LDFLAGS_LIBTOOL	= $(LDFLAGS)
      -LDFLAGS_NORMAL	= $(LDFLAGS)
      -LDFLAGS_DEBUG	= $(LDFLAGS) @CC_G_OPT@
      -LDFLAGS_PROFILE	= $(LDFLAGS) -pg
      -LDFLAGS_SHARED	= $(LDFLAGS) @LD_SHARED_OPTS@
      +LDFLAGS_LIBTOOL	= $(LDFLAGS) $(CFLAGS_LIBTOOL)
      +LDFLAGS_NORMAL	= $(LDFLAGS) $(CFLAGS_NORMAL)
      +LDFLAGS_DEBUG	= $(LDFLAGS) $(CFLAGS_DEBUG)
      +LDFLAGS_PROFILE	= $(LDFLAGS) $(CFLAGS_PROFILE)
      +LDFLAGS_SHARED	= $(LDFLAGS) $(CFLAGS_SHARED) @LD_SHARED_OPTS@
       
       LDFLAGS_DEFAULT	= $(LDFLAGS_@DFT_UPR_MODEL@)
       
      @@ -92,11 +97,11 @@
       install.tack: $(PROGS) \
       	$(DESTDIR)$(bindir) \
       	$(DESTDIR)$(mandir)
      -	$(LIBTOOL) $(INSTALL_PROGRAM) tack$x $(DESTDIR)$(bindir)/tack$x
      +	$(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) tack$x $(DESTDIR)$(bindir)/tack$x
       	$(INSTALL_DATA) $(srcdir)/tack.1 $(DESTDIR)$(mandir)/tack.1
       
       uninstall.tack:
      -	-@$(LIBTOOL) rm -f $(DESTDIR)$(bindir)/tack$x
      +	-@$(LIBTOOL_UNINSTALL) rm -f $(DESTDIR)$(bindir)/tack$x
       	-@rm -f $(DESTDIR)$(mandir)/tack.1
       
       $(DESTDIR)$(bindir) \
      diff -urNd -urNd ncurses-5.3/tar-copy.sh ncurses-5.3.20030906.orig/tar-copy.sh
      --- ncurses-5.3/tar-copy.sh	Wed Feb 11 06:14:03 1998
      +++ ncurses-5.3.20030906.orig/tar-copy.sh	Tue May 13 20:08:23 2003
      @@ -1,7 +1,7 @@
       #!/bin/sh
      -# $Id: tar-copy.sh,v 1.3 1998/02/11 12:14:03 tom Exp $
      +# $Id: tar-copy.sh,v 1.4 2003/05/11 00:23:28 tom Exp $
       ##############################################################################
      -# Copyright (c) 1998 Free Software Foundation, Inc.                          #
      +# Copyright (c) 1998,2003 Free Software Foundation, Inc.                     #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -28,7 +28,7 @@
       # authorization.                                                             #
       ##############################################################################
       #
      -# Author: Thomas E. Dickey  1997,1998
      +# Author: Thomas E. Dickey
       #
       # Copy a collection of files using 'tar', so that their dates and links are
       # preserved
      @@ -55,16 +55,24 @@
       WD=`pwd`
       
       TMP=$WD/copy$$
      -trap "rm -f $TMP" 0 1 2 5 15
       
       cd $2
      -if ( tar cf $TMP $1 )
      +TEST=`ls -d $1 2>/dev/null`
      +if test -z "$TEST"
       then
      -	cd $3
      -	LIST=`tar tf $TMP 2>&1`
      -	$DOIT rm -rf $LIST 2>/dev/null
      -	$DOIT tar xvf $TMP
      +	echo "... no match for \"$1\" in $2"
       else
      -	echo "Cannot create tar of $1 files"
      -	exit 1
      +	echo "... installing files matching \"$1\" in $2"
      +	trap "rm -f $TMP" 0 1 2 5 15
      +	if ( tar cf $TMP $1 )
      +	then
      +		cd $3
      +		LIST=`tar tf $TMP 2>&1`
      +		$DOIT rm -rf $LIST 2>/dev/null
      +		$DOIT tar xvf $TMP
      +		trap 0 1 2 5 15
      +	else
      +		echo "Cannot create tar of $1 files"
      +		exit 1
      +	fi
       fi
      diff -urNd -urNd ncurses-5.3/test/Makefile.in ncurses-5.3.20030906.orig/test/Makefile.in
      --- ncurses-5.3/test/Makefile.in	Sat Feb  2 18:54:10 2002
      +++ ncurses-5.3.20030906.orig/test/Makefile.in	Fri Sep 12 16:42:40 2003
      @@ -1,6 +1,6 @@
      -# $Id: Makefile.in,v 1.63 2002/02/03 00:54:10 china Exp $
      +# $Id: Makefile.in,v 1.73 2003/08/24 00:05:14 tom Exp $
       ##############################################################################
      -# Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc.           #
      +# Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.                #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -27,7 +27,7 @@
       # authorization.                                                             #
       ##############################################################################
       #
      -# Author: Thomas E. Dickey  1996,1997,1998
      +# Author: Thomas E. Dickey 1996-2002
       #
       # Makefile for ncurses tests.
       
      @@ -46,12 +46,15 @@
       includedir	= @includedir@
       
       LIBTOOL		= @LIBTOOL@
      +LIBTOOL_CLEAN	= @LIB_CLEAN@
      +LIBTOOL_COMPILE	= @LIB_COMPILE@
      +LIBTOOL_LINK	= @LIB_LINK@
       
       CC		= @CC@
       CPP		= @CPP@
       
       CFLAGS		= @CFLAGS@
      -CPPFLAGS	=  -I../test -I$(srcdir) @CPPFLAGS@ -DHAVE_CONFIG_H
      +CPPFLAGS	=  -I../test -I$(srcdir) -DHAVE_CONFIG_H @CPPFLAGS@
       
       CCFLAGS		= $(CPPFLAGS) $(CFLAGS)
       
      @@ -69,15 +72,15 @@
       MATH_LIB	= @MATH_LIB@
       
       LD		= @LD@
      -LINK		= @LINK_TESTS@ $(LIBTOOL) $(CC) $(CFLAGS)
      +LINK		= @LINK_TESTS@ $(LIBTOOL_LINK) $(CC) $(CFLAGS)
       
       LDFLAGS		= @LD_MODEL@ @TEST_ARGS@ @LIBS@ @EXTRA_LIBS@ @LOCAL_LDFLAGS@ @LDFLAGS@
       
      -LDFLAGS_LIBTOOL	= $(LDFLAGS)
      -LDFLAGS_NORMAL	= $(LDFLAGS)
      -LDFLAGS_DEBUG	= $(LDFLAGS) @CC_G_OPT@
      -LDFLAGS_PROFILE	= $(LDFLAGS) -pg
      -LDFLAGS_SHARED	= $(LDFLAGS) @LD_SHARED_OPTS@
      +LDFLAGS_LIBTOOL	= $(LDFLAGS) $(CFLAGS_LIBTOOL)
      +LDFLAGS_NORMAL	= $(LDFLAGS) $(CFLAGS_NORMAL)
      +LDFLAGS_DEBUG	= $(LDFLAGS) $(CFLAGS_DEBUG)
      +LDFLAGS_PROFILE	= $(LDFLAGS) $(CFLAGS_PROFILE)
      +LDFLAGS_SHARED	= $(LDFLAGS) $(CFLAGS_SHARED) @LD_SHARED_OPTS@
       
       LDFLAGS_DEFAULT	= $(LDFLAGS_@DFT_UPR_MODEL@)
       
      @@ -89,6 +92,11 @@
       	blue$x \
       	bs$x \
       	cardfile$x \
      +	demo_defkey$x \
      +	demo_forms$x \
      +	demo_keyok$x \
      +	demo_menus$x \
      +	demo_panels$x \
       	ditto$x \
       	dots$x \
       	filter$x \
      @@ -97,13 +105,15 @@
       	gdc$x \
       	hanoi$x \
       	hashtest$x \
      +	ins_wide$x \
      +	inserts$x \
       	keynames$x \
       	knight$x \
       	lrtest$x \
       	ncurses$x \
       	newdemo$x \
      -	rain$x \
       	railroad$x \
      +	rain$x \
       	tclock$x \
       	testaddch$x \
       	testcurs$x \
      @@ -125,6 +135,21 @@
       cardfile$x: $(MODEL)/cardfile.o $(LOCAL_LIBS)
       	@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/cardfile.o $(LDFLAGS_DEFAULT)
       
      +demo_defkey$x: $(MODEL)/demo_defkey.o $(LOCAL_LIBS)
      +	@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/demo_defkey.o $(LDFLAGS_DEFAULT)
      +
      +demo_forms$x: $(MODEL)/demo_forms.o $(MODEL)/edit_field.o $(LOCAL_LIBS)
      +	@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/demo_forms.o $(MODEL)/edit_field.o $(LDFLAGS_DEFAULT)
      +
      +demo_keyok$x: $(MODEL)/demo_keyok.o $(LOCAL_LIBS)
      +	@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/demo_keyok.o $(LDFLAGS_DEFAULT)
      +
      +demo_menus$x: $(MODEL)/demo_menus.o $(LOCAL_LIBS)
      +	@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/demo_menus.o $(LDFLAGS_DEFAULT)
      +
      +demo_panels$x: $(MODEL)/demo_panels.o $(LOCAL_LIBS)
      +	@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/demo_panels.o $(LDFLAGS_DEFAULT)
      +
       ditto$x: $(MODEL)/ditto.o $(LOCAL_LIBS)
       	@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/ditto.o $(LDFLAGS_DEFAULT)
       
      @@ -149,6 +174,12 @@
       hashtest$x: $(MODEL)/hashtest.o $(LOCAL_LIBS)
       	@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/hashtest.o $(LDFLAGS_DEFAULT)
       
      +inserts$x: $(MODEL)/inserts.o $(LOCAL_LIBS)
      +	@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/inserts.o $(LDFLAGS_DEFAULT)
      +
      +ins_wide$x: $(MODEL)/ins_wide.o $(LOCAL_LIBS)
      +	@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/ins_wide.o $(LDFLAGS_DEFAULT)
      +
       keynames$x: $(MODEL)/keynames.o $(LOCAL_LIBS)
       	@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/keynames.o $(LDFLAGS_DEFAULT)
       
      @@ -213,9 +244,3 @@
       
       lint:
       	sh -c 'for N in $(TESTS); do echo LINT:$$N; $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/$$N.c $(LINT_LIBS); done'
      -
      -# Use this to get a list of test-programs for the standalone configure script.
      -echo_tests :
      -	@echo "$(TESTS)"
      -echo_suffix :
      -	@echo "$x"
      diff -urNd -urNd ncurses-5.3/test/README ncurses-5.3.20030906.orig/test/README
      --- ncurses-5.3/test/README	Sat Nov 25 01:11:22 1995
      +++ ncurses-5.3.20030906.orig/test/README	Sun Jul 20 14:02:09 2003
      @@ -1,3 +1,6 @@
      +-- $Id: README,v 1.15 2003/07/05 19:17:49 tom Exp $
      +-------------------------------------------------------------------------------
      +
       The programs in this directory are designed to test your newest toy :-)
       Check the sources for any further details.
       
      @@ -20,3 +23,601 @@
       This directory also contains:
       
       tracemunch - Perl script to crunch trace scripts to make them easier to read
      +
      +-------------------------------------------------------------------------------
      +-------------------------------------------------------------------------------
      +
      +These programs provide examples of use, but do not comprise a complete set of
      +tests.  Here is a list of library externals, noting those that are used:
      +
      +libform:
      +-------
      +TYPE_ALNUM			test: demo_forms
      +TYPE_ALPHA			test: demo_forms ncurses
      +TYPE_ENUM			test: demo_forms
      +TYPE_INTEGER			test: demo_forms
      +TYPE_IPV4			-
      +TYPE_NUMERIC			test: demo_forms
      +TYPE_REGEXP			test: demo_forms
      +current_field			test: demo_forms edit_field ncurses
      +data_ahead			-
      +data_behind			-
      +dup_field			-
      +dynamic_field_info		-
      +field_arg			-
      +field_back			-
      +field_buffer			test: cardfile demo_forms edit_field ncurses
      +field_count			-
      +field_fore			-
      +field_index			test: demo_forms
      +field_info			test: ncurses
      +field_init			-
      +field_just			-
      +field_opts			test: demo_forms ncurses
      +field_opts_off			test: cardfile
      +field_opts_on			-
      +field_pad			-
      +field_status			-
      +field_term			-
      +field_type			test: demo_forms
      +field_userptr			test: ncurses
      +form_driver			test: cardfile demo_forms edit_field ncurses
      +form_fields			test: cardfile
      +form_init			-
      +form_opts			-
      +form_opts_off			-
      +form_opts_on			-
      +form_page			-
      +form_request_by_name		-
      +form_request_name		test: edit_field
      +form_sub			test: cardfile demo_forms ncurses
      +form_term			-
      +form_userptr			-
      +form_win			test: cardfile demo_forms edit_field ncurses
      +free_field			test: cardfile demo_forms ncurses
      +free_fieldtype			-
      +free_form			test: cardfile demo_forms ncurses
      +link_field			-
      +link_fieldtype			-
      +move_field			-
      +new_field			test: cardfile demo_forms ncurses
      +new_fieldtype			test: ncurses
      +new_form			test: cardfile demo_forms ncurses
      +new_page			-
      +pos_form_cursor			-
      +post_form			test: cardfile demo_forms ncurses
      +scale_form			test: demo_forms ncurses
      +set_current_field		-
      +set_field_back			test: cardfile demo_forms edit_field ncurses
      +set_field_buffer		test: cardfile demo_forms edit_field ncurses
      +set_field_fore			-
      +set_field_init			-
      +set_field_just			test: cardfile
      +set_field_opts			test: demo_forms ncurses
      +set_field_pad			-
      +set_field_status		-
      +set_field_term			-
      +set_field_type			test: demo_forms ncurses
      +set_field_userptr		test: demo_forms ncurses
      +set_fieldtype_arg		-
      +set_fieldtype_choice		-
      +set_form_fields			-
      +set_form_init			-
      +set_form_opts			-
      +set_form_page			-
      +set_form_sub			test: cardfile demo_forms ncurses
      +set_form_term			-
      +set_form_userptr		-
      +set_form_win			test: cardfile demo_forms ncurses
      +set_max_field			-
      +set_new_page			test: demo_forms
      +unpost_form			test: cardfile demo_forms ncurses
      +
      +libmenu:
      +-------
      +current_item			test: ncurses
      +free_item			test: ncurses
      +free_menu			test: ncurses
      +item_count			-
      +item_description		-
      +item_index			test: ncurses
      +item_init			-
      +item_name			test: ncurses
      +item_opts			-
      +item_opts_off			-
      +item_opts_on			-
      +item_term			-
      +item_userptr			-
      +item_value			test: ncurses
      +item_visible			-
      +menu_back			-
      +menu_driver			test: ncurses
      +menu_fore			-
      +menu_format			-
      +menu_grey			-
      +menu_init			-
      +menu_items			test: ncurses
      +menu_mark			-
      +menu_opts			-
      +menu_opts_off			test: ncurses
      +menu_opts_on			-
      +menu_pad			-
      +menu_pattern			-
      +menu_request_by_name		-
      +menu_request_name		-
      +menu_spacing			-
      +menu_sub			-
      +menu_term			-
      +menu_userptr			-
      +menu_win			test: ncurses
      +new_item			test: ncurses
      +new_menu			test: ncurses
      +pos_menu_cursor			lib: menu
      +post_menu			test: ncurses
      +scale_menu			test: ncurses
      +set_current_item		-
      +set_item_init			-
      +set_item_opts			-
      +set_item_term			-
      +set_item_userptr		-
      +set_item_value			test: ncurses
      +set_menu_back			-
      +set_menu_fore			-
      +set_menu_format			test: ncurses
      +set_menu_grey			-
      +set_menu_init			-
      +set_menu_items			-
      +set_menu_mark			-
      +set_menu_opts			-
      +set_menu_pad			-
      +set_menu_pattern		-
      +set_menu_spacing		-
      +set_menu_sub			test: ncurses
      +set_menu_term			-
      +set_menu_userptr		-
      +set_menu_win			test: ncurses
      +set_top_row			-
      +top_row				-
      +unpost_menu			test: ncurses
      +
      +libncurses:
      +----------
      +BC				-
      +COLORS				test: ncurses xmas
      +COLOR_PAIR			test: blue bs demo_forms filter firework gdc hanoi ins_wide inserts knight ncurses newdemo rain tclock testaddch testcurs view worm xmas
      +COLOR_PAIRS			test: ncurses newdemo
      +COLS				test: cardfile demo_defkey demo_forms demo_keyok edit_field firework hashtest ins_wide inserts lrtest ncurses newdemo rain tclock testcurs view worm
      +ESCDELAY			lib: ncurses
      +LINES				test: cardfile demo_defkey demo_keyok edit_field firework hanoi hashtest ins_wide inserts lrtest ncurses newdemo rain tclock testcurs view worm xmas
      +PAIR_NUMBER			lib: ncurses
      +PC				lib: ncurses
      +SP				lib: ncurses
      +TABSIZE				lib: menu
      +UP				-
      +acs_map				test: gdc ins_wide inserts knight ncurses newdemo testcurs
      +add_wch				-
      +add_wchnstr			test: ncurses
      +add_wchstr			test: view
      +addch				test: blue bs ditto hashtest ncurses testaddch view worm
      +addchnstr			-
      +addchstr			-
      +addnstr				-
      +addnwstr			-
      +addstr				test: blue bs cardfile gdc hanoi lrtest ncurses
      +addwstr				-
      +assume_default_colors		test: ncurses
      +attr_get			-
      +attr_off			test: ncurses
      +attr_on				test: ncurses
      +attr_set			-
      +attroff				test: filter gdc ncurses tclock
      +attron				test: bs filter gdc ncurses
      +attrset				test: bs firework gdc hanoi ncurses rain tclock testaddch testcurs
      +baudrate			lib: ncurses
      +beep				test: blue bs cardfile demo_forms edit_field hanoi ins_wide inserts knight ncurses tclock testcurs view xmas
      +bkgd				test: demo_forms ncurses tclock view
      +bkgdset				test: ncurses testaddch
      +bkgrnd				-
      +bkgrndset			-
      +boolcodes			progs: dump_entry
      +boolfnames			progs: dump_entry
      +boolnames			progs: dump_entry infocmp
      +border				-
      +border_set			-
      +box				test: cardfile demo_forms edit_field ins_wide inserts lrtest ncurses newdemo testcurs
      +box_set				test: ncurses
      +can_change_color		test: ncurses
      +cbreak				test: blue bs cardfile demo_defkey demo_forms demo_keyok ditto filter firework gdc hanoi hashtest ins_wide inserts knight lrtest ncurses newdemo tclock testcurs view worm xmas
      +chgat				-
      +clear				test: blue bs gdc ncurses testcurs xmas
      +clearok				test: bs knight
      +clrtobot			test: ncurses
      +clrtoeol			test: blue bs hanoi hashtest ncurses view
      +color_content			test: ncurses
      +color_set			-
      +copywin				test: testcurs
      +cur_term			test: dots lrtest progs: clear tic tput tset
      +curs_set			test: firework gdc hanoi lrtest newdemo rain tclock testcurs worm xmas
      +curscr				test: edit_field knight lrtest ncurses tclock view
      +curses_version			test: ncurses progs: infocmp tic toe tput tset
      +def_prog_mode			test: bs ncurses
      +def_shell_mode			lib: ncurses
      +define_key			test: demo_defkey
      +del_curterm			lib: ncurses
      +delay_output			-
      +delch				-
      +deleteln			-
      +delscreen			-
      +delwin				test: cardfile demo_forms edit_field ncurses newdemo testcurs
      +derwin				test: cardfile demo_forms ncurses
      +doupdate			test: cardfile edit_field ins_wide inserts knight ncurses
      +dupwin				test: edit_field
      +echo				test: bs hanoi ncurses testcurs testscanw
      +echo_wchar			test: ncurses
      +echochar			test: ncurses
      +endwin				test: blue bs cardfile demo_defkey demo_forms demo_keyok ditto filter firework firstlast gdc hanoi hashtest ins_wide inserts knight lrtest ncurses newdemo rain tclock testaddch testcurs testscanw view worm xmas
      +erase				test: cardfile filter firework firstlast hanoi lrtest ncurses tclock testcurs
      +erasechar			lib: ncurses
      +erasewchar			-
      +filter				test: filter
      +flash				test: cardfile lrtest ncurses tclock testcurs
      +flushinp			test: ncurses newdemo testcurs
      +get_wch				-
      +get_wstr			-
      +getbkgd				test: ncurses
      +getbkgrnd			-
      +getcchar			test: view
      +getch				test: blue bs ditto firework firstlast hanoi hashtest lrtest rain tclock testaddch testcurs view worm xmas
      +getmouse			test: bs knight ncurses
      +getn_wstr			-
      +getnstr				test: filter ncurses
      +getstr				-
      +getwin				test: ncurses
      +halfdelay			test: view
      +has_colors			test: bs demo_forms filter firework gdc hanoi ins_wide inserts knight ncurses newdemo rain tclock testcurs view worm xmas
      +has_ic				test: lrtest
      +has_il				lib: ncurses
      +has_key				lib: ncurses
      +hline				test: gdc ncurses
      +hline_set			-
      +idcok				-
      +idlok				test: ncurses testscanw view
      +immedok				-
      +in_wch				-
      +in_wchnstr			-
      +in_wchstr			-
      +inch				-
      +inchnstr			-
      +inchstr				-
      +init_color			test: ncurses
      +init_pair			test: blue bs demo_forms filter firework gdc hanoi ins_wide inserts knight ncurses newdemo rain tclock testaddch testcurs view worm xmas
      +initscr				test: blue bs cardfile demo_defkey demo_forms demo_keyok firework firstlast gdc hanoi hashtest ins_wide inserts knight lrtest ncurses newdemo rain tclock testaddch testcurs testscanw view worm xmas
      +innstr				-
      +innwstr				-
      +ins_nwstr			-
      +ins_wch				-
      +ins_wstr			-
      +insch				-
      +insdelln			-
      +insertln			-
      +insnstr				-
      +insstr				-
      +instr				-
      +intrflush			test: demo_forms
      +inwstr				-
      +is_linetouched			lib: form
      +is_term_resized			-
      +is_wintouched			lib: ncurses
      +isendwin			-
      +key_defined			test: demo_defkey
      +key_name			test: ncurses
      +keybound			test: demo_defkey
      +keyname				test: demo_defkey demo_keyok edit_field keynames ncurses testcurs view progs: tic
      +keyok				test: demo_keyok
      +keypad				test: bs cardfile demo_defkey demo_forms demo_keyok edit_field filter firework hashtest ins_wide inserts knight lrtest ncurses tclock testcurs testscanw view
      +killchar			lib: ncurses
      +killwchar			-
      +leaveok				test: hanoi
      +longname			test: testcurs progs: tput
      +mcprint				-
      +meta				test: ncurses
      +mouse_trafo			-
      +mouseinterval			-
      +mousemask			test: bs knight ncurses
      +move				test: blue bs cardfile gdc hanoi hashtest knight lrtest ncurses testscanw view worm xmas
      +mvadd_wch			test: ncurses
      +mvadd_wchnstr			-
      +mvadd_wchstr			-
      +mvaddch				test: bs gdc hanoi lrtest ncurses rain tclock xmas
      +mvaddchnstr			test: gdc
      +mvaddchstr			-
      +mvaddnstr			-
      +mvaddnwstr			-
      +mvaddstr			test: bs demo_forms gdc hanoi knight ncurses rain tclock testcurs xmas
      +mvaddwstr			-
      +mvchgat				-
      +mvcur				lib: ncurses
      +mvdelch				-
      +mvderwin			lib: menu
      +mvget_wch			-
      +mvget_wstr			-
      +mvgetch				-
      +mvgetn_wstr			-
      +mvgetnstr			-
      +mvgetstr			-
      +mvhline				test: ncurses
      +mvhline_set			test: ncurses
      +mvin_wch			-
      +mvin_wchnstr			-
      +mvin_wchstr			-
      +mvinch				-
      +mvinchnstr			test: gdc
      +mvinchstr			-
      +mvinnstr			-
      +mvinnwstr			-
      +mvins_nwstr			-
      +mvins_wch			-
      +mvins_wstr			-
      +mvinsch				-
      +mvinsnstr			-
      +mvinsstr			-
      +mvinstr				-
      +mvinwstr			-
      +mvprintw			test: bs firework hanoi ncurses tclock view
      +mvscanw				-
      +mvvline				test: ncurses
      +mvvline_set			test: ncurses
      +mvwadd_wch			-
      +mvwadd_wchnstr			-
      +mvwadd_wchstr			-
      +mvwaddch			test: newdemo testcurs xmas
      +mvwaddchnstr			-
      +mvwaddchstr			-
      +mvwaddnstr			test: newdemo testcurs
      +mvwaddnwstr			-
      +mvwaddstr			test: firstlast ins_wide inserts knight ncurses newdemo testcurs xmas
      +mvwaddwstr			-
      +mvwchgat			-
      +mvwdelch			test: ncurses
      +mvwget_wch			-
      +mvwget_wstr			-
      +mvwgetch			-
      +mvwgetn_wstr			-
      +mvwgetnstr			-
      +mvwgetstr			-
      +mvwhline			lib: ncurses
      +mvwhline_set			-
      +mvwin				test: cardfile testcurs xmas
      +mvwin_wch			-
      +mvwin_wchnstr			-
      +mvwin_wchstr			-
      +mvwinch				test: newdemo testcurs
      +mvwinchnstr			-
      +mvwinchstr			-
      +mvwinnstr			test: testcurs
      +mvwinnwstr			-
      +mvwins_nwstr			-
      +mvwins_wch			test: ins_wide
      +mvwins_wstr			test: ins_wide
      +mvwinsch			test: ins_wide inserts
      +mvwinsnstr			-
      +mvwinsstr			test: inserts testcurs
      +mvwinstr			-
      +mvwinwstr			-
      +mvwprintw			test: ncurses testcurs
      +mvwscanw			test: testcurs
      +mvwvline			test: ins_wide inserts
      +mvwvline_set			-
      +napms				test: firework gdc hanoi lrtest ncurses newdemo railroad rain tclock testcurs view worm xmas progs: tset
      +newpad				test: edit_field ncurses testcurs
      +newscr				lib: ncurses
      +newterm				test: ditto filter gdc
      +newwin				test: cardfile demo_defkey demo_forms demo_keyok edit_field firstlast ins_wide inserts knight ncurses newdemo testcurs xmas
      +nl				test: demo_forms ncurses rain testcurs
      +nocbreak			test: testcurs
      +nodelay				test: firework gdc lrtest ncurses newdemo rain tclock view xmas
      +noecho				test: bs cardfile demo_defkey demo_forms demo_keyok ditto firework firstlast gdc hanoi hashtest ins_wide inserts knight lrtest ncurses rain tclock testcurs view worm xmas
      +nonl				test: bs demo_forms hashtest ncurses view worm xmas
      +noqiflush			-
      +noraw				test: demo_forms ncurses testcurs
      +notimeout			-
      +numcodes			progs: dump_entry
      +numfnames			progs: dump_entry
      +numnames			progs: dump_entry infocmp
      +ospeed				progs: tset
      +overlay				test: testcurs xmas
      +overwrite			test: ncurses
      +pair_content			lib: ncurses
      +pechochar			-
      +pnoutrefresh			test: edit_field ncurses
      +prefresh			test: testcurs
      +printw				test: blue bs demo_defkey demo_keyok filter ncurses testcurs testscanw view
      +putp				progs: tput
      +putwin				test: ncurses
      +qiflush				-
      +raw				test: demo_forms ncurses testcurs
      +redrawwin			-
      +refresh				test: blue bs demo_defkey demo_forms demo_keyok ditto filter firstlast gdc hanoi hashtest lrtest ncurses tclock testcurs view worm xmas
      +reset_prog_mode			test: filter ncurses
      +reset_shell_mode		test: bs filter
      +resetty				-
      +resize_term			test: view
      +resizeterm			lib: ncurses
      +restartterm			-
      +ripoffline			test: ncurses
      +savetty				-
      +scanw				test: testcurs testscanw
      +scr_dump			-
      +scr_init			-
      +scr_restore			-
      +scr_set				-
      +scrl				-
      +scroll				test: testcurs
      +scrollok			test: demo_defkey demo_keyok ditto hashtest knight ncurses testcurs testscanw view
      +set_curterm			lib: ncurses
      +set_term			test: ditto
      +setcchar			test: ins_wide ncurses view
      +setscrreg			test: view
      +setupterm			test: dots progs: clear tput tset
      +slk_attr			-
      +slk_attr_off			-
      +slk_attr_on			-
      +slk_attr_set			-
      +slk_attroff			lib: ncurses
      +slk_attron			lib: ncurses
      +slk_attrset			-
      +slk_clear			test: ncurses
      +slk_color			test: ncurses
      +slk_init			test: ncurses
      +slk_label			test: ncurses
      +slk_noutrefresh			test: ncurses
      +slk_refresh			test: ncurses
      +slk_restore			test: ncurses
      +slk_set				test: ncurses
      +slk_touch			test: ncurses
      +slk_wset			test: ncurses
      +standend			test: blue gdc ncurses worm
      +standout			test: blue ncurses
      +start_color			test: blue bs demo_forms filter firework gdc hanoi ins_wide inserts knight ncurses newdemo rain tclock testaddch testcurs view worm xmas
      +stdscr				test: bs demo_forms ditto filter firework gdc hanoi hashtest ins_wide inserts knight lrtest ncurses rain tclock testcurs testscanw view xmas
      +strcodes			progs: dump_entry
      +strfnames			progs: dump_entry
      +strnames			progs: dump_entry infocmp tic
      +subpad				test: testcurs
      +subwin				test: ncurses newdemo testcurs
      +syncok				-
      +term_attrs			-
      +termattrs			test: ncurses testcurs
      +termname			test: testcurs
      +tgetent				test: railroad
      +tgetflag			-
      +tgetnum				test: railroad
      +tgetstr				test: railroad
      +tgoto				test: railroad
      +tigetflag			progs: tput
      +tigetnum			test: ncurses progs: tput
      +tigetstr			test: blue demo_defkey testcurs progs: tput
      +timeout				test: rain
      +touchline			lib: ncurses
      +touchwin			test: edit_field filter firstlast ncurses xmas
      +tparm				test: dots progs: tic tput
      +tputs				test: dots railroad progs: clear tset
      +trace				test: hanoi hashtest lrtest ncurses testcurs view worm
      +ttytype				lib: ncurses
      +typeahead			test: testcurs
      +unctrl				test: ncurses testcurs
      +unget_wch			-
      +ungetch				test: bs knight
      +ungetmouse			-
      +untouchwin			-
      +use_default_colors		test: filter firework gdc hanoi knight ncurses rain tclock worm xmas
      +use_env				progs: tput
      +use_extended_names		progs: infocmp tic
      +vid_attr			-
      +vid_puts			-
      +vidattr				lib: ncurses
      +vidputs				lib: ncurses
      +vline				test: gdc ncurses
      +vline_set			-
      +vw_printw			-
      +vw_scanw			-
      +vwprintw			lib: ncurses
      +vwscanw				lib: ncurses
      +wadd_wch			lib: ncurses
      +wadd_wchnstr			lib: ncurses
      +wadd_wchstr			-
      +waddch				test: firstlast knight ncurses
      +waddchnstr			lib: ncurses
      +waddchstr			-
      +waddnstr			lib: form
      +waddnwstr			test: ncurses
      +waddstr				test: demo_forms edit_field firstlast ins_wide knight ncurses testcurs
      +waddwstr			test: ins_wide
      +wattr_get			-
      +wattr_off			lib: menu
      +wattr_on			lib: menu
      +wattr_set			-
      +wattroff			test: demo_forms ncurses testcurs xmas
      +wattron				test: testcurs xmas
      +wattrset			test: demo_forms ncurses newdemo testcurs xmas
      +wbkgd				test: demo_forms ncurses newdemo testcurs
      +wbkgdset			test: ins_wide inserts ncurses
      +wbkgrnd				lib: ncurses
      +wbkgrndset			lib: ncurses
      +wborder				lib: ncurses
      +wborder_set			lib: ncurses
      +wchgat				test: view
      +wclear				test: ncurses testcurs
      +wclrtobot			test: firstlast ncurses testcurs
      +wclrtoeol			test: demo_defkey demo_keyok firstlast ins_wide inserts knight ncurses testcurs
      +wcolor_set			lib: ncurses
      +wcursyncup			lib: form
      +wdelch				test: ncurses testcurs
      +wdeleteln			test: testcurs
      +wecho_wchar			lib: ncurses
      +wechochar			lib: ncurses
      +wenclose			lib: menu
      +werase				test: cardfile demo_forms edit_field firstlast knight ncurses newdemo testcurs xmas
      +wget_wch			test: ins_wide ncurses
      +wget_wstr			-
      +wgetch				test: cardfile demo_defkey demo_keyok edit_field gdc inserts knight ncurses newdemo testcurs
      +wgetn_wstr			test: ncurses
      +wgetnstr			test: ncurses
      +wgetstr				-
      +whline				test: testcurs
      +whline_set			lib: ncurses
      +win_wch				lib: ncurses
      +win_wchnstr			lib: ncurses
      +win_wchstr			-
      +winch				test: knight testcurs
      +winchnstr			lib: ncurses
      +winchstr			-
      +winnstr				test: demo_defkey
      +winnwstr			lib: ncurses
      +wins_nwstr			lib: ncurses
      +wins_wch			lib: ncurses
      +wins_wstr			-
      +winsch				test: testcurs
      +winsdelln			lib: form
      +winsertln			test: testcurs
      +winsnstr			lib: form
      +winsstr				-
      +winstr				-
      +winwstr				lib: ncurses
      +wmouse_trafo			lib: menu
      +wmove				test: demo_defkey demo_keyok firstlast ins_wide inserts knight ncurses newdemo testcurs
      +wnoutrefresh			test: edit_field ins_wide inserts knight ncurses
      +wprintw				test: demo_defkey demo_forms demo_keyok edit_field ins_wide inserts knight ncurses testcurs
      +wredrawln			lib: ncurses
      +wrefresh			test: demo_forms demo_keyok edit_field firstlast knight lrtest ncurses newdemo tclock testcurs view xmas
      +wresize				test: cardfile ncurses
      +wscanw				test: testcurs
      +wscrl				test: ncurses testcurs view
      +wsetscrreg			test: ncurses testcurs
      +wstandend			test: xmas
      +wstandout			test: xmas
      +wsyncdown			lib: ncurses
      +wsyncup				lib: form
      +wtimeout			test: ncurses
      +wtouchln			lib: form
      +wunctrl				-
      +wvline				test: testcurs
      +wvline_set			lib: ncurses
      +
      +libpanel:
      +--------
      +bottom_panel			test: ncurses
      +del_panel			test: ncurses
      +hide_panel			test: ncurses
      +move_panel			test: ncurses
      +new_panel			test: cardfile ncurses
      +panel_above			-
      +panel_below			-
      +panel_hidden			-
      +panel_userptr			test: ncurses
      +panel_window			test: cardfile ncurses
      +replace_panel			-
      +set_panel_userptr		test: ncurses
      +show_panel			test: ncurses
      +top_panel			test: cardfile ncurses
      +update_panels			test: cardfile ncurses
      diff -urNd -urNd ncurses-5.3/test/aclocal.m4 ncurses-5.3.20030906.orig/test/aclocal.m4
      --- ncurses-5.3/test/aclocal.m4	Wed Dec 31 18:00:00 1969
      +++ ncurses-5.3.20030906.orig/test/aclocal.m4	Sun Jul 20 14:02:08 2003
      @@ -0,0 +1,812 @@
      +dnl $Id: aclocal.m4,v 1.4 2003/05/17 22:22:52 tom Exp $
      +dnl ---------------------------------------------------------------------------
      +dnl ---------------------------------------------------------------------------
      +dnl CF_ADD_INCDIR version: 4 updated: 2002/12/21 14:25:52
      +dnl -------------
      +dnl Add an include-directory to $CPPFLAGS.  Don't add /usr/include, since it's
      +dnl redundant.  We don't normally need to add -I/usr/local/include for gcc,
      +dnl but old versions (and some misinstalled ones) need that.  To make things
      +dnl worse, gcc 3.x gives error messages if -I/usr/local/include is added to
      +dnl the include-path).
      +AC_DEFUN([CF_ADD_INCDIR],
      +[
      +for cf_add_incdir in $1
      +do
      +	while true
      +	do
      +		case $cf_add_incdir in
      +		/usr/include) # (vi
      +			;;
      +		/usr/local/include) # (vi
      +			if test "$GCC" = yes
      +			then
      +				cf_save_CPPFLAGS="$CPPFLAGS"
      +				CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
      +				AC_TRY_COMPILE([#include ],
      +						[printf("Hello")],
      +						[],
      +						[CPPFLAGS="$cf_save_CPPFLAGS"])
      +			fi
      +			;;
      +		*) # (vi
      +			CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
      +			;;
      +		esac
      +		cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'`
      +		test "$cf_top_incdir" = "$cf_add_incdir" && break
      +		cf_add_incdir="$cf_top_incdir"
      +	done
      +done
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_CHECK_CACHE version: 7 updated: 2001/12/19 00:50:10
      +dnl --------------
      +dnl Check if we're accidentally using a cache from a different machine.
      +dnl Derive the system name, as a check for reusing the autoconf cache.
      +dnl
      +dnl If we've packaged config.guess and config.sub, run that (since it does a
      +dnl better job than uname).  Normally we'll use AC_CANONICAL_HOST, but allow
      +dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM
      +dnl which is useful in cross-compiles.
      +AC_DEFUN([CF_CHECK_CACHE],
      +[
      +if test -f $srcdir/config.guess ; then
      +	ifelse([$1],,[AC_CANONICAL_HOST],[$1])
      +	system_name="$host_os"
      +else
      +	system_name="`(uname -s -r) 2>/dev/null`"
      +	if test -z "$system_name" ; then
      +		system_name="`(hostname) 2>/dev/null`"
      +	fi
      +fi
      +test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name")
      +AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"])
      +
      +test -z "$system_name" && system_name="$cf_cv_system_name"
      +test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name)
      +
      +if test ".$system_name" != ".$cf_cv_system_name" ; then
      +	AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name))
      +	AC_ERROR("Please remove config.cache and try again.")
      +fi
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_CURSES_ACS_MAP version: 3 updated: 2003/05/17 22:19:02
      +dnl -----------------
      +dnl Check for likely values of acs_map[]:
      +AC_DEFUN([CF_CURSES_ACS_MAP],
      +[
      +AC_CACHE_CHECK(for alternate character set array, cf_cv_curses_acs_map,[
      +cf_cv_curses_acs_map=unknown
      +for name in acs_map _acs_map __acs_map _nc_acs_map
      +do
      +AC_TRY_LINK([
      +#include <${cf_cv_ncurses_header-curses.h}>
      +],[
      +$name['k'] = ACS_PLUS
      +],[cf_cv_curses_acs_map=$name; break])
      +done
      +])
      +
      +test "$cf_cv_curses_acs_map" != unknown && AC_DEFINE_UNQUOTED(CURSES_ACS_ARRAY,$cf_cv_curses_acs_map)
      +])
      +dnl ---------------------------------------------------------------------------
      +dnl CF_CURSES_CHECK_TYPE version: 2 updated: 2003/03/01 23:40:33
      +dnl --------------------
      +dnl Check if curses.h defines the given type
      +AC_DEFUN([CF_CURSES_CHECK_TYPE],
      +[
      +AC_MSG_CHECKING(for type $1 in ${cf_cv_ncurses_header-curses.h})
      +AC_TRY_COMPILE([
      +#ifndef _XOPEN_SOURCE_EXTENDED
      +#define _XOPEN_SOURCE_EXTENDED
      +#endif
      +#include <${cf_cv_ncurses_header-curses.h}>],[
      +$1 foo
      +],cf_result=yes,cf_result=no)
      +AC_MSG_RESULT($cf_result)
      +if test $cf_result = yes ; then
      +	CF_UPPER(cf_result,have_type_$1)
      +	AC_DEFINE_UNQUOTED($cf_result)
      +else
      +	AC_DEFINE_UNQUOTED($1,$2)
      +fi
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_CURSES_CPPFLAGS version: 6 updated: 2002/10/27 18:21:42
      +dnl ------------------
      +dnl Look for the curses headers.
      +AC_DEFUN([CF_CURSES_CPPFLAGS],[
      +
      +AC_CACHE_CHECK(for extra include directories,cf_cv_curses_incdir,[
      +cf_cv_curses_incdir=no
      +case $host_os in #(vi
      +hpux10.*|hpux11.*) #(vi
      +	test -d /usr/include/curses_colr && \
      +	cf_cv_curses_incdir="-I/usr/include/curses_colr"
      +	;;
      +sunos3*|sunos4*)
      +	test -d /usr/5lib && \
      +	test -d /usr/5include && \
      +	cf_cv_curses_incdir="-I/usr/5include"
      +	;;
      +esac
      +])
      +test "$cf_cv_curses_incdir" != no && CPPFLAGS="$CPPFLAGS $cf_cv_curses_incdir"
      +
      +AC_CACHE_CHECK(if we have identified curses headers,cf_cv_ncurses_header,[
      +cf_cv_ncurses_header=none
      +for cf_header in \
      +	curses.h \
      +	ncurses.h \
      +	ncurses/curses.h \
      +	ncurses/ncurses.h
      +do
      +AC_TRY_COMPILE([#include <${cf_header}>],
      +	[initscr(); tgoto("?", 0,0)],
      +	[cf_cv_ncurses_header=$cf_header; break],[])
      +done
      +])
      +
      +if test "$cf_cv_ncurses_header" = none ; then
      +	AC_MSG_ERROR(No curses header-files found)
      +fi
      +
      +# cheat, to get the right #define's for HAVE_NCURSES_H, etc.
      +AC_CHECK_HEADERS($cf_cv_ncurses_header)
      +
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_CURSES_LIBS version: 22 updated: 2002/10/27 18:21:42
      +dnl --------------
      +dnl Look for the curses libraries.  Older curses implementations may require
      +dnl termcap/termlib to be linked as well.  Call CF_CURSES_CPPFLAGS first.
      +AC_DEFUN([CF_CURSES_LIBS],[
      +
      +AC_MSG_CHECKING(if we have identified curses libraries)
      +AC_TRY_LINK([#include <${cf_cv_ncurses_header-curses.h}>],
      +	[initscr(); tgoto("?", 0,0)],
      +	cf_result=yes,
      +	cf_result=no)
      +AC_MSG_RESULT($cf_result)
      +
      +if test "$cf_result" = no ; then
      +case $host_os in #(vi
      +freebsd*) #(vi
      +	AC_CHECK_LIB(mytinfo,tgoto,[LIBS="-lmytinfo $LIBS"])
      +	;;
      +hpux10.*|hpux11.*) #(vi
      +	AC_CHECK_LIB(cur_colr,initscr,[
      +		LIBS="-lcur_colr $LIBS"
      +		ac_cv_func_initscr=yes
      +		],[
      +	AC_CHECK_LIB(Hcurses,initscr,[
      +		# HP's header uses __HP_CURSES, but user claims _HP_CURSES.
      +		LIBS="-lHcurses $LIBS"
      +		CPPFLAGS="-D__HP_CURSES -D_HP_CURSES $CPPFLAGS"
      +		ac_cv_func_initscr=yes
      +		])])
      +	;;
      +linux*) # Suse Linux does not follow /usr/lib convention
      +	LIBS="$LIBS -L/lib"
      +	;;
      +sunos3*|sunos4*)
      +	test -d /usr/5lib && \
      +	LIBS="$LIBS -L/usr/5lib -lcurses -ltermcap"
      +	ac_cv_func_initscr=yes
      +	;;
      +esac
      +
      +if test ".$ac_cv_func_initscr" != .yes ; then
      +	cf_save_LIBS="$LIBS"
      +	cf_term_lib=""
      +	cf_curs_lib=""
      +
      +	if test ".${cf_cv_ncurses_version-no}" != .no
      +	then
      +		cf_check_list="ncurses curses cursesX"
      +	else
      +		cf_check_list="cursesX curses ncurses"
      +	fi
      +
      +	# Check for library containing tgoto.  Do this before curses library
      +	# because it may be needed to link the test-case for initscr.
      +	AC_CHECK_FUNC(tgoto,[cf_term_lib=predefined],[
      +		for cf_term_lib in $cf_check_list termcap termlib unknown
      +		do
      +			AC_CHECK_LIB($cf_term_lib,tgoto,[break])
      +		done
      +	])
      +
      +	# Check for library containing initscr
      +	test "$cf_term_lib" != predefined && test "$cf_term_lib" != unknown && LIBS="-l$cf_term_lib $cf_save_LIBS"
      +	for cf_curs_lib in $cf_check_list xcurses jcurses unknown
      +	do
      +		AC_CHECK_LIB($cf_curs_lib,initscr,[break])
      +	done
      +	test $cf_curs_lib = unknown && AC_ERROR(no curses library found)
      +
      +	LIBS="-l$cf_curs_lib $cf_save_LIBS"
      +	if test "$cf_term_lib" = unknown ; then
      +		AC_MSG_CHECKING(if we can link with $cf_curs_lib library)
      +		AC_TRY_LINK([#include <${cf_cv_ncurses_header-curses.h}>],
      +			[initscr()],
      +			[cf_result=yes],
      +			[cf_result=no])
      +		AC_MSG_RESULT($cf_result)
      +		test $cf_result = no && AC_ERROR(Cannot link curses library)
      +	elif test "$cf_curs_lib" = "$cf_term_lib" ; then
      +		:
      +	elif test "$cf_term_lib" != predefined ; then
      +		AC_MSG_CHECKING(if we need both $cf_curs_lib and $cf_term_lib libraries)
      +		AC_TRY_LINK([#include <${cf_cv_ncurses_header-curses.h}>],
      +			[initscr(); tgoto((char *)0, 0, 0);],
      +			[cf_result=no],
      +			[
      +			LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS"
      +			AC_TRY_LINK([#include <${cf_cv_ncurses_header-curses.h}>],
      +				[initscr()],
      +				[cf_result=yes],
      +				[cf_result=error])
      +			])
      +		AC_MSG_RESULT($cf_result)
      +	fi
      +fi
      +fi
      +
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_CURSES_WACS_MAP version: 3 updated: 2003/05/17 22:19:02
      +dnl ------------------
      +dnl Check for likely values of wacs_map[]:
      +AC_DEFUN([CF_CURSES_WACS_MAP],
      +[
      +AC_CACHE_CHECK(for wide alternate character set array, cf_cv_curses_wacs_map,[
      +	cf_cv_curses_wacs_map=unknown
      +	for name in wacs_map _wacs_map __wacs_map _nc_wacs
      +	do
      +	AC_TRY_LINK([
      +#ifndef _XOPEN_SOURCE_EXTENDED
      +#define _XOPEN_SOURCE_EXTENDED
      +#endif
      +#include <${cf_cv_ncurses_header-curses.h}>],
      +	[$name['k'] = *WACS_PLUS],
      +	[cf_cv_curses_wacs_map=$name
      +	 break])
      +	done])
      +])
      +dnl ---------------------------------------------------------------------------
      +dnl CF_DIRNAME version: 4 updated: 2002/12/21 19:25:52
      +dnl ----------
      +dnl "dirname" is not portable, so we fake it with a shell script.
      +AC_DEFUN([CF_DIRNAME],[$1=`echo $2 | sed -e 's%/[[^/]]*$%%'`])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_FIND_LIBRARY version: 7 updated: 2000/04/13 21:38:04
      +dnl ---------------
      +dnl Look for a non-standard library, given parameters for AC_TRY_LINK.  We
      +dnl prefer a standard location, and use -L options only if we do not find the
      +dnl library in the standard library location(s).
      +dnl	$1 = library name
      +dnl	$2 = library class, usually the same as library name
      +dnl	$3 = includes
      +dnl	$4 = code fragment to compile/link
      +dnl	$5 = corresponding function-name
      +dnl	$6 = flag, nonnull if failure causes an error-exit
      +dnl
      +dnl Sets the variable "$cf_libdir" as a side-effect, so we can see if we had
      +dnl to use a -L option.
      +AC_DEFUN([CF_FIND_LIBRARY],
      +[
      +	eval 'cf_cv_have_lib_'$1'=no'
      +	cf_libdir=""
      +	AC_CHECK_FUNC($5,
      +		eval 'cf_cv_have_lib_'$1'=yes',[
      +		cf_save_LIBS="$LIBS"
      +		AC_MSG_CHECKING(for $5 in -l$1)
      +		LIBS="-l$1 $LIBS"
      +		AC_TRY_LINK([$3],[$4],
      +			[AC_MSG_RESULT(yes)
      +			 eval 'cf_cv_have_lib_'$1'=yes'
      +			],
      +			[AC_MSG_RESULT(no)
      +			CF_LIBRARY_PATH(cf_search,$2)
      +			for cf_libdir in $cf_search
      +			do
      +				AC_MSG_CHECKING(for -l$1 in $cf_libdir)
      +				LIBS="-L$cf_libdir -l$1 $cf_save_LIBS"
      +				AC_TRY_LINK([$3],[$4],
      +					[AC_MSG_RESULT(yes)
      +			 		 eval 'cf_cv_have_lib_'$1'=yes'
      +					 break],
      +					[AC_MSG_RESULT(no)
      +					 LIBS="$cf_save_LIBS"])
      +			done
      +			])
      +		])
      +eval 'cf_found_library=[$]cf_cv_have_lib_'$1
      +ifelse($6,,[
      +if test $cf_found_library = no ; then
      +	AC_ERROR(Cannot link $1 library)
      +fi
      +])
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_FUNC_CURSES_VERSION version: 3 updated: 2003/05/17 22:19:02
      +dnl ----------------------
      +dnl Solaris has a data item 'curses_version', which confuses AC_CHECK_FUNCS.
      +dnl It's a character string "SVR4", not documented.
      +AC_DEFUN([CF_FUNC_CURSES_VERSION],
      +[
      +AC_CACHE_CHECK(for function curses_version, cf_cv_func_curses_version,[
      +AC_TRY_RUN([
      +#include <${cf_cv_ncurses_header-curses.h}>
      +int main()
      +{
      +	char temp[1024];
      +	sprintf(temp, "%s\n", curses_version());
      +	exit(0);
      +}]
      +,[cf_cv_func_curses_version=yes]
      +,[cf_cv_func_curses_version=no]
      +,[cf_cv_func_curses_version=unknown])
      +rm -f core])
      +test "$cf_cv_func_curses_version" = yes && AC_DEFINE(HAVE_CURSES_VERSION)
      +])
      +dnl ---------------------------------------------------------------------------
      +dnl CF_HEADER_PATH version: 8 updated: 2002/11/10 14:46:59
      +dnl --------------
      +dnl Construct a search-list for a nonstandard header-file
      +AC_DEFUN([CF_HEADER_PATH],
      +[CF_SUBDIR_PATH($1,$2,include)
      +test "$includedir" != NONE && \
      +test "$includedir" != "/usr/include" && \
      +test -d "$includedir" && {
      +	test -d $includedir &&    $1="[$]$1 $includedir"
      +	test -d $includedir/$2 && $1="[$]$1 $includedir/$2"
      +}
      +
      +test "$oldincludedir" != NONE && \
      +test "$oldincludedir" != "/usr/include" && \
      +test -d "$oldincludedir" && {
      +	test -d $oldincludedir    && $1="[$]$1 $oldincludedir"
      +	test -d $oldincludedir/$2 && $1="[$]$1 $oldincludedir/$2"
      +}
      +
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_INHERIT_SCRIPT version: 2 updated: 2003/03/01 23:50:42
      +dnl -----------------
      +dnl If we do not have a given script, look for it in the parent directory.
      +AC_DEFUN([CF_INHERIT_SCRIPT],
      +[
      +test -f $1 || ( test -f ../$1 && cp ../$1 ./ )
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_LIBRARY_PATH version: 7 updated: 2002/11/10 14:46:59
      +dnl ---------------
      +dnl Construct a search-list for a nonstandard library-file
      +AC_DEFUN([CF_LIBRARY_PATH],
      +[CF_SUBDIR_PATH($1,$2,lib)])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_NCURSES_CC_CHECK version: 3 updated: 2003/01/12 18:59:28
      +dnl -------------------
      +dnl Check if we can compile with ncurses' header file
      +dnl $1 is the cache variable to set
      +dnl $2 is the header-file to include
      +dnl $3 is the root name (ncurses or ncursesw)
      +AC_DEFUN([CF_NCURSES_CC_CHECK],[
      +	AC_TRY_COMPILE([
      +]ifelse($3,ncursesw,[
      +#define _XOPEN_SOURCE_EXTENDED
      +#undef  HAVE_LIBUTF8_H	/* in case we used CF_UTF8_LIB */
      +#define HAVE_LIBUTF8_H	/* to force ncurses' header file to use cchar_t */
      +])[
      +#include <$2>],[
      +#ifdef NCURSES_VERSION
      +]ifelse($3,ncursesw,[
      +#ifndef WACS_BSSB
      +	make an error
      +#endif
      +])[
      +printf("%s\n", NCURSES_VERSION);
      +#else
      +#ifdef __NCURSES_H
      +printf("old\n");
      +#else
      +	make an error
      +#endif
      +#endif
      +	]
      +	,[$1=$cf_header]
      +	,[$1=no])
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_NCURSES_CPPFLAGS version: 16 updated: 2002/12/29 18:30:46
      +dnl -------------------
      +dnl Look for the SVr4 curses clone 'ncurses' in the standard places, adjusting
      +dnl the CPPFLAGS variable so we can include its header.
      +dnl
      +dnl The header files may be installed as either curses.h, or ncurses.h (would
      +dnl be obsolete, except that some packagers prefer this name to distinguish it
      +dnl from a "native" curses implementation).  If not installed for overwrite,
      +dnl the curses.h file would be in an ncurses subdirectory (e.g.,
      +dnl /usr/include/ncurses), but someone may have installed overwriting the
      +dnl vendor's curses.  Only very old versions (pre-1.9.2d, the first autoconf'd
      +dnl version) of ncurses don't define either __NCURSES_H or NCURSES_VERSION in
      +dnl the header.
      +dnl
      +dnl If the installer has set $CFLAGS or $CPPFLAGS so that the ncurses header
      +dnl is already in the include-path, don't even bother with this, since we cannot
      +dnl easily determine which file it is.  In this case, it has to be .
      +dnl
      +dnl The optional parameter gives the root name of the library, in case it is
      +dnl not installed as the default curses library.  That is how the
      +dnl wide-character version of ncurses is installed.
      +AC_DEFUN([CF_NCURSES_CPPFLAGS],
      +[AC_REQUIRE([CF_WITH_CURSES_DIR])
      +
      +cf_ncuhdr_root=ifelse($1,,ncurses,$1)
      +
      +test -n "$cf_cv_curses_dir" && \
      +test "$cf_cv_curses_dir" != "no" && \
      +CPPFLAGS="-I$cf_cv_curses_dir/include -I$cf_cv_curses_dir/include/$cf_ncuhdr_root $CPPFLAGS"
      +
      +AC_CACHE_CHECK(for $cf_ncuhdr_root header in include-path, cf_cv_ncurses_h,[
      +	cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h"
      +	( test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw ) && cf_header_list="$cf_header_list curses.h ncurses.h"
      +	for cf_header in $cf_header_list
      +	do
      +		CF_NCURSES_CC_CHECK(cf_cv_ncurses_h,$cf_header,$1)
      +		test "$cf_cv_ncurses_h" != no && break
      +	done
      +])
      +
      +if test "$cf_cv_ncurses_h" != no ; then
      +	cf_cv_ncurses_header=$cf_cv_ncurses_h
      +else
      +AC_CACHE_CHECK(for $cf_ncuhdr_root include-path, cf_cv_ncurses_h2,[
      +	test -n "$verbose" && echo
      +	CF_HEADER_PATH(cf_search,$cf_ncuhdr_root)
      +	test -n "$verbose" && echo search path $cf_search
      +	cf_save2_CPPFLAGS="$CPPFLAGS"
      +	for cf_incdir in $cf_search
      +	do
      +		CF_ADD_INCDIR($cf_incdir)
      +		for cf_header in \
      +			ncurses.h \
      +			curses.h
      +		do
      +			CF_NCURSES_CC_CHECK(cf_cv_ncurses_h2,$cf_header,$1)
      +			if test "$cf_cv_ncurses_h2" != no ; then
      +				cf_cv_ncurses_h2=$cf_incdir/$cf_header
      +				test -n "$verbose" && echo $ac_n "	... found $ac_c" 1>&AC_FD_MSG
      +				break
      +			fi
      +			test -n "$verbose" && echo "	... tested $cf_incdir/$cf_header" 1>&AC_FD_MSG
      +		done
      +		CPPFLAGS="$cf_save2_CPPFLAGS"
      +		test "$cf_cv_ncurses_h2" != no && break
      +	done
      +	test "$cf_cv_ncurses_h2" = no && AC_ERROR(not found)
      +	])
      +
      +	CF_DIRNAME(cf_1st_incdir,$cf_cv_ncurses_h2)
      +	cf_cv_ncurses_header=`basename $cf_cv_ncurses_h2`
      +	if test `basename $cf_1st_incdir` = $cf_ncuhdr_root ; then
      +		cf_cv_ncurses_header=$cf_ncuhdr_root/$cf_cv_ncurses_header
      +	fi
      +	CF_ADD_INCDIR($cf_1st_incdir)
      +
      +fi
      +
      +AC_DEFINE(NCURSES)
      +
      +case $cf_cv_ncurses_header in # (vi
      +*ncurses.h)
      +	AC_DEFINE(HAVE_NCURSES_H)
      +	;;
      +esac
      +
      +case $cf_cv_ncurses_header in # (vi
      +ncurses/curses.h|ncurses/ncurses.h)
      +	AC_DEFINE(HAVE_NCURSES_NCURSES_H)
      +	;;
      +ncursesw/curses.h|ncursesw/ncurses.h)
      +	AC_DEFINE(HAVE_NCURSESW_NCURSES_H)
      +	;;
      +esac
      +
      +CF_NCURSES_VERSION
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_NCURSES_LIBS version: 11 updated: 2002/12/22 14:22:25
      +dnl ---------------
      +dnl Look for the ncurses library.  This is a little complicated on Linux,
      +dnl because it may be linked with the gpm (general purpose mouse) library.
      +dnl Some distributions have gpm linked with (bsd) curses, which makes it
      +dnl unusable with ncurses.  However, we don't want to link with gpm unless
      +dnl ncurses has a dependency, since gpm is normally set up as a shared library,
      +dnl and the linker will record a dependency.
      +dnl
      +dnl The optional parameter gives the root name of the library, in case it is
      +dnl not installed as the default curses library.  That is how the
      +dnl wide-character version of ncurses is installed.
      +AC_DEFUN([CF_NCURSES_LIBS],
      +[AC_REQUIRE([CF_NCURSES_CPPFLAGS])
      +
      +cf_nculib_root=ifelse($1,,ncurses,$1)
      +	# This works, except for the special case where we find gpm, but
      +	# ncurses is in a nonstandard location via $LIBS, and we really want
      +	# to link gpm.
      +cf_ncurses_LIBS=""
      +cf_ncurses_SAVE="$LIBS"
      +AC_CHECK_LIB(gpm,Gpm_Open,
      +	[AC_CHECK_LIB(gpm,initscr,
      +		[LIBS="$cf_ncurses_SAVE"],
      +		[cf_ncurses_LIBS="-lgpm"])])
      +
      +case $host_os in #(vi
      +freebsd*)
      +	# This is only necessary if you are linking against an obsolete
      +	# version of ncurses (but it should do no harm, since it's static).
      +	AC_CHECK_LIB(mytinfo,tgoto,[cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"])
      +	;;
      +esac
      +
      +LIBS="$cf_ncurses_LIBS $LIBS"
      +
      +if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" )
      +then
      +	LIBS="-L$cf_cv_curses_dir/lib -l$cf_nculib_root $LIBS"
      +else
      +	CF_FIND_LIBRARY($cf_nculib_root,$cf_nculib_root,
      +		[#include <${cf_cv_ncurses_header-curses.h}>],
      +		[initscr()],
      +		initscr)
      +fi
      +
      +if test -n "$cf_ncurses_LIBS" ; then
      +	AC_MSG_CHECKING(if we can link $cf_nculib_root without $cf_ncurses_LIBS)
      +	cf_ncurses_SAVE="$LIBS"
      +	for p in $cf_ncurses_LIBS ; do
      +		q=`echo $LIBS | sed -e "s%$p %%" -e "s%$p$%%"`
      +		if test "$q" != "$LIBS" ; then
      +			LIBS="$q"
      +		fi
      +	done
      +	AC_TRY_LINK([#include <${cf_cv_ncurses_header-curses.h}>],
      +		[initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);],
      +		[AC_MSG_RESULT(yes)],
      +		[AC_MSG_RESULT(no)
      +		 LIBS="$cf_ncurses_SAVE"])
      +fi
      +
      +CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_nculib_root)
      +AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_NCURSES_VERSION version: 10 updated: 2002/10/27 18:21:42
      +dnl ------------------
      +dnl Check for the version of ncurses, to aid in reporting bugs, etc.
      +dnl Call CF_CURSES_CPPFLAGS first, or CF_NCURSES_CPPFLAGS.  We don't use
      +dnl AC_REQUIRE since that does not work with the shell's if/then/else/fi.
      +AC_DEFUN([CF_NCURSES_VERSION],
      +[
      +AC_CACHE_CHECK(for ncurses version, cf_cv_ncurses_version,[
      +	cf_cv_ncurses_version=no
      +	cf_tempfile=out$$
      +	rm -f $cf_tempfile
      +	AC_TRY_RUN([
      +#include <${cf_cv_ncurses_header-curses.h}>
      +#include 
      +int main()
      +{
      +	FILE *fp = fopen("$cf_tempfile", "w");
      +#ifdef NCURSES_VERSION
      +# ifdef NCURSES_VERSION_PATCH
      +	fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH);
      +# else
      +	fprintf(fp, "%s\n", NCURSES_VERSION);
      +# endif
      +#else
      +# ifdef __NCURSES_H
      +	fprintf(fp, "old\n");
      +# else
      +	make an error
      +# endif
      +#endif
      +	exit(0);
      +}],[
      +	cf_cv_ncurses_version=`cat $cf_tempfile`],,[
      +
      +	# This will not work if the preprocessor splits the line after the
      +	# Autoconf token.  The 'unproto' program does that.
      +	cat > conftest.$ac_ext <
      +#undef Autoconf
      +#ifdef NCURSES_VERSION
      +Autoconf NCURSES_VERSION
      +#else
      +#ifdef __NCURSES_H
      +Autoconf "old"
      +#endif
      +;
      +#endif
      +EOF
      +	cf_try="$ac_cpp conftest.$ac_ext 2>&AC_FD_CC | grep '^Autoconf ' >conftest.out"
      +	AC_TRY_EVAL(cf_try)
      +	if test -f conftest.out ; then
      +		cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[[^"]]*"%%' -e 's%".*%%'`
      +		test -n "$cf_out" && cf_cv_ncurses_version="$cf_out"
      +		rm -f conftest.out
      +	fi
      +])
      +	rm -f $cf_tempfile
      +])
      +test "$cf_cv_ncurses_version" = no || AC_DEFINE(NCURSES)
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_PATH_SYNTAX version: 9 updated: 2002/09/17 23:03:38
      +dnl --------------
      +dnl Check the argument to see that it looks like a pathname.  Rewrite it if it
      +dnl begins with one of the prefix/exec_prefix variables, and then again if the
      +dnl result begins with 'NONE'.  This is necessary to work around autoconf's
      +dnl delayed evaluation of those symbols.
      +AC_DEFUN([CF_PATH_SYNTAX],[
      +case ".[$]$1" in #(vi
      +.\[$]\(*\)*|.\'*\'*) #(vi
      +  ;;
      +..|./*|.\\*) #(vi
      +  ;;
      +.[[a-zA-Z]]:[[\\/]]*) #(vi OS/2 EMX
      +  ;;
      +.\[$]{*prefix}*) #(vi
      +  eval $1="[$]$1"
      +  case ".[$]$1" in #(vi
      +  .NONE/*)
      +    $1=`echo [$]$1 | sed -e s%NONE%$ac_default_prefix%`
      +    ;;
      +  esac
      +  ;; #(vi
      +.NONE/*)
      +  $1=`echo [$]$1 | sed -e s%NONE%$ac_default_prefix%`
      +  ;;
      +*)
      +  ifelse($2,,[AC_ERROR([expected a pathname, not \"[$]$1\"])],$2)
      +  ;;
      +esac
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_SUBDIR_PATH version: 3 updated: 2002/12/29 18:30:46
      +dnl --------------
      +dnl Construct a search-list for a nonstandard header/lib-file
      +dnl	$1 = the variable to return as result
      +dnl	$2 = the package name
      +dnl	$3 = the subdirectory, e.g., bin, include or lib
      +AC_DEFUN([CF_SUBDIR_PATH],
      +[$1=""
      +
      +test -d [$]HOME && {
      +	test -n "$verbose" && echo "	... testing $3-directories under [$]HOME"
      +	test -d [$]HOME/$3 &&          $1="[$]$1 [$]HOME/$3"
      +	test -d [$]HOME/$3/$2 &&       $1="[$]$1 [$]HOME/$3/$2"
      +	test -d [$]HOME/$3/$2/$3 &&    $1="[$]$1 [$]HOME/$3/$2/$3"
      +}
      +
      +# For other stuff under the home directory, it should be sufficient to put
      +# a symbolic link for $HOME/$2 to the actual package location:
      +test -d [$]HOME/$2 && {
      +	test -n "$verbose" && echo "	... testing $3-directories under [$]HOME/$2"
      +	test -d [$]HOME/$2/$3 &&       $1="[$]$1 [$]HOME/$2/$3"
      +	test -d [$]HOME/$2/$3/$2 &&    $1="[$]$1 [$]HOME/$2/$3/$2"
      +}
      +
      +test "$prefix" != /usr/local && \
      +test -d /usr/local && {
      +	test -n "$verbose" && echo "	... testing $3-directories under /usr/local"
      +	test -d /usr/local/$3 &&       $1="[$]$1 /usr/local/$3"
      +	test -d /usr/local/$3/$2 &&    $1="[$]$1 /usr/local/$3/$2"
      +	test -d /usr/local/$3/$2/$3 && $1="[$]$1 /usr/local/$3/$2/$3"
      +	test -d /usr/local/$2/$3 &&    $1="[$]$1 /usr/local/$2/$3"
      +	test -d /usr/local/$2/$3/$2 && $1="[$]$1 /usr/local/$2/$3/$2"
      +}
      +
      +test "$prefix" != NONE && \
      +test -d $prefix && {
      +	test -n "$verbose" && echo "	... testing $3-directories under $prefix"
      +	test -d $prefix/$3 &&          $1="[$]$1 $prefix/$3"
      +	test -d $prefix/$3/$2 &&       $1="[$]$1 $prefix/$3/$2"
      +	test -d $prefix/$3/$2/$3 &&    $1="[$]$1 $prefix/$3/$2/$3"
      +	test -d $prefix/$2/$3 &&       $1="[$]$1 $prefix/$2/$3"
      +	test -d $prefix/$2/$3/$2 &&    $1="[$]$1 $prefix/$2/$3/$2"
      +}
      +
      +test "$prefix" != /opt && \
      +test -d /opt && {
      +	test -n "$verbose" && echo "	... testing $3-directories under /opt"
      +	test -d /opt/$3 &&             $1="[$]$1 /opt/$3"
      +	test -d /opt/$3/$2 &&          $1="[$]$1 /opt/$3/$2"
      +	test -d /opt/$3/$2/$3 &&       $1="[$]$1 /opt/$3/$2/$3"
      +	test -d /opt/$2/$3 &&          $1="[$]$1 /opt/$2/$3"
      +	test -d /opt/$2/$3/$2 &&       $1="[$]$1 /opt/$2/$3/$2"
      +}
      +
      +test "$prefix" != /usr && \
      +test -d /usr && {
      +	test -n "$verbose" && echo "	... testing $3-directories under /usr"
      +	test -d /usr/$3 &&             $1="[$]$1 /usr/$3"
      +	test -d /usr/$3/$2 &&          $1="[$]$1 /usr/$3/$2"
      +	test -d /usr/$3/$2/$3 &&       $1="[$]$1 /usr/$3/$2/$3"
      +	test -d /usr/$2/$3 &&          $1="[$]$1 /usr/$2/$3"
      +}
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_SYS_TIME_SELECT version: 4 updated: 2000/10/04 09:18:40
      +dnl ------------------
      +dnl Check if we can include  with ; this breaks on
      +dnl older SCO configurations.
      +AC_DEFUN([CF_SYS_TIME_SELECT],
      +[
      +AC_MSG_CHECKING(if sys/time.h works with sys/select.h)
      +AC_CACHE_VAL(cf_cv_sys_time_select,[
      +AC_TRY_COMPILE([
      +#include 
      +#ifdef HAVE_SYS_TIME_H
      +#include 
      +#endif
      +#ifdef HAVE_SYS_SELECT_H
      +#include 
      +#endif
      +],[],[cf_cv_sys_time_select=yes],
      +     [cf_cv_sys_time_select=no])
      +     ])
      +AC_MSG_RESULT($cf_cv_sys_time_select)
      +test "$cf_cv_sys_time_select" = yes && AC_DEFINE(HAVE_SYS_TIME_SELECT)
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
      +dnl --------
      +dnl Make an uppercase version of a variable
      +dnl $1=uppercase($2)
      +AC_DEFUN([CF_UPPER],
      +[
      +$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_UTF8_LIB version: 4 updated: 2003/03/01 18:36:42
      +dnl -----------
      +dnl Check for multibyte support, and if not found, utf8 compatibility library
      +AC_DEFUN([CF_UTF8_LIB],
      +[
      +AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[
      +	cf_save_LIBS="$LIBS"
      +	AC_TRY_LINK([
      +#include ],[putwc(0,0);],
      +	[cf_cv_utf8_lib=yes],
      +	[LIBS="-lutf8 $LIBS"
      +	 AC_TRY_LINK([
      +#include ],[putwc(0,0);],
      +		[cf_cv_utf8_lib=add-on],
      +		[cf_cv_utf8_lib=no])
      +	LIBS="$cf_save_LIBS"
      +])])
      +
      +# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
      +# ncurses/ncursesw:
      +if test "$cf_cv_utf8_lib" = "add-on" ; then
      +	AC_DEFINE(HAVE_LIBUTF8_H)
      +	LIBS="-lutf8 $LIBS"
      +fi
      +])dnl
      +dnl ---------------------------------------------------------------------------
      +dnl CF_WITH_CURSES_DIR version: 2 updated: 2002/11/10 14:46:59
      +dnl ------------------
      +dnl Wrapper for AC_ARG_WITH to specify directory under which to look for curses
      +dnl libraries.
      +AC_DEFUN([CF_WITH_CURSES_DIR],[
      +AC_ARG_WITH(curses-dir,
      +	[  --with-curses-dir=DIR   directory in which (n)curses is installed],
      +	[CF_PATH_SYNTAX(withval)
      +	 cf_cv_curses_dir=$withval],
      +	[cf_cv_curses_dir=no])
      +])dnl
      diff -urNd -urNd ncurses-5.3/test/bs.c ncurses-5.3.20030906.orig/test/bs.c
      --- ncurses-5.3/test/bs.c	Sat Jun 29 18:32:18 2002
      +++ ncurses-5.3.20030906.orig/test/bs.c	Tue May 13 20:08:23 2003
      @@ -7,11 +7,9 @@
        * v2.0 featuring strict ANSI/POSIX conformance, November 1993.
        * v2.1 with ncurses mouse support, September 1995
        *
      - * $Id: bs.c,v 1.36 2002/06/29 23:32:18 tom Exp $
      + * $Id: bs.c,v 1.37 2002/10/19 22:11:47 tom Exp $
        */
       
      -#include 
      -#include 
       #include 
       
       #include 
      diff -urNd -urNd ncurses-5.3/test/cardfile.c ncurses-5.3.20030906.orig/test/cardfile.c
      --- ncurses-5.3/test/cardfile.c	Sun Sep  1 12:59:48 2002
      +++ ncurses-5.3.20030906.orig/test/cardfile.c	Tue May 13 20:08:23 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1999-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1999-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -29,26 +29,28 @@
       /*
        * Author: Thomas E. Dickey  1999
        *
      - * $Id: cardfile.c,v 1.19 2002/09/01 17:59:48 tom Exp $
      + * $Id: cardfile.c,v 1.23 2003/04/26 16:43:56 tom Exp $
        *
      - * File format: text beginning in column 1 is a title; other text forms the content.
      + * File format: text beginning in column 1 is a title; other text is content.
        */
       
       #include 
       
      -#if HAVE_FORM_H && HAVE_PANEL_H && HAVE_LIBFORM && HAVE_LIBPANEL
      +#if USE_LIBFORM && USE_LIBPANEL
       
       #include 
       #include 
       
      -#include 
      -
       #define VISIBLE_CARDS 10
       #define OFFSET_CARD 2
       
      -#ifndef CTRL
      -#define CTRL(x)		((x) & 0x1f)
      -#endif
      +enum {
      +    MY_CTRL_x = MAX_FORM_COMMAND
      +    ,MY_CTRL_N
      +    ,MY_CTRL_P
      +    ,MY_CTRL_Q
      +    ,MY_CTRL_W
      +};
       
       typedef struct _card {
           struct _card *link;
      @@ -273,14 +275,14 @@
       
           switch (c) {
           case CTRL('W'):
      -	return (MAX_FORM_COMMAND + 4);
      +	return (MY_CTRL_W);
           case CTRL('N'):
      -	return (MAX_FORM_COMMAND + 3);
      +	return (MY_CTRL_N);
           case CTRL('P'):
      -	return (MAX_FORM_COMMAND + 2);
      +	return (MY_CTRL_P);
           case CTRL('Q'):
           case 033:
      -	return (MAX_FORM_COMMAND + 1);
      +	return (MY_CTRL_Q);
       
           case KEY_BACKSPACE:
       	return (REQ_DEL_PREV);
      @@ -311,10 +313,12 @@
           f[0] = new_field(1, form_wide, 0, 0, 0, 0);
           set_field_back(f[0], A_REVERSE);
           set_field_buffer(f[0], 0, p->title);
      +    field_opts_off(f[0], O_BLANK);
       
           f[1] = new_field(form_high - 1, form_wide, 1, 0, 0, 0);
           set_field_buffer(f[1], 0, p->content);
           set_field_just(f[1], JUSTIFY_LEFT);
      +    field_opts_off(f[1], O_BLANK);
       
           f[2] = 0;
           return f;
      @@ -394,18 +398,19 @@
       	    break;
       	case E_UNKNOWN_COMMAND:
       	    switch (ch) {
      -	    case MAX_FORM_COMMAND + 1:
      +	    case MY_CTRL_Q:
       		finished = TRUE;
       		break;
      -	    case MAX_FORM_COMMAND + 2:
      +	    case MY_CTRL_P:
       		top_card = prev_card(top_card);
       		order_cards(top_card, visible_cards);
       		break;
      -	    case MAX_FORM_COMMAND + 3:
      +	    case MY_CTRL_N:
       		top_card = next_card(top_card);
       		order_cards(top_card, visible_cards);
       		break;
      -	    case MAX_FORM_COMMAND + 4:
      +	    case MY_CTRL_W:
      +		form_driver(top_card->form, REQ_VALIDATION);
       		write_data(fname);
       		break;
       #if defined(KEY_RESIZE) && HAVE_WRESIZE
      diff -urNd -urNd ncurses-5.3/test/configure ncurses-5.3.20030906.orig/test/configure
      --- ncurses-5.3/test/configure	Sat Apr  6 17:16:16 2002
      +++ ncurses-5.3.20030906.orig/test/configure	Sun Jul 20 14:02:08 2003
      @@ -1,7 +1,7 @@
       #! /bin/sh
       
       # Guess values for system-dependent variables and create Makefiles.
      -# Generated automatically using autoconf version 2.13.20000819 
      +# Generated automatically using autoconf version 2.13.20020210 
       # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
       #
       # This configure script is free software; the Free Software Foundation
      @@ -183,6 +183,7 @@
       EOF
       cat <&2; exit 1; }
      +fi
      +ac_config_guess=$ac_aux_dir/config.guess
      +ac_config_sub=$ac_aux_dir/config.sub
      +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
      +
      +
      +if test -f $srcdir/config.guess ; then
      +	
      +# Make sure we can run config.sub.
      +if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
      +else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
      +fi
      +
      +echo $ac_n "checking host system type""... $ac_c" 1>&6
      +echo "configure:565: checking host system type" >&5
      +
      +host_alias=$host
      +case "$host_alias" in
      +NONE)
      +  case $nonopt in
      +  NONE)
      +    if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
      +    else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
      +    fi ;;
      +  *) host_alias=$nonopt ;;
      +  esac ;;
      +esac
      +
      +host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
      +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
      +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
      +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
      +echo "$ac_t""$host" 1>&6
      +
      +	system_name="$host_os"
      +else
      +	system_name="`(uname -s -r) 2>/dev/null`"
      +	if test -z "$system_name" ; then
      +		system_name="`(hostname) 2>/dev/null`"
      +	fi
      +fi
      +test -n "$system_name" && cat >> confdefs.h <&6
      +else
      +  cf_cv_system_name="$system_name"
      +fi
      +
      +
      +test -z "$system_name" && system_name="$cf_cv_system_name"
      +test -n "$cf_cv_system_name" && echo "$ac_t""Configuring for $cf_cv_system_name" 1>&6
      +
      +if test ".$system_name" != ".$cf_cv_system_name" ; then
      +	echo "$ac_t""Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" 1>&6
      +	{ echo "configure: error: "Please remove config.cache and try again."" 1>&2; exit 1; }
      +fi
      +
      +
       # Extract the first word of "gcc", so it can be a program name with args.
       set dummy gcc; ac_word=$2
       echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
      -echo "configure:533: checking for $ac_word" >&5
      +echo "configure:615: checking for $ac_word" >&5
       if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
      @@ -559,7 +641,7 @@
         # Extract the first word of "cc", so it can be a program name with args.
       set dummy cc; ac_word=$2
       echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
      -echo "configure:563: checking for $ac_word" >&5
      +echo "configure:645: checking for $ac_word" >&5
       if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
      @@ -610,7 +692,7 @@
             # Extract the first word of "cl", so it can be a program name with args.
       set dummy cl; ac_word=$2
       echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
      -echo "configure:614: checking for $ac_word" >&5
      +echo "configure:696: checking for $ac_word" >&5
       if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
      @@ -642,7 +724,7 @@
       fi
       
       echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
      -echo "configure:646: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
      +echo "configure:728: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
       
       ac_ext=c
       # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
      @@ -653,12 +735,12 @@
       
       cat > conftest.$ac_ext << EOF
       
      -#line 657 "configure"
      +#line 739 "configure"
       #include "confdefs.h"
       
       main(){return(0);}
       EOF
      -if { (eval echo configure:662: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +if { (eval echo configure:744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
         ac_cv_prog_cc_works=yes
         # If we can't run a trivial program, we are probably using a cross compiler.
         if (./conftest; exit) 2>/dev/null; then
      @@ -684,12 +766,12 @@
         { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
       fi
       echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
      -echo "configure:688: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
      +echo "configure:770: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
       echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
       cross_compiling=$ac_cv_prog_cc_cross
       
       echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
      -echo "configure:693: checking whether we are using GNU C" >&5
      +echo "configure:775: checking whether we are using GNU C" >&5
       if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
      @@ -698,7 +780,7 @@
         yes;
       #endif
       EOF
      -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:702: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
      +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:784: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
         ac_cv_prog_gcc=yes
       else
         ac_cv_prog_gcc=no
      @@ -717,7 +799,7 @@
       ac_save_CFLAGS="$CFLAGS"
       CFLAGS=
       echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
      -echo "configure:721: checking whether ${CC-cc} accepts -g" >&5
      +echo "configure:803: checking whether ${CC-cc} accepts -g" >&5
       if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
      @@ -748,6 +830,86 @@
         fi
       fi
       
      +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
      +echo "configure:835: checking how to run the C preprocessor" >&5
      +# On Suns, sometimes $CPP names a directory.
      +if test -n "$CPP" && test -d "$CPP"; then
      +  CPP=
      +fi
      +if test -z "$CPP"; then
      +if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +    # This must be in double quotes, not single quotes, because CPP may get
      +  # substituted into the Makefile and "${CC-cc}" will confuse make.
      +  CPP="${CC-cc} -E"
      +  # On the NeXT, cc -E runs the code through the compiler's parser,
      +  # not just through cpp.
      +  cat > conftest.$ac_ext <
      +Syntax Error
      +EOF
      +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
      +{ (eval echo configure:856: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
      +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
      +if test -z "$ac_err"; then
      +  :
      +else
      +  echo "$ac_err" >&5
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  CPP="${CC-cc} -E -traditional-cpp"
      +  cat > conftest.$ac_ext <
      +Syntax Error
      +EOF
      +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
      +{ (eval echo configure:873: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
      +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
      +if test -z "$ac_err"; then
      +  :
      +else
      +  echo "$ac_err" >&5
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  CPP="${CC-cc} -nologo -E"
      +  cat > conftest.$ac_ext <
      +Syntax Error
      +EOF
      +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
      +{ (eval echo configure:890: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
      +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
      +if test -z "$ac_err"; then
      +  :
      +else
      +  echo "$ac_err" >&5
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  CPP=/lib/cpp
      +fi
      +rm -f conftest*
      +fi
      +rm -f conftest*
      +fi
      +rm -f conftest*
      +  ac_cv_prog_CPP="$CPP"
      +fi
      +  CPP="$ac_cv_prog_CPP"
      +else
      +  ac_cv_prog_CPP="$CPP"
      +fi
      +echo "$ac_t""$CPP" 1>&6
      +
       
       CC_G_OPT="-g"				
       CC_SHARED_OPTS=unknown			
      @@ -775,6 +937,45 @@
       cf_cv_abi_version=""			
       cf_cv_rel_version=""			
       
      +cf_cv_screen=curses
      +cf_cv_libtype=
      +
      +
      +
      +# Check whether --with-curses-dir or --without-curses-dir was given.
      +if test "${with_curses_dir+set}" = set; then
      +  withval="$with_curses_dir"
      +  
      +case ".$withval" in #(vi
      +.\$\(*\)*|.\'*\'*) #(vi
      +  ;;
      +..|./*|.\\*) #(vi
      +  ;;
      +.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
      +  ;;
      +.\${*prefix}*) #(vi
      +  eval withval="$withval"
      +  case ".$withval" in #(vi
      +  .NONE/*)
      +    withval=`echo $withval | sed -e s%NONE%$ac_default_prefix%`
      +    ;;
      +  esac
      +  ;; #(vi
      +.NONE/*)
      +  withval=`echo $withval | sed -e s%NONE%$ac_default_prefix%`
      +  ;;
      +*)
      +  { echo "configure: error: expected a pathname, not \"$withval\"" 1>&2; exit 1; }
      +  ;;
      +esac
      +
      +	 cf_cv_curses_dir=$withval
      +else
      +  cf_cv_curses_dir=no
      +fi
      +
      +
      +
       
       # Check whether --with-5lib or --without-5lib was given.
       if test "${with_5lib+set}" = set; then
      @@ -785,87 +986,303 @@
       
       
       
      -
       # Check whether --with-ncursesw or --without-ncursesw was given.
       if test "${with_ncursesw+set}" = set; then
         withval="$with_ncursesw"
      +  cf_cv_screen=ncursesw
      +fi
      +
      +
      +
      +# Check whether --with-ncurses or --without-ncurses was given.
      +if test "${with_ncurses+set}" = set; then
      +  withval="$with_ncurses"
      +  cf_cv_screen=ncurses
      +fi
      +
      +
      +case $cf_cv_screen in
      +curses)
      +	
      +
      +echo $ac_n "checking for extra include directories""... $ac_c" 1>&6
      +echo "configure:1010: checking for extra include directories" >&5
      +if eval "test \"`echo '$''{'cf_cv_curses_incdir'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
         
      -	 cat >> confdefs.h <<\EOF
      -#define _GNU_SOURCE 1
      -EOF
      +cf_cv_curses_incdir=no
      +case $host_os in #(vi
      +hpux10.*|hpux11.*) #(vi
      +	test -d /usr/include/curses_colr && \
      +	cf_cv_curses_incdir="-I/usr/include/curses_colr"
      +	;;
      +sunos3*|sunos4*)
      +	test -d /usr/5lib && \
      +	test -d /usr/5include && \
      +	cf_cv_curses_incdir="-I/usr/5include"
      +	;;
      +esac
       
      -	 cat >> confdefs.h <<\EOF
      -#define _XOPEN_SOURCE_EXTENDED 1
      +fi
      +
      +echo "$ac_t""$cf_cv_curses_incdir" 1>&6
      +test "$cf_cv_curses_incdir" != no && CPPFLAGS="$CPPFLAGS $cf_cv_curses_incdir"
      +
      +echo $ac_n "checking if we have identified curses headers""... $ac_c" 1>&6
      +echo "configure:1034: checking if we have identified curses headers" >&5
      +if eval "test \"`echo '$''{'cf_cv_ncurses_header'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  
      +cf_cv_ncurses_header=none
      +for cf_header in \
      +	curses.h \
      +	ncurses.h \
      +	ncurses/curses.h \
      +	ncurses/ncurses.h
      +do
      +cat > conftest.$ac_ext <
      +int main() {
      +initscr(); tgoto("?", 0,0)
      +; return 0; }
       EOF
      +if { (eval echo configure:1054: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
      +  rm -rf conftest*
      +  cf_cv_ncurses_header=$cf_header; break
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +fi
      +rm -f conftest*
      +done
       
      -	 echo $ac_n "checking for initscr""... $ac_c" 1>&6
      -echo "configure:803: checking for initscr" >&5
      -if eval "test \"`echo '$''{'ac_cv_func_initscr'+set}'`\" = set"; then
      +fi
      +
      +echo "$ac_t""$cf_cv_ncurses_header" 1>&6
      +
      +if test "$cf_cv_ncurses_header" = none ; then
      +	{ echo "configure: error: No curses header-files found" 1>&2; exit 1; }
      +fi
      +
      +# cheat, to get the right #define's for HAVE_NCURSES_H, etc.
      +for ac_hdr in $cf_cv_ncurses_header
      +do
      +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
      +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
      +echo "configure:1077: checking for $ac_hdr" >&5
      +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
         cat > conftest.$ac_ext <
      -/* Override any gcc2 internal prototype to avoid an error.  */
      -/* We use char because int might match the return type of a gcc2
      -    builtin and then its argument prototype would still apply.  */
      -char initscr();
      +#include <$ac_hdr>
      +EOF
      +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
      +{ (eval echo configure:1087: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
      +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
      +if test -z "$ac_err"; then
      +  rm -rf conftest*
      +  eval "ac_cv_header_$ac_safe=yes"
      +else
      +  echo "$ac_err" >&5
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  eval "ac_cv_header_$ac_safe=no"
      +fi
      +rm -f conftest*
      +fi
      +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
      +  echo "$ac_t""yes" 1>&6
      +    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
      +  cat >> confdefs.h <&6
      +fi
      +done
       
      -int main() {
       
      -/* The GNU C library defines this for functions which it implements
      -    to always fail with ENOSYS.  Some functions are actually named
      -    something starting with __ and the normal name is an alias.  */
      -#if defined (__stub_initscr) || defined (__stub___initscr)
      -choke me
      +
      +	
      +echo $ac_n "checking for ncurses version""... $ac_c" 1>&6
      +echo "configure:1117: checking for ncurses version" >&5
      +if eval "test \"`echo '$''{'cf_cv_ncurses_version'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  
      +	cf_cv_ncurses_version=no
      +	cf_tempfile=out$$
      +	rm -f $cf_tempfile
      +	if test "$cross_compiling" = yes; then
      +  
      +
      +	# This will not work if the preprocessor splits the line after the
      +	# Autoconf token.  The 'unproto' program does that.
      +	cat > conftest.$ac_ext <
      +#undef Autoconf
      +#ifdef NCURSES_VERSION
      +Autoconf NCURSES_VERSION
       #else
      -initscr();
      +#ifdef __NCURSES_H
      +Autoconf "old"
      +#endif
      +;
      +#endif
      +EOF
      +	cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
      +	{ (eval echo configure:1143: \"$cf_try\") 1>&5; (eval $cf_try) 2>&5; }
      +	if test -f conftest.out ; then
      +		cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'`
      +		test -n "$cf_out" && cf_cv_ncurses_version="$cf_out"
      +		rm -f conftest.out
      +	fi
      +
      +else
      +  cat > conftest.$ac_ext <
      +#include 
      +int main()
      +{
      +	FILE *fp = fopen("$cf_tempfile", "w");
      +#ifdef NCURSES_VERSION
      +# ifdef NCURSES_VERSION_PATCH
      +	fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH);
      +# else
      +	fprintf(fp, "%s\n", NCURSES_VERSION);
      +# endif
      +#else
      +# ifdef __NCURSES_H
      +	fprintf(fp, "old\n");
      +# else
      +	make an error
      +# endif
       #endif
      +	exit(0);
      +}
      +EOF
      +if { (eval echo configure:1176: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
      +then
      +  
      +	cf_cv_ncurses_version=`cat $cf_tempfile`
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +fi
      +rm -fr conftest*
      +fi
      +
      +	rm -f $cf_tempfile
      +
      +fi
      +
      +echo "$ac_t""$cf_cv_ncurses_version" 1>&6
      +test "$cf_cv_ncurses_version" = no || cat >> confdefs.h <<\EOF
      +#define NCURSES 1
      +EOF
      +
      +
      +	
       
      +echo $ac_n "checking if we have identified curses libraries""... $ac_c" 1>&6
      +echo "configure:1200: checking if we have identified curses libraries" >&5
      +cat > conftest.$ac_ext <
      +int main() {
      +initscr(); tgoto("?", 0,0)
       ; return 0; }
       EOF
      -if { (eval echo configure:831: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +if { (eval echo configure:1209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
         rm -rf conftest*
      -  eval "ac_cv_func_initscr=yes"
      +  cf_result=yes
       else
         echo "configure: failed program was:" >&5
         cat conftest.$ac_ext >&5
         rm -rf conftest*
      -  eval "ac_cv_func_initscr=no"
      +  cf_result=no
       fi
       rm -f conftest*
      +echo "$ac_t""$cf_result" 1>&6
      +
      +if test "$cf_result" = no ; then
      +case $host_os in #(vi
      +freebsd*) #(vi
      +	echo $ac_n "checking for tgoto in -lmytinfo""... $ac_c" 1>&6
      +echo "configure:1225: checking for tgoto in -lmytinfo" >&5
      +ac_lib_var=`echo mytinfo'_'tgoto | sed 'y%./+-%__p_%'`
      +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  ac_save_LIBS="$LIBS"
      +LIBS="-lmytinfo  $LIBS"
      +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  eval "ac_cv_lib_$ac_lib_var=yes"
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  eval "ac_cv_lib_$ac_lib_var=no"
       fi
      +rm -f conftest*
      +LIBS="$ac_save_LIBS"
       
      -if eval "test \"`echo '$ac_cv_func_'initscr`\" = yes"; then
      +fi
      +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
         echo "$ac_t""yes" 1>&6
      -  :
      +  LIBS="-lmytinfo $LIBS"
       else
         echo "$ac_t""no" 1>&6
      +fi
       
      -	 echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
      -echo "configure:850: checking for Gpm_Open in -lgpm" >&5
      -ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'`
      +	;;
      +hpux10.*|hpux11.*) #(vi
      +	echo $ac_n "checking for initscr in -lcur_colr""... $ac_c" 1>&6
      +echo "configure:1267: checking for initscr in -lcur_colr" >&5
      +ac_lib_var=`echo cur_colr'_'initscr | sed 'y%./+-%__p_%'`
       if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
         ac_save_LIBS="$LIBS"
      -LIBS="-lgpm  $LIBS"
      +LIBS="-lcur_colr  $LIBS"
       cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +if { (eval echo configure:1286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
         rm -rf conftest*
         eval "ac_cv_lib_$ac_lib_var=yes"
       else
      @@ -880,144 +1297,857 @@
       fi
       if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
         echo "$ac_t""yes" 1>&6
      -    ac_tr_lib=HAVE_LIB`echo gpm | sed -e 's/[^a-zA-Z0-9_]/_/g' \
      -    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
      -  cat >> confdefs.h <&6
       
      -  LIBS="-lgpm $LIBS"
      +	echo $ac_n "checking for initscr in -lHcurses""... $ac_c" 1>&6
      +echo "configure:1309: checking for initscr in -lHcurses" >&5
      +ac_lib_var=`echo Hcurses'_'initscr | sed 'y%./+-%__p_%'`
      +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  ac_save_LIBS="$LIBS"
      +LIBS="-lHcurses  $LIBS"
      +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  eval "ac_cv_lib_$ac_lib_var=yes"
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  eval "ac_cv_lib_$ac_lib_var=no"
      +fi
      +rm -f conftest*
      +LIBS="$ac_save_LIBS"
       
      +fi
      +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
      +  echo "$ac_t""yes" 1>&6
      +  
      +		# HP's header uses __HP_CURSES, but user claims _HP_CURSES.
      +		LIBS="-lHcurses $LIBS"
      +		CPPFLAGS="-D__HP_CURSES -D_HP_CURSES $CPPFLAGS"
      +		ac_cv_func_initscr=yes
      +		
       else
         echo "$ac_t""no" 1>&6
       fi
       
      -	 LIB_NAME=ncursesw
      -	 echo $ac_n "checking for putwc""... $ac_c" 1>&6
      -echo "configure:898: checking for putwc" >&5
      -if eval "test \"`echo '$''{'ac_cv_func_putwc'+set}'`\" = set"; then
      +fi
      +
      +	;;
      +linux*) # Suse Linux does not follow /usr/lib convention
      +	LIBS="$LIBS -L/lib"
      +	;;
      +sunos3*|sunos4*)
      +	test -d /usr/5lib && \
      +	LIBS="$LIBS -L/usr/5lib -lcurses -ltermcap"
      +	ac_cv_func_initscr=yes
      +	;;
      +esac
      +
      +if test ".$ac_cv_func_initscr" != .yes ; then
      +	cf_save_LIBS="$LIBS"
      +	cf_term_lib=""
      +	cf_curs_lib=""
      +
      +	if test ".${cf_cv_ncurses_version-no}" != .no
      +	then
      +		cf_check_list="ncurses curses cursesX"
      +	else
      +		cf_check_list="cursesX curses ncurses"
      +	fi
      +
      +	# Check for library containing tgoto.  Do this before curses library
      +	# because it may be needed to link the test-case for initscr.
      +	echo $ac_n "checking for tgoto""... $ac_c" 1>&6
      +echo "configure:1381: checking for tgoto" >&5
      +if eval "test \"`echo '$''{'ac_cv_func_tgoto'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
         cat > conftest.$ac_ext <
       /* Override any gcc2 internal prototype to avoid an error.  */
       /* We use char because int might match the return type of a gcc2
           builtin and then its argument prototype would still apply.  */
      -char putwc();
      +char tgoto();
       
       int main() {
       
       /* The GNU C library defines this for functions which it implements
           to always fail with ENOSYS.  Some functions are actually named
           something starting with __ and the normal name is an alias.  */
      -#if defined (__stub_putwc) || defined (__stub___putwc)
      +#if defined (__stub_tgoto) || defined (__stub___tgoto)
       choke me
       #else
      -putwc();
      +tgoto();
       #endif
       
       ; return 0; }
       EOF
      -if { (eval echo configure:926: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +if { (eval echo configure:1409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
         rm -rf conftest*
      -  eval "ac_cv_func_putwc=yes"
      +  eval "ac_cv_func_tgoto=yes"
       else
         echo "configure: failed program was:" >&5
         cat conftest.$ac_ext >&5
         rm -rf conftest*
      -  eval "ac_cv_func_putwc=no"
      +  eval "ac_cv_func_tgoto=no"
       fi
       rm -f conftest*
       fi
       
      -if eval "test \"`echo '$ac_cv_func_'putwc`\" = yes"; then
      +if eval "test \"`echo '$ac_cv_func_'tgoto`\" = yes"; then
         echo "$ac_t""yes" 1>&6
      -  :
      +  cf_term_lib=predefined
       else
         echo "$ac_t""no" 1>&6
       
      -echo $ac_n "checking for putwc in libutf8""... $ac_c" 1>&6
      -echo "configure:945: checking for putwc in libutf8" >&5
      -if eval "test \"`echo '$''{'cf_cv_libutf8'+set}'`\" = set"; then
      +		for cf_term_lib in $cf_check_list termcap termlib unknown
      +		do
      +			echo $ac_n "checking for tgoto in -l$cf_term_lib""... $ac_c" 1>&6
      +echo "configure:1430: checking for tgoto in -l$cf_term_lib" >&5
      +ac_lib_var=`echo $cf_term_lib'_'tgoto | sed 'y%./+-%__p_%'`
      +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
      -  
      -	cf_save_LIBS="$LIBS"
      -	LIBS="-lutf8 $LIBS"
      +  ac_save_LIBS="$LIBS"
      +LIBS="-l$cf_term_lib  $LIBS"
       cat > conftest.$ac_ext <
       int main() {
      -putwc(0,0);
      +tgoto()
       ; return 0; }
       EOF
      -if { (eval echo configure:961: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +if { (eval echo configure:1449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
         rm -rf conftest*
      -  cf_cv_libutf8=yes
      +  eval "ac_cv_lib_$ac_lib_var=yes"
       else
         echo "configure: failed program was:" >&5
         cat conftest.$ac_ext >&5
         rm -rf conftest*
      -  cf_cv_libutf8=no
      +  eval "ac_cv_lib_$ac_lib_var=no"
       fi
       rm -f conftest*
      -	LIBS="$cf_save_LIBS"
      +LIBS="$ac_save_LIBS"
       
       fi
      +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
      +  echo "$ac_t""yes" 1>&6
      +  break
      +else
      +  echo "$ac_t""no" 1>&6
      +fi
       
      -echo "$ac_t""$cf_cv_libutf8" 1>&6
      +		done
      +	
      +fi
       
      -if test "$cf_cv_libutf8" = yes ; then
      -	cat >> confdefs.h <<\EOF
      -#define HAVE_LIBUTF8_H 1
      +
      +	# Check for library containing initscr
      +	test "$cf_term_lib" != predefined && test "$cf_term_lib" != unknown && LIBS="-l$cf_term_lib $cf_save_LIBS"
      +	for cf_curs_lib in $cf_check_list xcurses jcurses unknown
      +	do
      +		echo $ac_n "checking for initscr in -l$cf_curs_lib""... $ac_c" 1>&6
      +echo "configure:1479: checking for initscr in -l$cf_curs_lib" >&5
      +ac_lib_var=`echo $cf_curs_lib'_'initscr | sed 'y%./+-%__p_%'`
      +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  ac_save_LIBS="$LIBS"
      +LIBS="-l$cf_curs_lib  $LIBS"
      +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  eval "ac_cv_lib_$ac_lib_var=yes"
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  eval "ac_cv_lib_$ac_lib_var=no"
      +fi
      +rm -f conftest*
      +LIBS="$ac_save_LIBS"
       
      -	LIBS="-lutf8 $LIBS"
       fi
      +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
      +  echo "$ac_t""yes" 1>&6
      +  break
      +else
      +  echo "$ac_t""no" 1>&6
      +fi
      +
      +	done
      +	test $cf_curs_lib = unknown && { echo "configure: error: no curses library found" 1>&2; exit 1; }
       
      +	LIBS="-l$cf_curs_lib $cf_save_LIBS"
      +	if test "$cf_term_lib" = unknown ; then
      +		echo $ac_n "checking if we can link with $cf_curs_lib library""... $ac_c" 1>&6
      +echo "configure:1524: checking if we can link with $cf_curs_lib library" >&5
      +		cat > conftest.$ac_ext <
      +int main() {
      +initscr()
      +; return 0; }
      +EOF
      +if { (eval echo configure:1533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  cf_result=yes
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  cf_result=no
      +fi
      +rm -f conftest*
      +		echo "$ac_t""$cf_result" 1>&6
      +		test $cf_result = no && { echo "configure: error: Cannot link curses library" 1>&2; exit 1; }
      +	elif test "$cf_curs_lib" = "$cf_term_lib" ; then
      +		:
      +	elif test "$cf_term_lib" != predefined ; then
      +		echo $ac_n "checking if we need both $cf_curs_lib and $cf_term_lib libraries""... $ac_c" 1>&6
      +echo "configure:1549: checking if we need both $cf_curs_lib and $cf_term_lib libraries" >&5
      +		cat > conftest.$ac_ext <
      +int main() {
      +initscr(); tgoto((char *)0, 0, 0);
      +; return 0; }
      +EOF
      +if { (eval echo configure:1558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  cf_result=no
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  
      +			LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS"
      +			cat > conftest.$ac_ext <
      +int main() {
      +initscr()
      +; return 0; }
      +EOF
      +if { (eval echo configure:1575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  cf_result=yes
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  cf_result=error
      +fi
      +rm -f conftest*
      +			
      +fi
      +rm -f conftest*
      +		echo "$ac_t""$cf_result" 1>&6
      +	fi
      +fi
       fi
       
      -	 for p in $HOME /usr/local /usr
      -	 do
      -	 	if test -f $p/include/ncursesw/curses.h
      -		then
      -			CPPFLAGS="$CPPFLAGS -I$p/include/ncursesw"
      -			test $p != /usr && CPPFLAGS="$CPPFLAGS -I$p/include"
      -			test $p != /usr && LIBS="-L$p/lib $LIBS"
      -			break
      -		elif test $p != /usr
      -		then
      -			if test -f $p/include/curses.h
      +
      +	;;
      +ncurses)
      +	
      +
      +cf_ncuhdr_root=ncurses
      +
      +test -n "$cf_cv_curses_dir" && \
      +test "$cf_cv_curses_dir" != "no" && \
      +CPPFLAGS="-I$cf_cv_curses_dir/include -I$cf_cv_curses_dir/include/$cf_ncuhdr_root $CPPFLAGS"
      +
      +echo $ac_n "checking for $cf_ncuhdr_root header in include-path""... $ac_c" 1>&6
      +echo "configure:1605: checking for $cf_ncuhdr_root header in include-path" >&5
      +if eval "test \"`echo '$''{'cf_cv_ncurses_h'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  
      +	cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h"
      +	( test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw ) && cf_header_list="$cf_header_list curses.h ncurses.h"
      +	for cf_header in $cf_header_list
      +	do
      +		
      +	cat > conftest.$ac_ext <
      +int main() {
      +
      +#ifdef NCURSES_VERSION
      +
      +printf("%s\n", NCURSES_VERSION);
      +#else
      +#ifdef __NCURSES_H
      +printf("old\n");
      +#else
      +	make an error
      +#endif
      +#endif
      +	
      +	
      +; return 0; }
      +EOF
      +if { (eval echo configure:1637: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
      +  rm -rf conftest*
      +  cf_cv_ncurses_h=$cf_header
      +	
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  cf_cv_ncurses_h=no
      +fi
      +rm -f conftest*
      +
      +		test "$cf_cv_ncurses_h" != no && break
      +	done
      +
      +fi
      +
      +echo "$ac_t""$cf_cv_ncurses_h" 1>&6
      +
      +if test "$cf_cv_ncurses_h" != no ; then
      +	cf_cv_ncurses_header=$cf_cv_ncurses_h
      +else
      +echo $ac_n "checking for $cf_ncuhdr_root include-path""... $ac_c" 1>&6
      +echo "configure:1660: checking for $cf_ncuhdr_root include-path" >&5
      +if eval "test \"`echo '$''{'cf_cv_ncurses_h2'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  
      +	test -n "$verbose" && echo
      +	cf_search=""
      +
      +test -d $HOME && {
      +	test -n "$verbose" && echo "	... testing include-directories under $HOME"
      +	test -d $HOME/include &&          cf_search="$cf_search $HOME/include"
      +	test -d $HOME/include/$cf_ncuhdr_root &&       cf_search="$cf_search $HOME/include/$cf_ncuhdr_root"
      +	test -d $HOME/include/$cf_ncuhdr_root/include &&    cf_search="$cf_search $HOME/include/$cf_ncuhdr_root/include"
      +}
      +
      +# For other stuff under the home directory, it should be sufficient to put
      +# a symbolic link for $HOME/$cf_ncuhdr_root to the actual package location:
      +test -d $HOME/$cf_ncuhdr_root && {
      +	test -n "$verbose" && echo "	... testing include-directories under $HOME/$cf_ncuhdr_root"
      +	test -d $HOME/$cf_ncuhdr_root/include &&       cf_search="$cf_search $HOME/$cf_ncuhdr_root/include"
      +	test -d $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root &&    cf_search="$cf_search $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
      +}
      +
      +test "$prefix" != /usr/local && \
      +test -d /usr/local && {
      +	test -n "$verbose" && echo "	... testing include-directories under /usr/local"
      +	test -d /usr/local/include &&       cf_search="$cf_search /usr/local/include"
      +	test -d /usr/local/include/$cf_ncuhdr_root &&    cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root"
      +	test -d /usr/local/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root/include"
      +	test -d /usr/local/$cf_ncuhdr_root/include &&    cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include"
      +	test -d /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
      +}
      +
      +test "$prefix" != NONE && \
      +test -d $prefix && {
      +	test -n "$verbose" && echo "	... testing include-directories under $prefix"
      +	test -d $prefix/include &&          cf_search="$cf_search $prefix/include"
      +	test -d $prefix/include/$cf_ncuhdr_root &&       cf_search="$cf_search $prefix/include/$cf_ncuhdr_root"
      +	test -d $prefix/include/$cf_ncuhdr_root/include &&    cf_search="$cf_search $prefix/include/$cf_ncuhdr_root/include"
      +	test -d $prefix/$cf_ncuhdr_root/include &&       cf_search="$cf_search $prefix/$cf_ncuhdr_root/include"
      +	test -d $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root &&    cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
      +}
      +
      +test "$prefix" != /opt && \
      +test -d /opt && {
      +	test -n "$verbose" && echo "	... testing include-directories under /opt"
      +	test -d /opt/include &&             cf_search="$cf_search /opt/include"
      +	test -d /opt/include/$cf_ncuhdr_root &&          cf_search="$cf_search /opt/include/$cf_ncuhdr_root"
      +	test -d /opt/include/$cf_ncuhdr_root/include &&       cf_search="$cf_search /opt/include/$cf_ncuhdr_root/include"
      +	test -d /opt/$cf_ncuhdr_root/include &&          cf_search="$cf_search /opt/$cf_ncuhdr_root/include"
      +	test -d /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root &&       cf_search="$cf_search /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
      +}
      +
      +test "$prefix" != /usr && \
      +test -d /usr && {
      +	test -n "$verbose" && echo "	... testing include-directories under /usr"
      +	test -d /usr/include &&             cf_search="$cf_search /usr/include"
      +	test -d /usr/include/$cf_ncuhdr_root &&          cf_search="$cf_search /usr/include/$cf_ncuhdr_root"
      +	test -d /usr/include/$cf_ncuhdr_root/include &&       cf_search="$cf_search /usr/include/$cf_ncuhdr_root/include"
      +	test -d /usr/$cf_ncuhdr_root/include &&          cf_search="$cf_search /usr/$cf_ncuhdr_root/include"
      +}
      +
      +test "$includedir" != NONE && \
      +test "$includedir" != "/usr/include" && \
      +test -d "$includedir" && {
      +	test -d $includedir &&    cf_search="$cf_search $includedir"
      +	test -d $includedir/$cf_ncuhdr_root && cf_search="$cf_search $includedir/$cf_ncuhdr_root"
      +}
      +
      +test "$oldincludedir" != NONE && \
      +test "$oldincludedir" != "/usr/include" && \
      +test -d "$oldincludedir" && {
      +	test -d $oldincludedir    && cf_search="$cf_search $oldincludedir"
      +	test -d $oldincludedir/$cf_ncuhdr_root && cf_search="$cf_search $oldincludedir/$cf_ncuhdr_root"
      +}
      +
      +
      +	test -n "$verbose" && echo search path $cf_search
      +	cf_save2_CPPFLAGS="$CPPFLAGS"
      +	for cf_incdir in $cf_search
      +	do
      +		
      +for cf_add_incdir in $cf_incdir
      +do
      +	while true
      +	do
      +		case $cf_add_incdir in
      +		/usr/include) # (vi
      +			;;
      +		/usr/local/include) # (vi
      +			if test "$GCC" = yes
       			then
      -				CPPFLAGS="$CPPFLAGS -I$p/include"
      -				LIBS="-L$p/lib $LIBS"
      +				cf_save_CPPFLAGS="$CPPFLAGS"
      +				CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
      +				cat > conftest.$ac_ext <
      +int main() {
      +printf("Hello")
      +; return 0; }
      +EOF
      +if { (eval echo configure:1762: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
      +  :
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  CPPFLAGS="$cf_save_CPPFLAGS"
      +fi
      +rm -f conftest*
      +			fi
      +			;;
      +		*) # (vi
      +			CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
      +			;;
      +		esac
      +		cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'`
      +		test "$cf_top_incdir" = "$cf_add_incdir" && break
      +		cf_add_incdir="$cf_top_incdir"
      +	done
      +done
      +
      +		for cf_header in \
      +			ncurses.h \
      +			curses.h
      +		do
      +			
      +	cat > conftest.$ac_ext <
      +int main() {
      +
      +#ifdef NCURSES_VERSION
      +
      +printf("%s\n", NCURSES_VERSION);
      +#else
      +#ifdef __NCURSES_H
      +printf("old\n");
      +#else
      +	make an error
      +#endif
      +#endif
      +	
      +	
      +; return 0; }
      +EOF
      +if { (eval echo configure:1810: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
      +  rm -rf conftest*
      +  cf_cv_ncurses_h2=$cf_header
      +	
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  cf_cv_ncurses_h2=no
      +fi
      +rm -f conftest*
      +
      +			if test "$cf_cv_ncurses_h2" != no ; then
      +				cf_cv_ncurses_h2=$cf_incdir/$cf_header
      +				test -n "$verbose" && echo $ac_n "	... found $ac_c" 1>&6
       				break
       			fi
      -		fi
      -	 done
      +			test -n "$verbose" && echo "	... tested $cf_incdir/$cf_header" 1>&6
      +		done
      +		CPPFLAGS="$cf_save2_CPPFLAGS"
      +		test "$cf_cv_ncurses_h2" != no && break
      +	done
      +	test "$cf_cv_ncurses_h2" = no && { echo "configure: error: not found" 1>&2; exit 1; }
       	
       fi
       
      +echo "$ac_t""$cf_cv_ncurses_h2" 1>&6
      +
      +	cf_1st_incdir=`echo $cf_cv_ncurses_h2 | sed -e 's%/[^/]*$%%'`
      +	cf_cv_ncurses_header=`basename $cf_cv_ncurses_h2`
      +	if test `basename $cf_1st_incdir` = $cf_ncuhdr_root ; then
      +		cf_cv_ncurses_header=$cf_ncuhdr_root/$cf_cv_ncurses_header
      +	fi
      +	
      +for cf_add_incdir in $cf_1st_incdir
      +do
      +	while true
      +	do
      +		case $cf_add_incdir in
      +		/usr/include) # (vi
      +			;;
      +		/usr/local/include) # (vi
      +			if test "$GCC" = yes
      +			then
      +				cf_save_CPPFLAGS="$CPPFLAGS"
      +				CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
      +				cat > conftest.$ac_ext <
      +int main() {
      +printf("Hello")
      +; return 0; }
      +EOF
      +if { (eval echo configure:1864: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
      +  :
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  CPPFLAGS="$cf_save_CPPFLAGS"
      +fi
      +rm -f conftest*
      +			fi
      +			;;
      +		*) # (vi
      +			CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
      +			;;
      +		esac
      +		cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'`
      +		test "$cf_top_incdir" = "$cf_add_incdir" && break
      +		cf_add_incdir="$cf_top_incdir"
      +	done
      +done
      +
      +
       fi
       
      +cat >> confdefs.h <<\EOF
      +#define NCURSES 1
      +EOF
       
       
      -# Check whether --with-ncurses or --without-ncurses was given.
      -if test "${with_ncurses+set}" = set; then
      -  withval="$with_ncurses"
      -  echo $ac_n "checking for initscr""... $ac_c" 1>&6
      -echo "configure:1016: checking for initscr" >&5
      +case $cf_cv_ncurses_header in # (vi
      +*ncurses.h)
      +	cat >> confdefs.h <<\EOF
      +#define HAVE_NCURSES_H 1
      +EOF
      +
      +	;;
      +esac
      +
      +case $cf_cv_ncurses_header in # (vi
      +ncurses/curses.h|ncurses/ncurses.h)
      +	cat >> confdefs.h <<\EOF
      +#define HAVE_NCURSES_NCURSES_H 1
      +EOF
      +
      +	;;
      +ncursesw/curses.h|ncursesw/ncurses.h)
      +	cat >> confdefs.h <<\EOF
      +#define HAVE_NCURSESW_NCURSES_H 1
      +EOF
      +
      +	;;
      +esac
      +
      +
      +echo $ac_n "checking for ncurses version""... $ac_c" 1>&6
      +echo "configure:1919: checking for ncurses version" >&5
      +if eval "test \"`echo '$''{'cf_cv_ncurses_version'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  
      +	cf_cv_ncurses_version=no
      +	cf_tempfile=out$$
      +	rm -f $cf_tempfile
      +	if test "$cross_compiling" = yes; then
      +  
      +
      +	# This will not work if the preprocessor splits the line after the
      +	# Autoconf token.  The 'unproto' program does that.
      +	cat > conftest.$ac_ext <
      +#undef Autoconf
      +#ifdef NCURSES_VERSION
      +Autoconf NCURSES_VERSION
      +#else
      +#ifdef __NCURSES_H
      +Autoconf "old"
      +#endif
      +;
      +#endif
      +EOF
      +	cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
      +	{ (eval echo configure:1945: \"$cf_try\") 1>&5; (eval $cf_try) 2>&5; }
      +	if test -f conftest.out ; then
      +		cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'`
      +		test -n "$cf_out" && cf_cv_ncurses_version="$cf_out"
      +		rm -f conftest.out
      +	fi
      +
      +else
      +  cat > conftest.$ac_ext <
      +#include 
      +int main()
      +{
      +	FILE *fp = fopen("$cf_tempfile", "w");
      +#ifdef NCURSES_VERSION
      +# ifdef NCURSES_VERSION_PATCH
      +	fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH);
      +# else
      +	fprintf(fp, "%s\n", NCURSES_VERSION);
      +# endif
      +#else
      +# ifdef __NCURSES_H
      +	fprintf(fp, "old\n");
      +# else
      +	make an error
      +# endif
      +#endif
      +	exit(0);
      +}
      +EOF
      +if { (eval echo configure:1978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
      +then
      +  
      +	cf_cv_ncurses_version=`cat $cf_tempfile`
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +fi
      +rm -fr conftest*
      +fi
      +
      +	rm -f $cf_tempfile
      +
      +fi
      +
      +echo "$ac_t""$cf_cv_ncurses_version" 1>&6
      +test "$cf_cv_ncurses_version" = no || cat >> confdefs.h <<\EOF
      +#define NCURSES 1
      +EOF
      +
      +
      +
      +	
      +
      +cf_nculib_root=ncurses
      +	# This works, except for the special case where we find gpm, but
      +	# ncurses is in a nonstandard location via $LIBS, and we really want
      +	# to link gpm.
      +cf_ncurses_LIBS=""
      +cf_ncurses_SAVE="$LIBS"
      +echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
      +echo "configure:2009: checking for Gpm_Open in -lgpm" >&5
      +ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'`
      +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  ac_save_LIBS="$LIBS"
      +LIBS="-lgpm  $LIBS"
      +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  eval "ac_cv_lib_$ac_lib_var=yes"
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  eval "ac_cv_lib_$ac_lib_var=no"
      +fi
      +rm -f conftest*
      +LIBS="$ac_save_LIBS"
      +
      +fi
      +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
      +  echo "$ac_t""yes" 1>&6
      +  echo $ac_n "checking for initscr in -lgpm""... $ac_c" 1>&6
      +echo "configure:2044: checking for initscr in -lgpm" >&5
      +ac_lib_var=`echo gpm'_'initscr | sed 'y%./+-%__p_%'`
      +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  ac_save_LIBS="$LIBS"
      +LIBS="-lgpm  $LIBS"
      +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  eval "ac_cv_lib_$ac_lib_var=yes"
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  eval "ac_cv_lib_$ac_lib_var=no"
      +fi
      +rm -f conftest*
      +LIBS="$ac_save_LIBS"
      +
      +fi
      +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
      +  echo "$ac_t""yes" 1>&6
      +  LIBS="$cf_ncurses_SAVE"
      +else
      +  echo "$ac_t""no" 1>&6
      +cf_ncurses_LIBS="-lgpm"
      +fi
      +
      +else
      +  echo "$ac_t""no" 1>&6
      +fi
      +
      +
      +case $host_os in #(vi
      +freebsd*)
      +	# This is only necessary if you are linking against an obsolete
      +	# version of ncurses (but it should do no harm, since it's static).
      +	echo $ac_n "checking for tgoto in -lmytinfo""... $ac_c" 1>&6
      +echo "configure:2094: checking for tgoto in -lmytinfo" >&5
      +ac_lib_var=`echo mytinfo'_'tgoto | sed 'y%./+-%__p_%'`
      +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  ac_save_LIBS="$LIBS"
      +LIBS="-lmytinfo  $LIBS"
      +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  eval "ac_cv_lib_$ac_lib_var=yes"
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  eval "ac_cv_lib_$ac_lib_var=no"
      +fi
      +rm -f conftest*
      +LIBS="$ac_save_LIBS"
      +
      +fi
      +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
      +  echo "$ac_t""yes" 1>&6
      +  cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"
      +else
      +  echo "$ac_t""no" 1>&6
      +fi
      +
      +	;;
      +esac
      +
      +LIBS="$cf_ncurses_LIBS $LIBS"
      +
      +if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" )
      +then
      +	LIBS="-L$cf_cv_curses_dir/lib -l$cf_nculib_root $LIBS"
      +else
      +	
      +	eval 'cf_cv_have_lib_'$cf_nculib_root'=no'
      +	cf_libdir=""
      +	echo $ac_n "checking for initscr""... $ac_c" 1>&6
      +echo "configure:2146: checking for initscr" >&5
       if eval "test \"`echo '$''{'ac_cv_func_initscr'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
         cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +if { (eval echo configure:2174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
         rm -rf conftest*
         eval "ac_cv_func_initscr=yes"
       else
      @@ -1054,12 +2184,665 @@
       
       if eval "test \"`echo '$ac_cv_func_'initscr`\" = yes"; then
         echo "$ac_t""yes" 1>&6
      -  :
      +  eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
       else
         echo "$ac_t""no" 1>&6
       
      -	 echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
      -echo "configure:1063: checking for Gpm_Open in -lgpm" >&5
      +		cf_save_LIBS="$LIBS"
      +		echo $ac_n "checking for initscr in -l$cf_nculib_root""... $ac_c" 1>&6
      +echo "configure:2194: checking for initscr in -l$cf_nculib_root" >&5
      +		LIBS="-l$cf_nculib_root $LIBS"
      +		cat > conftest.$ac_ext <
      +int main() {
      +initscr()
      +; return 0; }
      +EOF
      +if { (eval echo configure:2204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  echo "$ac_t""yes" 1>&6
      +			 eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
      +			
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  echo "$ac_t""no" 1>&6
      +			cf_search=""
      +
      +test -d $HOME && {
      +	test -n "$verbose" && echo "	... testing lib-directories under $HOME"
      +	test -d $HOME/lib &&          cf_search="$cf_search $HOME/lib"
      +	test -d $HOME/lib/$cf_nculib_root &&       cf_search="$cf_search $HOME/lib/$cf_nculib_root"
      +	test -d $HOME/lib/$cf_nculib_root/lib &&    cf_search="$cf_search $HOME/lib/$cf_nculib_root/lib"
      +}
      +
      +# For other stuff under the home directory, it should be sufficient to put
      +# a symbolic link for $HOME/$cf_nculib_root to the actual package location:
      +test -d $HOME/$cf_nculib_root && {
      +	test -n "$verbose" && echo "	... testing lib-directories under $HOME/$cf_nculib_root"
      +	test -d $HOME/$cf_nculib_root/lib &&       cf_search="$cf_search $HOME/$cf_nculib_root/lib"
      +	test -d $HOME/$cf_nculib_root/lib/$cf_nculib_root &&    cf_search="$cf_search $HOME/$cf_nculib_root/lib/$cf_nculib_root"
      +}
      +
      +test "$prefix" != /usr/local && \
      +test -d /usr/local && {
      +	test -n "$verbose" && echo "	... testing lib-directories under /usr/local"
      +	test -d /usr/local/lib &&       cf_search="$cf_search /usr/local/lib"
      +	test -d /usr/local/lib/$cf_nculib_root &&    cf_search="$cf_search /usr/local/lib/$cf_nculib_root"
      +	test -d /usr/local/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/lib/$cf_nculib_root/lib"
      +	test -d /usr/local/$cf_nculib_root/lib &&    cf_search="$cf_search /usr/local/$cf_nculib_root/lib"
      +	test -d /usr/local/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/$cf_nculib_root/lib/$cf_nculib_root"
      +}
      +
      +test "$prefix" != NONE && \
      +test -d $prefix && {
      +	test -n "$verbose" && echo "	... testing lib-directories under $prefix"
      +	test -d $prefix/lib &&          cf_search="$cf_search $prefix/lib"
      +	test -d $prefix/lib/$cf_nculib_root &&       cf_search="$cf_search $prefix/lib/$cf_nculib_root"
      +	test -d $prefix/lib/$cf_nculib_root/lib &&    cf_search="$cf_search $prefix/lib/$cf_nculib_root/lib"
      +	test -d $prefix/$cf_nculib_root/lib &&       cf_search="$cf_search $prefix/$cf_nculib_root/lib"
      +	test -d $prefix/$cf_nculib_root/lib/$cf_nculib_root &&    cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root"
      +}
      +
      +test "$prefix" != /opt && \
      +test -d /opt && {
      +	test -n "$verbose" && echo "	... testing lib-directories under /opt"
      +	test -d /opt/lib &&             cf_search="$cf_search /opt/lib"
      +	test -d /opt/lib/$cf_nculib_root &&          cf_search="$cf_search /opt/lib/$cf_nculib_root"
      +	test -d /opt/lib/$cf_nculib_root/lib &&       cf_search="$cf_search /opt/lib/$cf_nculib_root/lib"
      +	test -d /opt/$cf_nculib_root/lib &&          cf_search="$cf_search /opt/$cf_nculib_root/lib"
      +	test -d /opt/$cf_nculib_root/lib/$cf_nculib_root &&       cf_search="$cf_search /opt/$cf_nculib_root/lib/$cf_nculib_root"
      +}
      +
      +test "$prefix" != /usr && \
      +test -d /usr && {
      +	test -n "$verbose" && echo "	... testing lib-directories under /usr"
      +	test -d /usr/lib &&             cf_search="$cf_search /usr/lib"
      +	test -d /usr/lib/$cf_nculib_root &&          cf_search="$cf_search /usr/lib/$cf_nculib_root"
      +	test -d /usr/lib/$cf_nculib_root/lib &&       cf_search="$cf_search /usr/lib/$cf_nculib_root/lib"
      +	test -d /usr/$cf_nculib_root/lib &&          cf_search="$cf_search /usr/$cf_nculib_root/lib"
      +}
      +
      +			for cf_libdir in $cf_search
      +			do
      +				echo $ac_n "checking for -l$cf_nculib_root in $cf_libdir""... $ac_c" 1>&6
      +echo "configure:2273: checking for -l$cf_nculib_root in $cf_libdir" >&5
      +				LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS"
      +				cat > conftest.$ac_ext <
      +int main() {
      +initscr()
      +; return 0; }
      +EOF
      +if { (eval echo configure:2283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  echo "$ac_t""yes" 1>&6
      +			 		 eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
      +					 break
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  echo "$ac_t""no" 1>&6
      +					 LIBS="$cf_save_LIBS"
      +fi
      +rm -f conftest*
      +			done
      +			
      +fi
      +rm -f conftest*
      +		
      +fi
      +
      +eval 'cf_found_library=$cf_cv_have_lib_'$cf_nculib_root
      +
      +if test $cf_found_library = no ; then
      +	{ echo "configure: error: Cannot link $cf_nculib_root library" 1>&2; exit 1; }
      +fi
      +
      +
      +fi
      +
      +if test -n "$cf_ncurses_LIBS" ; then
      +	echo $ac_n "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS""... $ac_c" 1>&6
      +echo "configure:2314: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
      +	cf_ncurses_SAVE="$LIBS"
      +	for p in $cf_ncurses_LIBS ; do
      +		q=`echo $LIBS | sed -e "s%$p %%" -e "s%$p$%%"`
      +		if test "$q" != "$LIBS" ; then
      +			LIBS="$q"
      +		fi
      +	done
      +	cat > conftest.$ac_ext <
      +int main() {
      +initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
      +; return 0; }
      +EOF
      +if { (eval echo configure:2330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  echo "$ac_t""yes" 1>&6
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  echo "$ac_t""no" 1>&6
      +		 LIBS="$cf_ncurses_SAVE"
      +fi
      +rm -f conftest*
      +fi
      +
      +
      +cf_nculib_ROOT=`echo "HAVE_LIB$cf_nculib_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
      +
      +cat >> confdefs.h <&6
      +echo "configure:2357: checking for multibyte character support" >&5
      +if eval "test \"`echo '$''{'cf_cv_utf8_lib'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  
      +	cf_save_LIBS="$LIBS"
      +	cat > conftest.$ac_ext <
      +int main() {
      +putwc(0,0);
      +; return 0; }
      +EOF
      +if { (eval echo configure:2372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  cf_cv_utf8_lib=yes
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  LIBS="-lutf8 $LIBS"
      +	 cat > conftest.$ac_ext <
      +int main() {
      +putwc(0,0);
      +; return 0; }
      +EOF
      +if { (eval echo configure:2389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  cf_cv_utf8_lib=add-on
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  cf_cv_utf8_lib=no
      +fi
      +rm -f conftest*
      +	LIBS="$cf_save_LIBS"
      +
      +fi
      +rm -f conftest*
      +fi
      +
      +echo "$ac_t""$cf_cv_utf8_lib" 1>&6
      +
      +# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
      +# ncurses/ncursesw:
      +if test "$cf_cv_utf8_lib" = "add-on" ; then
      +	cat >> confdefs.h <<\EOF
      +#define HAVE_LIBUTF8_H 1
      +EOF
      +
      +	LIBS="-lutf8 $LIBS"
      +fi
      +
      +	
      +
      +cf_ncuhdr_root=ncursesw
      +
      +test -n "$cf_cv_curses_dir" && \
      +test "$cf_cv_curses_dir" != "no" && \
      +CPPFLAGS="-I$cf_cv_curses_dir/include -I$cf_cv_curses_dir/include/$cf_ncuhdr_root $CPPFLAGS"
      +
      +echo $ac_n "checking for $cf_ncuhdr_root header in include-path""... $ac_c" 1>&6
      +echo "configure:2426: checking for $cf_ncuhdr_root header in include-path" >&5
      +if eval "test \"`echo '$''{'cf_cv_ncurses_h'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  
      +	cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h"
      +	( test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw ) && cf_header_list="$cf_header_list curses.h ncurses.h"
      +	for cf_header in $cf_header_list
      +	do
      +		
      +	cat > conftest.$ac_ext <
      +int main() {
      +
      +#ifdef NCURSES_VERSION
      +
      +#ifndef WACS_BSSB
      +	make an error
      +#endif
      +
      +printf("%s\n", NCURSES_VERSION);
      +#else
      +#ifdef __NCURSES_H
      +printf("old\n");
      +#else
      +	make an error
      +#endif
      +#endif
      +	
      +	
      +; return 0; }
      +EOF
      +if { (eval echo configure:2466: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
      +  rm -rf conftest*
      +  cf_cv_ncurses_h=$cf_header
      +	
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  cf_cv_ncurses_h=no
      +fi
      +rm -f conftest*
      +
      +		test "$cf_cv_ncurses_h" != no && break
      +	done
      +
      +fi
      +
      +echo "$ac_t""$cf_cv_ncurses_h" 1>&6
      +
      +if test "$cf_cv_ncurses_h" != no ; then
      +	cf_cv_ncurses_header=$cf_cv_ncurses_h
      +else
      +echo $ac_n "checking for $cf_ncuhdr_root include-path""... $ac_c" 1>&6
      +echo "configure:2489: checking for $cf_ncuhdr_root include-path" >&5
      +if eval "test \"`echo '$''{'cf_cv_ncurses_h2'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  
      +	test -n "$verbose" && echo
      +	cf_search=""
      +
      +test -d $HOME && {
      +	test -n "$verbose" && echo "	... testing include-directories under $HOME"
      +	test -d $HOME/include &&          cf_search="$cf_search $HOME/include"
      +	test -d $HOME/include/$cf_ncuhdr_root &&       cf_search="$cf_search $HOME/include/$cf_ncuhdr_root"
      +	test -d $HOME/include/$cf_ncuhdr_root/include &&    cf_search="$cf_search $HOME/include/$cf_ncuhdr_root/include"
      +}
      +
      +# For other stuff under the home directory, it should be sufficient to put
      +# a symbolic link for $HOME/$cf_ncuhdr_root to the actual package location:
      +test -d $HOME/$cf_ncuhdr_root && {
      +	test -n "$verbose" && echo "	... testing include-directories under $HOME/$cf_ncuhdr_root"
      +	test -d $HOME/$cf_ncuhdr_root/include &&       cf_search="$cf_search $HOME/$cf_ncuhdr_root/include"
      +	test -d $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root &&    cf_search="$cf_search $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
      +}
      +
      +test "$prefix" != /usr/local && \
      +test -d /usr/local && {
      +	test -n "$verbose" && echo "	... testing include-directories under /usr/local"
      +	test -d /usr/local/include &&       cf_search="$cf_search /usr/local/include"
      +	test -d /usr/local/include/$cf_ncuhdr_root &&    cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root"
      +	test -d /usr/local/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root/include"
      +	test -d /usr/local/$cf_ncuhdr_root/include &&    cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include"
      +	test -d /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
      +}
      +
      +test "$prefix" != NONE && \
      +test -d $prefix && {
      +	test -n "$verbose" && echo "	... testing include-directories under $prefix"
      +	test -d $prefix/include &&          cf_search="$cf_search $prefix/include"
      +	test -d $prefix/include/$cf_ncuhdr_root &&       cf_search="$cf_search $prefix/include/$cf_ncuhdr_root"
      +	test -d $prefix/include/$cf_ncuhdr_root/include &&    cf_search="$cf_search $prefix/include/$cf_ncuhdr_root/include"
      +	test -d $prefix/$cf_ncuhdr_root/include &&       cf_search="$cf_search $prefix/$cf_ncuhdr_root/include"
      +	test -d $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root &&    cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
      +}
      +
      +test "$prefix" != /opt && \
      +test -d /opt && {
      +	test -n "$verbose" && echo "	... testing include-directories under /opt"
      +	test -d /opt/include &&             cf_search="$cf_search /opt/include"
      +	test -d /opt/include/$cf_ncuhdr_root &&          cf_search="$cf_search /opt/include/$cf_ncuhdr_root"
      +	test -d /opt/include/$cf_ncuhdr_root/include &&       cf_search="$cf_search /opt/include/$cf_ncuhdr_root/include"
      +	test -d /opt/$cf_ncuhdr_root/include &&          cf_search="$cf_search /opt/$cf_ncuhdr_root/include"
      +	test -d /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root &&       cf_search="$cf_search /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root"
      +}
      +
      +test "$prefix" != /usr && \
      +test -d /usr && {
      +	test -n "$verbose" && echo "	... testing include-directories under /usr"
      +	test -d /usr/include &&             cf_search="$cf_search /usr/include"
      +	test -d /usr/include/$cf_ncuhdr_root &&          cf_search="$cf_search /usr/include/$cf_ncuhdr_root"
      +	test -d /usr/include/$cf_ncuhdr_root/include &&       cf_search="$cf_search /usr/include/$cf_ncuhdr_root/include"
      +	test -d /usr/$cf_ncuhdr_root/include &&          cf_search="$cf_search /usr/$cf_ncuhdr_root/include"
      +}
      +
      +test "$includedir" != NONE && \
      +test "$includedir" != "/usr/include" && \
      +test -d "$includedir" && {
      +	test -d $includedir &&    cf_search="$cf_search $includedir"
      +	test -d $includedir/$cf_ncuhdr_root && cf_search="$cf_search $includedir/$cf_ncuhdr_root"
      +}
      +
      +test "$oldincludedir" != NONE && \
      +test "$oldincludedir" != "/usr/include" && \
      +test -d "$oldincludedir" && {
      +	test -d $oldincludedir    && cf_search="$cf_search $oldincludedir"
      +	test -d $oldincludedir/$cf_ncuhdr_root && cf_search="$cf_search $oldincludedir/$cf_ncuhdr_root"
      +}
      +
      +
      +	test -n "$verbose" && echo search path $cf_search
      +	cf_save2_CPPFLAGS="$CPPFLAGS"
      +	for cf_incdir in $cf_search
      +	do
      +		
      +for cf_add_incdir in $cf_incdir
      +do
      +	while true
      +	do
      +		case $cf_add_incdir in
      +		/usr/include) # (vi
      +			;;
      +		/usr/local/include) # (vi
      +			if test "$GCC" = yes
      +			then
      +				cf_save_CPPFLAGS="$CPPFLAGS"
      +				CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
      +				cat > conftest.$ac_ext <
      +int main() {
      +printf("Hello")
      +; return 0; }
      +EOF
      +if { (eval echo configure:2591: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
      +  :
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  CPPFLAGS="$cf_save_CPPFLAGS"
      +fi
      +rm -f conftest*
      +			fi
      +			;;
      +		*) # (vi
      +			CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
      +			;;
      +		esac
      +		cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'`
      +		test "$cf_top_incdir" = "$cf_add_incdir" && break
      +		cf_add_incdir="$cf_top_incdir"
      +	done
      +done
      +
      +		for cf_header in \
      +			ncurses.h \
      +			curses.h
      +		do
      +			
      +	cat > conftest.$ac_ext <
      +int main() {
      +
      +#ifdef NCURSES_VERSION
      +
      +#ifndef WACS_BSSB
      +	make an error
      +#endif
      +
      +printf("%s\n", NCURSES_VERSION);
      +#else
      +#ifdef __NCURSES_H
      +printf("old\n");
      +#else
      +	make an error
      +#endif
      +#endif
      +	
      +	
      +; return 0; }
      +EOF
      +if { (eval echo configure:2647: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
      +  rm -rf conftest*
      +  cf_cv_ncurses_h2=$cf_header
      +	
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  cf_cv_ncurses_h2=no
      +fi
      +rm -f conftest*
      +
      +			if test "$cf_cv_ncurses_h2" != no ; then
      +				cf_cv_ncurses_h2=$cf_incdir/$cf_header
      +				test -n "$verbose" && echo $ac_n "	... found $ac_c" 1>&6
      +				break
      +			fi
      +			test -n "$verbose" && echo "	... tested $cf_incdir/$cf_header" 1>&6
      +		done
      +		CPPFLAGS="$cf_save2_CPPFLAGS"
      +		test "$cf_cv_ncurses_h2" != no && break
      +	done
      +	test "$cf_cv_ncurses_h2" = no && { echo "configure: error: not found" 1>&2; exit 1; }
      +	
      +fi
      +
      +echo "$ac_t""$cf_cv_ncurses_h2" 1>&6
      +
      +	cf_1st_incdir=`echo $cf_cv_ncurses_h2 | sed -e 's%/[^/]*$%%'`
      +	cf_cv_ncurses_header=`basename $cf_cv_ncurses_h2`
      +	if test `basename $cf_1st_incdir` = $cf_ncuhdr_root ; then
      +		cf_cv_ncurses_header=$cf_ncuhdr_root/$cf_cv_ncurses_header
      +	fi
      +	
      +for cf_add_incdir in $cf_1st_incdir
      +do
      +	while true
      +	do
      +		case $cf_add_incdir in
      +		/usr/include) # (vi
      +			;;
      +		/usr/local/include) # (vi
      +			if test "$GCC" = yes
      +			then
      +				cf_save_CPPFLAGS="$CPPFLAGS"
      +				CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
      +				cat > conftest.$ac_ext <
      +int main() {
      +printf("Hello")
      +; return 0; }
      +EOF
      +if { (eval echo configure:2701: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
      +  :
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  CPPFLAGS="$cf_save_CPPFLAGS"
      +fi
      +rm -f conftest*
      +			fi
      +			;;
      +		*) # (vi
      +			CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
      +			;;
      +		esac
      +		cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'`
      +		test "$cf_top_incdir" = "$cf_add_incdir" && break
      +		cf_add_incdir="$cf_top_incdir"
      +	done
      +done
      +
      +
      +fi
      +
      +cat >> confdefs.h <<\EOF
      +#define NCURSES 1
      +EOF
      +
      +
      +case $cf_cv_ncurses_header in # (vi
      +*ncurses.h)
      +	cat >> confdefs.h <<\EOF
      +#define HAVE_NCURSES_H 1
      +EOF
      +
      +	;;
      +esac
      +
      +case $cf_cv_ncurses_header in # (vi
      +ncurses/curses.h|ncurses/ncurses.h)
      +	cat >> confdefs.h <<\EOF
      +#define HAVE_NCURSES_NCURSES_H 1
      +EOF
      +
      +	;;
      +ncursesw/curses.h|ncursesw/ncurses.h)
      +	cat >> confdefs.h <<\EOF
      +#define HAVE_NCURSESW_NCURSES_H 1
      +EOF
      +
      +	;;
      +esac
      +
      +
      +echo $ac_n "checking for ncurses version""... $ac_c" 1>&6
      +echo "configure:2756: checking for ncurses version" >&5
      +if eval "test \"`echo '$''{'cf_cv_ncurses_version'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  
      +	cf_cv_ncurses_version=no
      +	cf_tempfile=out$$
      +	rm -f $cf_tempfile
      +	if test "$cross_compiling" = yes; then
      +  
      +
      +	# This will not work if the preprocessor splits the line after the
      +	# Autoconf token.  The 'unproto' program does that.
      +	cat > conftest.$ac_ext <
      +#undef Autoconf
      +#ifdef NCURSES_VERSION
      +Autoconf NCURSES_VERSION
      +#else
      +#ifdef __NCURSES_H
      +Autoconf "old"
      +#endif
      +;
      +#endif
      +EOF
      +	cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
      +	{ (eval echo configure:2782: \"$cf_try\") 1>&5; (eval $cf_try) 2>&5; }
      +	if test -f conftest.out ; then
      +		cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'`
      +		test -n "$cf_out" && cf_cv_ncurses_version="$cf_out"
      +		rm -f conftest.out
      +	fi
      +
      +else
      +  cat > conftest.$ac_ext <
      +#include 
      +int main()
      +{
      +	FILE *fp = fopen("$cf_tempfile", "w");
      +#ifdef NCURSES_VERSION
      +# ifdef NCURSES_VERSION_PATCH
      +	fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH);
      +# else
      +	fprintf(fp, "%s\n", NCURSES_VERSION);
      +# endif
      +#else
      +# ifdef __NCURSES_H
      +	fprintf(fp, "old\n");
      +# else
      +	make an error
      +# endif
      +#endif
      +	exit(0);
      +}
      +EOF
      +if { (eval echo configure:2815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
      +then
      +  
      +	cf_cv_ncurses_version=`cat $cf_tempfile`
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +fi
      +rm -fr conftest*
      +fi
      +
      +	rm -f $cf_tempfile
      +
      +fi
      +
      +echo "$ac_t""$cf_cv_ncurses_version" 1>&6
      +test "$cf_cv_ncurses_version" = no || cat >> confdefs.h <<\EOF
      +#define NCURSES 1
      +EOF
      +
      +
      +
      +	
      +
      +cf_nculib_root=ncursesw
      +	# This works, except for the special case where we find gpm, but
      +	# ncurses is in a nonstandard location via $LIBS, and we really want
      +	# to link gpm.
      +cf_ncurses_LIBS=""
      +cf_ncurses_SAVE="$LIBS"
      +echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
      +echo "configure:2846: checking for Gpm_Open in -lgpm" >&5
       ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'`
       if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
      @@ -1067,7 +2850,7 @@
         ac_save_LIBS="$LIBS"
       LIBS="-lgpm  $LIBS"
       cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +if { (eval echo configure:2865: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
         rm -rf conftest*
         eval "ac_cv_lib_$ac_lib_var=yes"
       else
      @@ -1093,52 +2876,115 @@
       fi
       if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
         echo "$ac_t""yes" 1>&6
      -    ac_tr_lib=HAVE_LIB`echo gpm | sed -e 's/[^a-zA-Z0-9_]/_/g' \
      -    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
      -  cat >> confdefs.h <&6
      +echo "configure:2881: checking for initscr in -lgpm" >&5
      +ac_lib_var=`echo gpm'_'initscr | sed 'y%./+-%__p_%'`
      +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  ac_save_LIBS="$LIBS"
      +LIBS="-lgpm  $LIBS"
      +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  eval "ac_cv_lib_$ac_lib_var=yes"
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  eval "ac_cv_lib_$ac_lib_var=no"
      +fi
      +rm -f conftest*
      +LIBS="$ac_save_LIBS"
       
      +fi
      +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
      +  echo "$ac_t""yes" 1>&6
      +  LIBS="$cf_ncurses_SAVE"
       else
         echo "$ac_t""no" 1>&6
      +cf_ncurses_LIBS="-lgpm"
       fi
       
      -	 LIB_NAME=ncurses
      -	 for p in $HOME /usr/local /usr
      -	 do
      -	 	if test -f $p/include/ncurses/curses.h
      -		then
      -			CPPFLAGS="$CPPFLAGS -I$p/include/ncurses"
      -			test $p != /usr && CPPFLAGS="$CPPFLAGS -I$p/include"
      -			test $p != /usr && LIBS="-L$p/lib $LIBS"
      -			break
      -		elif test $p != /usr
      -		then
      -			if test -f $p/include/curses.h
      -			then
      -				CPPFLAGS="$CPPFLAGS -I$p/include"
      -				LIBS="-L$p/lib $LIBS"
      -				break
      -			fi
      -		fi
      -	 done
      -	
      +else
      +  echo "$ac_t""no" 1>&6
       fi
       
      +
      +case $host_os in #(vi
      +freebsd*)
      +	# This is only necessary if you are linking against an obsolete
      +	# version of ncurses (but it should do no harm, since it's static).
      +	echo $ac_n "checking for tgoto in -lmytinfo""... $ac_c" 1>&6
      +echo "configure:2931: checking for tgoto in -lmytinfo" >&5
      +ac_lib_var=`echo mytinfo'_'tgoto | sed 'y%./+-%__p_%'`
      +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  ac_save_LIBS="$LIBS"
      +LIBS="-lmytinfo  $LIBS"
      +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  eval "ac_cv_lib_$ac_lib_var=yes"
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  eval "ac_cv_lib_$ac_lib_var=no"
       fi
      +rm -f conftest*
      +LIBS="$ac_save_LIBS"
       
      +fi
      +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
      +  echo "$ac_t""yes" 1>&6
      +  cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"
      +else
      +  echo "$ac_t""no" 1>&6
      +fi
       
      +	;;
      +esac
       
      +LIBS="$cf_ncurses_LIBS $LIBS"
       
      -echo $ac_n "checking for initscr""... $ac_c" 1>&6
      -echo "configure:1137: checking for initscr" >&5
      +if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" )
      +then
      +	LIBS="-L$cf_cv_curses_dir/lib -l$cf_nculib_root $LIBS"
      +else
      +	
      +	eval 'cf_cv_have_lib_'$cf_nculib_root'=no'
      +	cf_libdir=""
      +	echo $ac_n "checking for initscr""... $ac_c" 1>&6
      +echo "configure:2983: checking for initscr" >&5
       if eval "test \"`echo '$''{'ac_cv_func_initscr'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
         cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +if { (eval echo configure:3011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
         rm -rf conftest*
         eval "ac_cv_func_initscr=yes"
       else
      @@ -1175,69 +3021,185 @@
       
       if eval "test \"`echo '$ac_cv_func_'initscr`\" = yes"; then
         echo "$ac_t""yes" 1>&6
      -  :
      +  eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
       else
         echo "$ac_t""no" 1>&6
       
      -echo $ac_n "checking for initscr in -l$LIB_NAME""... $ac_c" 1>&6
      -echo "configure:1184: checking for initscr in -l$LIB_NAME" >&5
      -ac_lib_var=`echo $LIB_NAME'_'initscr | sed 'y%./+-%__p_%'`
      -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
      -  echo $ac_n "(cached) $ac_c" 1>&6
      -else
      -  ac_save_LIBS="$LIBS"
      -LIBS="-l$LIB_NAME  $LIBS"
      -cat > conftest.$ac_ext <&6
      +echo "configure:3031: checking for initscr in -l$cf_nculib_root" >&5
      +		LIBS="-l$cf_nculib_root $LIBS"
      +		cat > conftest.$ac_ext <
      +int main() {
      +initscr()
      +; return 0; }
      +EOF
      +if { (eval echo configure:3041: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  echo "$ac_t""yes" 1>&6
      +			 eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
      +			
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  echo "$ac_t""no" 1>&6
      +			cf_search=""
      +
      +test -d $HOME && {
      +	test -n "$verbose" && echo "	... testing lib-directories under $HOME"
      +	test -d $HOME/lib &&          cf_search="$cf_search $HOME/lib"
      +	test -d $HOME/lib/$cf_nculib_root &&       cf_search="$cf_search $HOME/lib/$cf_nculib_root"
      +	test -d $HOME/lib/$cf_nculib_root/lib &&    cf_search="$cf_search $HOME/lib/$cf_nculib_root/lib"
      +}
      +
      +# For other stuff under the home directory, it should be sufficient to put
      +# a symbolic link for $HOME/$cf_nculib_root to the actual package location:
      +test -d $HOME/$cf_nculib_root && {
      +	test -n "$verbose" && echo "	... testing lib-directories under $HOME/$cf_nculib_root"
      +	test -d $HOME/$cf_nculib_root/lib &&       cf_search="$cf_search $HOME/$cf_nculib_root/lib"
      +	test -d $HOME/$cf_nculib_root/lib/$cf_nculib_root &&    cf_search="$cf_search $HOME/$cf_nculib_root/lib/$cf_nculib_root"
      +}
      +
      +test "$prefix" != /usr/local && \
      +test -d /usr/local && {
      +	test -n "$verbose" && echo "	... testing lib-directories under /usr/local"
      +	test -d /usr/local/lib &&       cf_search="$cf_search /usr/local/lib"
      +	test -d /usr/local/lib/$cf_nculib_root &&    cf_search="$cf_search /usr/local/lib/$cf_nculib_root"
      +	test -d /usr/local/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/lib/$cf_nculib_root/lib"
      +	test -d /usr/local/$cf_nculib_root/lib &&    cf_search="$cf_search /usr/local/$cf_nculib_root/lib"
      +	test -d /usr/local/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/$cf_nculib_root/lib/$cf_nculib_root"
      +}
      +
      +test "$prefix" != NONE && \
      +test -d $prefix && {
      +	test -n "$verbose" && echo "	... testing lib-directories under $prefix"
      +	test -d $prefix/lib &&          cf_search="$cf_search $prefix/lib"
      +	test -d $prefix/lib/$cf_nculib_root &&       cf_search="$cf_search $prefix/lib/$cf_nculib_root"
      +	test -d $prefix/lib/$cf_nculib_root/lib &&    cf_search="$cf_search $prefix/lib/$cf_nculib_root/lib"
      +	test -d $prefix/$cf_nculib_root/lib &&       cf_search="$cf_search $prefix/$cf_nculib_root/lib"
      +	test -d $prefix/$cf_nculib_root/lib/$cf_nculib_root &&    cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root"
      +}
      +
      +test "$prefix" != /opt && \
      +test -d /opt && {
      +	test -n "$verbose" && echo "	... testing lib-directories under /opt"
      +	test -d /opt/lib &&             cf_search="$cf_search /opt/lib"
      +	test -d /opt/lib/$cf_nculib_root &&          cf_search="$cf_search /opt/lib/$cf_nculib_root"
      +	test -d /opt/lib/$cf_nculib_root/lib &&       cf_search="$cf_search /opt/lib/$cf_nculib_root/lib"
      +	test -d /opt/$cf_nculib_root/lib &&          cf_search="$cf_search /opt/$cf_nculib_root/lib"
      +	test -d /opt/$cf_nculib_root/lib/$cf_nculib_root &&       cf_search="$cf_search /opt/$cf_nculib_root/lib/$cf_nculib_root"
      +}
      +
      +test "$prefix" != /usr && \
      +test -d /usr && {
      +	test -n "$verbose" && echo "	... testing lib-directories under /usr"
      +	test -d /usr/lib &&             cf_search="$cf_search /usr/lib"
      +	test -d /usr/lib/$cf_nculib_root &&          cf_search="$cf_search /usr/lib/$cf_nculib_root"
      +	test -d /usr/lib/$cf_nculib_root/lib &&       cf_search="$cf_search /usr/lib/$cf_nculib_root/lib"
      +	test -d /usr/$cf_nculib_root/lib &&          cf_search="$cf_search /usr/$cf_nculib_root/lib"
      +}
       
      +			for cf_libdir in $cf_search
      +			do
      +				echo $ac_n "checking for -l$cf_nculib_root in $cf_libdir""... $ac_c" 1>&6
      +echo "configure:3110: checking for -l$cf_nculib_root in $cf_libdir" >&5
      +				LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS"
      +				cat > conftest.$ac_ext <
       int main() {
       initscr()
       ; return 0; }
       EOF
      -if { (eval echo configure:1203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +if { (eval echo configure:3120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
         rm -rf conftest*
      -  eval "ac_cv_lib_$ac_lib_var=yes"
      +  echo "$ac_t""yes" 1>&6
      +			 		 eval 'cf_cv_have_lib_'$cf_nculib_root'=yes'
      +					 break
       else
         echo "configure: failed program was:" >&5
         cat conftest.$ac_ext >&5
         rm -rf conftest*
      -  eval "ac_cv_lib_$ac_lib_var=no"
      +  echo "$ac_t""no" 1>&6
      +					 LIBS="$cf_save_LIBS"
       fi
       rm -f conftest*
      -LIBS="$ac_save_LIBS"
      +			done
      +			
      +fi
      +rm -f conftest*
      +		
      +fi
      +
      +eval 'cf_found_library=$cf_cv_have_lib_'$cf_nculib_root
       
      +if test $cf_found_library = no ; then
      +	{ echo "configure: error: Cannot link $cf_nculib_root library" 1>&2; exit 1; }
       fi
      -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
      -  echo "$ac_t""yes" 1>&6
      -    ac_tr_lib=HAVE_LIB`echo $LIB_NAME | sed -e 's/[^a-zA-Z0-9_]/_/g' \
      -    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
      -  cat >> confdefs.h <&6
      +echo "configure:3151: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
      +	cf_ncurses_SAVE="$LIBS"
      +	for p in $cf_ncurses_LIBS ; do
      +		q=`echo $LIBS | sed -e "s%$p %%" -e "s%$p$%%"`
      +		if test "$q" != "$LIBS" ; then
      +			LIBS="$q"
      +		fi
      +	done
      +	cat > conftest.$ac_ext <
      +int main() {
      +initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);
      +; return 0; }
      +EOF
      +if { (eval echo configure:3167: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  echo "$ac_t""yes" 1>&6
       else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
         echo "$ac_t""no" 1>&6
      +		 LIBS="$cf_ncurses_SAVE"
       fi
      -
      +rm -f conftest*
       fi
       
      -echo $ac_n "checking for form_driver in -lform""... $ac_c" 1>&6
      -echo "configure:1233: checking for form_driver in -lform" >&5
      -ac_lib_var=`echo form'_'form_driver | sed 'y%./+-%__p_%'`
      +
      +cf_nculib_ROOT=`echo "HAVE_LIB$cf_nculib_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
      +
      +cat >> confdefs.h <&6
      +echo "configure:3195: checking for form_driver in -lform$cf_cv_libtype" >&5
      +ac_lib_var=`echo form$cf_cv_libtype'_'form_driver | sed 'y%./+-%__p_%'`
       if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
         ac_save_LIBS="$LIBS"
      -LIBS="-lform  $LIBS"
      +LIBS="-lform$cf_cv_libtype  $LIBS"
       cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +if { (eval echo configure:3214: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
         rm -rf conftest*
         eval "ac_cv_lib_$ac_lib_var=yes"
       else
      @@ -1263,28 +3225,28 @@
       fi
       if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
         echo "$ac_t""yes" 1>&6
      -    ac_tr_lib=HAVE_LIB`echo form | sed -e 's/[^a-zA-Z0-9_]/_/g' \
      +    ac_tr_lib=HAVE_LIB`echo form$cf_cv_libtype | sed -e 's/[^a-zA-Z0-9_]/_/g' \
           -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
         cat >> confdefs.h <&6
       fi
       
      -echo $ac_n "checking for menu_driver in -lmenu""... $ac_c" 1>&6
      -echo "configure:1280: checking for menu_driver in -lmenu" >&5
      -ac_lib_var=`echo menu'_'menu_driver | sed 'y%./+-%__p_%'`
      +echo $ac_n "checking for menu_driver in -lmenu$cf_cv_libtype""... $ac_c" 1>&6
      +echo "configure:3242: checking for menu_driver in -lmenu$cf_cv_libtype" >&5
      +ac_lib_var=`echo menu$cf_cv_libtype'_'menu_driver | sed 'y%./+-%__p_%'`
       if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
         ac_save_LIBS="$LIBS"
      -LIBS="-lmenu  $LIBS"
      +LIBS="-lmenu$cf_cv_libtype  $LIBS"
       cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +if { (eval echo configure:3261: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
         rm -rf conftest*
         eval "ac_cv_lib_$ac_lib_var=yes"
       else
      @@ -1310,28 +3272,28 @@
       fi
       if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
         echo "$ac_t""yes" 1>&6
      -    ac_tr_lib=HAVE_LIB`echo menu | sed -e 's/[^a-zA-Z0-9_]/_/g' \
      +    ac_tr_lib=HAVE_LIB`echo menu$cf_cv_libtype | sed -e 's/[^a-zA-Z0-9_]/_/g' \
           -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
         cat >> confdefs.h <&6
       fi
       
      -echo $ac_n "checking for new_panel in -lpanel""... $ac_c" 1>&6
      -echo "configure:1327: checking for new_panel in -lpanel" >&5
      -ac_lib_var=`echo panel'_'new_panel | sed 'y%./+-%__p_%'`
      +echo $ac_n "checking for new_panel in -lpanel$cf_cv_libtype""... $ac_c" 1>&6
      +echo "configure:3289: checking for new_panel in -lpanel$cf_cv_libtype" >&5
      +ac_lib_var=`echo panel$cf_cv_libtype'_'new_panel | sed 'y%./+-%__p_%'`
       if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
         ac_save_LIBS="$LIBS"
      -LIBS="-lpanel  $LIBS"
      +LIBS="-lpanel$cf_cv_libtype  $LIBS"
       cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +if { (eval echo configure:3308: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
         rm -rf conftest*
         eval "ac_cv_lib_$ac_lib_var=yes"
       else
      @@ -1357,13 +3319,13 @@
       fi
       if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
         echo "$ac_t""yes" 1>&6
      -    ac_tr_lib=HAVE_LIB`echo panel | sed -e 's/[^a-zA-Z0-9_]/_/g' \
      +    ac_tr_lib=HAVE_LIB`echo panel$cf_cv_libtype | sed -e 's/[^a-zA-Z0-9_]/_/g' \
           -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
         cat >> confdefs.h <&6
      @@ -1371,12 +3333,12 @@
       
       
       echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
      -echo "configure:1375: checking return type of signal handlers" >&5
      +echo "configure:3337: checking return type of signal handlers" >&5
       if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
         cat > conftest.$ac_ext <
       #include 
      @@ -1393,7 +3355,7 @@
       int i;
       ; return 0; }
       EOF
      -if { (eval echo configure:1397: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
      +if { (eval echo configure:3359: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
         rm -rf conftest*
         ac_cv_type_signal=void
       else
      @@ -1412,93 +3374,13 @@
       
       
       
      -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
      -echo "configure:1417: checking how to run the C preprocessor" >&5
      -# On Suns, sometimes $CPP names a directory.
      -if test -n "$CPP" && test -d "$CPP"; then
      -  CPP=
      -fi
      -if test -z "$CPP"; then
      -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
      -  echo $ac_n "(cached) $ac_c" 1>&6
      -else
      -    # This must be in double quotes, not single quotes, because CPP may get
      -  # substituted into the Makefile and "${CC-cc}" will confuse make.
      -  CPP="${CC-cc} -E"
      -  # On the NeXT, cc -E runs the code through the compiler's parser,
      -  # not just through cpp.
      -  cat > conftest.$ac_ext <
      -Syntax Error
      -EOF
      -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
      -{ (eval echo configure:1438: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
      -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
      -if test -z "$ac_err"; then
      -  :
      -else
      -  echo "$ac_err" >&5
      -  echo "configure: failed program was:" >&5
      -  cat conftest.$ac_ext >&5
      -  rm -rf conftest*
      -  CPP="${CC-cc} -E -traditional-cpp"
      -  cat > conftest.$ac_ext <
      -Syntax Error
      -EOF
      -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
      -{ (eval echo configure:1455: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
      -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
      -if test -z "$ac_err"; then
      -  :
      -else
      -  echo "$ac_err" >&5
      -  echo "configure: failed program was:" >&5
      -  cat conftest.$ac_ext >&5
      -  rm -rf conftest*
      -  CPP="${CC-cc} -nologo -E"
      -  cat > conftest.$ac_ext <
      -Syntax Error
      -EOF
      -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
      -{ (eval echo configure:1472: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
      -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
      -if test -z "$ac_err"; then
      -  :
      -else
      -  echo "$ac_err" >&5
      -  echo "configure: failed program was:" >&5
      -  cat conftest.$ac_ext >&5
      -  rm -rf conftest*
      -  CPP=/lib/cpp
      -fi
      -rm -f conftest*
      -fi
      -rm -f conftest*
      -fi
      -rm -f conftest*
      -  ac_cv_prog_CPP="$CPP"
      -fi
      -  CPP="$ac_cv_prog_CPP"
      -else
      -  ac_cv_prog_CPP="$CPP"
      -fi
      -echo "$ac_t""$CPP" 1>&6
      -
       echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
      -echo "configure:1497: checking for ANSI C header files" >&5
      +echo "configure:3379: checking for ANSI C header files" >&5
       if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
         cat > conftest.$ac_ext <
       #include 
      @@ -1506,7 +3388,7 @@
       #include 
       EOF
       ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
      -{ (eval echo configure:1510: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
      +{ (eval echo configure:3392: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
       ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
       if test -z "$ac_err"; then
         rm -rf conftest*
      @@ -1523,7 +3405,7 @@
       if test $ac_cv_header_stdc = yes; then
         # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
       cat > conftest.$ac_ext <
       EOF
      @@ -1541,7 +3423,7 @@
       if test $ac_cv_header_stdc = yes; then
         # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
       cat > conftest.$ac_ext <
       EOF
      @@ -1562,7 +3444,7 @@
         :
       else
         cat > conftest.$ac_ext <
       #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
      @@ -1573,7 +3455,7 @@
       exit (0); }
       
       EOF
      -if { (eval echo configure:1577: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
      +if { (eval echo configure:3459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
       then
         :
       else
      @@ -1597,12 +3479,12 @@
       fi
       
       echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
      -echo "configure:1601: checking whether time.h and sys/time.h may both be included" >&5
      +echo "configure:3483: checking whether time.h and sys/time.h may both be included" >&5
       if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
         cat > conftest.$ac_ext <
       #include 
      @@ -1611,7 +3493,7 @@
       struct tm *tp;
       ; return 0; }
       EOF
      -if { (eval echo configure:1615: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
      +if { (eval echo configure:3497: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
         rm -rf conftest*
         ac_cv_header_time=yes
       else
      @@ -1648,17 +3530,17 @@
       do
       ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
       echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
      -echo "configure:1652: checking for $ac_hdr" >&5
      +echo "configure:3534: checking for $ac_hdr" >&5
       if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
         cat > conftest.$ac_ext <
       EOF
       ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
      -{ (eval echo configure:1662: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
      +{ (eval echo configure:3544: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
       ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
       if test -z "$ac_err"; then
         rm -rf conftest*
      @@ -1691,19 +3573,21 @@
       napms \
       resize_term \
       resizeterm \
      +slk_color \
       strdup \
       use_default_colors \
       vsscanf \
      +wchgat \
       wresize \
       
       do
       echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
      -echo "configure:1702: checking for $ac_func" >&5
      +echo "configure:3586: checking for $ac_func" >&5
       if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
         cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +if { (eval echo configure:3614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
         rm -rf conftest*
         eval "ac_cv_func_$ac_func=yes"
       else
      @@ -1751,8 +3635,85 @@
       done
       
       
      +cat > conftest.$ac_ext <
      +int main() {
      +
      +	(void) assume_default_colors (0, 0);
      +	(void) curses_version ();
      +	(void) define_key (0, 0);
      +	(void) is_term_resized (0, 0);
      +	(void) key_defined (0);
      +	(void) keybound (0, 0);
      +	(void) keyok (0, 0);
      +	(void) resize_term (0, 0);
      +	(void) resizeterm (0, 0);
      +	(void) use_default_colors ();
      +	(void) use_extended_names (0);
      +	(void) wresize (0, 0, 0);
      +	
      +; return 0; }
      +EOF
      +if { (eval echo configure:3661: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +  rm -rf conftest*
      +  cat >> confdefs.h <<\EOF
      +#define NCURSES_EXT_FUNCS 1
      +EOF
      +
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +fi
      +rm -f conftest*
      +
      +
      +echo $ac_n "checking if sys/time.h works with sys/select.h""... $ac_c" 1>&6
      +echo "configure:3675: checking if sys/time.h works with sys/select.h" >&5
      +if eval "test \"`echo '$''{'cf_cv_sys_time_select'+set}'`\" = set"; then
      +  echo $ac_n "(cached) $ac_c" 1>&6
      +else
      +  
      +cat > conftest.$ac_ext <
      +#ifdef HAVE_SYS_TIME_H
      +#include 
      +#endif
      +#ifdef HAVE_SYS_SELECT_H
      +#include 
      +#endif
      +
      +int main() {
      +
      +; return 0; }
      +EOF
      +if { (eval echo configure:3696: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
      +  rm -rf conftest*
      +  cf_cv_sys_time_select=yes
      +else
      +  echo "configure: failed program was:" >&5
      +  cat conftest.$ac_ext >&5
      +  rm -rf conftest*
      +  cf_cv_sys_time_select=no
      +fi
      +rm -f conftest*
      +     
      +fi
      +
      +echo "$ac_t""$cf_cv_sys_time_select" 1>&6
      +test "$cf_cv_sys_time_select" = yes && cat >> confdefs.h <<\EOF
      +#define HAVE_SYS_TIME_SELECT 1
      +EOF
      +
      +
      +
       echo $ac_n "checking for function curses_version""... $ac_c" 1>&6
      -echo "configure:1756: checking for function curses_version" >&5
      +echo "configure:3717: checking for function curses_version" >&5
       if eval "test \"`echo '$''{'cf_cv_func_curses_version'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
      @@ -1761,10 +3722,10 @@
         cf_cv_func_curses_version=unknown
       else
         cat > conftest.$ac_ext <
      +#include <${cf_cv_ncurses_header-curses.h}>
       int main()
       {
       	char temp[1024];
      @@ -1773,7 +3734,7 @@
       }
       
       EOF
      -if { (eval echo configure:1777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
      +if { (eval echo configure:3738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
       then
         cf_cv_func_curses_version=yes
       
      @@ -1796,8 +3757,9 @@
       EOF
       
       
      +
       echo $ac_n "checking for alternate character set array""... $ac_c" 1>&6
      -echo "configure:1801: checking for alternate character set array" >&5
      +echo "configure:3763: checking for alternate character set array" >&5
       if eval "test \"`echo '$''{'cf_cv_curses_acs_map'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
      @@ -1806,10 +3768,10 @@
       for name in acs_map _acs_map __acs_map _nc_acs_map
       do
       cat > conftest.$ac_ext <
      +#include <${cf_cv_ncurses_header-curses.h}>
       
       int main() {
       
      @@ -1817,7 +3779,7 @@
       
       ; return 0; }
       EOF
      -if { (eval echo configure:1821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +if { (eval echo configure:3783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
         rm -rf conftest*
         cf_cv_curses_acs_map=$name; break
       else
      @@ -1836,69 +3798,60 @@
       EOF
       
       
      +
       echo $ac_n "checking for wide alternate character set array""... $ac_c" 1>&6
      -echo "configure:1841: checking for wide alternate character set array" >&5
      +echo "configure:3804: checking for wide alternate character set array" >&5
       if eval "test \"`echo '$''{'cf_cv_curses_wacs_map'+set}'`\" = set"; then
         echo $ac_n "(cached) $ac_c" 1>&6
       else
         
      -cf_cv_curses_wacs_map=unknown
      -for name in wacs_map _wacs_map __wacs_map _nc_wacs
      -do
      -cat > conftest.$ac_ext < conftest.$ac_ext <
      -
      +#include <${cf_cv_ncurses_header-curses.h}>
       int main() {
      -
      -$name['k'] = *WACS_PLUS	
      -
      +$name['k'] = *WACS_PLUS
       ; return 0; }
       EOF
      -if { (eval echo configure:1864: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
      +if { (eval echo configure:3824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
         rm -rf conftest*
      -  cf_cv_curses_wacs_map=$name; break
      +  cf_cv_curses_wacs_map=$name
      +	 break
       else
         echo "configure: failed program was:" >&5
         cat conftest.$ac_ext >&5
       fi
       rm -f conftest*
      -done
      -
      +	done
       fi
       
       echo "$ac_t""$cf_cv_curses_wacs_map" 1>&6
       
      -test "$cf_cv_curses_wacs_map" != unknown && cat >> confdefs.h <&6
      -echo "configure:1887: checking for type attr_t in curses.h" >&5
      +echo $ac_n "checking for type attr_t in ${cf_cv_ncurses_header-curses.h}""... $ac_c" 1>&6
      +echo "configure:3840: checking for type attr_t in ${cf_cv_ncurses_header-curses.h}" >&5
       cat > conftest.$ac_ext <
      +#include <${cf_cv_ncurses_header-curses.h}>
       int main() {
       
       attr_t foo
       
       ; return 0; }
       EOF
      -if { (eval echo configure:1902: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
      +if { (eval echo configure:3855: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
         rm -rf conftest*
         cf_result=yes
       else
      @@ -1910,7 +3863,7 @@
       rm -f conftest*
       echo "$ac_t""$cf_result" 1>&6
       if test $cf_result = yes ; then
      -	 
      +	
       cf_result=`echo "have_type_attr_t" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
       
       	cat >> confdefs.h <&6
      -echo "configure:1930: checking for type mbstate_t in curses.h" >&5
      +echo $ac_n "checking for type mbstate_t in ${cf_cv_ncurses_header-curses.h}""... $ac_c" 1>&6
      +echo "configure:3883: checking for type mbstate_t in ${cf_cv_ncurses_header-curses.h}" >&5
       cat > conftest.$ac_ext <
      +#include <${cf_cv_ncurses_header-curses.h}>
       int main() {
       
       mbstate_t foo
       
       ; return 0; }
       EOF
      -if { (eval echo configure:1945: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
      +if { (eval echo configure:3898: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
         rm -rf conftest*
         cf_result=yes
       else
      @@ -1953,7 +3906,7 @@
       rm -f conftest*
       echo "$ac_t""$cf_result" 1>&6
       if test $cf_result = yes ; then
      -	 
      +	
       cf_result=`echo "have_type_mbstate_t" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
       
       	cat >> confdefs.h <&6
      -echo "configure:1974: checking if sys/time.h works with sys/select.h" >&5
      -if eval "test \"`echo '$''{'cf_cv_sys_time_select'+set}'`\" = set"; then
      -  echo $ac_n "(cached) $ac_c" 1>&6
      -else
      -  
      -cat > conftest.$ac_ext <
      -#ifdef HAVE_SYS_TIME_H
      -#include 
      -#endif
      -#ifdef HAVE_SYS_SELECT_H
      -#include 
      -#endif
      -
      -int main() {
      -
      -; return 0; }
      -EOF
      -if { (eval echo configure:1995: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
      -  rm -rf conftest*
      -  cf_cv_sys_time_select=yes
      -else
      -  echo "configure: failed program was:" >&5
      -  cat conftest.$ac_ext >&5
      -  rm -rf conftest*
      -  cf_cv_sys_time_select=no
      -fi
      -rm -f conftest*
      -     
      -fi
      -
      -echo "$ac_t""$cf_cv_sys_time_select" 1>&6
      -test "$cf_cv_sys_time_select" = yes && cat >> confdefs.h <<\EOF
      -#define HAVE_SYS_TIME_SELECT 1
      -EOF
      -
      -
      -
       trap '' 1 2 15
       cat > confcache <<\EOF
       # This file is a shell script that caches the results of configure
      @@ -2101,7 +4012,7 @@
           echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
           exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
         -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
      -    echo "$CONFIG_STATUS generated by autoconf version 2.13.20000819"
      +    echo "$CONFIG_STATUS generated by autoconf version 2.13.20020210"
           exit 0 ;;
         -help | --help | --hel | --he | --h)
           echo "\$ac_cs_usage"; exit 0 ;;
      @@ -2143,7 +4054,13 @@
       s%@oldincludedir@%$oldincludedir%g
       s%@infodir@%$infodir%g
       s%@mandir@%$mandir%g
      +s%@host@%$host%g
      +s%@host_alias@%$host_alias%g
      +s%@host_cpu@%$host_cpu%g
      +s%@host_vendor@%$host_vendor%g
      +s%@host_os@%$host_os%g
       s%@CC@%$CC%g
      +s%@CPP@%$CPP%g
       s%@CC_G_OPT@%$CC_G_OPT%g
       s%@CC_SHARED_OPTS@%$CC_SHARED_OPTS%g
       s%@DFT_DEP_SUFFIX@%$DFT_DEP_SUFFIX%g
      @@ -2168,7 +4085,6 @@
       s%@TEST_DEPS@%$TEST_DEPS%g
       s%@cf_cv_abi_version@%$cf_cv_abi_version%g
       s%@cf_cv_rel_version@%$cf_cv_rel_version%g
      -s%@CPP@%$CPP%g
       
       CEOF
       EOF
      @@ -2379,11 +4295,9 @@
       # work consistently for different make-programs (the '\$(MODEL)/' confuses
       # some, and the '\$x' confuses others).
       TEST_EOF
      -LIST=`make echo_tests`
      -LAST=`make echo_suffix`
      -for n in $LIST
      +LIST=`sed -e 's/[ 	].*//' -e '/^[#@]/d' $srcdir/modules`
      +for N in $LIST
       do
      -	N=`echo $n | sed -e s/${LAST}\$//`
       	cat >>Makefile <],[putwc(0,0);],
      -	[cf_cv_libutf8=yes],
      -	[cf_cv_libutf8=no])
      -	LIBS="$cf_save_LIBS"
      -])
      -
      -if test "$cf_cv_libutf8" = yes ; then
      -	AC_DEFINE(HAVE_LIBUTF8_H)
      -	LIBS="-lutf8 $LIBS"
      -fi
      -])dnl
      -
      -dnl ---------------------------------------------------------------------------
       dnl NcursesW, installed in conventional location
       AC_ARG_WITH(ncursesw,
       	[  --with-ncursesw         use wide ncurses-libraries (installed)],
      -	[
      -	 AC_DEFINE(_GNU_SOURCE)
      -	 AC_DEFINE(_XOPEN_SOURCE_EXTENDED)
      -	 AC_CHECK_FUNC(initscr,,[
      -	 AC_CHECK_LIB(gpm,Gpm_Open)
      -	 LIB_NAME=ncursesw
      -	 AC_CHECK_FUNC(putwc,,[CF_LIBUTF8])
      -	 for p in $HOME /usr/local /usr
      -	 do
      -	 	if test -f $p/include/ncursesw/curses.h
      -		then
      -			CPPFLAGS="$CPPFLAGS -I$p/include/ncursesw"
      -			test $p != /usr && CPPFLAGS="$CPPFLAGS -I$p/include"
      -			test $p != /usr && LIBS="-L$p/lib $LIBS"
      -			break
      -		elif test $p != /usr
      -		then
      -			if test -f $p/include/curses.h
      -			then
      -				CPPFLAGS="$CPPFLAGS -I$p/include"
      -				LIBS="-L$p/lib $LIBS"
      -				break
      -			fi
      -		fi
      -	 done
      -	],[test -d /usr/ccs/lib && LIBS="-L/usr/ccs/lib $LIBS"])])
      +	[cf_cv_screen=ncursesw])
       
       dnl Ncurses, installed in conventional location
       AC_ARG_WITH(ncurses,
       	[  --with-ncurses          use ncurses-libraries (installed)],
      -	[AC_CHECK_FUNC(initscr,,[
      -	 AC_CHECK_LIB(gpm,Gpm_Open)
      -	 LIB_NAME=ncurses
      -	 for p in $HOME /usr/local /usr
      -	 do
      -	 	if test -f $p/include/ncurses/curses.h
      -		then
      -			CPPFLAGS="$CPPFLAGS -I$p/include/ncurses"
      -			test $p != /usr && CPPFLAGS="$CPPFLAGS -I$p/include"
      -			test $p != /usr && LIBS="-L$p/lib $LIBS"
      -			break
      -		elif test $p != /usr
      -		then
      -			if test -f $p/include/curses.h
      -			then
      -				CPPFLAGS="$CPPFLAGS -I$p/include"
      -				LIBS="-L$p/lib $LIBS"
      -				break
      -			fi
      -		fi
      -	 done
      -	],[test -d /usr/ccs/lib && LIBS="-L/usr/ccs/lib $LIBS"])])
      +	[cf_cv_screen=ncurses])
      +
      +case $cf_cv_screen in
      +curses)
      +	CF_CURSES_CPPFLAGS
      +	CF_NCURSES_VERSION
      +	CF_CURSES_LIBS
      +	;;
      +ncurses)
      +	CF_NCURSES_CPPFLAGS
      +	CF_NCURSES_LIBS
      +	LIB_NAME=ncurses
      +	;;
      +ncursesw)
      +	cf_cv_libtype=w
      +	CF_UTF8_LIB
      +	CF_NCURSES_CPPFLAGS(ncursesw)
      +	CF_NCURSES_LIBS(ncursesw)
      +	LIB_NAME=ncursesw
      +	;;
      +esac
       
       dnl If we've not specified a library, assume we're using sysvr4 libraries
       dnl installed conventionally (e.g., SunOS 5.x - solaris).
       
       dnl Autoconf builds up the $LIBS in reverse order
       
      -AC_CHECK_FUNC(initscr,,[
      -AC_CHECK_LIB($LIB_NAME,initscr)])
      -AC_CHECK_LIB(form,form_driver)
      -AC_CHECK_LIB(menu,menu_driver)
      -AC_CHECK_LIB(panel,new_panel)
      +AC_CHECK_LIB(form$cf_cv_libtype,form_driver)
      +AC_CHECK_LIB(menu$cf_cv_libtype,menu_driver)
      +AC_CHECK_LIB(panel$cf_cv_libtype,new_panel)
       
       AC_TYPE_SIGNAL
       
      @@ -190,117 +152,37 @@
       napms \
       resize_term \
       resizeterm \
      +slk_color \
       strdup \
       use_default_colors \
       vsscanf \
      +wchgat \
       wresize \
       )
       
      -dnl ---------------------------------------------------------------------------
      -dnl Solaris has a data item 'curses_version', which confuses AC_CHECK_FUNCS.
      -dnl It's a character string "SVR4", not documented.
      -AC_CACHE_CHECK(for function curses_version, cf_cv_func_curses_version,[
      -AC_TRY_RUN([
      -#include 
      -int main()
      -{
      -	char temp[1024];
      -	sprintf(temp, "%s\n", curses_version());
      -	exit(0);
      -}]
      -,[cf_cv_func_curses_version=yes]
      -,[cf_cv_func_curses_version=no]
      -,[cf_cv_func_curses_version=unknown])
      -rm -f core])
      -test "$cf_cv_func_curses_version" = yes && AC_DEFINE(HAVE_CURSES_VERSION)
      -
      -dnl ---------------------------------------------------------------------------
      -dnl Check for likely values of acs_map[]:
      -AC_CACHE_CHECK(for alternate character set array, cf_cv_curses_acs_map,[
      -cf_cv_curses_acs_map=unknown
      -for name in acs_map _acs_map __acs_map _nc_acs_map
      -do
       AC_TRY_LINK([
      -#include 
      -],[
      -$name['k'] = ACS_PLUS
      -],[cf_cv_curses_acs_map=$name; break])
      -done
      -])
      -
      -test "$cf_cv_curses_acs_map" != unknown && AC_DEFINE_UNQUOTED(CURSES_ACS_ARRAY,$cf_cv_curses_acs_map)
      -
      -dnl ---------------------------------------------------------------------------
      -dnl Check for likely values of wacs_map[]:
      -AC_CACHE_CHECK(for wide alternate character set array, cf_cv_curses_wacs_map,[
      -cf_cv_curses_wacs_map=unknown
      -for name in wacs_map _wacs_map __wacs_map _nc_wacs
      -do
      -AC_TRY_LINK([
      -#ifndef _XOPEN_SOURCE_EXTENDED
      -#define _XOPEN_SOURCE_EXTENDED
      -#endif
      -#include 
      -],[
      -$name['k'] = *WACS_PLUS	
      -],[cf_cv_curses_wacs_map=$name; break])
      -done
      -])
      -
      -test "$cf_cv_curses_wacs_map" != unknown && AC_DEFINE_UNQUOTED(CURSES_WACS_ARRAY,$cf_cv_curses_wacs_map)
      -
      -dnl --------------------------------------------------------------------------- 
      -dnl Make an uppercase version of a variable 
      -dnl $1=uppercase($2) 
      -AC_DEFUN([CF_UPPER], 
      -[ 
      -$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
      -])dnl 
      -
      -dnl ---------------------------------------------------------------------------
      -dnl Check if curses.h defines the given type
      -AC_DEFUN([CF_CURSES_TYPE],
      +#include <${cf_cv_ncurses_header-curses.h}>],
       [
      -AC_MSG_CHECKING(for type $1 in curses.h)
      -AC_TRY_COMPILE([
      -#ifndef _XOPEN_SOURCE_EXTENDED
      -#define _XOPEN_SOURCE_EXTENDED
      -#endif
      -#include ],[
      -$1 foo
      -],cf_result=yes,cf_result=no)
      -AC_MSG_RESULT($cf_result)
      -if test $cf_result = yes ; then
      -	CF_UPPER(cf_result,have_type_$1)
      -	AC_DEFINE_UNQUOTED($cf_result)
      -else
      -	AC_DEFINE_UNQUOTED($1,$2)
      -fi
      -])dnl
      -
      -CF_CURSES_TYPE(attr_t,long)
      -CF_CURSES_TYPE(mbstate_t,long)
      -
      -dnl ---------------------------------------------------------------------------
      -dnl Check if we can include  with ; this breaks on
      -dnl older SCO configurations.
      -dnl [CF_SYS_TIME_SELECT]
      +	(void) assume_default_colors (0, 0);
      +	(void) curses_version ();
      +	(void) define_key (0, 0);
      +	(void) is_term_resized (0, 0);
      +	(void) key_defined (0);
      +	(void) keybound (0, 0);
      +	(void) keyok (0, 0);
      +	(void) resize_term (0, 0);
      +	(void) resizeterm (0, 0);
      +	(void) use_default_colors ();
      +	(void) use_extended_names (0);
      +	(void) wresize (0, 0, 0);
      +	],[AC_DEFINE(NCURSES_EXT_FUNCS)])
       
      -AC_MSG_CHECKING(if sys/time.h works with sys/select.h)
      -AC_CACHE_VAL(cf_cv_sys_time_select,[
      -AC_TRY_COMPILE([
      -#include 
      -#ifdef HAVE_SYS_TIME_H
      -#include 
      -#endif
      -#ifdef HAVE_SYS_SELECT_H
      -#include 
      -#endif
      -],[],[cf_cv_sys_time_select=yes],
      -     [cf_cv_sys_time_select=no])
      -     ])
      -AC_MSG_RESULT($cf_cv_sys_time_select)
      -test "$cf_cv_sys_time_select" = yes && AC_DEFINE(HAVE_SYS_TIME_SELECT)
      +CF_SYS_TIME_SELECT
      +CF_FUNC_CURSES_VERSION
      +CF_CURSES_ACS_MAP
      +CF_CURSES_WACS_MAP
      +CF_CURSES_CHECK_TYPE(attr_t,long)
      +CF_CURSES_CHECK_TYPE(mbstate_t,long)
       
       dnl ---------------------------------------------------------------------------
       
      @@ -311,11 +193,9 @@
       # work consistently for different make-programs (the '\$(MODEL)/' confuses
       # some, and the '\$x' confuses others).
       TEST_EOF
      -LIST=`make echo_tests`
      -LAST=`make echo_suffix`
      -for n in $LIST
      +LIST=`sed -e 's/[[ 	]].*//' -e '/^[[#@]]/d' $srcdir/modules`
      +for N in $LIST
       do
      -	N=`echo $n | sed -e s/${LAST}\$//`
       	cat >>Makefile <
      +
      +#if defined(NCURSES_VERSION) && NCURSES_EXT_FUNCS
      +
      +#include 
      +
      +#define MY_LOGFILE "demo_defkey.log"
      +
      +/*
      + * Log the most recently-written line to our logfile
      + */
      +static void
      +log_last_line(WINDOW *win)
      +{
      +    FILE *fp;
      +    int y, x, n;
      +    char temp[256];
      +
      +    if ((fp = fopen(MY_LOGFILE, "a")) != 0) {
      +	getyx(win, y, x);
      +	wmove(win, y - 1, 0);
      +	n = winnstr(win, temp, sizeof(temp));
      +	while (n-- > 0) {
      +	    if (isspace(temp[n]))
      +		temp[n] = '\0';
      +	    else
      +		break;
      +	}
      +	wmove(win, y, x);
      +	fprintf(fp, "%s\n", temp);
      +	fclose(fp);
      +    }
      +}
      +
      +/*
      + * Convert a character to visible form.
      + */
      +static char *
      +visichar(int ch)
      +{
      +    static char temp[10];
      +
      +    ch = UChar(ch);
      +    if (ch == '\\') {
      +	strcpy(temp, "\\\\");
      +    } else if (ch == '\033') {
      +	strcpy(temp, "\\E");
      +    } else if (ch < ' ') {
      +	sprintf(temp, "\\%03o", ch);
      +    } else if (ch >= 127) {
      +	sprintf(temp, "\\%03o", ch);
      +    } else {
      +	sprintf(temp, "%c", ch);
      +    }
      +    return temp;
      +}
      +
      +/*
      + * Convert a string to visible form.
      + */
      +static char *
      +visible(const char *string)
      +{
      +    char *result = 0;
      +    unsigned need = 1;
      +    int pass;
      +    int n;
      +
      +    if (string != 0 && *string != '\0') {
      +	for (pass = 0; pass < 2; ++pass) {
      +	    for (n = 0; string[n] != '\0'; ++n) {
      +		char temp[80];
      +		strcpy(temp, visichar(string[n]));
      +		if (pass)
      +		    strcat(result, temp);
      +		else
      +		    need += strlen(temp);
      +	    }
      +	    if (!pass)
      +		result = calloc(need, 1);
      +	}
      +    } else {
      +	result = calloc(1, 1);
      +    }
      +    return result;
      +}
      +
      +static void
      +really_define_key(WINDOW *win, const char *new_string, int code)
      +{
      +    int rc;
      +    const char *code_name = keyname(code);
      +    char *old_string;
      +    char *vis_string = 0;
      +    char temp[80];
      +
      +    if (code_name == 0) {
      +	sprintf(temp, "Keycode %d", code);
      +	code_name = temp;
      +    }
      +
      +    if ((old_string = keybound(code, 0)) != 0) {
      +	wprintw(win, "%s is %s\n",
      +		code_name,
      +		vis_string = visible(old_string));
      +    } else {
      +	wprintw(win, "%s is not bound\n",
      +		code_name);
      +    }
      +    log_last_line(win);
      +    if (vis_string != 0) {
      +	free(vis_string);
      +	vis_string = 0;
      +    }
      +
      +    vis_string = visible(new_string);
      +    if ((rc = key_defined(new_string)) > 0) {
      +	wprintw(win, "%s was bound to %s\n", vis_string, keyname(rc));
      +	log_last_line(win);
      +    } else if (new_string != 0 && rc < 0) {
      +	wprintw(win, "%s conflicts with longer strings\n", vis_string);
      +	log_last_line(win);
      +    }
      +    rc = define_key(new_string, code);
      +    if (rc == ERR) {
      +	wprintw(win, "%s unchanged\n", code_name);
      +	log_last_line(win);
      +    } else if (new_string != 0) {
      +	wprintw(win, "%s is now bound to %s\n",
      +		vis_string,
      +		code_name);
      +	log_last_line(win);
      +    } else if (old_string != 0) {
      +	wprintw(win, "%s deleted\n", code_name);
      +	log_last_line(win);
      +    }
      +    if (vis_string != 0 && *vis_string != 0)
      +	free(vis_string);
      +    if (old_string != 0)
      +	free(old_string);
      +}
      +
      +static void
      +duplicate(WINDOW *win, NCURSES_CONST char *name, int code)
      +{
      +    char *value = tigetstr(name);
      +
      +    if (value != 0) {
      +	const char *prefix = 0;
      +	char temp[BUFSIZ];
      +
      +	if (!strncmp(value, "\033[", 2)) {
      +	    prefix = "\033O";
      +	} else if (!strncmp(value, "\033O", 2)) {
      +	    prefix = "\033[";
      +	}
      +	if (prefix != 0) {
      +	    sprintf(temp, "%s%s", prefix, value + 2);
      +	    really_define_key(win, temp, code);
      +	}
      +    }
      +}
      +
      +static void
      +redefine(WINDOW *win, char *string, int code)
      +{
      +    really_define_key(win, string, code);
      +}
      +
      +static void
      +remove_definition(WINDOW *win, int code)
      +{
      +    really_define_key(win, 0, code);
      +}
      +
      +int
      +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
      +{
      +    char *fkeys[12];
      +    int n;
      +    int ch;
      +    WINDOW *win;
      +
      +    unlink(MY_LOGFILE);
      +
      +    initscr();
      +    (void) cbreak();		/* take input chars one at a time, no wait for \n */
      +    (void) noecho();		/* don't echo input */
      +
      +    printw("This demo is best on xterm: it reverses the definitions for f1-f12,\n");
      +    printw("adds duplicate definitions for cursor application and normal modes,\n");
      +    printw("and removes any definitions for the mini keypad.  Type any of those:\n");
      +    refresh();
      +
      +    win = newwin(LINES - 3, COLS, 3, 0);
      +    scrollok(win, TRUE);
      +    keypad(win, TRUE);
      +    wmove(win, 0, 0);
      +
      +    /* we do the define_key() calls after keypad(), since the first call to
      +     * keypad() initializes the corresponding data.
      +     */
      +    for (n = 0; n < 12; ++n) {
      +	char name[10];
      +	sprintf(name, "kf%d", n + 1);
      +	fkeys[n] = tigetstr(name);
      +    }
      +    for (n = 0; n < 12; ++n) {
      +	redefine(win, fkeys[11 - n], KEY_F(n + 1));
      +    }
      +
      +    duplicate(win, "kcub1", KEY_LEFT);
      +    duplicate(win, "kcuu1", KEY_UP);
      +    duplicate(win, "kcud1", KEY_DOWN);
      +    duplicate(win, "kcuf1", KEY_RIGHT);
      +
      +    remove_definition(win, KEY_A1);
      +    remove_definition(win, KEY_A3);
      +    remove_definition(win, KEY_B2);
      +    remove_definition(win, KEY_C1);
      +    remove_definition(win, KEY_C3);
      +
      +    really_define_key(win, "\033O", 1023);
      +
      +    while ((ch = wgetch(win)) != ERR) {
      +	const char *name = keyname(ch);
      +	wprintw(win, "Keycode %d, name %s\n",
      +		ch,
      +		name != 0 ? name : "");
      +	log_last_line(win);
      +	wclrtoeol(win);
      +    }
      +    endwin();
      +    return EXIT_SUCCESS;
      +}
      +#else
      +int
      +main(void)
      +{
      +    printf("This program requires the ncurses library\n");
      +    ExitProgram(EXIT_FAILURE);
      +}
      +#endif
      diff -urNd -urNd ncurses-5.3/test/demo_forms.c ncurses-5.3.20030906.orig/test/demo_forms.c
      --- ncurses-5.3/test/demo_forms.c	Wed Dec 31 18:00:00 1969
      +++ ncurses-5.3.20030906.orig/test/demo_forms.c	Tue May 13 20:08:23 2003
      @@ -0,0 +1,295 @@
      +/*
      + * $Id: demo_forms.c,v 1.3 2003/05/03 22:08:20 tom Exp $
      + *
      + * Demonstrate a variety of functions from the form library.
      + * Thomas Dickey - 2003/4/26
      + */
      +/*
      +TYPE_ALNUM			-
      +TYPE_ENUM			-
      +TYPE_INTEGER			-
      +TYPE_IPV4			-
      +TYPE_NUMERIC			-
      +TYPE_REGEXP			-
      +data_ahead			-
      +data_behind			-
      +dup_field			-
      +dynamic_field_info		-
      +field_arg			-
      +field_back			-
      +field_count			-
      +field_fore			-
      +field_init			-
      +field_just			-
      +field_opts_on			-
      +field_pad			-
      +field_status			-
      +field_term			-
      +field_type			-
      +form_init			-
      +form_opts			-
      +form_opts_off			-
      +form_opts_on			-
      +form_page			-
      +form_request_by_name		-
      +form_term			-
      +form_userptr			-
      +free_fieldtype			-
      +link_field			-
      +link_fieldtype			-
      +move_field			-
      +new_page			-
      +pos_form_cursor			-
      +set_current_field		-
      +set_field_fore			-
      +set_field_init			-
      +set_field_pad			-
      +set_field_status		-
      +set_field_term			-
      +set_fieldtype_arg		-
      +set_fieldtype_choice		-
      +set_form_fields			-
      +set_form_init			-
      +set_form_opts			-
      +set_form_page			-
      +set_form_term			-
      +set_form_userptr		-
      +set_max_field			-
      +*/
      +
      +#include 
      +
      +#if USE_LIBFORM
      +
      +#include 
      +
      +static FIELD *
      +make_label(int frow, int fcol, NCURSES_CONST char *label)
      +{
      +    FIELD *f = new_field(1, strlen(label), frow, fcol, 0, 0);
      +
      +    if (f) {
      +	set_field_buffer(f, 0, label);
      +	set_field_opts(f, field_opts(f) & ~O_ACTIVE);
      +    }
      +    return (f);
      +}
      +
      +/*
      + * Define each field with an extra one, for reflecting "actual" text.
      + */
      +static FIELD *
      +make_field(int frow, int fcol, int rows, int cols)
      +{
      +    FIELD *f = new_field(rows, cols, frow, fcol, 0, 1);
      +
      +    if (f) {
      +	set_field_back(f, A_UNDERLINE);
      +	set_field_userptr(f, (void *) 0);
      +    }
      +    return (f);
      +}
      +
      +static void
      +display_form(FORM * f)
      +{
      +    WINDOW *w;
      +    int rows, cols;
      +
      +    scale_form(f, &rows, &cols);
      +
      +    /*
      +     * Put the form at the upper-left corner of the display, with just a box
      +     * around it.
      +     */
      +    if ((w = newwin(rows + 2, cols + 4, 0, 0)) != (WINDOW *) 0) {
      +	set_form_win(f, w);
      +	set_form_sub(f, derwin(w, rows, cols, 1, 2));
      +	box(w, 0, 0);
      +	keypad(w, TRUE);
      +    }
      +
      +    if (post_form(f) != E_OK)
      +	wrefresh(w);
      +}
      +
      +static void
      +erase_form(FORM * f)
      +{
      +    WINDOW *w = form_win(f);
      +    WINDOW *s = form_sub(f);
      +
      +    unpost_form(f);
      +    werase(w);
      +    wrefresh(w);
      +    delwin(s);
      +    delwin(w);
      +}
      +
      +static int
      +my_form_driver(FORM * form, int c)
      +{
      +    switch (c) {
      +    case EDIT_FIELD('q'):
      +	if (form_driver(form, REQ_VALIDATION) == E_OK)
      +	    return (TRUE);
      +	break;
      +    case EDIT_FIELD('h'):
      +	help_edit_field();
      +	break;
      +    default:
      +	beep();
      +	break;
      +    }
      +    return (FALSE);
      +}
      +
      +static void
      +show_current_field(WINDOW *win, FORM * form)
      +{
      +    FIELD *field;
      +    FIELDTYPE *type;
      +    char *buffer;
      +    int nbuf;
      +
      +    if (has_colors()) {
      +	wbkgd(win, COLOR_PAIR(1));
      +    }
      +    werase(win);
      +    wprintw(win, "Cursor: %d,%d\n", form->currow, form->curcol);
      +    if ((field = current_field(form)) != 0) {
      +	wprintw(win, "Field %d:", field_index(field));
      +	if ((type = field_type(field)) != 0) {
      +	    if (type == TYPE_ALNUM)
      +		waddstr(win, "ALNUM");
      +	    else if (type == TYPE_ALPHA)
      +		waddstr(win, "ALPHA");
      +	    else if (type == TYPE_ENUM)
      +		waddstr(win, "ENUM");
      +	    else if (type == TYPE_INTEGER)
      +		waddstr(win, "INTEGER");
      +	    else if (type == TYPE_NUMERIC)
      +		waddstr(win, "NUMERIC");
      +	    else if (type == TYPE_REGEXP)
      +		waddstr(win, "REGEXP");
      +	    else
      +		waddstr(win, "other");
      +	}
      +	waddstr(win, "\n");
      +	for (nbuf = 0; nbuf <= 2; ++nbuf) {
      +	    if ((buffer = field_buffer(field, nbuf)) != 0) {
      +		wprintw(win, "buffer %d:", nbuf);
      +		wattrset(win, A_REVERSE);
      +		waddstr(win, buffer);
      +		wattroff(win, A_REVERSE);
      +		waddstr(win, "\n");
      +	    }
      +	}
      +    }
      +    wrefresh(win);
      +}
      +
      +static void
      +demo_forms(void)
      +{
      +    WINDOW *w;
      +    FORM *form;
      +    FIELD *f[100];
      +    int finished = 0, c;
      +    unsigned n = 0;
      +    int pg;
      +    WINDOW *also;
      +
      +    help_edit_field();
      +
      +    mvaddstr(4, 57, "Forms Entry Test");
      +
      +    refresh();
      +
      +    /* describe the form */
      +    for (pg = 0; pg < 3; ++pg) {
      +	char label[80];
      +	sprintf(label, "Sample Form Page %d", pg + 1);
      +	f[n++] = make_label(0, 15, label);
      +	set_new_page(f[n - 1], TRUE);
      +
      +	f[n++] = make_label(2, 0, "Last Name");
      +	f[n++] = make_field(3, 0, 1, 18);
      +	set_field_type(f[n - 1], TYPE_ALPHA, 1);
      +
      +	f[n++] = make_label(2, 20, "First Name");
      +	f[n++] = make_field(3, 20, 1, 12);
      +	set_field_type(f[n - 1], TYPE_ALPHA, 1);
      +
      +	f[n++] = make_label(2, 34, "Middle Name");
      +	f[n++] = make_field(3, 34, 1, 12);
      +	set_field_type(f[n - 1], TYPE_ALPHA, 1);
      +
      +	f[n++] = make_label(5, 0, "Comments");
      +	f[n++] = make_field(6, 0, 4, 46);
      +    }
      +
      +    f[n++] = (FIELD *) 0;
      +
      +    form = new_form(f);
      +
      +    display_form(form);
      +
      +    w = form_win(form);
      +    also = newwin(getmaxy(stdscr) - getmaxy(w), COLS, getmaxy(w), 0);
      +    show_current_field(also, form);
      +
      +    while (!finished) {
      +	switch (edit_field(form, &c)) {
      +	case E_OK:
      +	    break;
      +	case E_UNKNOWN_COMMAND:
      +	    finished = my_form_driver(form, c);
      +	    break;
      +	default:
      +	    beep();
      +	    break;
      +	}
      +	show_current_field(also, form);
      +    }
      +
      +    erase_form(form);
      +
      +    free_form(form);
      +    for (c = 0; f[c] != 0; c++)
      +	free_field(f[c]);
      +    noraw();
      +    nl();
      +}
      +
      +int
      +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
      +{
      +    initscr();
      +    cbreak();
      +    noecho();
      +    raw();
      +    nonl();			/* lets us read ^M's */
      +    intrflush(stdscr, FALSE);
      +    keypad(stdscr, TRUE);
      +
      +    if (has_colors()) {
      +	start_color();
      +	init_pair(1, COLOR_WHITE, COLOR_BLUE);
      +	bkgd(COLOR_PAIR(1));
      +	refresh();
      +    }
      +
      +    demo_forms();
      +
      +    endwin();
      +    return EXIT_SUCCESS;
      +}
      +#else
      +int
      +main(void)
      +{
      +    printf("This program requires the curses form library\n");
      +    ExitProgram(EXIT_FAILURE);
      +}
      +#endif
      diff -urNd -urNd ncurses-5.3/test/demo_keyok.c ncurses-5.3.20030906.orig/test/demo_keyok.c
      --- ncurses-5.3/test/demo_keyok.c	Wed Dec 31 18:00:00 1969
      +++ ncurses-5.3.20030906.orig/test/demo_keyok.c	Sun Jul 20 14:02:08 2003
      @@ -0,0 +1,55 @@
      +/*
      + * $Id: demo_keyok.c,v 1.3 2003/05/17 23:18:34 tom Exp $
      + *
      + * Demonstrate the keyok() function.
      + * Thomas Dickey - 2002/11/23
      + */
      +
      +#include 
      +
      +#if defined(NCURSES_VERSION) && NCURSES_EXT_FUNCS
      +int
      +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
      +{
      +    int lastch = ERR;
      +    int ch;
      +    WINDOW *win;
      +
      +    initscr();
      +    (void) cbreak();		/* take input chars one at a time, no wait for \n */
      +    (void) noecho();		/* don't echo input */
      +
      +    printw("Typing any function key will disable it, but typing it twice in\n");
      +    printw("a row will turn it back on (just for a demo).");
      +    refresh();
      +
      +    win = newwin(LINES - 2, COLS, 2, 0);
      +    scrollok(win, TRUE);
      +    keypad(win, TRUE);
      +    wmove(win, 0, 0);
      +
      +    while ((ch = wgetch(win)) != ERR) {
      +	const char *name = keyname(ch);
      +	wprintw(win, "Keycode %d, name %s\n",
      +		ch,
      +		name != 0 ? name : "");
      +	wclrtoeol(win);
      +	wrefresh(win);
      +	if (ch >= KEY_MIN) {
      +	    keyok(ch, FALSE);
      +	    lastch = ch;
      +	} else if (lastch >= KEY_MIN) {
      +	    keyok(lastch, TRUE);
      +	}
      +    }
      +    endwin();
      +    return EXIT_SUCCESS;
      +}
      +#else
      +int
      +main(void)
      +{
      +    printf("This program requires the ncurses library\n");
      +    ExitProgram(EXIT_FAILURE);
      +}
      +#endif
      diff -urNd -urNd ncurses-5.3/test/demo_menus.c ncurses-5.3.20030906.orig/test/demo_menus.c
      --- ncurses-5.3/test/demo_menus.c	Wed Dec 31 18:00:00 1969
      +++ ncurses-5.3.20030906.orig/test/demo_menus.c	Tue May 13 20:08:23 2003
      @@ -0,0 +1,73 @@
      +/*
      + * $Id: demo_menus.c,v 1.1 2003/04/26 22:10:43 tom Exp $
      + *
      + * Demonstrate a variety of functions from the menu library.
      + * Thomas Dickey - 2003/4/26
      + */
      +/*
      +item_count			-
      +item_description		-
      +item_init			-
      +item_opts			-
      +item_opts_off			-
      +item_opts_on			-
      +item_term			-
      +item_userptr			-
      +item_visible			-
      +menu_back			-
      +menu_fore			-
      +menu_format			-
      +menu_grey			-
      +menu_init			-
      +menu_mark			-
      +menu_opts			-
      +menu_opts_on			-
      +menu_pad			-
      +menu_pattern			-
      +menu_request_by_name		-
      +menu_request_name		-
      +menu_spacing			-
      +menu_sub			-
      +menu_term			-
      +menu_userptr			-
      +set_current_item		-
      +set_item_init			-
      +set_item_opts			-
      +set_item_term			-
      +set_item_userptr		-
      +set_menu_back			-
      +set_menu_fore			-
      +set_menu_grey			-
      +set_menu_init			-
      +set_menu_items			-
      +set_menu_mark			-
      +set_menu_opts			-
      +set_menu_pad			-
      +set_menu_pattern		-
      +set_menu_spacing		-
      +set_menu_term			-
      +set_menu_userptr		-
      +set_top_row			-
      +top_row				-
      +*/
      +
      +#include 
      +
      +#if USE_LIBMENU
      +
      +#include 
      +
      +int
      +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
      +{
      +    printf("Not implemented - demo for menu library\n");
      +    return EXIT_SUCCESS;
      +}
      +#else
      +int
      +main(void)
      +{
      +    printf("This program requires the curses menu library\n");
      +    ExitProgram(EXIT_FAILURE);
      +}
      +#endif
      diff -urNd -urNd ncurses-5.3/test/demo_panels.c ncurses-5.3.20030906.orig/test/demo_panels.c
      --- ncurses-5.3/test/demo_panels.c	Wed Dec 31 18:00:00 1969
      +++ ncurses-5.3.20030906.orig/test/demo_panels.c	Tue May 13 20:08:23 2003
      @@ -0,0 +1,33 @@
      +/*
      + * $Id: demo_panels.c,v 1.1 2003/04/26 22:11:23 tom Exp $
      + *
      + * Demonstrate a variety of functions from the panel library.
      + * Thomas Dickey - 2003/4/26
      + */
      +/*
      +panel_above			-
      +panel_below			-
      +panel_hidden			-
      +replace_panel			-
      +*/
      +
      +#include 
      +
      +#if USE_LIBPANEL
      +
      +#include 
      +
      +int
      +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
      +{
      +    printf("Not implemented - demo for panel library\n");
      +    return EXIT_SUCCESS;
      +}
      +#else
      +int
      +main(void)
      +{
      +    printf("This program requires the curses panel library\n");
      +    ExitProgram(EXIT_FAILURE);
      +}
      +#endif
      diff -urNd -urNd ncurses-5.3/test/edit_field.c ncurses-5.3.20030906.orig/test/edit_field.c
      --- ncurses-5.3/test/edit_field.c	Wed Dec 31 18:00:00 1969
      +++ ncurses-5.3.20030906.orig/test/edit_field.c	Sun Jul 20 14:02:08 2003
      @@ -0,0 +1,402 @@
      +/*
      + * $Id: edit_field.c,v 1.7 2003/05/17 23:16:13 tom Exp $
      + *
      + * A wrapper for form_driver() which keeps track of the user's editing changes
      + * for each field, and makes the result available as a null-terminated string
      + * in field_buffer(field,1).
      + *
      + * Thomas Dickey - 2003/4/26.
      + */
      +
      +#include 
      +
      +#if USE_LIBFORM
      +
      +#include 
      +
      +#define MY_QUIT		EDIT_FIELD('q')
      +#define MY_INS_MODE	EDIT_FIELD('t')
      +
      +static struct {
      +    int code;
      +    int result;
      +    const char *help;
      +} commands[] = {
      +
      +    {
      +	CTRL('A'), REQ_NEXT_CHOICE, ""
      +    },
      +    {
      +	CTRL('B'), REQ_PREV_WORD, "go to previous word"
      +    },
      +    {
      +	CTRL('C'), REQ_CLR_EOL, "clear to end of line"
      +    },
      +    {
      +	CTRL('D'), REQ_DOWN_FIELD, "move downward to field"
      +    },
      +    {
      +	CTRL('E'), REQ_END_FIELD, "go to end of field"
      +    },
      +    {
      +	CTRL('F'), REQ_NEXT_PAGE, "go to next page"
      +    },
      +    {
      +	CTRL('G'), REQ_DEL_WORD, "delete current word"
      +    },
      +    {
      +	CTRL('H'), REQ_DEL_PREV, "delete previous character"
      +    },
      +    {
      +	CTRL('I'), REQ_INS_CHAR, "insert character"
      +    },
      +    {
      +	CTRL('K'), REQ_CLR_EOF, "clear to end of field"
      +    },
      +    {
      +	CTRL('L'), REQ_LEFT_FIELD, "go to field to left"
      +    },
      +    {
      +	CTRL('M'), REQ_NEW_LINE, "insert/overlay new line"
      +    },
      +    {
      +	CTRL('N'), REQ_NEXT_FIELD, "go to next field"
      +    },
      +    {
      +	CTRL('O'), REQ_INS_LINE, "insert blank line at cursor"
      +    },
      +    {
      +	CTRL('P'), REQ_PREV_FIELD, "go to previous field"
      +    },
      +    {
      +	CTRL('Q'), MY_QUIT, "exit form"
      +    },
      +    {
      +	CTRL('R'), REQ_RIGHT_FIELD, "go to field to right"
      +    },
      +    {
      +	CTRL('S'), REQ_BEG_FIELD, "go to beginning of field"
      +    },
      +    {
      +	CTRL('U'), REQ_UP_FIELD, "move upward to field"
      +    },
      +    {
      +	CTRL('V'), REQ_DEL_CHAR, "delete character"
      +    },
      +    {
      +	CTRL('W'), REQ_NEXT_WORD, "go to next word"
      +    },
      +    {
      +	CTRL('X'), REQ_CLR_FIELD, "clear field"
      +    },
      +    {
      +	CTRL('Y'), REQ_DEL_LINE, "delete line"
      +    },
      +    {
      +	CTRL('Z'), REQ_PREV_CHOICE, ""
      +    },
      +    {
      +	CTRL('['), MY_QUIT, "exit form"
      +    },
      +    {
      +	CTRL(']'), MY_INS_MODE, "toggle REQ_INS_MODE/REQ_OVL_MODE",
      +    },
      +    {
      +	KEY_F(1), EDIT_FIELD('h'), "show this screen",
      +    },
      +    {
      +	KEY_BACKSPACE, REQ_DEL_PREV, "delete previous character"
      +    },
      +    {
      +	KEY_DOWN, REQ_DOWN_CHAR, "move down 1 character"
      +    },
      +    {
      +	KEY_END, REQ_LAST_FIELD, "go to last field"
      +    },
      +    {
      +	KEY_HOME, REQ_FIRST_FIELD, "go to first field"
      +    },
      +    {
      +	KEY_LEFT, REQ_LEFT_CHAR, "move left 1 character"
      +    },
      +    {
      +	KEY_LL, REQ_LAST_FIELD, "go to last field"
      +    },
      +    {
      +	KEY_NEXT, REQ_NEXT_FIELD, "go to next field"
      +    },
      +    {
      +	KEY_NPAGE, REQ_NEXT_PAGE, "go to next page"
      +    },
      +    {
      +	KEY_PPAGE, REQ_PREV_PAGE, "go to previous page"
      +    },
      +    {
      +	KEY_PREVIOUS, REQ_PREV_FIELD, "go to previous field"
      +    },
      +    {
      +	KEY_RIGHT, REQ_RIGHT_CHAR, "move right 1 character"
      +    },
      +    {
      +	KEY_UP, REQ_UP_CHAR, "move up 1 character"
      +    }
      +};
      +
      +static WINDOW *old_window;
      +
      +static void
      +begin_popup(void)
      +{
      +    doupdate();
      +    old_window = dupwin(curscr);
      +}
      +
      +static void
      +end_popup(void)
      +{
      +    touchwin(old_window);
      +    wnoutrefresh(old_window);
      +    doupdate();
      +    delwin(old_window);
      +}
      +
      +/*
      + * Display a temporary window listing the keystroke-commands we recognize.
      + */
      +void
      +help_edit_field(void)
      +{
      +    int x0 = 4;
      +    int y0 = 2;
      +    int y1 = 0;
      +    int y2 = 0;
      +    int wide = COLS - ((x0 + 1) * 2);
      +    int high = LINES - ((y0 + 1) * 2);
      +    WINDOW *help = newwin(high, wide, y0, x0);
      +    WINDOW *data = newpad(2 + SIZEOF(commands), wide - 4);
      +    unsigned n;
      +    int ch = ERR;
      +
      +    begin_popup();
      +
      +    keypad(help, TRUE);
      +    keypad(data, TRUE);
      +    waddstr(data, "Defined form-traversal keys:\n");
      +    for (n = 0; n < SIZEOF(commands); ++n) {
      +	const char *name;
      +#ifdef NCURSES_VERSION
      +	if ((name = form_request_name(commands[n].result)) == 0)
      +#endif
      +	    name = commands[n].help;
      +	wprintw(data, "%s -- %s\n",
      +		keyname(commands[n].code),
      +		name != 0 ? name : commands[n].help);
      +    }
      +    waddstr(data, "Arrow keys move within a field as you would expect.");
      +    y2 = getcury(data);
      +
      +    do {
      +	switch (ch) {
      +	case CTRL('P'):
      +	case KEY_UP:
      +	    if (y1 > 0)
      +		--y1;
      +	    else
      +		beep();
      +	    break;
      +	case CTRL('N'):
      +	case KEY_DOWN:
      +	    if (y1 < y2)
      +		++y1;
      +	    else
      +		beep();
      +	    break;
      +	default:
      +	    beep();
      +	    break;
      +	case ERR:
      +	    break;
      +	}
      +	werase(help);
      +	box(help, 0, 0);
      +	wnoutrefresh(help);
      +	pnoutrefresh(data, y1, 0, y0 + 1, x0 + 1, high, wide);
      +	doupdate();
      +    } while ((ch = wgetch(data)) != ERR && ch != QUIT && ch != ESCAPE);
      +    werase(help);
      +    wrefresh(help);
      +    delwin(help);
      +    delwin(data);
      +
      +    end_popup();
      +}
      +
      +static int
      +offset_in_field(FORM * form)
      +{
      +    FIELD *field = current_field(form);
      +    return form->curcol + form->currow * field->dcols;
      +}
      +
      +int
      +edit_field(FORM * form, int *result)
      +{
      +    int ch = wgetch(form_win(form));
      +    int status;
      +    FIELD *before;
      +    FIELD *after;
      +    unsigned n;
      +    char lengths[80];
      +    int length;
      +    char *buffer;
      +    int before_row = form->currow;
      +    int before_col = form->curcol;
      +    int before_off = offset_in_field(form);
      +
      +    before = current_field(form);
      +    set_field_back(before, A_NORMAL);
      +    if (ch <= KEY_MAX) {
      +	set_field_back(before, A_REVERSE);
      +    } else if (ch <= MAX_FORM_COMMAND) {
      +	set_field_back(before, A_UNDERLINE);
      +    }
      +
      +    *result = ch;
      +    for (n = 0; n < SIZEOF(commands); ++n) {
      +	if (commands[n].code == ch) {
      +	    *result = commands[n].result;
      +	    break;
      +	}
      +    }
      +
      +    status = form_driver(form, *result);
      +
      +    if (status == E_OK) {
      +	bool modified = TRUE;
      +
      +	length = 0;
      +	if ((buffer = field_buffer(before, 1)) != 0)
      +	    length = atoi(buffer);
      +	if (length < before_off)
      +	    length = before_off;
      +	switch (*result) {
      +	case REQ_CLR_EOF:
      +	    length = before_off;
      +	    break;
      +	case REQ_CLR_EOL:
      +	    if (before_row + 1 == before->rows)
      +		length = before_off;
      +	    break;
      +	case REQ_CLR_FIELD:
      +	    length = 0;
      +	    break;
      +	case REQ_DEL_CHAR:
      +	    if (length > before_off)
      +		--length;
      +	    break;
      +	case REQ_DEL_PREV:
      +	    if (length > 0) {
      +		if (before_col > 0) {
      +		    --length;
      +		} else if (before_row > 0) {
      +		    length -= before->cols + before_col;
      +		}
      +	    }
      +	    break;
      +	case REQ_NEW_LINE:
      +	    length += before->cols;
      +	    break;
      +#if 0
      +	    /* FIXME: finish these */
      +	case REQ_DEL_LINE:	/* delete line */
      +	case REQ_DEL_WORD:	/* delete word at cursor */
      +	case REQ_INS_CHAR:	/* insert blank char at cursor */
      +	case REQ_INS_LINE:	/* insert blank line at cursor */
      +	case REQ_INS_MODE:	/* begin insert mode */
      +	case REQ_OVL_MODE:	/* begin overlay mode */
      +#endif
      +	    /* ignore all of the motion commands */
      +	case REQ_SCR_BCHAR:	/* FALLTHRU */
      +	case REQ_SCR_BHPAGE:	/* FALLTHRU */
      +	case REQ_SCR_BLINE:	/* FALLTHRU */
      +	case REQ_SCR_BPAGE:	/* FALLTHRU */
      +	case REQ_SCR_FCHAR:	/* FALLTHRU */
      +	case REQ_SCR_FHPAGE:	/* FALLTHRU */
      +	case REQ_SCR_FLINE:	/* FALLTHRU */
      +	case REQ_SCR_FPAGE:	/* FALLTHRU */
      +	case REQ_SCR_HBHALF:	/* FALLTHRU */
      +	case REQ_SCR_HBLINE:	/* FALLTHRU */
      +	case REQ_SCR_HFHALF:	/* FALLTHRU */
      +	case REQ_SCR_HFLINE:	/* FALLTHRU */
      +	case REQ_BEG_FIELD:	/* FALLTHRU */
      +	case REQ_BEG_LINE:	/* FALLTHRU */
      +	case REQ_DOWN_CHAR:	/* FALLTHRU */
      +	case REQ_DOWN_FIELD:	/* FALLTHRU */
      +	case REQ_END_FIELD:	/* FALLTHRU */
      +	case REQ_END_LINE:	/* FALLTHRU */
      +	case REQ_FIRST_FIELD:	/* FALLTHRU */
      +	case REQ_FIRST_PAGE:	/* FALLTHRU */
      +	case REQ_LAST_FIELD:	/* FALLTHRU */
      +	case REQ_LAST_PAGE:	/* FALLTHRU */
      +	case REQ_LEFT_CHAR:	/* FALLTHRU */
      +	case REQ_LEFT_FIELD:	/* FALLTHRU */
      +	case REQ_NEXT_CHAR:	/* FALLTHRU */
      +	case REQ_NEXT_CHOICE:	/* FALLTHRU */
      +	case REQ_NEXT_FIELD:	/* FALLTHRU */
      +	case REQ_NEXT_LINE:	/* FALLTHRU */
      +	case REQ_NEXT_PAGE:	/* FALLTHRU */
      +	case REQ_NEXT_WORD:	/* FALLTHRU */
      +	case REQ_PREV_CHAR:	/* FALLTHRU */
      +	case REQ_PREV_CHOICE:	/* FALLTHRU */
      +	case REQ_PREV_FIELD:	/* FALLTHRU */
      +	case REQ_PREV_LINE:	/* FALLTHRU */
      +	case REQ_PREV_PAGE:	/* FALLTHRU */
      +	case REQ_PREV_WORD:	/* FALLTHRU */
      +	case REQ_RIGHT_CHAR:	/* FALLTHRU */
      +	case REQ_RIGHT_FIELD:	/* FALLTHRU */
      +	case REQ_SFIRST_FIELD:	/* FALLTHRU */
      +	case REQ_SLAST_FIELD:	/* FALLTHRU */
      +	case REQ_SNEXT_FIELD:	/* FALLTHRU */
      +	case REQ_SPREV_FIELD:	/* FALLTHRU */
      +	case REQ_UP_CHAR:	/* FALLTHRU */
      +	case REQ_UP_FIELD:	/* FALLTHRU */
      +	case REQ_VALIDATION:	/* FALLTHRU */
      +	    modified = FALSE;
      +	    break;
      +
      +	default:
      +	    modified = FALSE;
      +	    if (ch >= MIN_FORM_COMMAND) {
      +		beep();
      +	    } else if (isprint(ch)) {
      +		modified = TRUE;
      +	    }
      +	    break;
      +	}
      +
      +	/*
      +	 * If we do not force a re-validation, then field_buffer 0 will
      +	 * be lagging by one character.
      +	 */
      +	if (modified && form_driver(form, REQ_VALIDATION) == E_OK && *result
      +	    < MIN_FORM_COMMAND)
      +	    ++length;
      +
      +	sprintf(lengths, "%d", length);
      +	set_field_buffer(before, 1, lengths);
      +    }
      +
      +    if ((after = current_field(form)) != before)
      +	set_field_back(before, A_UNDERLINE);
      +    return status;
      +}
      +#else
      +
      +extern void no_edit_field(void);
      +
      +void
      +no_edit_field(void)
      +{
      +}
      +
      +#endif
      diff -urNd -urNd ncurses-5.3/test/edit_field.h ncurses-5.3.20030906.orig/test/edit_field.h
      --- ncurses-5.3/test/edit_field.h	Wed Dec 31 18:00:00 1969
      +++ ncurses-5.3.20030906.orig/test/edit_field.h	Tue May 13 20:08:23 2003
      @@ -0,0 +1,17 @@
      +/*
      + * $Id: edit_field.h,v 1.1 2003/04/26 22:54:50 tom Exp $
      + *
      + * Interface of edit_field.c
      + */
      +
      +#ifndef EDIT_FORM_H_incl
      +#define EDIT_FORM_H_incl 1
      +
      +#include 
      +
      +#define EDIT_FIELD(c) (MAX_FORM_COMMAND + c)
      +
      +extern void help_edit_field(void);
      +extern int edit_field(FORM * form, int *result);
      +
      +#endif /* EDIT_FORM_H_incl */
      diff -urNd -urNd ncurses-5.3/test/gdc.6 ncurses-5.3.20030906.orig/test/gdc.6
      --- ncurses-5.3/test/gdc.6	Wed Dec  7 00:29:08 1994
      +++ ncurses-5.3.20030906.orig/test/gdc.6	Tue May 13 20:08:23 2003
      @@ -1,3 +1,4 @@
      +.\" $Id: gdc.6,v 1.2 2003/03/15 20:50:03 tom Exp $
       .TH GDC 6
       .SH NAME
       gdc \- grand digital clock (curses)
      @@ -16,7 +17,7 @@
       seconds (default never).
       The optional
       .B -s
      -flag makes digits scroll as they change. In this curses mode implementation,
      +flag makes digits scroll as they change. In some curses mode implementations,
       the scrolling option has trouble keeping up.
       .SH AUTHOR
       Amos Shapir, modified for curses by John Lupien.
      diff -urNd -urNd ncurses-5.3/test/hashtest.c ncurses-5.3.20030906.orig/test/hashtest.c
      --- ncurses-5.3/test/hashtest.c	Sat Jun 29 18:32:18 2002
      +++ ncurses-5.3.20030906.orig/test/hashtest.c	Tue May 13 20:08:23 2003
      @@ -3,7 +3,7 @@
        *
        * Generate timing statistics for vertical-motion optimization.
        *
      - * $Id: hashtest.c,v 1.22 2002/06/29 23:32:18 tom Exp $
      + * $Id: hashtest.c,v 1.23 2002/10/19 22:11:24 tom Exp $
        */
       
       #ifdef TRACE
      @@ -14,8 +14,6 @@
       #define USE_TRACE 0
       #endif
       
      -#include 
      -
       #include 
       
       #define LO_CHAR ' '
      diff -urNd -urNd ncurses-5.3/test/ins_wide.c ncurses-5.3.20030906.orig/test/ins_wide.c
      --- ncurses-5.3/test/ins_wide.c	Wed Dec 31 18:00:00 1969
      +++ ncurses-5.3.20030906.orig/test/ins_wide.c	Fri Sep 12 16:41:56 2003
      @@ -0,0 +1,218 @@
      +/*
      + * $Id: ins_wide.c,v 1.3 2003/08/09 22:07:23 tom Exp $
      + *
      + * Demonstrate the wins_wstr() and wins_wch functions.
      + * Thomas Dickey - 2002/11/23
      + *
      + * Note: to provide inputs for *ins_wch(), we use setcchar().  A quirk of the
      + * X/Open definition for that function is that the string contains no
      + * characters with negative width.  Any control character (such as tab) falls
      + * into that category.  So it follows that *ins_wch() cannot render a tab
      + * character because there is no legal way to construct a cchar_t containing
      + * one.  X/Open does not document this, and it would be logical to assume that
      + * *ins_wstr() has the same limitation, but it uses a wchar_t string directly,
      + * and does not document how tabs are handled.
      + */
      +
      +#include 
      +
      +#define TABSIZE 8
      +
      +#if USE_WIDEC_SUPPORT
      +static int margin = (2 * TABSIZE) - 1;
      +
      +static void
      +legend(WINDOW *win, wchar_t * buffer, int length)
      +{
      +    wmove(win, 0, 0);
      +    wprintw(win,
      +	    "The Strings/Chars displays should match.  Enter any characters.\n");
      +    wprintw(win,
      +	    "Use down-arrow or ^N to repeat on the next line, 'q' to exit.\n");
      +    wclrtoeol(win);
      +    wprintw(win, "Inserted %d characters <", length);
      +    waddwstr(win, buffer);
      +    waddstr(win, ">");
      +}
      +
      +static int
      +ColOf(wchar_t * buffer, int length)
      +{
      +    int n;
      +    int result;
      +
      +    for (n = 0, result = margin + 1; n < length; ++n) {
      +	int ch = buffer[n];
      +	switch (ch) {
      +	case '\n':
      +	    /* actually newline should clear the remainder of the line
      +	     * and move to the next line - but that seems a little awkward
      +	     * in this example.
      +	     */
      +	case '\r':
      +	    result = 0;
      +	    break;
      +	case '\b':
      +	    if (result > 0)
      +		--result;
      +	    break;
      +	case '\t':
      +	    result += (TABSIZE - (result % TABSIZE));
      +	    break;
      +	case '\177':
      +	    result += 2;
      +	    break;
      +	default:
      +	    ++result;
      +	    if (ch < 32)
      +		++result;
      +	    break;
      +	}
      +    }
      +    return result;
      +}
      +
      +int
      +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
      +{
      +    cchar_t tmp_cchar;
      +    wchar_t tmp_wchar[2];
      +    wint_t ch;
      +    int code;
      +    int limit;
      +    int row = 1;
      +    int col;
      +    int length;
      +    wchar_t buffer[BUFSIZ];
      +    WINDOW *work;
      +    WINDOW *show;
      +
      +    putenv("TABSIZE=8");
      +    initscr();
      +    (void) cbreak();		/* take input chars one at a time, no wait for \n */
      +    (void) noecho();		/* don't echo input */
      +    keypad(stdscr, TRUE);
      +
      +    limit = LINES - 5;
      +    work = newwin(limit, COLS, 0, 0);
      +    show = newwin(4, COLS, limit + 1, 0);
      +    keypad(work, TRUE);
      +
      +    for (col = margin + 1; col < COLS; col += TABSIZE)
      +	mvwvline(work, row, col, '.', limit - 2);
      +
      +    box(work, 0, 0);
      +    mvwvline(work, row, margin, ACS_VLINE, limit - 2);
      +    mvwvline(work, row, margin + 1, ACS_VLINE, limit - 2);
      +    limit /= 2;
      +
      +    mvwaddstr(work, 1, 2, "String");
      +    mvwaddstr(work, limit + 1, 2, "Chars");
      +    wnoutrefresh(work);
      +
      +    buffer[length = 0] = '\0';
      +    legend(show, buffer, length);
      +    wnoutrefresh(show);
      +
      +    doupdate();
      +
      +    /*
      +     * Show the characters inserted in color, to distinguish from those that
      +     * are shifted.
      +     */
      +    if (has_colors()) {
      +	start_color();
      +	init_pair(1, COLOR_WHITE, COLOR_BLUE);
      +	wbkgdset(work, COLOR_PAIR(1) | ' ');
      +    }
      +
      +    while ((code = wget_wch(work, &ch)) != ERR) {
      +
      +	switch (code) {
      +	case KEY_CODE_YES:
      +	    switch (ch) {
      +	    case KEY_DOWN:
      +		ch = CTRL('N');
      +		break;
      +	    case KEY_BACKSPACE:
      +		ch = '\b';
      +		break;
      +	    default:
      +		beep();
      +		continue;
      +	    }
      +	    break;
      +	}
      +	if (ch == 'q')
      +	    break;
      +
      +	wmove(work, row, margin + 1);
      +	if (ch == CTRL('N')) {
      +	    if (row < limit) {
      +		++row;
      +		/* put the whole string in, all at once */
      +		mvwins_wstr(work, row, margin + 1, buffer);
      +
      +		/* do the corresponding single-character insertion */
      +		for (col = 0; col < length; ++col) {
      +		    memset(&tmp_cchar, 0, sizeof(tmp_cchar));
      +		    if (setcchar(&tmp_cchar,
      +				 &(buffer[col]),
      +				 A_NORMAL,
      +				 0,
      +				 (void *) 0) != ERR) {
      +			mvwins_wch(work, limit + row, ColOf(buffer, col), &tmp_cchar);
      +		    } else {
      +			beep();	/* even for tabs! */
      +			mvwinsch(work,
      +				 limit + row,
      +				 ColOf(buffer, col), buffer[col]);
      +		    }
      +		}
      +	    } else {
      +		beep();
      +	    }
      +	} else {
      +	    buffer[length++] = ch;
      +	    buffer[length] = '\0';
      +	    /* put the string in, one character at a time */
      +	    mvwins_wstr(work,
      +			row,
      +			ColOf(buffer, length - 1), buffer + length - 1);
      +
      +	    /* do the corresponding single-character insertion */
      +	    tmp_wchar[0] = ch;
      +	    tmp_wchar[1] = 0;
      +	    if (setcchar(&tmp_cchar,
      +			 tmp_wchar,
      +			 A_NORMAL,
      +			 0,
      +			 (void *) 0) != ERR) {
      +		mvwins_wch(work,
      +			   limit + row,
      +			   ColOf(buffer, length - 1), &tmp_cchar);
      +	    } else {
      +		beep();		/* even for tabs! */
      +		mvwinsch(work,
      +			 limit + row,
      +			 ColOf(buffer, length - 1), ch);
      +	    }
      +	    wnoutrefresh(work);
      +
      +	    legend(show, buffer, length);
      +	    wnoutrefresh(show);
      +
      +	    doupdate();
      +	}
      +    }
      +    endwin();
      +    ExitProgram(EXIT_SUCCESS);
      +}
      +#else
      +int
      +main(void)
      +{
      +    printf("This program requires the wide-ncurses library\n");
      +    ExitProgram(EXIT_FAILURE);
      +}
      +#endif
      diff -urNd -urNd ncurses-5.3/test/inserts.c ncurses-5.3.20030906.orig/test/inserts.c
      --- ncurses-5.3/test/inserts.c	Wed Dec 31 18:00:00 1969
      +++ ncurses-5.3.20030906.orig/test/inserts.c	Fri Sep 12 16:41:56 2003
      @@ -0,0 +1,162 @@
      +/*
      + * $Id: inserts.c,v 1.5 2003/08/09 22:07:06 tom Exp $
      + *
      + * Demonstrate the winsstr() and winsch functions.
      + * Thomas Dickey - 2002/10/19
      + */
      +
      +#include 
      +
      +#define TABSIZE 8
      +
      +static int margin = (2 * TABSIZE) - 1;
      +
      +static void
      +legend(WINDOW *win, char *buffer, int length)
      +{
      +    wmove(win, 0, 0);
      +    wprintw(win,
      +	    "The Strings/Chars displays should match.  Enter any characters.\n");
      +    wprintw(win,
      +	    "Use down-arrow or ^N to repeat on the next line, 'q' to exit.\n");
      +    wclrtoeol(win);
      +    wprintw(win, "Inserted %d characters <%s>", length, buffer);
      +}
      +
      +static int
      +ColOf(char *buffer, int length)
      +{
      +    int n;
      +    int result;
      +
      +    for (n = 0, result = margin + 1; n < length; ++n) {
      +	int ch = UChar(buffer[n]);
      +	switch (ch) {
      +	case '\n':
      +	    /* actually newline should clear the remainder of the line
      +	     * and move to the next line - but that seems a little awkward
      +	     * in this example.
      +	     */
      +	case '\r':
      +	    result = 0;
      +	    break;
      +	case '\b':
      +	    if (result > 0)
      +		--result;
      +	    break;
      +	case '\t':
      +	    result += (TABSIZE - (result % TABSIZE));
      +	    break;
      +	case '\177':
      +	    result += 2;
      +	    break;
      +	default:
      +	    ++result;
      +	    if (ch < 32)
      +		++result;
      +	    break;
      +	}
      +    }
      +    return result;
      +}
      +
      +int
      +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
      +{
      +    int ch;
      +    int limit;
      +    int row = 1;
      +    int col;
      +    int length;
      +    char buffer[BUFSIZ];
      +    WINDOW *work;
      +    WINDOW *show;
      +
      +    putenv("TABSIZE=8");
      +    initscr();
      +    (void) cbreak();		/* take input chars one at a time, no wait for \n */
      +    (void) noecho();		/* don't echo input */
      +    keypad(stdscr, TRUE);
      +
      +    limit = LINES - 5;
      +    work = newwin(limit, COLS, 0, 0);
      +    show = newwin(4, COLS, limit + 1, 0);
      +    keypad(work, TRUE);
      +
      +    for (col = margin + 1; col < COLS; col += TABSIZE)
      +	mvwvline(work, row, col, '.', limit - 2);
      +
      +    box(work, 0, 0);
      +    mvwvline(work, row, margin, ACS_VLINE, limit - 2);
      +    mvwvline(work, row, margin + 1, ACS_VLINE, limit - 2);
      +    limit /= 2;
      +
      +    mvwaddstr(work, 1, 2, "String");
      +    mvwaddstr(work, limit + 1, 2, "Chars");
      +    wnoutrefresh(work);
      +
      +    buffer[length = 0] = '\0';
      +    legend(show, buffer, length);
      +    wnoutrefresh(show);
      +
      +    doupdate();
      +
      +    /*
      +     * Show the characters inserted in color, to distinguish from those that
      +     * are shifted.
      +     */
      +    if (has_colors()) {
      +	start_color();
      +	init_pair(1, COLOR_WHITE, COLOR_BLUE);
      +	wbkgdset(work, COLOR_PAIR(1) | ' ');
      +    }
      +
      +    while ((ch = wgetch(work)) != 'q') {
      +	wmove(work, row, margin + 1);
      +	switch (ch) {
      +	case CTRL('N'):
      +	case KEY_DOWN:
      +	    if (row < limit) {
      +		++row;
      +		/* put the whole string in, all at once */
      +		mvwinsstr(work, row, margin + 1, buffer);
      +
      +		/* do the corresponding single-character insertion */
      +		for (col = 0; col < length; ++col) {
      +		    mvwinsch(work, limit + row, ColOf(buffer, col), buffer[col]);
      +		}
      +	    } else {
      +		beep();
      +	    }
      +	    break;
      +	case KEY_BACKSPACE:
      +	    ch = '\b';
      +	    /* FALLTHRU */
      +	default:
      +	    if (ch <= 0 || ch > 255) {
      +		beep();
      +		break;
      +	    }
      +	    buffer[length++] = ch;
      +	    buffer[length] = '\0';
      +	    /* put the string in, one character at a time */
      +	    mvwinsstr(work,
      +		      row,
      +		      ColOf(buffer, length - 1), buffer + length - 1);
      +
      +	    /* do the corresponding single-character insertion */
      +	    mvwinsch(work,
      +		     limit + row,
      +		     ColOf(buffer, length - 1), ch);
      +	    wnoutrefresh(work);
      +
      +	    legend(show, buffer, length);
      +	    wnoutrefresh(show);
      +
      +	    doupdate();
      +	    break;
      +	}
      +    }
      +    endwin();
      +    ExitProgram(EXIT_SUCCESS);
      +}
      diff -urNd -urNd ncurses-5.3/test/keynames.c ncurses-5.3.20030906.orig/test/keynames.c
      --- ncurses-5.3/test/keynames.c	Sun Sep  1 14:42:42 2002
      +++ ncurses-5.3.20030906.orig/test/keynames.c	Sun Jul 20 14:02:08 2003
      @@ -1,5 +1,5 @@
       /*
      - * $Id: keynames.c,v 1.4 2002/09/01 19:42:42 tom Exp $
      + * $Id: keynames.c,v 1.5 2003/05/17 23:18:49 tom Exp $
        */
       
       #include 
      @@ -9,7 +9,7 @@
       {
           int n;
           for (n = -1; n < 512; n++) {
      -	char *result = keyname(n);
      +	const char *result = keyname(n);
       	if (result != 0)
       	    printf("%d(%5o):%s\n", n, n, result);
           }
      diff -urNd -urNd ncurses-5.3/test/knight.c ncurses-5.3.20030906.orig/test/knight.c
      --- ncurses-5.3/test/knight.c	Sat Jun 29 18:32:18 2002
      +++ ncurses-5.3.20030906.orig/test/knight.c	Tue May 13 20:08:23 2003
      @@ -6,11 +6,9 @@
        * Eric S. Raymond  July 22 1995.  Mouse support
        * added September 20th 1995.
        *
      - * $Id: knight.c,v 1.25 2002/06/29 23:32:18 tom Exp $
      + * $Id: knight.c,v 1.26 2002/10/19 22:11:24 tom Exp $
        */
       
      -#include 
      -
       #include 
       
       /* board size */
      diff -urNd -urNd ncurses-5.3/test/listused.sh ncurses-5.3.20030906.orig/test/listused.sh
      --- ncurses-5.3/test/listused.sh	Wed Dec 31 18:00:00 1969
      +++ ncurses-5.3.20030906.orig/test/listused.sh	Sun Jul 20 14:02:09 2003
      @@ -0,0 +1,155 @@
      +#!/bin/sh
      +# $Id: listused.sh,v 1.5 2003/07/05 19:02:41 tom Exp $
      +# A very simple script to list entrypoints that are used by either a test
      +# program, or within the libraries.  This relies on the output format of 'nm',
      +# and assumes that the libraries are configured with TRACE defined, and using
      +# these options:
      +#	--disable-macros
      +#	--enable-widec
      +# Static libraries are used, to provide some filtering based on internal usage
      +# of the different symbols.
      +
      +# keep the sorting independent of locale:
      +if test "${LANGUAGE+set}"    = set; then LANGUAGE=C;    export LANGUAGE;    fi
      +if test "${LANG+set}"        = set; then LANG=C;        export LANG;        fi
      +if test "${LC_ALL+set}"      = set; then LC_ALL=C;      export LC_ALL;      fi
      +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
      +if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
      +if test "${LC_COLLATE+set}"  = set; then LC_COLLATE=C;  export LC_COLLATE;  fi
      +
      +NM_OPTS=
      +
      +if test ! -d ../objects ; then
      +	echo "? need objects to run this script"
      +	exit 1
      +elif test ! -d ../lib ; then
      +	echo "? need libraries to run this script"
      +	exit 1
      +fi
      +
      +PROGS=
      +for name in `(echo "test:";sort modules; echo "progs:";sort ../progs/modules) |sed -e 's/[ 	].*//' -e '/^[#@]/d'`
      +do
      +	case $name in
      +	*:)
      +		PROGS="$PROGS $name"
      +		;;
      +	*)
      +		NAME=../objects/${name}.o
      +		if test -f $NAME
      +		then
      +			PROGS="$PROGS $NAME"
      +		fi
      +		;;
      +	esac
      +done
      +
      +# For each library -
      +for lib in ../lib/*.a
      +do
      +	LIB=`basename $lib .a`
      +	case $LIB in
      +	*_*|*+*)
      +		continue
      +		;;
      +	esac
      +
      +	tmp=`echo $LIB|sed -e 's/w$//'`
      +	echo
      +	echo "${tmp}:"
      +	echo $tmp |sed -e 's/./-/g'
      +	# Construct a list of public externals provided by the library.
      +	WANT=`nm $NM_OPTS $lib |\
      +		sed	-e 's/^[^ ]*//' \
      +			-e 's/^ *//' \
      +			-e '/^[ a-z] /d' \
      +			-e '/:$/d' \
      +			-e '/^$/d' \
      +			-e '/^U /d' \
      +			-e 's/^[A-Z] //' \
      +			-e '/^_/d' |\
      +		sort -u`
      +	# List programs which use that external.
      +	for name in $WANT
      +	do
      +		HAVE=
      +		tags=
      +		last=
      +		for prog in $PROGS
      +		do
      +			case $prog in
      +			*:)
      +				tags=$prog
      +				;;
      +			*)
      +				TEST=`nm $NM_OPTS $prog |\
      +					sed	-e 's/^[^ ]*//' \
      +						-e 's/^ *//' \
      +						-e '/^[ a-z] /d' \
      +						-e '/:$/d' \
      +						-e '/^$/d' \
      +						-e 's/^[A-Z] //' \
      +						-e '/^_/d' \
      +						-e 's/^'${name}'$/_/' \
      +						-e '/^[^_]/d'`
      +				if test -n "$TEST"
      +				then
      +					have=`basename $prog .o`
      +					if test -n "$HAVE"
      +					then
      +						if test "$last" = "$tags"
      +						then
      +							HAVE="$HAVE $have"
      +						else
      +							HAVE="$HAVE $tags $have"
      +						fi
      +					else
      +						HAVE="$tags $have"
      +					fi
      +					last="$tags"
      +				fi
      +				;;
      +			esac
      +		done
      +		# if we did not find a program using it directly, see if it
      +		# is used within a library.
      +		if test -z "$HAVE"
      +		then
      +			for tmp in ../lib/*.a
      +			do 
      +				case $tmp in
      +				*_*|*+*)
      +					continue
      +					;;
      +				esac
      +				TEST=`nm $NM_OPTS $tmp |\
      +					sed	-e 's/^[^ ]*//' \
      +						-e 's/^ *//' \
      +						-e '/^[ a-z] /d' \
      +						-e '/:$/d' \
      +						-e '/^$/d' \
      +						-e '/^[A-TV-Z] /d' \
      +						-e 's/^[A-Z] //' \
      +						-e '/^_/d' \
      +						-e 's/^'${name}'$/_/' \
      +						-e '/^[^_]/d'`
      +				if test -n "$TEST"
      +				then
      +					tmp=`basename $tmp .a |sed -e 's/w$//'`
      +					HAVE=`echo $tmp | sed -e 's/lib/lib: /'`
      +					break
      +				fi
      +			done
      +		fi
      +		test -z "$HAVE" && HAVE="-"
      +		lenn=`expr 39 - length $name`
      +		lenn=`expr $lenn / 8`
      +		tabs=
      +		while test $lenn != 0
      +		do
      +			tabs="${tabs}	"
      +			lenn=`expr $lenn - 1`
      +		done
      +		echo "${name}${tabs}${HAVE}"
      +	done
      +done
      diff -urNd -urNd ncurses-5.3/test/modules ncurses-5.3.20030906.orig/test/modules
      --- ncurses-5.3/test/modules	Sat Feb 12 19:05:13 2000
      +++ ncurses-5.3.20030906.orig/test/modules	Tue May 13 20:08:23 2003
      @@ -1,7 +1,7 @@
       # Test-Program modules
      -# $Id: modules,v 1.13 2000/02/13 01:05:13 tom Exp $
      +# $Id: modules,v 1.19 2003/04/26 16:31:10 tom Exp $
       ##############################################################################
      -# Copyright (c) 1998,1999,2000 Free Software Foundation, Inc.                #
      +# Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.                #
       #                                                                            #
       # Permission is hereby granted, free of charge, to any person obtaining a    #
       # copy of this software and associated documentation files (the "Software"), #
      @@ -28,28 +28,36 @@
       # authorization.                                                             #
       ##############################################################################
       #
      -# Author: Thomas E. Dickey  1997
      +# Author: Thomas E. Dickey 1997-2003
       #
       
       @ base
       blue		progs		$(srcdir)	../include/term.h
       bs		progs		$(srcdir)
      -cardfile	progs		$(srcdir)	../include/panel.h ../include/menu.h ../include/form.h
      +cardfile	progs		$(srcdir)	../include/panel.h ../include/form.h
      +demo_defkey	progs		$(srcdir)
      +demo_keyok	progs		$(srcdir)
      +demo_forms	progs		$(srcdir)	../include/form.h
      +demo_menus	progs		$(srcdir)	../include/menu.h
      +demo_panels	progs		$(srcdir)	../include/panel.h
       ditto		progs		$(srcdir)
       dots		progs		$(srcdir)	../include/term.h
      -filter		progs		$(srcdir)
      +edit_field	progs		$(srcdir)
      +filter		progs		$(srcdir)	../include/form.h
       firework	progs		$(srcdir)	../include/term.h
       firstlast	progs		$(srcdir)
       gdc		progs		$(srcdir)
       hanoi		progs		$(srcdir)
       hashtest	progs		$(srcdir)
      +ins_wide	progs		$(srcdir)
      +inserts		progs		$(srcdir)
       keynames	progs		$(srcdir)
       knight		progs		$(srcdir)
       lrtest		progs		$(srcdir)
       ncurses		progs		$(srcdir)	../include/panel.h ../include/menu.h ../include/form.h
       newdemo		progs		$(srcdir)
      -rain		progs		$(srcdir)	../include/term.h
       railroad	progs		$(srcdir)	../include/termcap.h
      +rain		progs		$(srcdir)	../include/term.h
       tclock		progs		$(srcdir)
       testaddch	progs		$(srcdir)
       testcurs	progs		$(srcdir)
      diff -urNd -urNd ncurses-5.3/test/ncurses.c ncurses-5.3.20030906.orig/test/ncurses.c
      --- ncurses-5.3/test/ncurses.c	Sat Sep 14 19:39:33 2002
      +++ ncurses-5.3.20030906.orig/test/ncurses.c	Sun Jul 20 14:02:09 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -40,14 +40,10 @@
          Author: Eric S. Raymond  1993
                  Thomas E. Dickey (beginning revision 1.27 in 1996).
       
      -$Id: ncurses.c,v 1.180 2002/09/15 00:39:33 tom Exp $
      +$Id: ncurses.c,v 1.197 2003/07/06 00:06:06 tom Exp $
       
       ***************************************************************************/
       
      -#include 
      -#include 
      -#include 
      -
       #include 
       
       #if HAVE_GETTIMEOFDAY
      @@ -59,25 +55,16 @@
       #endif
       #endif
       
      -#if HAVE_PANEL_H && HAVE_LIBPANEL
      -#define USE_LIBPANEL 1
      +#if USE_LIBPANEL
       #include 
      -#else
      -#define USE_LIBPANEL 0
       #endif
       
      -#if HAVE_MENU_H && HAVE_LIBMENU
      -#define USE_LIBMENU 1
      +#if USE_LIBMENU
       #include 
      -#else
      -#define USE_LIBMENU 0
       #endif
       
      -#if HAVE_FORM_H && HAVE_LIBFORM
      -#define USE_LIBFORM 1
      +#if USE_LIBFORM
       #include 
      -#else
      -#define USE_LIBFORM 0
       #endif
       
       #ifdef NCURSES_VERSION
      @@ -122,13 +109,7 @@
       #endif
       
       #define P(string)	printw("%s\n", string)
      -#ifdef CTRL
      -#undef CTRL
      -#endif
      -#define CTRL(x)		((x) & 0x1f)
       
      -#define QUIT		CTRL('Q')
      -#define ESCAPE		CTRL('[')
       #define BLANK		' '	/* this is the background character */
       
       #undef max_colors
      @@ -181,6 +162,74 @@
       }
       #define Getchar() wGetchar(stdscr)
       
      +/* replaces wgetnstr(), since we want to be able to edit values */
      +static void
      +wGetstring(WINDOW *win, char *buffer, int limit)
      +{
      +    int y0, x0, x, ch;
      +    bool done = FALSE;
      +
      +    echo();
      +    getyx(win, y0, x0);
      +    wattrset(win, A_REVERSE);
      +
      +    x = strlen(buffer);
      +    while (!done) {
      +	if (x > (int) strlen(buffer))
      +	    x = (int) strlen(buffer);
      +	wmove(win, y0, x0);
      +	wprintw(win, "%-*s", limit, buffer);
      +	wmove(win, y0, x0 + x);
      +	switch (ch = wGetchar(win)) {
      +	case '\n':
      +	case KEY_ENTER:
      +	    done = TRUE;
      +	    break;
      +	case CTRL('U'):
      +	    *buffer = '\0';
      +	    break;
      +	case '\b':
      +	case KEY_BACKSPACE:
      +	case KEY_DC:
      +	    if (x > 0) {
      +		int j;
      +		for (j = --x; (buffer[j] = buffer[j + 1]) != '\0'; ++j) {
      +		    ;
      +		}
      +	    } else {
      +		beep();
      +	    }
      +	    break;
      +	case KEY_LEFT:
      +	    if (x > 0) {
      +		--x;
      +	    } else {
      +		flash();
      +	    }
      +	    break;
      +	case KEY_RIGHT:
      +	    ++x;
      +	    break;
      +	default:
      +	    if (!isprint(ch) || ch >= KEY_MIN) {
      +		beep();
      +	    } else if ((int) strlen(buffer) < limit) {
      +		int j;
      +		for (j = strlen(buffer) + 1; j > x; --j) {
      +		    buffer[j] = buffer[j - 1];
      +		}
      +		buffer[x++] = ch;
      +	    } else {
      +		flash();
      +	    }
      +	}
      +    }
      +
      +    wattroff(win, A_REVERSE);
      +    wmove(win, y0, x0);
      +    noecho();
      +}
      +
       #if USE_WIDEC_SUPPORT
       static int
       wGet_wchar(WINDOW *win, wint_t * result)
      @@ -206,6 +255,98 @@
       }
       #define Get_wchar(result) wGet_wchar(stdscr, result)
       
      +/* replaces wgetn_wstr(), since we want to be able to edit values */
      +static void
      +wGet_wstring(WINDOW *win, wchar_t * buffer, int limit)
      +{
      +    int y0, x0, x;
      +    wint_t ch;
      +    bool done = FALSE;
      +
      +    echo();
      +    getyx(win, y0, x0);
      +    wattrset(win, A_REVERSE);
      +
      +    x = wcslen(buffer);
      +    while (!done) {
      +	if (x > (int) wcslen(buffer))
      +	    x = (int) wcslen(buffer);
      +	wmove(win, y0, x0);
      +	waddnwstr(win, buffer, limit);
      +	if (x < limit)
      +	    wprintw(win, "%*s", limit - x, " ");
      +	wmove(win, y0, x0 + x);
      +	switch (wGet_wchar(win, &ch)) {
      +	case KEY_CODE_YES:
      +	    switch (ch) {
      +	    case KEY_ENTER:
      +		ch = '\n';
      +		break;
      +	    case KEY_BACKSPACE:
      +	    case KEY_DC:
      +		ch = '\b';
      +		break;
      +	    case KEY_LEFT:
      +	    case KEY_RIGHT:
      +		break;
      +	    default:
      +		ch = -1;
      +		break;
      +	    }
      +	case OK:
      +	    break;
      +	default:
      +	    ch = -1;
      +	    break;
      +	}
      +
      +	switch (ch) {
      +	case '\n':
      +	    done = TRUE;
      +	    break;
      +	case CTRL('U'):
      +	    *buffer = '\0';
      +	    break;
      +	case '\b':
      +	    if (x > 0) {
      +		int j;
      +		for (j = --x; (buffer[j] = buffer[j + 1]) != '\0'; ++j) {
      +		    ;
      +		}
      +	    } else {
      +		beep();
      +	    }
      +	    break;
      +	case KEY_LEFT:
      +	    if (x > 0) {
      +		--x;
      +	    } else {
      +		flash();
      +	    }
      +	    break;
      +	case KEY_RIGHT:
      +	    ++x;
      +	    break;
      +	default:
      +	    if (!isprint(ch) || ch >= KEY_MIN) {
      +		beep();
      +	    } else if ((int) wcslen(buffer) < limit) {
      +		int j;
      +		for (j = wcslen(buffer) + 1; j > x; --j) {
      +		    buffer[j] = buffer[j - 1];
      +		}
      +		buffer[x++] = ch;
      +	    } else {
      +		flash();
      +	    }
      +	}
      +    }
      +
      +    wattroff(win, A_REVERSE);
      +    wmove(win, y0, x0);
      +    noecho();
      +}
      +
       #endif
       
       static void
      @@ -606,6 +747,7 @@
        * For wgetch_test(), we create pairs of windows - one for a box, one for text.
        * Resize both and paint the box in the parent.
        */
      +#ifdef KEY_RESIZE
       static void
       resize_wide_boxes(int level, WINDOW *win)
       {
      @@ -640,17 +782,39 @@
           }
           doupdate();
       }
      +#endif /* KEY_RESIZE */
      +
      +static char *
      +wcstos(const wchar_t * src)
      +{
      +    int need;
      +    mbstate_t state;
      +    char *result = 0;
      +    const wchar_t *tmp = src;
      +
      +    memset(&state, 0, sizeof(state));
      +    if ((need = wcsrtombs(0, &tmp, 0, &state)) > 0) {
      +	result = calloc(need + 1, 1);
      +	tmp = src;
      +	if (wcsrtombs(result, &tmp, need, &state) != (size_t) need) {
      +	    free(result);
      +	    result = 0;
      +	}
      +    }
      +    return result;
      +}
       
       static void
       wget_wch_test(int level, WINDOW *win, int delay)
       {
      -    char buf[BUFSIZ];
      +    wchar_t buf[BUFSIZ];
           int first_y, first_x;
           wint_t c;
           int incount = 0;
           bool flags[256];
           bool blocking = (delay < 0);
           int y, x, code;
      +    char *temp;
       
           memset(flags, FALSE, sizeof(flags));
           flags['k'] = (win == stdscr);
      @@ -686,9 +850,14 @@
       	} else if (c == 'g') {
       	    waddstr(win, "getstr test: ");
       	    echo();
      -	    wgetnstr(win, buf, sizeof(buf) - 1);
      +	    wgetn_wstr(win, (wint_t *) buf, sizeof(buf) - 1);
       	    noecho();
      -	    wprintw(win, "I saw %d characters:\n\t`%s'.", strlen(buf), buf);
      +	    if ((temp = wcstos(buf)) != 0) {
      +		wprintw(win, "I saw %d characters:\n\t`%s'.", wcslen(buf), temp);
      +		free(temp);
      +	    } else {
      +		wprintw(win, "I saw %d characters (cannot convert).", wcslen(buf));
      +	    }
       	    wclrtoeol(win);
       	    wgetch_wrap(win, first_y);
       	} else if (c == 'k') {
      @@ -782,11 +951,40 @@
        *
        ****************************************************************************/
       
      +#define MAX_ATTRSTRING 31
      +#define LEN_ATTRSTRING 26
      +
      +static char attr_test_string[] = "abcde fghij klmno pqrst uvwxy z";
      +
      +static void
      +adjust_attr_string(int adjust)
      +{
      +    int first = ((int) UChar(attr_test_string[0])) + adjust;
      +    int last = first + LEN_ATTRSTRING;
      +
      +    if (first >= ' ' && last <= '~') {	/* 32..126 */
      +	int j, k;
      +	for (j = 0, k = first; k <= last; ++j, ++k) {
      +	    attr_test_string[j] = k;
      +	    if (((k + 1 - first) % 5) == 0) {
      +		++j;
      +		if (j < MAX_ATTRSTRING)
      +		    attr_test_string[j] = ' ';
      +	    }
      +	}
      +	while (j < MAX_ATTRSTRING)
      +	    attr_test_string[j++] = ' ';
      +	attr_test_string[j] = '\0';
      +    } else {
      +	beep();
      +    }
      +}
      +
       static int
       show_attr(int row, int skip, chtype attr, const char *name)
       {
      -    static const char *string = "abcde fghij klmno pqrst uvwxy z";
           int ncv = tigetnum("ncv");
      +    chtype test = attr & ~A_ALTCHARSET;
       
           mvprintw(row, 8, "%s mode:", name);
           mvprintw(row, 24, "|");
      @@ -804,29 +1002,24 @@
            * is possible to turn off the A_ALTCHARSET flag for the characters which
            * are added, and it would be an unexpected result to have the mapped
            * characters visible on the screen.
      -     *
      -     * This example works because the indices into acs_map[] are mostly from
      -     * the lowercase characters.
            */
           if (attr & A_ALTCHARSET) {
      -	const char *s = string;
      -	while (*s) {
      -	    int ch = *s++;
      -#ifdef CURSES_ACS_ARRAY
      -	    if ((ch = CURSES_ACS_ARRAY[ch]) == 0)
      -		ch = ' ';
      -#endif
      +	const char *s;
      +	int ch;
      +
      +	for (s = attr_test_string; *s != '\0'; ++s) {
      +	    ch = UChar(*s);
       	    addch(ch);
       	}
           } else {
      -	addstr(string);
      +	addstr(attr_test_string);
           }
           attroff(attr);
           if (skip)
       	printw("%*s", skip, " ");
           printw("|");
      -    if (attr != A_NORMAL) {
      -	if (!(termattrs() & attr)) {
      +    if (test != A_NORMAL) {
      +	if (!(termattrs() & test)) {
       	    printw(" (N/A)");
       	} else if (ncv > 0 && (getbkgd(stdscr) & A_COLOR)) {
       	    static const chtype table[] =
      @@ -867,7 +1060,8 @@
           } else if (ch == CTRL('L')) {
       	touchwin(stdscr);
       	touchwin(curscr);
      -    } else if (has_colors()) {
      +	wrefresh(curscr);
      +    } else {
       	switch (ch) {
       	case 'a':
       	    *ac = 0;
      @@ -875,39 +1069,40 @@
       	case 'A':
       	    *ac = A_ALTCHARSET;
       	    break;
      -	case 'f':
      -	    *fg = (*fg + 1);
      -	    break;
      -	case 'F':
      -	    *fg = (*fg - 1);
      -	    break;
      -	case 'b':
      -	    *bg = (*bg + 1);
      +	case '<':
      +	    adjust_attr_string(-1);
       	    break;
      -	case 'B':
      -	    *bg = (*bg - 1);
      +	case '>':
      +	    adjust_attr_string(1);
       	    break;
       	default:
      -	    return FALSE;
      -	}
      -	if (*fg >= max_colors)
      -	    *fg = 0;
      -	if (*fg < 0)
      -	    *fg = max_colors - 1;
      -	if (*bg >= max_colors)
      -	    *bg = 0;
      -	if (*bg < 0)
      -	    *bg = max_colors - 1;
      -    } else {
      -	switch (ch) {
      -	case 'a':
      -	    *ac = 0;
      -	    break;
      -	case 'A':
      -	    *ac = A_ALTCHARSET;
      +	    if (has_colors()) {
      +		switch (ch) {
      +		case 'f':
      +		    *fg = (*fg + 1);
      +		    break;
      +		case 'F':
      +		    *fg = (*fg - 1);
      +		    break;
      +		case 'b':
      +		    *bg = (*bg + 1);
      +		    break;
      +		case 'B':
      +		    *bg = (*bg - 1);
      +		    break;
      +		default:
      +		    return FALSE;
      +		}
      +		if (*fg >= max_colors)
      +		    *fg = 0;
      +		if (*fg < 0)
      +		    *fg = max_colors - 1;
      +		if (*bg >= max_colors)
      +		    *bg = 0;
      +		if (*bg < 0)
      +		    *bg = max_colors - 1;
      +	    }
       	    break;
      -	default:
      -	    return FALSE;
       	}
           }
           return TRUE;
      @@ -965,12 +1160,12 @@
       	mvprintw(row + 1, 8,
       		 "Enter a digit to set gaps on each side of displayed attributes");
       	mvprintw(row + 2, 8,
      -		 "^L = repaint");
      +		 "^L repaints,  shifts, ");
       	if (has_colors())
      -	    printw(".  f/F/b/F toggle colors (now %d/%d), a/A altcharset (%d)",
      +	    printw("f/F/b/F toggle color (now %d/%d), a/A ACS (%d)",
       		   fg, bg, ac != 0);
       	else
      -	    printw(".  a/A altcharset (%d)", ac != 0);
      +	    printw("a/A ACS (%d)", ac != 0);
       
       	refresh();
           } while (attr_getc(&n, &fg, &bg, &ac));
      @@ -1241,15 +1436,73 @@
        *
        ****************************************************************************/
       
      +#define SLK_HELP 17
      +#define SLK_WORK (SLK_HELP + 3)
      +
      +static void
      +slk_help(void)
      +{
      +    static const char *table[] =
      +    {
      +	"Available commands are:"
      +	,""
      +	,"^L         -- repaint this message and activate soft keys"
      +	,"a/d        -- activate/disable soft keys"
      +	,"c          -- set centered format for labels"
      +	,"l          -- set left-justified format for labels"
      +	,"r          -- set right-justified format for labels"
      +	,"[12345678] -- set label; labels are numbered 1 through 8"
      +	,"e          -- erase stdscr (should not erase labels)"
      +	,"s          -- test scrolling of shortened screen"
      +#if HAVE_SLK_COLOR
      +	,"F/B        -- cycle through foreground/background colors"
      +#endif
      +	,"x, q       -- return to main menu"
      +	,""
      +	,"Note: if activating the soft keys causes your terminal to scroll up"
      +	,"one line, your terminal auto-scrolls when anything is written to the"
      +	,"last screen position.  The ncurses code does not yet handle this"
      +	,"gracefully."
      +    };
      +    unsigned j;
      +
      +    move(2, 0);
      +    for (j = 0; j < SIZEOF(table); ++j) {
      +	P(table[j]);
      +    }
      +    refresh();
      +}
      +
       static void
       slk_test(void)
       /* exercise the soft keys */
       {
           int c, fmt = 1;
           char buf[9];
      +    char *s;
      +#if HAVE_SLK_COLOR
      +    short fg = COLOR_BLACK;
      +    short bg = COLOR_WHITE;
      +    bool new_color = FALSE;
      +#endif
       
           c = CTRL('l');
      +#if HAVE_SLK_COLOR
      +    if (has_colors()) {
      +	new_color = TRUE;
      +    }
      +#endif
      +
           do {
      +#if HAVE_SLK_COLOR
      +	if (new_color) {
      +	    init_pair(1, bg, fg);
      +	    slk_color(1);
      +	    new_color = FALSE;
      +	    mvprintw(SLK_WORK, 0, "Colors %d/%d\n", fg, bg);
      +	    refresh();
      +	}
      +#endif
       	move(0, 0);
       	switch (c) {
       	case CTRL('l'):
      @@ -1258,25 +1511,7 @@
       	    mvaddstr(0, 20, "Soft Key Exerciser");
       	    attroff(A_BOLD);
       
      -	    move(2, 0);
      -	    P("Available commands are:");
      -	    P("");
      -	    P("^L         -- refresh screen");
      -	    P("a          -- activate or restore soft keys");
      -	    P("d          -- disable soft keys");
      -	    P("c          -- set centered format for labels");
      -	    P("l          -- set left-justified format for labels");
      -	    P("r          -- set right-justified format for labels");
      -	    P("[12345678] -- set label; labels are numbered 1 through 8");
      -	    P("e          -- erase stdscr (should not erase labels)");
      -	    P("s          -- test scrolling of shortened screen");
      -	    P("x, q       -- return to main menu");
      -	    P("");
      -	    P("Note: if activating the soft keys causes your terminal to");
      -	    P("scroll up one line, your terminal auto-scrolls when anything");
      -	    P("is written to the last screen position.  The ncurses code");
      -	    P("does not yet handle this gracefully.");
      -	    refresh();
      +	    slk_help();
       	    /* fall through */
       
       	case 'a':
      @@ -1288,7 +1523,7 @@
       	    break;
       
       	case 's':
      -	    mvprintw(20, 0, "Press Q to stop the scrolling-test: ");
      +	    mvprintw(SLK_WORK, 0, "Press Q to stop the scrolling-test: ");
       	    while ((c = Getchar()) != 'Q' && (c != ERR))
       		addch((chtype) c);
       	    break;
      @@ -1317,20 +1552,155 @@
       	case '6':
       	case '7':
       	case '8':
      -	    (void) mvaddstr(20, 0, "Please enter the label value: ");
      -	    echo();
      -	    wgetnstr(stdscr, buf, 8);
      -	    noecho();
      +	    (void) mvaddstr(SLK_WORK, 0, "Please enter the label value: ");
      +	    strcpy(buf, "");
      +	    if ((s = slk_label(c - '0')) != 0) {
      +		strncpy(buf, s, 8);
      +	    }
      +	    wGetstring(stdscr, buf, 8);
       	    slk_set((c - '0'), buf, fmt);
       	    slk_refresh();
      -	    move(20, 0);
      -	    clrtoeol();
      +	    move(SLK_WORK, 0);
      +	    clrtobot();
      +	    break;
      +
      +	case 'x':
      +	case 'q':
      +	    goto done;
      +
      +#if HAVE_SLK_COLOR
      +	case 'F':
      +	    if (has_colors()) {
      +		fg = (fg + 1) % max_colors;
      +		new_color = TRUE;
      +	    }
      +	    break;
      +	case 'B':
      +	    if (has_colors()) {
      +		bg = (bg + 1) % max_colors;
      +		new_color = TRUE;
      +	    }
      +	    break;
      +#endif
      +
      +	default:
      +	    beep();
      +	}
      +    } while
      +	((c = Getchar()) != EOF);
      +
      +  done:
      +    erase();
      +    endwin();
      +}
      +
      +#if USE_WIDEC_SUPPORT
      +static void
      +wide_slk_test(void)
      +/* exercise the soft keys */
      +{
      +    int c, fmt = 1;
      +    wchar_t buf[9];
      +    char *s;
      +    short fg = COLOR_BLACK;
      +    short bg = COLOR_WHITE;
      +    bool new_color = FALSE;
      +
      +    c = CTRL('l');
      +    if (has_colors()) {
      +	new_color = TRUE;
      +    }
      +    do {
      +	if (new_color) {
      +	    init_pair(1, bg, fg);
      +	    slk_color(1);
      +	    new_color = FALSE;
      +	    mvprintw(SLK_WORK, 0, "Colors %d/%d\n", fg, bg);
      +	    refresh();
      +	}
      +	move(0, 0);
      +	switch (c) {
      +	case CTRL('l'):
      +	    erase();
      +	    attr_on(WA_BOLD, NULL);
      +	    mvaddstr(0, 20, "Soft Key Exerciser");
      +	    attr_off(WA_BOLD, NULL);
      +
      +	    slk_help();
      +	    /* fall through */
      +
      +	case 'a':
      +	    slk_restore();
      +	    break;
      +
      +	case 'e':
      +	    wclear(stdscr);
      +	    break;
      +
      +	case 's':
      +	    mvprintw(SLK_WORK, 0, "Press Q to stop the scrolling-test: ");
      +	    while ((c = Getchar()) != 'Q' && (c != ERR))
      +		addch((chtype) c);
      +	    break;
      +
      +	case 'd':
      +	    slk_clear();
      +	    break;
      +
      +	case 'l':
      +	    fmt = 0;
      +	    break;
      +
      +	case 'c':
      +	    fmt = 1;
      +	    break;
      +
      +	case 'r':
      +	    fmt = 2;
      +	    break;
      +
      +	case '1':
      +	case '2':
      +	case '3':
      +	case '4':
      +	case '5':
      +	case '6':
      +	case '7':
      +	case '8':
      +	    (void) mvaddstr(SLK_WORK, 0, "Please enter the label value: ");
      +	    *buf = 0;
      +	    if ((s = slk_label(c - '0')) != 0) {
      +		int j;
      +		for (j = 0; j < 8; ++j) {
      +		    if ((buf[j] = UChar(s[j])) == 0)
      +			break;
      +		}
      +		buf[j] = 0;
      +	    }
      +	    wGet_wstring(stdscr, buf, 8);
      +	    slk_wset((c - '0'), buf, fmt);
      +	    slk_refresh();
      +	    move(SLK_WORK, 0);
      +	    clrtobot();
       	    break;
       
       	case 'x':
       	case 'q':
       	    goto done;
       
      +	case 'F':
      +	    if (has_colors()) {
      +		fg = (fg + 1) % max_colors;
      +		new_color = TRUE;
      +	    }
      +	    break;
      +	case 'B':
      +	    if (has_colors()) {
      +		bg = (bg + 1) % max_colors;
      +		new_color = TRUE;
      +	    }
      +	    break;
      +
       	default:
       	    beep();
       	}
      @@ -1341,6 +1711,7 @@
           erase();
           endwin();
       }
      +#endif
       
       /****************************************************************************
        *
      @@ -1624,13 +1995,15 @@
       }
       
       static int
      -show_2_wacs(int n, const char *name, char *code)
      +show_2_wacs(int n, const char *name, const char *code)
       {
           const int height = 16;
           int row = 4 + (n % height);
           int col = (n / height) * COLS / 2;
      +    char temp[80];
      +
           mvprintw(row, col, "%*s : ", COLS / 4, name);
      -    addstr(code);
      +    addstr(strcpy(temp, code));
           return n + 1;
       }
       
      @@ -1683,7 +2056,8 @@
           n = show_2_wacs(n, "WACS_S3",	"\342\216\273");
           n = show_2_wacs(n, "WACS_S7",	"\342\216\274");
           n = show_2_wacs(n, "WACS_S9",	"\342\216\275");
      -    /* *INDENT-OFF* */
      +    /* *INDENT-ON* */
      +
       }
       
       static void
      @@ -3747,12 +4121,80 @@
           }
       }
       
      +/*
      + * Allow a middle initial, optionally with a '.' to end it.
      + */
      +static bool
      +mi_field_check(FIELD * fld, const void *data GCC_UNUSED)
      +{
      +    char *s = field_buffer(fld, 0);
      +    int state = 0;
      +    int n;
      +
      +    for (n = 0; s[n] != '\0'; ++n) {
      +	switch (state) {
      +	case 0:
      +	    if (s[n] == '.') {
      +		if (n != 1)
      +		    return FALSE;
      +		state = 2;
      +	    } else if (isspace(UChar(s[n]))) {
      +		state = 2;
      +	    }
      +	    break;
      +	case 2:
      +	    if (!isspace(UChar(s[n])))
      +		return FALSE;
      +	    break;
      +	}
      +    }
      +
      +    /* force the form to display a leading capital */
      +    if (islower(UChar(s[0]))) {
      +	s[0] = toupper(UChar(s[0]));
      +	set_field_buffer(fld, 0, s);
      +    }
      +    return TRUE;
      +}
      +
      +static bool
      +mi_char_check(int ch, const void *data GCC_UNUSED)
      +{
      +    return ((isalpha(ch) || ch == '.') ? TRUE : FALSE);
      +}
      +
      +/*
      + * Passwords should be at least 6 characters.
      + */
      +static bool
      +pw_field_check(FIELD * fld, const void *data GCC_UNUSED)
      +{
      +    char *s = field_buffer(fld, 0);
      +    int n;
      +
      +    for (n = 0; s[n] != '\0'; ++n) {
      +	if (isspace(UChar(s[n]))) {
      +	    if (n < 6)
      +		return FALSE;
      +	}
      +    }
      +    return TRUE;
      +}
      +
      +static bool
      +pw_char_check(int ch, const void *data GCC_UNUSED)
      +{
      +    return (isgraph(ch) ? TRUE : FALSE);
      +}
      +
       static void
       demo_forms(void)
       {
           WINDOW *w;
           FORM *form;
           FIELD *f[12], *secure;
      +    FIELDTYPE *fty_middle = new_fieldtype(mi_field_check, mi_char_check);
      +    FIELDTYPE *fty_passwd = new_fieldtype(pw_field_check, pw_char_check);
           int finished = 0, c;
           unsigned n = 0;
       
      @@ -3775,17 +4217,26 @@
       
           /* describe the form */
           f[n++] = make_label(0, 15, "Sample Form");
      +
           f[n++] = make_label(2, 0, "Last Name");
           f[n++] = make_field(3, 0, 1, 18, FALSE);
      +    set_field_type(f[n - 1], TYPE_ALPHA, 1);
      +
           f[n++] = make_label(2, 20, "First Name");
           f[n++] = make_field(3, 20, 1, 12, FALSE);
      +    set_field_type(f[n - 1], TYPE_ALPHA, 1);
      +
           f[n++] = make_label(2, 34, "Middle Name");
           f[n++] = make_field(3, 34, 1, 12, FALSE);
      +    set_field_type(f[n - 1], fty_middle);
      +
           f[n++] = make_label(5, 0, "Comments");
           f[n++] = make_field(6, 0, 4, 46, FALSE);
      +
           f[n++] = make_label(5, 20, "Password:");
           secure =
       	f[n++] = make_field(5, 30, 1, 9, TRUE);
      +    set_field_type(f[n - 1], fty_passwd);
           f[n++] = (FIELD *) 0;
       
           form = new_form(f);
      @@ -3982,6 +4433,11 @@
       	slk_test();
       	break;
       
      +#if USE_WIDEC_SUPPORT
      +    case 'E':
      +	wide_slk_test();
      +	break;
      +#endif
           case 'f':
       	acs_display();
       	break;
      @@ -4252,6 +4708,9 @@
       	(void) puts("c = color test pattern");
       	(void) puts("d = edit RGB color values");
       	(void) puts("e = exercise soft keys");
      +#if USE_WIDEC_SUPPORT
      +	(void) puts("E = exercise soft keys using wide-characters");
      +#endif
       	(void) puts("f = display ACS characters");
       #if USE_WIDEC_SUPPORT
       	(void) puts("F = display Wide-ACS characters");
      diff -urNd -urNd ncurses-5.3/test/railroad.c ncurses-5.3.20030906.orig/test/railroad.c
      --- ncurses-5.3/test/railroad.c	Sat Apr  6 14:45:22 2002
      +++ ncurses-5.3.20030906.orig/test/railroad.c	Tue May 13 20:08:23 2003
      @@ -29,14 +29,12 @@
       /*
        * Author: Thomas E. Dickey  2000
        *
      - * $Id: railroad.c,v 1.10 2002/04/06 20:45:22 tom Exp $
      + * $Id: railroad.c,v 1.11 2002/10/19 22:11:24 tom Exp $
        *
        * A simple demo of the termcap interface.
        */
       #include 
       
      -#include 
      -
       static char *wipeit;
       static char *moveit;
       static int length;
      diff -urNd -urNd ncurses-5.3/test/tclock.c ncurses-5.3.20030906.orig/test/tclock.c
      --- ncurses-5.3/test/tclock.c	Sat Jun 29 18:34:13 2002
      +++ ncurses-5.3.20030906.orig/test/tclock.c	Tue May 13 20:08:23 2003
      @@ -1,6 +1,6 @@
      -/* $Id: tclock.c,v 1.22 2002/06/29 23:34:13 tom Exp $ */
      +/* $Id: tclock.c,v 1.24 2002/12/29 01:40:30 tom Exp $ */
       
      -#include "test.priv.h"
      +#include 
       
       #include 
       
      @@ -125,9 +125,11 @@
           int sdx, sdy;
           int ch;
           int lastbeep = -1;
      +    bool odd = FALSE;
           time_t tim;
           struct tm *t;
           char szChar[10];
      +    char *text;
           int my_bg = COLOR_BLACK;
       #if HAVE_GETTIMEOFDAY
           struct timeval current;
      @@ -151,6 +153,7 @@
       	init_pair(1, COLOR_RED, my_bg);
       	init_pair(2, COLOR_MAGENTA, my_bg);
       	init_pair(3, COLOR_GREEN, my_bg);
      +	init_pair(4, COLOR_WHITE, COLOR_BLUE);
           }
       #ifdef KEY_RESIZE
           keypad(stdscr, TRUE);
      @@ -218,11 +221,16 @@
       	if (has_colors())
       	    attrset(COLOR_PAIR(0));
       
      -	mvaddstr(LINES - 2, 0, ctime(&tim));
      +	text = ctime(&tim);
      +	mvprintw(2, 0, "%.*s", (int) (strlen(text) - 1), text);
       	refresh();
       	if ((t->tm_sec % 5) == 0
       	    && t->tm_sec != lastbeep) {
       	    lastbeep = t->tm_sec;
      +	    if (has_colors()) {
      +		odd = !odd;
      +		bkgd(odd ? COLOR_PAIR(4) : COLOR_PAIR(0));
      +	    }
       	    beep();
       	}
       
      diff -urNd -urNd ncurses-5.3/test/test.priv.h ncurses-5.3.20030906.orig/test/test.priv.h
      --- ncurses-5.3/test/test.priv.h	Sat Jun 29 18:36:12 2002
      +++ ncurses-5.3.20030906.orig/test/test.priv.h	Tue May 13 20:08:23 2003
      @@ -1,5 +1,5 @@
       /****************************************************************************
      - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.              *
      + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
        *                                                                          *
        * Permission is hereby granted, free of charge, to any person obtaining a  *
        * copy of this software and associated documentation files (the            *
      @@ -29,17 +29,32 @@
       /****************************************************************************
        *  Author: Thomas E. Dickey  1996                        *
        ****************************************************************************/
      -/* $Id: test.priv.h,v 1.35 2002/06/29 23:36:12 tom Exp $ */
      +/* $Id: test.priv.h,v 1.45 2003/04/26 18:23:36 tom Exp $ */
      +
      +#ifndef __TEST_PRIV_H
      +#define __TEST_PRIV_H 1
       
      -#if HAVE_CONFIG_H
       #include 
      -#else
      -#define HAVE_CURSES_VERSION 0
      -#define HAVE_RESIZETERM 0
      -#define HAVE_USE_DEFAULT_COLORS 0
      -#define HAVE_WRESIZE 0
      +
      +/*
      + * Fix ifdef's that look for the form/menu/panel libraries, if we are building
      + * with wide-character ncurses.
      + */
      +#ifdef  HAVE_LIBFORMW
      +#define HAVE_LIBFORM 1
      +#endif
      +
      +#ifdef  HAVE_LIBMENUW
      +#define HAVE_LIBMENU 1
      +#endif
      +
      +#ifdef  HAVE_LIBPANELW
      +#define HAVE_LIBPANEL 1
       #endif
       
      +/*
      + * Fallback definitions to accommodate broken compilers
      + */
       #ifndef HAVE_CURSES_VERSION
       #define HAVE_CURSES_VERSION 0
       #endif
      @@ -80,10 +95,18 @@
       #define HAVE_PANEL_H 0
       #endif
       
      +#ifndef HAVE_SLK_COLOR
      +#define HAVE_SLK_COLOR 0
      +#endif
      +
       #ifndef HAVE_WRESIZE
       #define HAVE_WRESIZE 0
       #endif
       
      +#ifndef NCURSES_EXT_FUNCS
      +#define NCURSES_EXT_FUNCS 0
      +#endif
      +
       #ifndef NCURSES_NOMACROS
       #define NCURSES_NOMACROS 0
       #endif
      @@ -125,6 +148,9 @@
       #define setlocale(name,string) /* nothing */
       #endif
       
      +#include 
      +#include 
      +
       #ifndef GCC_NORETURN
       #define GCC_NORETURN /* nothing */
       #endif
      @@ -144,24 +170,48 @@
       #endif
       #endif
       
      +#if HAVE_PANEL_H && HAVE_LIBPANEL
      +#define USE_LIBPANEL 1
      +#else
      +#define USE_LIBPANEL 0
      +#endif
      +
      +#if HAVE_MENU_H && HAVE_LIBMENU
      +#define USE_LIBMENU 1
      +#else
      +#define USE_LIBMENU 0
      +#endif
      +
      +#if HAVE_FORM_H && HAVE_LIBFORM
      +#define USE_LIBFORM 1
      +#else
      +#define USE_LIBFORM 0
      +#endif
      +
       #ifndef HAVE_TYPE_ATTR_T
       #if !USE_WIDEC_SUPPORT
       #define attr_t long
       #endif
       #endif
       
      -#ifndef NCURSES_CH_T
      +#undef NCURSES_CH_T
       #if !USE_WIDEC_SUPPORT
       #define NCURSES_CH_T chtype
       #else
       #define NCURSES_CH_T cchar_t
       #endif
      -#endif
       
       #ifndef CCHARW_MAX
       #define CCHARW_MAX 5
       #endif
       
      +#ifndef CTRL
      +#define CTRL(x)		((x) & 0x1f)
      +#endif
      +
      +#define QUIT		CTRL('Q')
      +#define ESCAPE		CTRL('[')
      +
       #ifndef KEY_MIN
       #define KEY_MIN 256	/* not defined in Solaris 8 */
       #endif
      @@ -216,3 +266,21 @@
       #ifndef NCURSES_CONST
       #define NCURSES_CONST /* nothing */
       #endif
      +
      +/* out-of-band values for representing absent capabilities */
      +#define ABSENT_BOOLEAN		(-1)		/* 255 */
      +#define ABSENT_NUMERIC		(-1)
      +#define ABSENT_STRING		(char *)0
      +
      +/* out-of-band values for representing cancels */
      +#define CANCELLED_BOOLEAN	(char)(-2)	/* 254 */
      +#define CANCELLED_NUMERIC	(-2)
      +#define CANCELLED_STRING	(char *)(-1)
      +
      +#define VALID_BOOLEAN(s) ((unsigned char)(s) <= 1) /* reject "-1" */
      +#define VALID_NUMERIC(s) ((s) >= 0)
      +#define VALID_STRING(s)  ((s) != CANCELLED_STRING && (s) != ABSENT_STRING)
      +
      +#define VT_ACSC "``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~"
      +
      +#endif /* __TEST_PRIV_H */
      diff -urNd -urNd ncurses-5.3/test/testcurs.c ncurses-5.3.20030906.orig/test/testcurs.c
      --- ncurses-5.3/test/testcurs.c	Sat Sep 14 17:45:15 2002
      +++ ncurses-5.3.20030906.orig/test/testcurs.c	Tue May 13 20:08:23 2003
      @@ -7,11 +7,10 @@
        *  wrs(5/28/93) -- modified to be consistent (perform identically) with either
        *                  PDCurses or under Unix System V, R4
        *
      - * $Id: testcurs.c,v 1.31 2002/09/14 22:45:15 tom Exp $
      + * $Id: testcurs.c,v 1.32 2002/10/19 22:11:24 tom Exp $
        */
       
       #include 
      -#include 
       
       #if defined(XCURSES)
       char *XCursesProgramName = "testcurs";
      diff -urNd -urNd ncurses-5.3/test/testscanw.c ncurses-5.3.20030906.orig/test/testscanw.c
      --- ncurses-5.3/test/testscanw.c	Sat Jun 29 18:32:18 2002
      +++ ncurses-5.3.20030906.orig/test/testscanw.c	Tue May 13 20:08:23 2003
      @@ -2,10 +2,9 @@
        * Date:  1997/03/17
        * From:  bayern@morpheus.cis.yale.edu
        *
      - * $Id: testscanw.c,v 1.9 2002/06/29 23:32:18 tom Exp $
      + * $Id: testscanw.c,v 1.10 2002/10/19 22:11:24 tom Exp $
        */
       #include 
      -#include 
       
       int
       main(int argc, char *argv[])
      diff -urNd -urNd ncurses-5.3/test/view.c ncurses-5.3.20030906.orig/test/view.c
      --- ncurses-5.3/test/view.c	Sat Jun 29 18:28:27 2002
      +++ ncurses-5.3.20030906.orig/test/view.c	Sun Jul 20 14:02:08 2003
      @@ -23,10 +23,9 @@
        * scroll operation worked, and the refresh() code only had to do a
        * partial repaint.
        *
      - * $Id: view.c,v 1.53 2002/06/29 23:28:27 tom Exp $
      + * $Id: view.c,v 1.57 2003/05/17 21:58:43 tom Exp $
        */
       
      -#include 
       #include 
       
       #include 
      @@ -54,7 +53,7 @@
       static RETSIGTYPE finish(int sig) GCC_NORETURN;
       static void show_all(const char *tag);
       
      -#if defined(SIGWINCH) && defined(TIOCGWINSZ) && HAVE_RESIZETERM
      +#if defined(SIGWINCH) && defined(TIOCGWINSZ) && HAVE_RESIZE_TERM
       #define CAN_RESIZE 1
       #else
       #define CAN_RESIZE 0
      @@ -496,14 +495,17 @@
       	clrtoeol();
       	if ((s = lptr[i - 1]) != 0) {
       	    int len = ch_len(s);
      -	    if (len > shift)
      +	    if (len > shift) {
       #if USE_WIDEC_SUPPORT
       		add_wchstr(s + shift);
       #else
       		addchstr(s + shift);
       #endif
      +	    }
      +#if defined(NCURSES_VERSION) || defined(HAVE_WCHGAT)
       	    if (try_color)
       		wchgat(stdscr, -1, A_NORMAL, my_pair, NULL);
      +#endif
       	}
           }
           setscrreg(1, LINES - 1);