From b2f192faabe412adce79534e22efe9fb69ee40e2 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 21 Jul 2006 10:10:31 +0000 Subject: Rename /openembedded/ -> /meta/ git-svn-id: https://svn.o-hand.com/repos/poky/trunk@530 311d38ba-8fff-0310-9ca6-ca027cbcb966 --- meta/packages/ncurses/ncurses-native_5.4.bb | 6 + meta/packages/ncurses/ncurses.inc | 86 + meta/packages/ncurses/ncurses/20030906.patch | 43248 ++++++++++++++++++++ meta/packages/ncurses/ncurses/configure.patch | 193 + meta/packages/ncurses/ncurses/mk_shared_lib.patch | 27 + meta/packages/ncurses/ncurses/run_tic.patch | 23 + meta/packages/ncurses/ncurses/tic.patch | 19 + meta/packages/ncurses/ncurses/visibility.patch | 4904 +++ meta/packages/ncurses/ncurses_5.4.bb | 7 + 9 files changed, 48513 insertions(+) create mode 100644 meta/packages/ncurses/ncurses-native_5.4.bb create mode 100644 meta/packages/ncurses/ncurses.inc create mode 100644 meta/packages/ncurses/ncurses/20030906.patch create mode 100644 meta/packages/ncurses/ncurses/configure.patch create mode 100644 meta/packages/ncurses/ncurses/mk_shared_lib.patch create mode 100644 meta/packages/ncurses/ncurses/run_tic.patch create mode 100644 meta/packages/ncurses/ncurses/tic.patch create mode 100644 meta/packages/ncurses/ncurses/visibility.patch create mode 100644 meta/packages/ncurses/ncurses_5.4.bb (limited to 'meta/packages/ncurses') diff --git a/meta/packages/ncurses/ncurses-native_5.4.bb b/meta/packages/ncurses/ncurses-native_5.4.bb new file mode 100644 index 0000000000..26d0897c9f --- /dev/null +++ b/meta/packages/ncurses/ncurses-native_5.4.bb @@ -0,0 +1,6 @@ +SECTION = "libs" +include ncurses_${PV}.bb +inherit native +EXTRA_OEMAKE = '"BUILD_CCFLAGS=${BUILD_CCFLAGS}"' +DEPENDS = "" +FILESPATH = "${FILE_DIRNAME}/local:${FILE_DIRNAME}/ncurses-${PV}-${PR}:${FILE_DIRNAME}/ncurses-${PV}:${FILE_DIRNAME}/ncurses:${FILE_DIRNAME}" diff --git a/meta/packages/ncurses/ncurses.inc b/meta/packages/ncurses/ncurses.inc new file mode 100644 index 0000000000..030cd1034c --- /dev/null +++ b/meta/packages/ncurses/ncurses.inc @@ -0,0 +1,86 @@ +DESCRIPTION = "Ncurses library" +HOMEPAGE = "http://www.gnu.org/software/ncurses/ncurses.html" +LICENSE = "MIT" +SECTION = "libs" +DEPENDS = "ncurses-native" +PACKAGES_prepend = "ncurses-tools " +PACKAGES_append = " ncurses-terminfo" +FILES_ncurses_append = " ${datadir}/tabset" +RSUGGESTS_${PN} = "ncurses-terminfo" +RPROVIDES = "libncurses5" + +inherit autotools + +# This keeps only tput/tset in ncurses +# clear/reset are in already busybox +FILES_ncurses-tools = "${bindir}/tic ${bindir}/toe ${bindir}/infotocap ${bindir}/captoinfo ${bindir}/infocmp ${bindir}/clear.${PN} ${bindir}/reset.${PN} ${bindir}/tack " +FILES_ncurses-terminfo = "${datadir}/terminfo" +FILES_${PN} = "${bindir}/tput ${bindir}/tset ${libdir}/lib*.so.* usr/share/tabset etc/terminfo" + +PARALLEL_MAKE="" + +EXTRA_OECONF = "--with-shared \ + --without-profile \ + --without-debug \ + --disable-rpath \ + --enable-echo \ + --enable-const \ + --without-ada \ + --enable-termcap \ + --without-cxx-binding \ + --with-terminfo-dirs=${sysconfdir}/terminfo:${datadir}/terminfo \ + --enable-overwrite" +export BUILD_CCFLAGS = "-I${S}/ncurses -I${S}/include ${BUILD_CFLAGS}" +export BUILD_LDFLAGS = "" +export EXTRA_OEMAKE = '"BUILD_LDFLAGS=" "BUILD_CCFLAGS=${BUILD_CCFLAGS}"' + +do_stage() { + autotools_stage_all + ln -sf curses.h ${STAGING_INCDIR}/ncurses.h + ln -sf libncurses.so ${STAGING_LIBDIR}/libtermcap.so + ln -sf libncurses.a ${STAGING_LIBDIR}/libtermcap.a +} + +do_install() { + autotools_do_install + + # our ncurses has termcap support + ln -sf libncurses.so ${D}${libdir}/libtermcap.so + ln -sf libncurses.a ${D}${libdir}/libtermcap.a + + # include some basic terminfo files + # stolen ;) from gentoo and modified a bit + for x in ansi console dumb linux rxvt screen sun vt{52,100,102,200,220} xterm-color xterm-xfree86 + do + local termfile="$(find "${D}${datadir}/terminfo/" -name "${x}" 2>/dev/null)" + local basedir="$(basename $(dirname "${termfile}"))" + + if [ -n "${termfile}" ] + then + install -d ${D}${sysconfdir}/terminfo/${basedir} + mv ${termfile} ${D}${sysconfdir}/terminfo/${basedir}/ + ln -s /etc/terminfo/${basedir}/${x} \ + ${D}${datadir}/terminfo/${basedir}/${x} + fi + done + # i think we can use xterm-color as default xterm + if [ -e ${D}${sysconfdir}/terminfo/x/xterm-color ] + then + ln -sf xterm-color ${D}${sysconfdir}/terminfo/x/xterm + fi + + mv ${D}${bindir}/clear ${D}${bindir}/clear.${PN} + mv ${D}${bindir}/reset ${D}${bindir}/reset.${PN} +} + + +pkg_postinst_ncurses-tools () { + update-alternatives --install ${bindir}/clear clear clear.${PN} 100 + update-alternatives --install ${bindir}/reset reset reset.${PN} 100 +} + + +pkg_prerm_ncurses-tools () { + update-alternatives --remove clear clear.${PN} + update-alternatives --remove reset reset.${PN} +} diff --git a/meta/packages/ncurses/ncurses/20030906.patch b/meta/packages/ncurses/ncurses/20030906.patch new file mode 100644 index 0000000000..f65dfafef1 --- /dev/null +++ b/meta/packages/ncurses/ncurses/20030906.patch @@ -0,0 +1,43248 @@ +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);
      diff --git a/meta/packages/ncurses/ncurses/configure.patch b/meta/packages/ncurses/ncurses/configure.patch
      new file mode 100644
      index 0000000000..992e81008f
      --- /dev/null
      +++ b/meta/packages/ncurses/ncurses/configure.patch
      @@ -0,0 +1,193 @@
      +
      +#
      +# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
      +#
      +
      +--- ncurses-5.3/./configure.in~configure
      ++++ ncurses-5.3/./configure.in
      +@@ -34,9 +34,10 @@
      + dnl See http://invisible-island.net/autoconf/ for additional information.
      + dnl
      + dnl ---------------------------------------------------------------------------
      +-AC_PREREQ(2.13.20020210)
      ++AC_PREREQ(2.57)
      + AC_REVISION($Revision: 1.297 $)
      +-AC_INIT(ncurses/base/lib_initscr.c)
      ++AC_INIT
      ++AC_CONFIG_SRCDIR([ncurses/base/lib_initscr.c])
      + AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
      + 
      + CF_SUBST_NCURSES_VERSION
      +@@ -45,7 +46,7 @@
      + [AC_MSG_WARN(overriding ABI version to $withval)
      +  cf_cv_abi_version=$withval])
      + 
      +-CF_CHECK_CACHE([AC_CANONICAL_SYSTEM])
      ++CF_CHECK_CACHE([AC_CANONICAL_TARGET([])])
      + AC_ARG_WITH(system-type,
      + [  --with-system-type=XXX  test: override derived host system-type],
      + [AC_MSG_WARN(overriding system type to $withval)
      +@@ -110,7 +111,7 @@
      + CF_GXX_VERSION
      + case $GXX_VERSION in
      + 1*|2.[[0-6]]*)
      +-	GXX=""; CXX=""; ac_cv_prog_gxx=no
      ++	GXX=""; CXX=""; ac_cv_cxx_compiler_gnu=no
      + 	cf_cxx_library=no
      + 	AC_MSG_WARN(templates do not work)
      + 	;;
      +@@ -370,7 +371,7 @@
      + if test "$CC_SHARED_OPTS" = "unknown"; then
      + 	for model in $cf_list_models; do
      + 		if test "$model" = "shared"; then
      +-			AC_ERROR(Shared libraries are not supported in this version)
      ++			AC_MSG_ERROR([Shared libraries are not supported in this version])
      + 		fi
      + 	done
      + fi
      +@@ -457,7 +458,7 @@
      + AC_ARG_ENABLE(big-core,
      + 	[  --disable-big-core      assume machine has little memory],
      + 	[with_big_core=$enableval],
      +-	[AC_TRY_RUN([
      ++	[AC_RUN_IFELSE([AC_LANG_SOURCE([[
      + #include 
      + #include 
      + int main() {
      +@@ -466,10 +467,7 @@
      + 	if (s != 0)
      + 		s[0] = s[n-1] = 0;
      + 	exit(s == 0);
      +-}],
      +-	[with_big_core=yes],
      +-	[with_big_core=no],
      +-	[with_big_core=no])])
      ++}]])],[with_big_core=yes],[with_big_core=no],[with_big_core=no])])
      + AC_MSG_RESULT($with_big_core)
      + test "$with_big_core" = "yes" && AC_DEFINE(HAVE_BIG_CORE)
      + 
      +@@ -484,7 +482,7 @@
      + if test "$with_termcap" != "yes" ; then
      + 	if test "$use_database" = no ; then
      + 		if test -z "$with_fallback" ; then
      +-			AC_ERROR(You have disabled the database w/o specifying fallbacks)
      ++			AC_MSG_ERROR([You have disabled the database w/o specifying fallbacks])
      + 		fi
      + 	fi
      + 	AC_DEFINE(PURE_TERMINFO)
      +@@ -903,7 +901,7 @@
      + AC_SUBST(MATH_LIB)
      + 
      + ###	Checks for header files.
      +-AC_STDC_HEADERS
      ++AC_HEADER_STDC([])
      + AC_HEADER_DIRENT
      + AC_HEADER_TIME
      + CF_REGEX
      +@@ -937,7 +935,7 @@
      + CF_SYS_TIME_SELECT
      + 
      + ###	checks for compiler characteristics
      +-AC_LANG_C
      ++AC_LANG([C])
      + AC_C_CONST
      + AC_C_INLINE
      + test "$ac_cv_c_inline" != no && AC_DEFINE(CC_HAS_INLINE_FUNCS)
      +@@ -1012,7 +1010,7 @@
      + 
      + # Check for C++ compiler characteristics (and ensure that it's there!)
      + if test -n "$CXX" ; then
      +-	AC_LANG_CPLUSPLUS
      ++	AC_LANG([C++])
      + 	CF_STDCPP_LIBRARY
      + 
      + 	case $GXX_VERSION in
      +@@ -1286,15 +1284,16 @@
      + 
      + ################################################################################
      + test "$use_database" = yes && SUB_MAKEFILES="$SUB_MAKEFILES misc/run_tic.sh:misc/run_tic.in"
      +-AC_OUTPUT( \
      ++AC_CONFIG_FILES([\
      + 	include/MKterm.h.awk \
      + 	include/curses.head:include/curses.h.in \
      + 	include/termcap.h \
      + 	include/unctrl.h \
      + 	$SUB_MAKEFILES \
      +-	Makefile,[
      ++	Makefile])
      ++AC_CONFIG_COMMANDS([default],[[
      + CF_LIB_RULES
      +-],[
      ++]],[[
      + ### Special initialization commands, used to pass information from the
      + ### configuration-run into config.status
      + 
      +@@ -1324,5 +1323,6 @@
      + cf_with_cxx_binding="$cf_with_cxx_binding"
      + host="$host"
      + 
      +-],cat)dnl
      ++]])
      ++AC_OUTPUTdnl
      + ${MAKE-make} preinstall
      +--- ncurses-5.3/./test/configure.in~configure
      ++++ ncurses-5.3/./test/configure.in
      +@@ -38,8 +38,9 @@
      + dnl
      + dnl See http://invisible-island.net/autoconf/ for additional information.
      + dnl ---------------------------------------------------------------------------
      +-AC_PREREQ(2.13.20020210)
      +-AC_INIT(ncurses.c)
      ++AC_PREREQ(2.57)
      ++AC_INIT
      ++AC_CONFIG_SRCDIR([ncurses.c])
      + AC_CONFIG_HEADER(ncurses_cfg.h:ncurses_tst.hin)
      + 
      + CF_INHERIT_SCRIPT(config.guess)
      +@@ -129,7 +130,7 @@
      + 
      + AC_TYPE_SIGNAL
      + 
      +-AC_STDC_HEADERS
      ++AC_HEADER_STDC([])
      + AC_HEADER_TIME
      + AC_CHECK_HEADERS( \
      + form.h \
      +@@ -160,9 +161,8 @@
      + wresize \
      + )
      + 
      +-AC_TRY_LINK([
      +-#include <${cf_cv_ncurses_header-curses.h}>],
      +-[
      ++AC_LINK_IFELSE([AC_LANG_PROGRAM([[
      ++#include <${cf_cv_ncurses_header-curses.h}>]], [[
      + 	(void) assume_default_colors (0, 0);
      + 	(void) curses_version ();
      + 	(void) define_key (0, 0);
      +@@ -175,7 +175,7 @@
      + 	(void) use_default_colors ();
      + 	(void) use_extended_names (0);
      + 	(void) wresize (0, 0, 0);
      +-	],[AC_DEFINE(NCURSES_EXT_FUNCS)])
      ++	]])],[AC_DEFINE(NCURSES_EXT_FUNCS)],[])
      + 
      + CF_SYS_TIME_SELECT
      + CF_FUNC_CURSES_VERSION
      +@@ -186,7 +186,8 @@
      + 
      + dnl ---------------------------------------------------------------------------
      + 
      +-AC_OUTPUT(Makefile,[
      ++AC_CONFIG_FILES([Makefile])
      ++AC_CONFIG_COMMANDS([default],[[
      + 	cat >>Makefile <
      + #include 
      + int main() {
      +@@ -459,10 +460,7 @@
      + 	if (s != 0)
      + 		s[0] = s[n-1] = 0;
      + 	exit(s == 0);
      +-}],
      +-	[with_big_core=yes],
      +-	[with_big_core=no],
      +-	[with_big_core=no])])
      ++}]])],[with_big_core=yes],[with_big_core=no],[with_big_core=no])])
      + AC_MSG_RESULT($with_big_core)
      + test "$with_big_core" = "yes" && AC_DEFINE(HAVE_BIG_CORE)
      + 
      +@@ -477,7 +475,7 @@
      + if test "$with_termcap" != "yes" ; then
      + 	if test "$use_database" = no ; then
      + 		if test -z "$with_fallback" ; then
      +-			AC_ERROR(You have disabled the database w/o specifying fallbacks)
      ++			AC_MSG_ERROR([You have disabled the database w/o specifying fallbacks])
      + 		fi
      + 	fi
      + 	AC_DEFINE(PURE_TERMINFO)
      +@@ -614,10 +612,10 @@
      + test "$with_rcs_ids" = yes && AC_DEFINE(USE_RCS_IDS)
      + 
      + ###############################################################################
      ++
      + CF_MAN_PAGES([ captoinfo clear infocmp infotocap tic toe tput ])
      + 
      + ###############################################################################
      +-CF_HELP_MESSAGE(Extensions:)
      + 
      + ### Note that some functions (such as const) are normally disabled anyway.
      + AC_MSG_CHECKING(if you want to build with function extensions)
      +@@ -683,7 +681,6 @@
      + 
      + ###############################################################################
      + # These options are relatively safe to experiment with.
      +-CF_HELP_MESSAGE(Development Code:)
      + AC_MSG_CHECKING(if you want all development code)
      + AC_ARG_WITH(develop,
      + 	[  --with-develop          enable all development options],
      +@@ -719,7 +716,6 @@
      + 
      + ###############################################################################
      + # These are just experimental, probably should not be in a package:
      +-CF_HELP_MESSAGE(Experimental Code:)
      + 
      + AC_MSG_CHECKING(if you do not want to assume colors are white-on-black)
      + AC_ARG_ENABLE(assumed-color,
      +@@ -828,7 +824,6 @@
      + AC_SUBST(TERMINFO_CAPS)
      + 
      + ###############################################################################
      +-CF_HELP_MESSAGE(Testing/development Options:)
      + 
      + ###	use option --disable-echo to suppress full display compiling commands
      + AC_MSG_CHECKING(if you want to display full commands during build)
      +@@ -931,7 +926,7 @@
      + AC_SUBST(MATH_LIB)
      + 
      + ###	Checks for header files.
      +-AC_STDC_HEADERS
      ++AC_HEADER_STDC([])
      + AC_HEADER_DIRENT
      + AC_HEADER_TIME
      + CF_REGEX
      +@@ -965,7 +960,7 @@
      + CF_SYS_TIME_SELECT
      + 
      + ###	checks for compiler characteristics
      +-AC_LANG_C
      ++AC_LANG([C])
      + AC_C_CONST
      + AC_C_INLINE
      + test "$ac_cv_c_inline" != no && AC_DEFINE(CC_HAS_INLINE_FUNCS)
      +@@ -1040,7 +1035,7 @@
      + 
      + # Check for C++ compiler characteristics (and ensure that it's there!)
      + if test -n "$CXX" ; then
      +-	AC_LANG_CPLUSPLUS
      ++	AC_LANG([C++])
      + 	CF_STDCPP_LIBRARY
      + 
      + 	case $GXX_VERSION in
      +@@ -1135,7 +1130,6 @@
      + fi
      + AC_SUBST(USE_CXX_BOOL)
      + 
      +-CF_HELP_MESSAGE(Ada95 Binding Options:)
      + 
      + dnl Check for availability of GNU Ada Translator (GNAT).
      + dnl At the moment we support no other Ada95 compiler.
      +@@ -1309,15 +1303,16 @@
      + 
      + ################################################################################
      + test "$use_database" = yes && SUB_MAKEFILES="$SUB_MAKEFILES misc/run_tic.sh:misc/run_tic.in"
      +-AC_OUTPUT( \
      ++AC_CONFIG_FILES([\
      + 	include/MKterm.h.awk \
      + 	include/curses.head:include/curses.h.in \
      + 	include/termcap.h \
      + 	include/unctrl.h \
      + 	$SUB_MAKEFILES \
      +-	Makefile,[
      ++	Makefile])
      ++AC_CONFIG_COMMANDS([default],[
      + CF_LIB_RULES
      +-],[
      ++],[[
      + ### Special initialization commands, used to pass information from the
      + ### configuration-run into config.status
      + 
      +@@ -1348,5 +1343,6 @@
      + host="$host"
      + target="$target"
      + 
      +-],cat)dnl
      ++]])
      ++AC_OUTPUT
      + ${MAKE-make} preinstall
      +--- ncurses-5.4/include/ncurses_dll.h~visibility.patch
      ++++ ncurses-5.4/include/ncurses_dll.h
      +@@ -7,8 +7,8 @@
      + /* 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
      ++//#undef NCURSES_DLL
      ++//#define NCURSES_STATIC
      + 
      + #if defined(__CYGWIN__)
      + #  if defined(NCURSES_DLL)
      +@@ -32,12 +32,20 @@
      + #  endif
      + #  define NCURSES_API __cdecl
      + #  define NCURSES_EXPORT(type) NCURSES_IMPEXP type NCURSES_API
      +-#  define NCURSES_EXPORT_VAR(type) NCURSES_IMPEXP type
      ++#  define NCURSES_EXPORT_VAR(var) var NCURSES_IMPEXP
      + #endif
      + 
      + /* Take care of non-cygwin platforms */
      + #if !defined(NCURSES_IMPEXP)
      +-#  define NCURSES_IMPEXP /* nothing */
      ++#  if defined(GCC_HASCLASSVISIBILITY)
      ++#    if defined(NCURSES_DLL)
      ++#      define NCURSES_IMPEXP __attribute__ ((visibility("default")))
      ++#    else
      ++#      define NCURSES_IMPEXP /* nothing */
      ++#    endif
      ++#  else
      ++#    define NCURSES_IMPEXP /* nothing */
      ++#  endif
      + #endif
      + #if !defined(NCURSES_API)
      + #  define NCURSES_API /* nothing */
      +@@ -46,7 +54,7 @@
      + #  define NCURSES_EXPORT(type) NCURSES_IMPEXP type NCURSES_API
      + #endif
      + #if !defined(NCURSES_EXPORT_VAR)
      +-#  define NCURSES_EXPORT_VAR(type) NCURSES_IMPEXP type
      ++#  define NCURSES_EXPORT_VAR(var) var NCURSES_IMPEXP
      + #endif
      + 
      + #endif /* NCURSES_DLL_H_incl */
      +--- ncurses-5.4/form/fty_alnum.c~visibility.patch
      ++++ ncurses-5.4/form/fty_alnum.c
      +@@ -132,6 +132,6 @@
      +   NULL
      + };
      + 
      +-NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ALNUM = &typeALNUM;
      ++FIELDTYPE* NCURSES_EXPORT_VAR(TYPE_ALNUM) = &typeALNUM;
      + 
      + /* fty_alnum.c ends here */
      +--- ncurses-5.4/form/fty_alpha.c~visibility.patch
      ++++ ncurses-5.4/form/fty_alpha.c
      +@@ -133,6 +133,6 @@
      +   NULL
      + };
      + 
      +-NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ALPHA = &typeALPHA;
      ++FIELDTYPE* NCURSES_EXPORT_VAR(TYPE_ALPHA) = &typeALPHA;
      + 
      + /* fty_alpha.c ends here */
      +--- ncurses-5.4/form/fld_newftyp.c~visibility.patch
      ++++ ncurses-5.4/form/fld_newftyp.c
      +@@ -48,7 +48,7 @@
      +   NULL                 /* enumerate previous function                 */
      + };
      + 
      +-NCURSES_EXPORT_VAR(const FIELDTYPE*) _nc_Default_FieldType = &default_fieldtype;
      ++const FIELDTYPE* NCURSES_EXPORT_VAR(_nc_Default_FieldType) = &default_fieldtype;
      + 
      + /*---------------------------------------------------------------------------
      + |   Facility      :  libnform  
      +--- ncurses-5.4/form/form.h~visibility.patch
      ++++ ncurses-5.4/form/form.h
      +@@ -248,24 +248,24 @@
      + 	/*************************
      + 	*  standard field types  *
      + 	*************************/
      +-extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ALPHA;
      +-extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ALNUM;
      +-extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ENUM;
      +-extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_INTEGER;
      +-extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_NUMERIC;
      +-extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_REGEXP;
      ++extern FIELDTYPE * NCURSES_EXPORT_VAR(TYPE_ALPHA);
      ++extern FIELDTYPE * NCURSES_EXPORT_VAR(TYPE_ALNUM);
      ++extern FIELDTYPE * NCURSES_EXPORT_VAR(TYPE_ENUM);
      ++extern FIELDTYPE * NCURSES_EXPORT_VAR(TYPE_INTEGER);
      ++extern FIELDTYPE * NCURSES_EXPORT_VAR(TYPE_NUMERIC);
      ++extern FIELDTYPE * NCURSES_EXPORT_VAR(TYPE_REGEXP);
      + 
      +         /************************************
      + 	*  built-in additional field types  *
      +         *  They are not defined in SVr4     *
      + 	************************************/
      +-extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_IPV4;      /* Internet IP Version 4 address */
      ++extern FIELDTYPE * NCURSES_EXPORT_VAR(TYPE_IPV4);      /* Internet IP Version 4 address */
      + 
      +         /*********************** 
      +         *   Default objects    *
      +         ***********************/ 
      +-extern NCURSES_EXPORT_VAR(FORM *)	_nc_Default_Form;
      +-extern NCURSES_EXPORT_VAR(FIELD *)	_nc_Default_Field;
      ++extern FORM * NCURSES_EXPORT_VAR(_nc_Default_Form);
      ++extern FIELD * NCURSES_EXPORT_VAR(_nc_Default_Field);
      + 
      + 
      + 	/***********************
      +--- ncurses-5.4/form/fty_int.c~visibility.patch
      ++++ ncurses-5.4/form/fty_int.c
      +@@ -155,6 +155,6 @@
      +   NULL
      + };
      + 
      +-NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_INTEGER = &typeINTEGER;
      ++FIELDTYPE* NCURSES_EXPORT_VAR(TYPE_INTEGER) = &typeINTEGER;
      + 
      + /* fty_int.c ends here */
      +--- ncurses-5.4/form/fty_num.c~visibility.patch
      ++++ ncurses-5.4/form/fty_num.c
      +@@ -190,6 +190,6 @@
      +   NULL
      + };
      + 
      +-NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_NUMERIC = &typeNUMERIC;
      ++FIELDTYPE* NCURSES_EXPORT_VAR(TYPE_NUMERIC) = &typeNUMERIC;
      + 
      + /* fty_num.c ends here */
      +--- ncurses-5.4/form/fty_regex.c~visibility.patch
      ++++ ncurses-5.4/form/fty_regex.c
      +@@ -252,6 +252,6 @@
      +   NULL
      + };
      + 
      +-NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_REGEXP = &typeREGEXP;
      ++FIELDTYPE* NCURSES_EXPORT_VAR(TYPE_REGEXP) = &typeREGEXP;
      + 
      + /* fty_regex.c ends here */
      +--- ncurses-5.4/form/frm_def.c~visibility.patch
      ++++ ncurses-5.4/form/frm_def.c
      +@@ -60,7 +60,7 @@
      +   NULL                                  /* fieldterm  */
      + };
      + 
      +-NCURSES_EXPORT_VAR(FORM *) _nc_Default_Form = &default_form;
      ++FORM * NCURSES_EXPORT_VAR(_nc_Default_Form) = &default_form;
      + 
      + /*---------------------------------------------------------------------------
      + |   Facility      :  libnform  
      +--- ncurses-5.4/form/fld_def.c~visibility.patch
      ++++ ncurses-5.4/form/fld_def.c
      +@@ -63,7 +63,7 @@
      +   (char *)0                /* usrptr */
      + };
      + 
      +-NCURSES_EXPORT_VAR(FIELD *) _nc_Default_Field = &default_field;
      ++FIELD * NCURSES_EXPORT_VAR(_nc_Default_Field) = &default_field;
      + 
      + /*---------------------------------------------------------------------------
      + |   Facility      :  libnform  
      +--- ncurses-5.4/form/fty_enum.c~visibility.patch
      ++++ ncurses-5.4/form/fty_enum.c
      +@@ -290,6 +290,6 @@
      +   Previous_Enum
      + };
      + 
      +-NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ENUM = &typeENUM;
      ++FIELDTYPE* NCURSES_EXPORT_VAR(TYPE_ENUM) = &typeENUM;
      + 
      + /* fty_enum.c ends here */
      +--- ncurses-5.4/form/fty_ipv4.c~visibility.patch
      ++++ ncurses-5.4/form/fty_ipv4.c
      +@@ -76,6 +76,6 @@
      +   NULL
      + };
      + 
      +-NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_IPV4 = &typeIPV4;
      ++FIELDTYPE* NCURSES_EXPORT_VAR(TYPE_IPV4) = &typeIPV4;
      + 
      + /* fty_ipv4.c ends here */
      +--- ncurses-5.4/form/form.priv.h~visibility.patch
      ++++ ncurses-5.4/form/form.priv.h
      +@@ -112,7 +112,7 @@
      + #define C_BLANK ' '
      + #define is_blank(c) ((c)==C_BLANK)
      + 
      +-extern NCURSES_EXPORT_VAR(const FIELDTYPE *) _nc_Default_FieldType;
      ++extern const FIELDTYPE * NCURSES_EXPORT_VAR(_nc_Default_FieldType);
      + 
      + extern NCURSES_EXPORT(TypeArgument *) _nc_Make_Argument (const FIELDTYPE*,va_list*,int*);
      + extern NCURSES_EXPORT(TypeArgument *) _nc_Copy_Argument (const FIELDTYPE*,const TypeArgument*, int*);
      +--- ncurses-5.4/include/tic.h~visibility.patch
      ++++ ncurses-5.4/include/tic.h
      +@@ -117,7 +117,7 @@
      + #define DEBUG(n, a)	/*nothing*/
      + #endif
      + 
      +-extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing;
      ++extern unsigned NCURSES_EXPORT_VAR(_nc_tracing);
      + extern NCURSES_EXPORT(void) _nc_tracef (char *, ...) GCC_PRINTFLIKE(1,2);
      + extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
      + extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *);
      +@@ -151,7 +151,7 @@
      + 	char	*tk_valstring;	/* value of capability (if a string) */
      + };
      + 
      +-extern NCURSES_EXPORT_VAR(struct token)	_nc_curr_token;
      ++extern struct token NCURSES_EXPORT_VAR(_nc_curr_token);
      + 
      + 	/*
      + 	 * List of keynames with their corresponding code.
      +@@ -161,7 +161,7 @@
      + 	int code;
      + };
      + 
      +-extern NCURSES_EXPORT_VAR(const struct kn) _nc_key_names[];
      ++extern const struct kn NCURSES_EXPORT_VAR(_nc_key_names[]);
      + 
      + 	/*
      + 	 * Offsets to string capabilities, with the corresponding functionkey
      +@@ -179,7 +179,7 @@
      + 
      + #else
      + 
      +-extern NCURSES_EXPORT_VAR(struct tinfo_fkeys) _nc_tinfo_fkeys[];
      ++extern struct tinfo_fkeys NCURSES_EXPORT_VAR(_nc_tinfo_fkeys[]);
      + 
      + #endif
      + 
      +@@ -204,11 +204,11 @@
      + 	const char	*source;
      + };
      + 
      +-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[];
      ++extern const struct name_table_entry * const NCURSES_EXPORT_VAR(_nc_info_hash_table[]);
      ++extern const struct name_table_entry * const NCURSES_EXPORT_VAR(_nc_cap_hash_table[]);
      + 
      +-extern NCURSES_EXPORT_VAR(const struct alias) _nc_capalias_table[];
      +-extern NCURSES_EXPORT_VAR(const struct alias) _nc_infoalias_table[];
      ++extern const struct alias NCURSES_EXPORT_VAR(_nc_capalias_table[]);
      ++extern const struct alias NCURSES_EXPORT_VAR(_nc_infoalias_table[]);
      + 
      + extern NCURSES_EXPORT(const struct name_table_entry *) _nc_get_table (bool);
      + extern NCURSES_EXPORT(const struct name_table_entry * const *) _nc_get_hash_table (bool);
      +@@ -255,13 +255,13 @@
      + extern NCURSES_EXPORT(void) _nc_panic_mode (char);
      + extern NCURSES_EXPORT(void) _nc_push_token (int);
      + extern NCURSES_EXPORT(void) _nc_reset_input (FILE *, char *);
      +-extern NCURSES_EXPORT_VAR(int) _nc_curr_col;
      +-extern NCURSES_EXPORT_VAR(int) _nc_curr_line;
      +-extern NCURSES_EXPORT_VAR(int) _nc_syntax;
      +-extern NCURSES_EXPORT_VAR(long) _nc_comment_end;
      +-extern NCURSES_EXPORT_VAR(long) _nc_comment_start;
      +-extern NCURSES_EXPORT_VAR(long) _nc_curr_file_pos;
      +-extern NCURSES_EXPORT_VAR(long) _nc_start_line;
      ++extern int NCURSES_EXPORT_VAR(_nc_curr_col);
      ++extern int NCURSES_EXPORT_VAR(_nc_curr_line);
      ++extern int NCURSES_EXPORT_VAR(_nc_syntax);
      ++extern long NCURSES_EXPORT_VAR(_nc_comment_end);
      ++extern long NCURSES_EXPORT_VAR(_nc_comment_start);
      ++extern long NCURSES_EXPORT_VAR(_nc_curr_file_pos);
      ++extern long NCURSES_EXPORT_VAR(_nc_start_line);
      + #define SYN_TERMINFO	0
      + #define SYN_TERMCAP	1
      + 
      +@@ -272,7 +272,7 @@
      + extern NCURSES_EXPORT(void) _nc_syserr_abort (const char *const,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
      + extern NCURSES_EXPORT(void) _nc_err_abort (const char *const,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
      + extern NCURSES_EXPORT(void) _nc_warning (const char *const,...) GCC_PRINTFLIKE(1,2);
      +-extern NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings;
      ++extern bool NCURSES_EXPORT_VAR(_nc_suppress_warnings);
      + 
      + /* comp_expand.c: expand string into readable form */
      + extern NCURSES_EXPORT(char *) _nc_tic_expand (const char *, bool, int);
      +@@ -287,12 +287,12 @@
      + /* lib_tparm.c */
      + #define NUM_PARM 9
      + 
      +-extern NCURSES_EXPORT_VAR(int) _nc_tparm_err;
      ++extern int NCURSES_EXPORT_VAR(_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 */
      ++extern int NCURSES_EXPORT_VAR(_nc_nulls_sent);		/* Add one for every null sent */
      + 
      + /* comp_main.c: compiler main */
      + extern const char * _nc_progname;
      +--- ncurses-5.4/include/MKterm.h.awk.in~visibility.patch
      ++++ ncurses-5.4/include/MKterm.h.awk.in
      +@@ -228,9 +228,9 @@
      + 			print  "    char *      _termname;      /* used for termname() */"
      + 			print  "} TERMINAL;"
      + 			print  ""
      +-			print  "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;"
      ++			print  "extern TERMINAL * NCURSES_EXPORT_VAR(cur_term);"
      + 			print  ""
      +-			print  "#if BROKEN_LINKER"
      ++			print  "#if defined(BROKEN_LINKER)"
      + 			print  "#define boolnames  _nc_boolnames()"
      + 			print  "#define boolcodes  _nc_boolcodes()"
      + 			print  "#define boolfnames _nc_boolfnames()"
      +@@ -253,15 +253,15 @@
      + 			print  ""
      + 			print  "#else"
      + 			print  ""
      +-			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolnames[];"
      +-			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolcodes[];"
      +-			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolfnames[];"
      +-			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numnames[];"
      +-			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numcodes[];"
      +-			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numfnames[];"
      +-			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strnames[];"
      +-			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strcodes[];"
      +-			print  "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[];"
      ++			print  "extern NCURSES_CONST char * const  NCURSES_EXPORT_VAR(boolnames[]);"
      ++			print  "extern NCURSES_CONST char * const  NCURSES_EXPORT_VAR(boolcodes[]);"
      ++			print  "extern NCURSES_CONST char * const  NCURSES_EXPORT_VAR(boolfnames[]);"
      ++			print  "extern NCURSES_CONST char * const  NCURSES_EXPORT_VAR(numnames[]);"
      ++			print  "extern NCURSES_CONST char * const  NCURSES_EXPORT_VAR(numcodes[]);"
      ++			print  "extern NCURSES_CONST char * const  NCURSES_EXPORT_VAR(numfnames[]);"
      ++			print  "extern NCURSES_CONST char * const  NCURSES_EXPORT_VAR(strnames[]);"
      ++			print  "extern NCURSES_CONST char * const  NCURSES_EXPORT_VAR(strcodes[]);"
      ++			print  "extern NCURSES_CONST char * const  NCURSES_EXPORT_VAR(strfnames[]);"
      + 			print  ""
      + 			print  "#endif"
      + 			print  ""
      +@@ -287,7 +287,7 @@
      + 			print  "#if !defined(__NCURSES_H)"
      + 			print  "extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *);"
      + 			print  "extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...);"
      +-			print  "extern NCURSES_EXPORT_VAR(char) ttytype[];"
      ++			print  "extern char NCURSES_EXPORT_VAR(ttytype[]);"
      + 			print  "extern NCURSES_EXPORT(int) putp (const char *);"
      + 			print  "extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *);"
      + 			print  "extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *);"
      +--- ncurses-5.4/include/termcap.h.in~visibility.patch
      ++++ ncurses-5.4/include/termcap.h.in
      +@@ -54,10 +54,10 @@
      + #undef  NCURSES_OSPEED 
      + #define NCURSES_OSPEED @NCURSES_OSPEED@ 
      + 
      +-extern NCURSES_EXPORT_VAR(char) PC;
      +-extern NCURSES_EXPORT_VAR(char *) UP;
      +-extern NCURSES_EXPORT_VAR(char *) BC;
      +-extern NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed; 
      ++extern char NCURSES_EXPORT_VAR(PC);
      ++extern char * NCURSES_EXPORT_VAR(UP);
      ++extern char * NCURSES_EXPORT_VAR(BC);
      ++extern NCURSES_OSPEED NCURSES_EXPORT_VAR(ospeed); 
      + 
      + #if !defined(NCURSES_TERM_H_incl)
      + extern NCURSES_EXPORT(char *) tgetstr (NCURSES_CONST char *, char **);
      +--- ncurses-5.4/include/term_entry.h~visibility.patch
      ++++ ncurses-5.4/include/term_entry.h
      +@@ -90,8 +90,8 @@
      + #define ExtNumname(tp,i,names)  EXT_NAMES(tp, i, NUMCOUNT, (i - (tp->num_Numbers - tp->ext_Numbers)) + tp->ext_Booleans, names)
      + #define ExtStrname(tp,i,names)  EXT_NAMES(tp, i, STRCOUNT, (i - (tp->num_Strings - tp->ext_Strings)) + (tp->ext_Numbers + tp->ext_Booleans), names)
      + 
      +-extern NCURSES_EXPORT_VAR(ENTRY *) _nc_head;
      +-extern NCURSES_EXPORT_VAR(ENTRY *) _nc_tail;
      ++extern ENTRY * NCURSES_EXPORT_VAR(_nc_head);
      ++extern ENTRY * NCURSES_EXPORT_VAR(_nc_tail);
      + #define for_entry_list(qp)	for (qp = _nc_head; qp; qp = qp->next)
      + 
      + #define MAX_LINE	132
      +@@ -135,8 +135,8 @@
      + 
      + /* parse_entry.c: entry-parsing code */
      + #if NCURSES_XNAMES
      +-extern NCURSES_EXPORT_VAR(bool) _nc_user_definable;
      +-extern NCURSES_EXPORT_VAR(bool) _nc_disable_period;
      ++extern bool NCURSES_EXPORT_VAR(_nc_user_definable);
      ++extern bool NCURSES_EXPORT_VAR(_nc_disable_period);
      + #endif
      + extern NCURSES_EXPORT(int) _nc_parse_entry (ENTRY *, int, bool);
      + extern NCURSES_EXPORT(int) _nc_capcmp (const char *, const char *);
      +--- ncurses-5.4/include/curses.h.in~visibility.patch
      ++++ ncurses-5.4/include/curses.h.in
      +@@ -171,8 +171,8 @@
      + #define WA_VERTICAL	A_VERTICAL
      + 
      + /* colors */
      +-extern NCURSES_EXPORT_VAR(int) COLORS;
      +-extern NCURSES_EXPORT_VAR(int) COLOR_PAIRS;
      ++extern int NCURSES_EXPORT_VAR(COLORS);
      ++extern int NCURSES_EXPORT_VAR(COLOR_PAIRS);
      + 
      + #define COLOR_BLACK	0
      + #define COLOR_RED	1
      +@@ -186,10 +186,10 @@
      + /* line graphics */
      + 
      + #if @BROKEN_LINKER@
      +-extern NCURSES_EXPORT_VAR(chtype*) _nc_acs_map(void);
      ++extern chtype* NCURSES_EXPORT_VAR(_nc_acs_map)(void);
      + #define acs_map (_nc_acs_map())
      + #else
      +-extern NCURSES_EXPORT_VAR(chtype) acs_map[];
      ++extern chtype NCURSES_EXPORT_VAR(acs_map[]);
      + #endif
      + 
      + #define NCURSES_ACS(c)	(acs_map[(unsigned char)c])
      +@@ -369,20 +369,20 @@
      + #endif
      + };
      + 
      +-extern NCURSES_EXPORT_VAR(WINDOW *)   stdscr;
      +-extern NCURSES_EXPORT_VAR(WINDOW *)   curscr;
      +-extern NCURSES_EXPORT_VAR(WINDOW *)   newscr;
      ++extern WINDOW * NCURSES_EXPORT_VAR(stdscr);
      ++extern WINDOW * NCURSES_EXPORT_VAR(curscr);
      ++extern WINDOW * NCURSES_EXPORT_VAR(newscr);
      + 
      +-extern NCURSES_EXPORT_VAR(int)	LINES;
      +-extern NCURSES_EXPORT_VAR(int)	COLS;
      +-extern NCURSES_EXPORT_VAR(int)	TABSIZE;
      ++extern int NCURSES_EXPORT_VAR(LINES);
      ++extern int NCURSES_EXPORT_VAR(COLS);
      ++extern int NCURSES_EXPORT_VAR(TABSIZE);
      + 
      + /*
      +  * This global was an undocumented feature under AIX curses.
      +  */
      +-extern NCURSES_EXPORT_VAR(int) ESCDELAY;	/* ESC expire time in milliseconds */
      ++extern int NCURSES_EXPORT_VAR(ESCDELAY);	/* ESC expire time in milliseconds */
      + 
      +-extern NCURSES_EXPORT_VAR(char) ttytype[];	/* needed for backward compatibility */
      ++extern char NCURSES_EXPORT_VAR(ttytype[]);	/* needed for backward compatibility */
      + 
      + /*
      +  * These functions are extensions - not in XSI Curses.
      +--- ncurses-5.4/include/curses.tail~visibility.patch
      ++++ ncurses-5.4/include/curses.tail
      +@@ -110,7 +110,7 @@
      + #define TRACE_MAXIMUM	((1 << TRACE_SHIFT) - 1) /* maximum trace level */
      + 
      + #if defined(TRACE) || defined(NCURSES_TEST)
      +-extern NCURSES_EXPORT_VAR(int) _nc_optimize_enable;		/* enable optimizations */
      ++extern int NCURSES_EXPORT_VAR(_nc_optimize_enable);		/* enable optimizations */
      + #ifdef _XOPEN_SOURCE_EXTENDED
      + extern NCURSES_EXPORT(const char *) _nc_viswbuf(const wchar_t *);
      + #endif
      +--- ncurses-5.4/include/curses.wide~visibility.patch
      ++++ ncurses-5.4/include/curses.wide
      +@@ -3,7 +3,7 @@
      + 
      + /* $Id: curses.wide,v 1.28 2004/01/03 20:35:14 tom Exp $ */
      + 
      +-extern NCURSES_EXPORT_VAR(cchar_t *) _nc_wacs;
      ++extern cchar_t * NCURSES_EXPORT_VAR(_nc_wacs);
      + 
      + #define NCURSES_WACS(c)	(&_nc_wacs[(unsigned char)c])
      + 
      +--- ncurses-5.4/menu/menu.priv.h~visibility.patch
      ++++ ncurses-5.4/menu/menu.priv.h
      +@@ -49,8 +49,8 @@
      + /* Backspace code */
      + #define BS (8)
      + 
      +-extern NCURSES_EXPORT_VAR(ITEM) _nc_Default_Item;
      +-extern NCURSES_EXPORT_VAR(MENU) _nc_Default_Menu;
      ++extern ITEM NCURSES_EXPORT_VAR(_nc_Default_Item);
      ++extern MENU NCURSES_EXPORT_VAR(_nc_Default_Menu);
      + 
      + /* Normalize item to default if none was given */
      + #define Normalize_Item( item ) ((item)=(item)?(item):&_nc_Default_Item)
      +--- ncurses-5.4/menu/m_global.c~visibility.patch
      ++++ ncurses-5.4/menu/m_global.c
      +@@ -41,7 +41,7 @@
      + 
      + static char mark[] = "-";
      + 
      +-NCURSES_EXPORT_VAR(MENU) _nc_Default_Menu = {
      ++MENU NCURSES_EXPORT_VAR(_nc_Default_Menu) = {
      +   16,				  /* Nr. of chars high */
      +   1,				  /* Nr. of chars wide */
      +   16,				  /* Nr. of items high */
      +@@ -80,7 +80,7 @@
      +   0			          /* status */	    
      + };
      + 
      +-NCURSES_EXPORT_VAR(ITEM) _nc_Default_Item = {
      ++ITEM NCURSES_EXPORT_VAR(_nc_Default_Item) = {
      +   { (char *)0, 0 },		  /* name */
      +   { (char *)0, 0 },		  /* description */
      +   (MENU *)0,		          /* Pointer to parent menu */
      +--- ncurses-5.4/ncurses/tty/lib_mvcur.c~visibility.patch
      ++++ ncurses-5.4/ncurses/tty/lib_mvcur.c
      +@@ -937,7 +937,7 @@
      + }
      + 
      + #if defined(TRACE) || defined(NCURSES_TEST)
      +-NCURSES_EXPORT_VAR(int) _nc_optimize_enable = OPTIMIZE_ALL;
      ++int NCURSES_EXPORT_VAR(_nc_optimize_enable) = OPTIMIZE_ALL;
      + #endif
      + 
      + #if defined(MAIN) || defined(NCURSES_TEST)
      +@@ -950,7 +950,7 @@
      + #include 
      + #include 
      + 
      +-NCURSES_EXPORT_VAR(const char *) _nc_progname = "mvcur";
      ++const char * NCURSES_EXPORT_VAR(_nc_progname) = "mvcur";
      + 
      + static unsigned long xmits;
      + 
      +--- ncurses-5.4/ncurses/tty/hardscroll.c~visibility.patch
      ++++ ncurses-5.4/ncurses/tty/hardscroll.c
      +@@ -151,8 +151,7 @@
      + 
      + # undef screen_lines
      + # define screen_lines MAXLINES
      +-NCURSES_EXPORT_VAR(int)
      +-oldnums[MAXLINES];
      ++int NCURSES_EXPORT_VAR(oldnums[MAXLINES]);
      + # define OLDNUM(n)	oldnums[n]
      + # define _tracef	printf
      + # undef TR
      +@@ -163,8 +162,7 @@
      + /* OLDNUM(n) indicates which line will be shifted to the position n.
      +    if OLDNUM(n) == _NEWINDEX, then the line n in new, not shifted from
      +    somewhere. */
      +-NCURSES_EXPORT_VAR(int *)
      +-_nc_oldnums = 0;
      ++int * NCURSES_EXPORT_VAR(_nc_oldnums) = 0;
      + 
      + # if USE_HASHMAP
      +      static int oldnums_allocated = 0;
      +--- ncurses-5.4/ncurses/base/lib_getch.c~visibility.patch
      ++++ ncurses-5.4/ncurses/base/lib_getch.c
      +@@ -44,8 +44,7 @@
      + 
      + #include 
      + 
      +-NCURSES_EXPORT_VAR(int)
      +-ESCDELAY = 1000;		/* max interval betw. chars in funkeys, in millisecs */
      ++int NCURSES_EXPORT_VAR(ESCDELAY) = 1000;		/* max interval betw. chars in funkeys, in millisecs */
      + 
      + #ifdef NCURSES_WGETCH_EVENTS
      + #define TWAIT_MASK 7
      +--- ncurses-5.4/ncurses/base/lib_slk.c~visibility.patch
      ++++ ncurses-5.4/ncurses/base/lib_slk.c
      +@@ -47,8 +47,7 @@
      +  * We'd like to move these into the screen context structure, but cannot,
      +  * because slk_init() is called before initscr()/newterm().
      +  */
      +-NCURSES_EXPORT_VAR(int)
      +-_nc_slk_format = 0;		/* one more than format specified in slk_init() */
      ++int NCURSES_EXPORT_VAR(_nc_slk_format) = 0;		/* one more than format specified in slk_init() */
      + 
      + /*
      +  * Paint the info line for the PC style SLK emulation.
      +--- ncurses-5.4/ncurses/base/lib_color.c~visibility.patch
      ++++ ncurses-5.4/ncurses/base/lib_color.c
      +@@ -48,8 +48,8 @@
      +  * historical reasons.  So we assign them in start_color() and also in
      +  * set_term()'s screen-switching logic.
      +  */
      +-NCURSES_EXPORT_VAR(int) COLOR_PAIRS = 0;
      +-NCURSES_EXPORT_VAR(int) COLORS = 0;
      ++int NCURSES_EXPORT_VAR(COLOR_PAIRS) = 0;
      ++int NCURSES_EXPORT_VAR(COLORS) = 0;
      + 
      + #define DATA(r,g,b) {r,g,b, 0,0,0, 0}
      + 
      +--- ncurses-5.4/ncurses/tinfo/lib_termcap.c~visibility.patch
      ++++ ncurses-5.4/ncurses/tinfo/lib_termcap.c
      +@@ -50,8 +50,8 @@
      + #define L_BRACK   '['
      + #define SHIFT_OUT 017		/* ^N */
      + 
      +-NCURSES_EXPORT_VAR(char *) UP = 0;
      +-NCURSES_EXPORT_VAR(char *) BC = 0;
      ++char * NCURSES_EXPORT_VAR(UP) = 0;
      ++char * NCURSES_EXPORT_VAR(BC) = 0;
      + 
      + static char *fix_me = 0;
      + 
      +--- ncurses-5.4/ncurses/tinfo/lib_cur_term.c~visibility.patch
      ++++ ncurses-5.4/ncurses/tinfo/lib_cur_term.c
      +@@ -42,7 +42,7 @@
      + 
      + MODULE_ID("$Id: lib_cur_term.c,v 1.13 2003/12/27 18:21:30 tom Exp $")
      + 
      +-NCURSES_EXPORT_VAR(TERMINAL *) cur_term = 0;
      ++TERMINAL * NCURSES_EXPORT_VAR(cur_term) = 0;
      + 
      + NCURSES_EXPORT(TERMINAL *)
      + set_curterm(TERMINAL * termp)
      +--- ncurses-5.4/ncurses/tinfo/lib_setup.c~visibility.patch
      ++++ ncurses-5.4/ncurses/tinfo/lib_setup.c
      +@@ -91,10 +91,10 @@
      + # endif
      + #endif
      + 
      +-NCURSES_EXPORT_VAR(char) ttytype[NAMESIZE] = "";
      +-NCURSES_EXPORT_VAR(int) LINES = 0;
      +-NCURSES_EXPORT_VAR(int) COLS = 0;
      +-NCURSES_EXPORT_VAR(int) TABSIZE = 0;
      ++char NCURSES_EXPORT_VAR(ttytype[NAMESIZE]) = "";
      ++int NCURSES_EXPORT_VAR(LINES) = 0;
      ++int NCURSES_EXPORT_VAR(COLS) = 0;
      ++int NCURSES_EXPORT_VAR(TABSIZE) = 0;
      + 
      + static int _use_env = TRUE;
      + 
      +--- ncurses-5.4/ncurses/tinfo/MKnames.awk~visibility.patch
      ++++ ncurses-5.4/ncurses/tinfo/MKnames.awk
      +@@ -10,7 +10,7 @@
      + 			print  "#include "		> "namehdr"
      + 			print  "#define DCL(it) static IT data##it[]" > "namehdr"
      + 			print  "#else"				> "namehdr"
      +-			print  "#define DCL(it) NCURSES_EXPORT_VAR(IT) it[]"	> "namehdr"
      ++			print  "#define DCL(it) IT NCURSES_EXPORT_VAR(it[])"	> "namehdr"
      + 			print  "#endif"				> "namehdr"
      + 			print  ""				> "namehdr"
      + 			print  "/*"				> "boolnames"
      +--- ncurses-5.4/ncurses/tinfo/lib_tparm.c~visibility.patch
      ++++ ncurses-5.4/ncurses/tinfo/lib_tparm.c
      +@@ -115,7 +115,7 @@
      +     bool num_type;
      + } stack_frame;
      + 
      +-NCURSES_EXPORT_VAR(int) _nc_tparm_err = 0;
      ++int NCURSES_EXPORT_VAR(_nc_tparm_err) = 0;
      + 
      + static stack_frame stack[STACKSIZE];
      + static int stack_ptr;
      +--- ncurses-5.4/ncurses/tinfo/lib_tputs.c~visibility.patch
      ++++ ncurses-5.4/ncurses/tinfo/lib_tputs.c
      +@@ -47,10 +47,10 @@
      + 
      + 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 */
      ++char NCURSES_EXPORT_VAR(PC) = 0;		/* used by termcap library */
      ++NCURSES_OSPEED NCURSES_EXPORT_VAR(ospeed) = 0;	/* used by termcap library */
      + 
      +-NCURSES_EXPORT_VAR(int) _nc_nulls_sent = 0;	/* used by 'tack' program */
      ++int NCURSES_EXPORT_VAR(_nc_nulls_sent) = 0;	/* used by 'tack' program */
      + 
      + static int (*my_outch) (int c) = _nc_outch;
      + 
      +--- ncurses-5.4/ncurses/tinfo/comp_error.c~visibility.patch
      ++++ ncurses-5.4/ncurses/tinfo/comp_error.c
      +@@ -42,9 +42,9 @@
      + 
      + MODULE_ID("$Id: comp_error.c,v 1.25 2002/09/07 20:05:07 tom Exp $")
      + 
      +-NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings = FALSE;
      +-NCURSES_EXPORT_VAR(int) _nc_curr_line = 0; /* current line # in input */
      +-NCURSES_EXPORT_VAR(int) _nc_curr_col = 0; /* current column # in input */
      ++bool NCURSES_EXPORT_VAR(_nc_suppress_warnings) = FALSE;
      ++int NCURSES_EXPORT_VAR(_nc_curr_line) = 0; /* current line # in input */
      ++int NCURSES_EXPORT_VAR(_nc_curr_col) = 0; /* current column # in input */
      + 
      + static const char *sourcename;
      + static char *termtype;
      +--- ncurses-5.4/ncurses/tinfo/free_ttype.c~visibility.patch
      ++++ ncurses-5.4/ncurses/tinfo/free_ttype.c
      +@@ -92,7 +92,7 @@
      + }
      + 
      + #if NCURSES_XNAMES
      +-NCURSES_EXPORT_VAR(bool) _nc_user_definable = TRUE;
      ++bool NCURSES_EXPORT_VAR(_nc_user_definable) = TRUE;
      + 
      + NCURSES_EXPORT(int)
      + use_extended_names(bool flag)
      +--- ncurses-5.4/ncurses/tinfo/comp_parse.c~visibility.patch
      ++++ ncurses-5.4/ncurses/tinfo/comp_parse.c
      +@@ -78,8 +78,8 @@
      +  *	   _nc_head                _nc_tail
      +  */
      + 
      +-NCURSES_EXPORT_VAR(ENTRY *) _nc_head = 0;
      +-NCURSES_EXPORT_VAR(ENTRY *) _nc_tail = 0;
      ++ENTRY * NCURSES_EXPORT_VAR(_nc_head) = 0;
      ++ENTRY * NCURSES_EXPORT_VAR(_nc_tail) = 0;
      + 
      + static void
      + enqueue(ENTRY * ep)
      +--- ncurses-5.4/ncurses/tinfo/comp_scan.c~visibility.patch
      ++++ ncurses-5.4/ncurses/tinfo/comp_scan.c
      +@@ -60,19 +60,13 @@
      + 
      + #define iswhite(ch)	(ch == ' '  ||  ch == '\t')
      + 
      +-NCURSES_EXPORT_VAR(int)
      +-_nc_syntax = 0;			/* termcap or terminfo? */
      +-NCURSES_EXPORT_VAR(long)
      +-_nc_curr_file_pos = 0;		/* file offset of current line */
      +-NCURSES_EXPORT_VAR(long)
      +-_nc_comment_start = 0;		/* start of comment range before name */
      +-NCURSES_EXPORT_VAR(long)
      +-_nc_comment_end = 0;		/* end of comment range before name */
      +-NCURSES_EXPORT_VAR(long)
      +-_nc_start_line = 0;		/* start line of current entry */
      ++int NCURSES_EXPORT_VAR(_nc_syntax) = 0;			/* termcap or terminfo? */
      ++long NCURSES_EXPORT_VAR(_nc_curr_file_pos) = 0;		/* file offset of current line */
      ++long NCURSES_EXPORT_VAR(_nc_comment_start) = 0;		/* start of comment range before name */
      ++long NCURSES_EXPORT_VAR(_nc_comment_end) = 0;		/* end of comment range before name */
      ++long NCURSES_EXPORT_VAR(_nc_start_line) = 0;		/* start line of current entry */
      + 
      +-NCURSES_EXPORT_VAR(struct token)
      +-_nc_curr_token =
      ++struct token NCURSES_EXPORT_VAR(_nc_curr_token) =
      + {
      +     0, 0, 0
      + };
      +@@ -90,8 +84,7 @@
      + static char *pushname;
      + 
      + #if NCURSES_EXT_FUNCS
      +-NCURSES_EXPORT_VAR(bool)
      +-_nc_disable_period = FALSE;	/* used by tic -a option */
      ++bool NCURSES_EXPORT_VAR(_nc_disable_period) = FALSE;	/* used by tic -a option */
      + #endif
      + 
      + static bool end_of_stream(void);
      +--- ncurses-5.4/ncurses/tinfo/lib_acs.c~visibility.patch
      ++++ ncurses-5.4/ncurses/tinfo/lib_acs.c
      +@@ -37,8 +37,7 @@
      + MODULE_ID("$Id: lib_acs.c,v 1.25 2002/12/28 16:26:46 tom Exp $")
      + 
      + #if BROKEN_LINKER
      +-NCURSES_EXPORT_VAR(chtype *)
      +-_nc_acs_map(void)
      ++chtype * NCURSES_EXPORT_VAR(_nc_acs_map)(void)
      + {
      +     static chtype *the_map = 0;
      +     if (the_map == 0)
      +@@ -46,7 +45,7 @@
      +     return the_map;
      + }
      + #else
      +-NCURSES_EXPORT_VAR(chtype) acs_map[ACS_LEN] =
      ++chtype NCURSES_EXPORT_VAR(acs_map[ACS_LEN]) =
      + {
      +     0
      + };
      +--- ncurses-5.4/ncurses/tinfo/lib_data.c~visibility.patch
      ++++ ncurses-5.4/ncurses/tinfo/lib_data.c
      +@@ -46,14 +46,11 @@
      +  * OS/2's native linker complains if we don't initialize public data when
      +  * constructing a dll (reported by J.J.G.Ripoll).
      +  */
      +-NCURSES_EXPORT_VAR(WINDOW *)
      +-stdscr = 0;
      +-NCURSES_EXPORT_VAR(WINDOW *)
      +-curscr = 0;
      +-NCURSES_EXPORT_VAR(WINDOW *)
      +-newscr = 0;
      ++WINDOW * NCURSES_EXPORT_VAR(stdscr) = 0;
      ++WINDOW * NCURSES_EXPORT_VAR(curscr) = 0;
      ++WINDOW * NCURSES_EXPORT_VAR(newscr) = 0;
      + 
      +-NCURSES_EXPORT_VAR(SCREEN *) _nc_screen_chain = 0;
      ++SCREEN * NCURSES_EXPORT_VAR(_nc_screen_chain) = 0;
      + 
      + /*
      +  * The variable 'SP' will be defined as a function on systems that cannot link
      +@@ -87,5 +84,5 @@
      + }
      + 
      + #else
      +-NCURSES_EXPORT_VAR(SCREEN *) SP = NULL;		/* Some linkers require initialized data... */
      ++SCREEN * NCURSES_EXPORT_VAR(SP) = NULL;		/* Some linkers require initialized data... */
      + #endif
      +--- ncurses-5.4/ncurses/trace/lib_trace.c~visibility.patch
      ++++ ncurses-5.4/ncurses/trace/lib_trace.c
      +@@ -42,11 +42,11 @@
      + 
      + MODULE_ID("$Id: lib_trace.c,v 1.53 2003/11/23 00:39:30 tom Exp $")
      + 
      +-NCURSES_EXPORT_VAR(unsigned) _nc_tracing = 0;	/* always define this */
      ++unsigned NCURSES_EXPORT_VAR(_nc_tracing) = 0;	/* always define this */
      + 
      + #ifdef TRACE
      +-NCURSES_EXPORT_VAR(const char *) _nc_tputs_trace = "";
      +-NCURSES_EXPORT_VAR(long) _nc_outchars = 0;
      ++const char * NCURSES_EXPORT_VAR(_nc_tputs_trace) = "";
      ++long NCURSES_EXPORT_VAR(_nc_outchars) = 0;
      + 
      + static FILE *tracefp = 0;	/* default to writing to stderr */
      + 
      +--- ncurses-5.4/ncurses/curses.priv.h~visibility.patch
      ++++ ncurses-5.4/ncurses/curses.priv.h
      +@@ -498,7 +498,7 @@
      + #endif
      + };
      + 
      +-extern NCURSES_EXPORT_VAR(SCREEN *) _nc_screen_chain;
      ++extern SCREEN * NCURSES_EXPORT_VAR(_nc_screen_chain);
      + 
      + #if NCURSES_NOMACROS
      + #include 
      +@@ -752,9 +752,9 @@
      + extern NCURSES_EXPORT(int)              _nc_retrace_int (int);
      + extern NCURSES_EXPORT(unsigned)         _nc_retrace_unsigned (unsigned);
      + extern NCURSES_EXPORT(void)             _nc_fifo_dump (void);
      +-extern NCURSES_EXPORT_VAR(const char *) _nc_tputs_trace;
      +-extern NCURSES_EXPORT_VAR(long)         _nc_outchars;
      +-extern NCURSES_EXPORT_VAR(unsigned)     _nc_tracing;
      ++extern const char * NCURSES_EXPORT_VAR(_nc_tputs_trace);
      ++extern long NCURSES_EXPORT_VAR(_nc_outchars);
      ++extern unsigned NCURSES_EXPORT_VAR(_nc_tracing);
      + 
      + #if USE_WIDEC_SUPPORT
      + extern NCURSES_EXPORT(const char *) _nc_viswbuf2 (int, const wchar_t *);
      +@@ -1055,7 +1055,7 @@
      + #endif
      + 
      + /* scroll indices */
      +-extern NCURSES_EXPORT_VAR(int *) _nc_oldnums;
      ++extern int * NCURSES_EXPORT_VAR(_nc_oldnums);
      + 
      + #define USE_SETBUF_0 0
      + 
      +@@ -1074,7 +1074,7 @@
      + extern NCURSES_EXPORT(void) _nc_set_screen (SCREEN *);
      + #else
      + /* current screen is private data; avoid possible linking conflicts too */
      +-extern NCURSES_EXPORT_VAR(SCREEN *) SP;
      ++extern SCREEN * NCURSES_EXPORT_VAR(SP);
      + #define _nc_alloc_screen() ((SP = typeCalloc(SCREEN, 1)) != 0)
      + #define _nc_set_screen(sp) SP = sp
      + #endif
      +@@ -1087,7 +1087,7 @@
      + #define screen_lines	SP->_lines
      + #define screen_columns	SP->_columns
      + 
      +-extern NCURSES_EXPORT_VAR(int) _nc_slk_format;  /* != 0 if slk_init() called */
      ++extern int NCURSES_EXPORT_VAR(_nc_slk_format);  /* != 0 if slk_init() called */
      + extern NCURSES_EXPORT(int) _nc_slk_initialize (WINDOW *, int);
      + 
      + /*
      +--- /dev/null
      ++++ ncurses-5.4/m4/cf.m4
      +@@ -0,0 +1,3703 @@
      ++dnl***************************************************************************
      ++dnl Copyright (c) 1998-2003,2004 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            *
      ++dnl "Software"), to deal in the Software without restriction, including      *
      ++dnl without limitation the rights to use, copy, modify, merge, publish,      *
      ++dnl distribute, distribute with modifications, sublicense, and/or sell       *
      ++dnl copies of the Software, and to permit persons to whom the Software is    *
      ++dnl furnished to do so, subject to the following conditions:                 *
      ++dnl                                                                          *
      ++dnl The above copyright notice and this permission notice shall be included  *
      ++dnl in all copies or substantial portions of the Software.                   *
      ++dnl                                                                          *
      ++dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
      ++dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
      ++dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
      ++dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
      ++dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
      ++dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
      ++dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
      ++dnl                                                                          *
      ++dnl Except as contained in this notice, the name(s) of the above copyright   *
      ++dnl holders shall not be used in advertising or otherwise to promote the     *
      ++dnl sale, use or other dealings in this Software without prior written       *
      ++dnl authorization.                                                           *
      ++dnl***************************************************************************
      ++dnl
      ++dnl Author: Thomas E. Dickey 1995-2003
      ++dnl
      ++dnl $Id: aclocal.m4,v 1.333 2004/01/30 20:59:56 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="-I. -I../../include $ACPPFLAGS"
      ++if test "$srcdir" != "."; then
      ++	ACPPFLAGS="-I\$(srcdir)/../../include $ACPPFLAGS"
      ++fi
      ++if test "$GCC" != yes; then
      ++	ACPPFLAGS="$ACPPFLAGS -I\$(includedir)"
      ++elif test "$includedir" != "/usr/include"; then
      ++	if test "$includedir" = '${prefix}/include' ; then
      ++		if test $prefix != /usr ; then
      ++			ACPPFLAGS="$ACPPFLAGS -I\$(includedir)"
      ++		fi
      ++	else
      ++		ACPPFLAGS="$ACPPFLAGS -I\$(includedir)"
      ++	fi
      ++fi
      ++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],
      ++[
      ++cf_new_cflags=
      ++cf_new_cppflags=
      ++for cf_add_cflags in $1
      ++do
      ++	case $cf_add_cflags in #(vi
      ++	-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
      ++		case "$CPPFLAGS" in
      ++		*$cf_add_cflags) #(vi
      ++			;;
      ++		*) #(vi
      ++			cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
      ++			;;
      ++		esac
      ++		;;
      ++	*)
      ++		cf_new_cflags="$cf_new_cflags $cf_add_cflags"
      ++		;;
      ++	esac
      ++done
      ++
      ++if test -n "$cf_new_cflags" ; then
      ++	ifelse($2,,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)])
      ++	CFLAGS="$CFLAGS $cf_new_cflags"
      ++fi
      ++
      ++if test -n "$cf_new_cppflags" ; then
      ++	ifelse($2,,,[CF_VERBOSE(add to \$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],
      ++[
      ++AC_CACHE_CHECK(for ${CC-cc} option to accept ANSI C, cf_cv_ansi_cc,[
      ++cf_cv_ansi_cc=no
      ++cf_save_CFLAGS="$CFLAGS"
      ++cf_save_CPPFLAGS="$CPPFLAGS"
      ++# Don't try gcc -ansi; that turns off useful extensions and
      ++# breaks some systems' header files.
      ++# AIX			-qlanglvl=ansi
      ++# Ultrix and OSF/1	-std1
      ++# HP-UX			-Aa -D_HPUX_SOURCE
      ++# SVR4			-Xc
      ++# UnixWare 1.2		(cannot use -Xc, since ANSI/POSIX clashes)
      ++for cf_arg in "-DCC_HAS_PROTOS" \
      ++	"" \
      ++	-qlanglvl=ansi \
      ++	-std1 \
      ++	-Ae \
      ++	"-Aa -D_HPUX_SOURCE" \
      ++	-Xc
      ++do
      ++	CF_ADD_CFLAGS($cf_arg)
      ++	AC_TRY_COMPILE(
      ++[
      ++#ifndef CC_HAS_PROTOS
      ++#if !defined(__STDC__) || (__STDC__ != 1)
      ++choke me
      ++#endif
      ++#endif
      ++],[
      ++	int test (int i, double x);
      ++	struct s1 {int (*f) (int a);};
      ++	struct s2 {int (*f) (double a);};],
      ++	[cf_cv_ansi_cc="$cf_arg"; break])
      ++done
      ++CFLAGS="$cf_save_CFLAGS"
      ++CPPFLAGS="$cf_save_CPPFLAGS"
      ++])
      ++
      ++if test "$cf_cv_ansi_cc" != "no"; then
      ++if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then
      ++	CF_ADD_CFLAGS($cf_cv_ansi_cc)
      ++else
      ++	AC_DEFINE(CC_HAS_PROTOS)
      ++fi
      ++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
      ++dnl the preprocessor.
      ++AC_DEFUN([CF_ANSI_CC_REQD],
      ++[AC_REQUIRE([CF_ANSI_CC_CHECK])
      ++if test "$cf_cv_ansi_cc" = "no"; then
      ++	AC_ERROR(
      ++[Your compiler does not appear to recognize prototypes.
      ++You have the following choices:
      ++	a. adjust your compiler options
      ++	b. get an up-to-date compiler
      ++	c. use a wrapper such as unproto])
      ++fi
      ++])dnl
      ++dnl ---------------------------------------------------------------------------
      ++dnl CF_BOOL_DECL version: 8 updated: 2004/01/30 15:51:18
      ++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.
      ++dnl
      ++dnl Treat the configuration-variable specially here, since we're directly
      ++dnl substituting its value (i.e., 1/0).
      ++dnl
      ++dnl $1 is the shell variable to store the result in, if not $cv_cv_builtin_bool
      ++AC_DEFUN([CF_BOOL_DECL],
      ++[
      ++AC_MSG_CHECKING(if we should include stdbool.h)
      ++
      ++AC_CACHE_VAL(cf_cv_header_stdbool_h,[
      ++	AC_TRY_COMPILE([],[bool foo = false],
      ++		[cf_cv_header_stdbool_h=0],
      ++		[AC_TRY_COMPILE([
      ++#ifndef __BEOS__
      ++#include 
      ++#endif
      ++],[bool foo = false],
      ++			[cf_cv_header_stdbool_h=1],
      ++			[cf_cv_header_stdbool_h=0])])])
      ++
      ++if test "$cf_cv_header_stdbool_h" = 1
      ++then	AC_MSG_RESULT(yes)
      ++else	AC_MSG_RESULT(no)
      ++fi
      ++
      ++AC_MSG_CHECKING([for builtin bool type])
      ++
      ++AC_CACHE_VAL(ifelse($1,,cf_cv_builtin_bool,[$1]),[
      ++	AC_TRY_COMPILE([
      ++#include 
      ++#include 
      ++],[bool x = false],
      ++		[ifelse($1,,cf_cv_builtin_bool,[$1])=1],
      ++		[ifelse($1,,cf_cv_builtin_bool,[$1])=0])
      ++	])
      ++
      ++if test "$ifelse($1,,cf_cv_builtin_bool,[$1])" = 1
      ++then	AC_MSG_RESULT(yes)
      ++else	AC_MSG_RESULT(no)
      ++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
      ++dnl If the current compiler is C rather than C++, we get the bool definition
      ++dnl from .
      ++AC_DEFUN([CF_BOOL_SIZE],
      ++[
      ++AC_MSG_CHECKING([for size of bool])
      ++AC_CACHE_VAL(cf_cv_type_of_bool,[
      ++	rm -f cf_test.out
      ++	AC_TRY_RUN([
      ++#include 
      ++#include 
      ++
      ++#if defined(__cplusplus)
      ++
      ++#ifdef HAVE_GXX_BUILTIN_H
      ++#include 
      ++#elif HAVE_GPP_BUILTIN_H
      ++#include 
      ++#elif HAVE_BUILTIN_H
      ++#include 
      ++#endif
      ++
      ++#else
      ++
      ++#if $cf_cv_header_stdbool_h
      ++#include 
      ++#endif
      ++
      ++#endif
      ++
      ++main()
      ++{
      ++	FILE *fp = fopen("cf_test.out", "w");
      ++	if (fp != 0) {
      ++		bool x = true;
      ++		if ((bool)(-x) >= 0)
      ++			fputs("unsigned ", fp);
      ++		if (sizeof(x) == sizeof(int))       fputs("int",  fp);
      ++		else if (sizeof(x) == sizeof(char)) fputs("char", fp);
      ++		else if (sizeof(x) == sizeof(short))fputs("short",fp);
      ++		else if (sizeof(x) == sizeof(long)) fputs("long", fp);
      ++		fclose(fp);
      ++	}
      ++	exit(0);
      ++}
      ++		],
      ++		[cf_cv_type_of_bool=`cat cf_test.out`
      ++		 if test -z "$cf_cv_type_of_bool"; then
      ++		   cf_cv_type_of_bool=unknown
      ++		 fi],
      ++		[cf_cv_type_of_bool=unknown],
      ++		[cf_cv_type_of_bool=unknown])
      ++	])
      ++	rm -f cf_test.out
      ++AC_MSG_RESULT($cf_cv_type_of_bool)
      ++if test "$cf_cv_type_of_bool" = unknown ; then
      ++	case .$NCURSES_BOOL in #(vi
      ++	.auto|.) NCURSES_BOOL=unsigned;;
      ++	esac
      ++	AC_MSG_WARN(Assuming $NCURSES_BOOL for type of bool)
      ++	cf_cv_type_of_bool=$NCURSES_BOOL
      ++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:
      ++dnl	1. the prefix (e.g., /usr)
      ++dnl	2. the header files (e.g., /usr/include/ncurses)
      ++dnl We'll look for a previous installation of ncurses and use the same defaults.
      ++dnl
      ++dnl We don't use AC_PREFIX_DEFAULT, because it gets evaluated too soon, and
      ++dnl we don't use AC_PREFIX_PROGRAM, because we cannot distinguish ncurses's
      ++dnl programs from a vendor's.
      ++AC_DEFUN([CF_CFG_DEFAULTS],
      ++[
      ++AC_MSG_CHECKING(for prefix)
      ++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*|k*bsd*-gnu)
      ++		prefix=/usr
      ++		;;
      ++	*)	prefix=$ac_default_prefix
      ++		;;
      ++	esac
      ++fi
      ++AC_MSG_RESULT($prefix)
      ++
      ++if test "x$prefix" = "xNONE" ; then
      ++AC_MSG_CHECKING(for default include-directory)
      ++test -n "$verbose" && echo 1>&AC_FD_MSG
      ++for cf_symbol in \
      ++	$includedir \
      ++	$includedir/ncurses \
      ++	$prefix/include \
      ++	$prefix/include/ncurses \
      ++	/usr/local/include \
      ++	/usr/local/include/ncurses \
      ++	/usr/include \
      ++	/usr/include/ncurses
      ++do
      ++	cf_dir=`eval echo $cf_symbol`
      ++	if test -f $cf_dir/curses.h ; then
      ++	if ( fgrep NCURSES_VERSION $cf_dir/curses.h 2>&1 >/dev/null ) ; then
      ++		includedir="$cf_symbol"
      ++		test -n "$verbose"  && echo $ac_n "	found " 1>&AC_FD_MSG
      ++		break
      ++	fi
      ++	fi
      ++	test -n "$verbose"  && echo "	tested $cf_dir" 1>&AC_FD_MSG
      ++done
      ++AC_MSG_RESULT($includedir)
      ++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],[
      ++AC_MSG_CHECKING(for terminal-capability database functions)
      ++AC_CACHE_VAL(cf_cv_cgetent,[
      ++AC_TRY_LINK([
      ++#include ],[
      ++	char temp[128];
      ++	char *buf = temp;
      ++	char *db_array = temp;
      ++	cgetent(&buf, /* int *, */ &db_array, "vt100");
      ++	cgetcap(buf, "tc", '=');
      ++	cgetmatch(buf, "tc");
      ++	],
      ++	[cf_cv_cgetent=yes],
      ++	[cf_cv_cgetent=no])
      ++])
      ++AC_MSG_RESULT($cf_cv_cgetent)
      ++test "$cf_cv_cgetent" = yes && AC_DEFINE(HAVE_BSD_CGETENT)
      ++])dnl
      ++dnl ---------------------------------------------------------------------------
      ++dnl CF_CHECK_CACHE version: 9 updated: 2004/01/30 15:59:13
      ++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.
      ++dnl
      ++dnl Note: we would use $ac_config_sub, but that is one of the places where
      ++dnl autoconf 2.5x broke compatibility with autoconf 2.13
      ++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_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.
      ++dnl
      ++dnl $1 = the name to check
      ++AC_DEFUN([CF_CHECK_ERRNO],
      ++[
      ++AC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[
      ++    AC_TRY_COMPILE([
      ++#ifdef HAVE_STDLIB_H
      ++#include 
      ++#endif
      ++#include 
      ++#include 
      ++#include  ],
      ++    [long x = (long) $1],
      ++    [cf_cv_dcl_$1=yes],
      ++    [cf_cv_dcl_$1=no])
      ++])
      ++
      ++if test "$cf_cv_dcl_$1" = no ; then
      ++    CF_UPPER(cf_result,decl_$1)
      ++    AC_DEFINE_UNQUOTED($cf_result)
      ++fi
      ++
      ++# It's possible (for near-UNIX clones) that the data doesn't exist
      ++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
      ++dnl $2 = its type
      ++AC_DEFUN([CF_CHECK_EXTERN_DATA],
      ++[
      ++AC_CACHE_CHECK(if external $1 exists, cf_cv_have_$1,[
      ++    AC_TRY_LINK([
      ++#undef $1
      ++extern $2 $1;
      ++],
      ++    [$1 = 2],
      ++    [cf_cv_have_$1=yes],
      ++    [cf_cv_have_$1=no])
      ++])
      ++
      ++if test "$cf_cv_have_$1" = yes ; then
      ++    CF_UPPER(cf_result,have_$1)
      ++    AC_DEFINE_UNQUOTED($cf_result)
      ++fi
      ++
      ++])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).
      ++AC_DEFUN([CF_CPP_PARAM_INIT],
      ++[
      ++if test -n "$CXX"; then
      ++AC_CACHE_CHECK(if $CXX accepts parameter initialization,cf_cv_cpp_param_init,[
      ++	AC_LANG_SAVE
      ++	AC_LANG_CPLUSPLUS
      ++	AC_TRY_RUN([
      ++class TEST {
      ++private:
      ++	int value;
      ++public:
      ++	TEST(int x = 1);
      ++	~TEST();
      ++};
      ++
      ++TEST::TEST(int x = 1)	// some compilers do not like second initializer
      ++{
      ++	value = x;
      ++}
      ++void main() { }
      ++],
      ++	[cf_cv_cpp_param_init=yes],
      ++	[cf_cv_cpp_param_init=no],
      ++	[cf_cv_cpp_param_init=unknown])
      ++	AC_LANG_RESTORE
      ++])
      ++fi
      ++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],
      ++[
      ++if test -n "$CXX"; then
      ++
      ++AC_LANG_SAVE
      ++AC_LANG_CPLUSPLUS
      ++AC_CHECK_HEADERS(strstream.h)
      ++
      ++AC_CACHE_CHECK(if $CXX supports vscan function,cf_cv_cpp_vscan_func,[
      ++	for cf_vscan_func in strstream strstream_cast stdio
      ++	do
      ++	case $cf_vscan_func in #(vi
      ++	stdio)		cf_vscan_defs=USE_STDIO_VSCAN ;; #(vi
      ++	strstream)	cf_vscan_defs=USE_STRSTREAM_VSCAN ;;
      ++	strstream_cast)	cf_vscan_defs=USE_STRSTREAM_VSCAN_CAST ;;
      ++	esac
      ++	AC_TRY_LINK([
      ++#include 
      ++#include 
      ++#define $cf_vscan_defs 1
      ++#if defined(USE_STDIO_VSCAN)
      ++#elif defined(HAVE_STRSTREAM_H) && defined(USE_STRSTREAM_VSCAN)
      ++#include 
      ++#endif
      ++
      ++int scanw(const char* fmt, ...)
      ++{
      ++    int result = -1;
      ++    char buf[BUFSIZ];
      ++
      ++    va_list args;
      ++    va_start(args, fmt);
      ++#if defined(USE_STDIO_VSCAN)
      ++    if (::vsscanf(buf, fmt, args) != -1)
      ++	result = 0;
      ++#elif defined(USE_STRSTREAM_VSCAN)
      ++    strstreambuf ss(buf, sizeof(buf));
      ++    if (ss.vscan(fmt, args) != -1)
      ++	result = 0;
      ++#elif defined(USE_STRSTREAM_VSCAN_CAST)
      ++    strstreambuf ss(buf, sizeof(buf));
      ++    if (ss.vscan(fmt, (_IO_va_list)args) != -1)
      ++	result = 0;
      ++#else
      ++#error case $cf_vscan_func failed
      ++#endif
      ++    va_end(args);
      ++    return result;
      ++}
      ++],[int tmp, foo = scanw("%d", &tmp)],
      ++	[cf_cv_cpp_vscan_func=$cf_vscan_func; break],
      ++	[cf_cv_cpp_vscan_func=no])
      ++	test "$cf_cv_cpp_vscan_func" != no && break
      ++	done
      ++])
      ++
      ++AC_LANG_RESTORE
      ++fi
      ++
      ++case $cf_cv_cpp_vscan_func in #(vi
      ++stdio) #(vi
      ++	AC_DEFINE(CPP_HAS_VSCAN_FUNC)
      ++	AC_DEFINE(USE_STDIO_VSCAN)
      ++	;;
      ++strstream)
      ++	AC_DEFINE(CPP_HAS_VSCAN_FUNC)
      ++	AC_DEFINE(USE_STRSTREAM_VSCAN)
      ++	;;
      ++strstream_cast)
      ++	AC_DEFINE(CPP_HAS_VSCAN_FUNC)
      ++	AC_DEFINE(USE_STRSTREAM_VSCAN_CAST)
      ++	;;
      ++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
      ++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"
      ++for cf_item in $cf_list_models
      ++do
      ++	CF_OBJ_SUBDIR($cf_item,cf_subdir)
      ++	for cf_item2 in $DIRS_TO_MAKE
      ++	do
      ++		test $cf_item2 = $cf_subdir && break
      ++	done
      ++	test ".$cf_item2" != ".$cf_subdir" && DIRS_TO_MAKE="$DIRS_TO_MAKE $cf_subdir"
      ++done
      ++for cf_dir in $DIRS_TO_MAKE
      ++do
      ++	test ! -d $cf_dir && mkdir $cf_dir
      ++done
      ++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],
      ++[
      ++AC_MSG_CHECKING(for special defines needed for etip.h)
      ++cf_save_CXXFLAGS="$CXXFLAGS"
      ++cf_result="none"
      ++for cf_math in "" MATH_H
      ++do
      ++for cf_excp in "" MATH_EXCEPTION
      ++do
      ++	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([
      ++#include 
      ++],[],[
      ++	test -n "$cf_math" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_math})
      ++	test -n "$cf_excp" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_excp})
      ++	cf_result="$cf_math $cf_excp"
      ++	break
      ++],[])
      ++done
      ++done
      ++AC_MSG_RESULT($cf_result)
      ++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],
      ++[
      ++AC_CHECK_FUNC(memmove,,[
      ++AC_CHECK_FUNC(bcopy,[
      ++	AC_CACHE_CHECK(if bcopy does overlapping moves,cf_cv_good_bcopy,[
      ++		AC_TRY_RUN([
      ++int main() {
      ++	static char data[] = "abcdefghijklmnopqrstuwwxyz";
      ++	char temp[40];
      ++	bcopy(data, temp, sizeof(data));
      ++	bcopy(temp+10, temp, 15);
      ++	bcopy(temp+5, temp+15, 10);
      ++	exit (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz"));
      ++}
      ++		],
      ++		[cf_cv_good_bcopy=yes],
      ++		[cf_cv_good_bcopy=no],
      ++		[cf_cv_good_bcopy=unknown])
      ++		])
      ++	],[cf_cv_good_bcopy=no])
      ++	if test "$cf_cv_good_bcopy" = yes ; then
      ++		AC_DEFINE(USE_OK_BCOPY)
      ++	else
      ++		AC_DEFINE(USE_MY_MEMMOVE)
      ++	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],[
      ++AC_CACHE_CHECK(if poll really works,cf_cv_working_poll,[
      ++AC_TRY_RUN([
      ++#include 
      ++#ifdef HAVE_POLL_H
      ++#include 
      ++#else
      ++#include 
      ++#endif
      ++int main() {
      ++	struct pollfd myfds;
      ++	int ret;
      ++
      ++	myfds.fd = 0;
      ++	myfds.events = POLLIN;
      ++
      ++	ret = poll(&myfds, 1, 100);
      ++	exit(ret != 0);
      ++}],
      ++	[cf_cv_working_poll=yes],
      ++	[cf_cv_working_poll=no],
      ++	[cf_cv_working_poll=unknown])])
      ++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],[
      ++AC_REQUIRE([CF_STRUCT_TERMIOS])
      ++AC_CACHE_CHECK(for tcgetattr, cf_cv_have_tcgetattr,[
      ++AC_TRY_LINK([
      ++#include 
      ++#ifdef HAVE_UNISTD_H
      ++#include 
      ++#endif
      ++#ifdef HAVE_TERMIOS_H
      ++#include 
      ++#define TTY struct termios
      ++#else
      ++#ifdef HAVE_TERMIO_H
      ++#include 
      ++#define TTY struct termio
      ++#endif
      ++#endif
      ++],[
      ++TTY foo;
      ++tcgetattr(1, &foo);],
      ++[cf_cv_have_tcgetattr=yes],
      ++[cf_cv_have_tcgetattr=no])])
      ++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.
      ++AC_DEFUN([CF_FUNC_VSSCANF],
      ++[
      ++AC_CACHE_CHECK(for vsscanf function or workaround,cf_cv_func_vsscanf,[
      ++AC_TRY_LINK([
      ++#include 
      ++#include ],[
      ++	va_list ap;
      ++	vsscanf("from", "%d", ap)],[cf_cv_func_vsscanf=vsscanf],[
      ++AC_TRY_LINK([
      ++#include 
      ++#include ],[
      ++    FILE strbuf;
      ++    char *str = "from";
      ++
      ++    strbuf._flag = _IOREAD;
      ++    strbuf._ptr = strbuf._base = (unsigned char *) str;
      ++    strbuf._cnt = strlen(str);
      ++    strbuf._file = _NFILE;
      ++    return (vfscanf(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=vfscanf],[
      ++AC_TRY_LINK([
      ++#include 
      ++#include ],[
      ++    FILE strbuf;
      ++    char *str = "from";
      ++
      ++    strbuf._flag = _IOREAD;
      ++    strbuf._ptr = strbuf._base = (unsigned char *) str;
      ++    strbuf._cnt = strlen(str);
      ++    strbuf._file = _NFILE;
      ++    return (_doscan(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=_doscan],[
      ++cf_cv_func_vsscanf=no])])])])
      ++
      ++case $cf_cv_func_vsscanf in #(vi
      ++vsscanf) AC_DEFINE(HAVE_VSSCANF);; #(vi
      ++vfscanf) AC_DEFINE(HAVE_VFSCANF);; #(vi
      ++_doscan) AC_DEFINE(HAVE__DOSCAN);;
      ++esac
      ++
      ++])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.
      ++AC_DEFUN([CF_GCC_ATTRIBUTES],
      ++[
      ++if test "$GCC" = yes
      ++then
      ++cat > conftest.i < conftest.$ac_ext <&AC_FD_CC
      ++		case $cf_attribute in
      ++		scanf|printf)
      ++		cat >conftest.h <conftest.h <>confdefs.h
      ++		fi
      ++	done
      ++else
      ++	fgrep define conftest.i >>confdefs.h
      ++fi
      ++rm -rf conftest*
      ++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).  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 <>conftest.ads <>conftest.adb <&AC_FD_CC 2>&1 ) ; then
      ++   if ( ./conftest 1>&AC_FD_CC 2>&1 ) ; then
      ++ifelse($3,,      :,[      $3])
      ++ifelse($4,,,[   else
      ++      $4])
      ++   fi
      ++ifelse($4,,,[else
      ++   $4])
      ++fi
      ++rm -f conftest*
      ++])dnl
      ++dnl ---------------------------------------------------------------------------
      ++dnl CF_GNAT_VERSION version: 11 updated: 2003/09/06 19:42:09
      ++dnl ---------------
      ++dnl Verify version of GNAT.
      ++AC_DEFUN([CF_GNAT_VERSION],
      ++[
      ++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_gnat_version. Required is 3.11 or better. Disabling Ada95 binding.
      ++     cf_cv_prog_gnat_correct=no
      ++     ;;
      ++esac
      ++case $cf_gnat_version in
      ++  3.[[1-9]]*|[[4-9]].*)
      ++      cf_compile_generics=generics
      ++      cf_generic_objects="\$(GENOBJS)"
      ++      ;;
      ++  *)  cf_compile_generics=
      ++      cf_generic_objects=
      ++      ;;
      ++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,
      ++dnl since it is interwoven with GNU extensions.
      ++dnl
      ++dnl Well, yes we could work around it...
      ++AC_DEFUN([CF_GNU_SOURCE],
      ++[
      ++AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
      ++AC_TRY_COMPILE([#include ],[
      ++#ifndef _XOPEN_SOURCE
      ++make an error
      ++#endif],
      ++	[cf_cv_gnu_source=no],
      ++	[cf_save="$CPPFLAGS"
      ++	 CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
      ++	 AC_TRY_COMPILE([#include ],[
      ++#ifdef _XOPEN_SOURCE
      ++make an error
      ++#endif],
      ++	[cf_cv_gnu_source=no],
      ++	[cf_cv_gnu_source=yes])
      ++	CPPFLAGS="$cf_save"
      ++	])
      ++])
      ++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.
      ++AC_DEFUN([CF_GPP_LIBRARY],
      ++[
      ++cf_cxx_library=unknown
      ++case $cf_cv_system_name in #(vi
      ++os2*) #(vi
      ++	cf_gpp_libname=gpp
      ++	;;
      ++*)
      ++	cf_gpp_libname=g++
      ++	;;
      ++esac
      ++if test "$GXX" = yes; then
      ++	AC_MSG_CHECKING([for lib$cf_gpp_libname])
      ++	cf_save="$LIBS"
      ++	LIBS="$LIBS -l$cf_gpp_libname"
      ++	AC_TRY_LINK([
      ++#include <$cf_gpp_libname/builtin.h>
      ++	],
      ++	[two_arg_error_handler_t foo2 = lib_error_handler],
      ++	[cf_cxx_library=yes
      ++	 CXXLIBS="$CXXLIBS -l$cf_gpp_libname"
      ++	 if test "$cf_gpp_libname" = cpp ; then
      ++	    AC_DEFINE(HAVE_GPP_BUILTIN_H)
      ++	 else
      ++	    AC_DEFINE(HAVE_GXX_BUILTIN_H)
      ++	 fi],
      ++	[AC_TRY_LINK([
      ++#include 
      ++	],
      ++	[two_arg_error_handler_t foo2 = lib_error_handler],
      ++	[cf_cxx_library=yes
      ++	 CXXLIBS="$CXXLIBS -l$cf_gpp_libname"
      ++	 AC_DEFINE(HAVE_BUILTIN_H)],
      ++	[cf_cxx_library=no])])
      ++	LIBS="$cf_save"
      ++	AC_MSG_RESULT($cf_cxx_library)
      ++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_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="-I. -I../include $CPPFLAGS"
      ++if test "$srcdir" != "."; then
      ++	CPPFLAGS="-I\$(srcdir)/../include $CPPFLAGS"
      ++fi
      ++if test "$GCC" != yes; then
      ++	CPPFLAGS="$CPPFLAGS -I\$(includedir)"
      ++elif test "$includedir" != "/usr/include"; then
      ++	if test "$includedir" = '${prefix}/include' ; then
      ++		if test $prefix != /usr ; then
      ++			CPPFLAGS="$CPPFLAGS -I\$(includedir)"
      ++		fi
      ++	else
      ++		CPPFLAGS="$CPPFLAGS -I\$(includedir)"
      ++	fi
      ++fi
      ++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],
      ++[
      ++AC_MSG_CHECKING(for isascii)
      ++AC_CACHE_VAL(cf_cv_have_isascii,[
      ++	AC_TRY_LINK([#include ],[int x = isascii(' ')],
      ++	[cf_cv_have_isascii=yes],
      ++	[cf_cv_have_isascii=no])
      ++])dnl
      ++AC_MSG_RESULT($cf_cv_have_isascii)
      ++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],
      ++[
      ++AC_CACHE_CHECK(for putwc in libutf8,cf_cv_libutf8,[
      ++	cf_save_LIBS="$LIBS"
      ++	LIBS="-lutf8 $LIBS"
      ++AC_TRY_LINK([
      ++#include ],[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 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],
      ++[
      ++	case $cf_cv_system_name in
      ++	OS/2*)	LIB_PREFIX=''     ;;
      ++	os2*)	LIB_PREFIX=''     ;;
      ++	*)	LIB_PREFIX='lib'  ;;
      ++	esac
      ++ifelse($1,,,[$1=$LIB_PREFIX])
      ++	AC_SUBST(LIB_PREFIX)
      ++])dnl
      ++dnl ---------------------------------------------------------------------------
      ++dnl CF_LIB_RULES version: 30 updated: 2004/01/10 15:50:50
      ++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
      ++dnl the corresponding makefile to list the models that we'll generate.
      ++dnl
      ++dnl For shared libraries, make a list of symbolic links to construct when
      ++dnl generating each library.  The convention used for Linux is the simplest
      ++dnl one:
      ++dnl	lib.so	->
      ++dnl	lib.so.	->
      ++dnl	lib.so..
      ++AC_DEFUN([CF_LIB_RULES],
      ++[
      ++CF_LIB_PREFIX(cf_prefix)
      ++AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
      ++for cf_dir in $SRC_SUBDIRS
      ++do
      ++	if test -f $srcdir/$cf_dir/modules; then
      ++
      ++		IMPORT_LIB=
      ++		SHARED_LIB=
      ++		LIBS_TO_MAKE=
      ++		for cf_item in $CF_LIST_MODELS
      ++		do
      ++			CF_LIB_SUFFIX($cf_item,cf_suffix)
      ++			if test $cf_item = shared ; then
      ++			if test "$cf_cv_do_symlinks" = yes ; then
      ++				case "$cf_cv_shlib_version" in #(vi
      ++				rel) #(vi
      ++					case "$cf_cv_system_name" in #(vi
      ++					darwin*) cf_suffix='.$(REL_VERSION)'"$cf_suffix" ;; #(vi
      ++					*) cf_suffix="$cf_suffix"'.$(REL_VERSION)' ;;
      ++					esac
      ++					;;
      ++				abi)
      ++					case "$cf_cv_system_name" in #(vi
      ++					darwin*) cf_suffix='.$(ABI_VERSION)'"$cf_suffix" ;; #(vi
      ++					*) cf_suffix="$cf_suffix"'.$(ABI_VERSION)' ;;
      ++					esac
      ++					;;
      ++				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/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
      ++			fi
      ++			fi
      ++			LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/${cf_prefix}${cf_dir}${cf_suffix}"
      ++		done
      ++
      ++		if test $cf_dir = ncurses ; then
      ++			cf_subsets="$LIB_SUBSETS"
      ++			cf_termlib=`echo "$cf_subsets" |sed -e 's/ .*$//'`
      ++			if test "$cf_termlib" != "$cf_subsets" ; then
      ++				cf_item=`echo $LIBS_TO_MAKE |sed -e s%$LIB_NAME%$TINFO_NAME%g`
      ++				LIBS_TO_MAKE="$cf_item $LIBS_TO_MAKE"
      ++			fi
      ++		else
      ++			cf_subsets=`echo "$LIB_SUBSETS" | sed -e 's/^termlib.* //'`
      ++		fi
      ++
      ++		sed -e "s%@LIBS_TO_MAKE@%$LIBS_TO_MAKE%" \
      ++		    -e "s%@IMPORT_LIB@%$IMPORT_LIB%" \
      ++		    -e "s%@SHARED_LIB@%$SHARED_LIB%" \
      ++			$cf_dir/Makefile >$cf_dir/Makefile.out
      ++		mv $cf_dir/Makefile.out $cf_dir/Makefile
      ++
      ++		$AWK -f $srcdir/mk-0th.awk \
      ++			libname="${cf_dir}${LIB_SUFFIX}" subsets="$LIB_SUBSETS" \
      ++			$srcdir/$cf_dir/modules >>$cf_dir/Makefile
      ++
      ++		for cf_subset in $cf_subsets
      ++		do
      ++			cf_subdirs=
      ++			for cf_item in $CF_LIST_MODELS
      ++			do
      ++			echo "Appending rules for ${cf_item} model (${cf_dir}: ${cf_subset})"
      ++			CF_UPPER(CF_ITEM,$cf_item)
      ++			CF_LIB_SUFFIX($cf_item,cf_suffix)
      ++			CF_OBJ_SUBDIR($cf_item,cf_subdir)
      ++
      ++			# These dependencies really are for development, not
      ++			# builds, but they are useful in porting, too.
      ++			cf_depend="../include/ncurses_cfg.h"
      ++			if test "$srcdir" = "."; then
      ++				cf_reldir="."
      ++			else
      ++				cf_reldir="\$(srcdir)"
      ++			fi
      ++
      ++			if test -f $srcdir/$cf_dir/$cf_dir.priv.h; then
      ++				cf_depend="$cf_depend $cf_reldir/$cf_dir.priv.h"
      ++			elif test -f $srcdir/$cf_dir/curses.priv.h; then
      ++				cf_depend="$cf_depend $cf_reldir/curses.priv.h"
      ++			fi
      ++
      ++			$AWK -f $srcdir/mk-1st.awk \
      ++				name=$cf_dir \
      ++				traces=$LIB_TRACING \
      ++				MODEL=$CF_ITEM \
      ++				model=$cf_subdir \
      ++				prefix=$cf_prefix \
      ++				suffix=$cf_suffix \
      ++				subset=$cf_subset \
      ++				ShlibVer=$cf_cv_shlib_version \
      ++				ShlibVerInfix=$cf_cv_shlib_version_infix \
      ++				DoLinks=$cf_cv_do_symlinks \
      ++				rmSoLocs=$cf_cv_rm_so_locs \
      ++				ldconfig="$LDCONFIG" \
      ++				overwrite=$WITH_OVERWRITE \
      ++				depend="$cf_depend" \
      ++				host="$host" \
      ++				$srcdir/$cf_dir/modules >>$cf_dir/Makefile
      ++			for cf_subdir2 in $cf_subdirs lib
      ++			do
      ++				test $cf_subdir = $cf_subdir2 && break
      ++			done
      ++			test "${cf_subset}.${cf_subdir2}" != "${cf_subset}.${cf_subdir}" && \
      ++			$AWK -f $srcdir/mk-2nd.awk \
      ++				name=$cf_dir \
      ++				traces=$LIB_TRACING \
      ++				MODEL=$CF_ITEM \
      ++				model=$cf_subdir \
      ++				subset=$cf_subset \
      ++				srcdir=$srcdir \
      ++				echo=$WITH_ECHO \
      ++				$srcdir/$cf_dir/modules >>$cf_dir/Makefile
      ++			cf_subdirs="$cf_subdirs $cf_subdir"
      ++			done
      ++		done
      ++	fi
      ++
      ++	echo '	cd '$cf_dir' && $(MAKE) $(CF_MFLAGS) [$]@' >>Makefile
      ++done
      ++
      ++for cf_dir in $SRC_SUBDIRS
      ++do
      ++	if test -f $cf_dir/Makefile ; then
      ++		case "$cf_dir" in
      ++		Ada95) #(vi
      ++			echo 'libs \' >> Makefile
      ++			echo 'install.libs \' >> Makefile
      ++			echo 'uninstall.libs ::' >> Makefile
      ++			echo '	cd '$cf_dir' && $(MAKE) $(CF_MFLAGS) [$]@' >> Makefile
      ++			;;
      ++		esac
      ++	fi
      ++
      ++	if test -f $srcdir/$cf_dir/modules; then
      ++		echo >> Makefile
      ++		if test -f $srcdir/$cf_dir/headers; then
      ++cat >> Makefile <> Makefile
      ++fi
      ++cat >> Makefile <> Makefile <> Makefile <> Makefile <headers.sh <>headers.sh </<\$END\/\$NAME>/" >> \$TMPSED
      ++	done
      ++	;;
      ++*)
      ++	echo "" >> \$TMPSED
      ++	;;
      ++esac
      ++CF_EOF
      ++else
      ++	cat >>headers.sh <//" >> \$TMPSED
      ++			NAME=ncurses.h
      ++		fi
      ++		echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
      ++	done
      ++	;;
      ++*)
      ++	echo "s///" >> \$TMPSED
      ++	;;
      ++esac
      ++CF_EOF
      ++fi
      ++cat >>headers.sh < \$TMPSRC
      ++NAME=\`basename \$SRC\`
      ++CF_EOF
      ++if test $WITH_CURSES_H != yes; then
      ++	cat >>headers.sh <>headers.sh <>$cf_dir/Makefile <>$cf_dir/Makefile
      ++			j=$i
      ++		done
      ++		echo "		$j" >>$cf_dir/Makefile
      ++		for i in `cat $srcdir/$cf_dir/headers |fgrep -v "#"`
      ++		do
      ++			echo "	@ (cd \$(DESTDIR)\$(includedir) && rm -f `basename $i`) ; ../headers.sh \$(INSTALL_DATA) \$(DESTDIR)\$(includedir) \$(srcdir) $i" >>$cf_dir/Makefile
      ++			test $i = curses.h && test $WITH_CURSES_H = yes && echo "	@ (cd \$(DESTDIR)\$(includedir) && rm -f ncurses.h && \$(LN_S) curses.h ncurses.h)" >>$cf_dir/Makefile
      ++		done
      ++
      ++	cat >>$cf_dir/Makefile <>$cf_dir/Makefile
      ++			test $i = curses.h && echo "	-@ (cd \$(DESTDIR)\$(includedir) && rm -f ncurses.h)" >>$cf_dir/Makefile
      ++		done
      ++	fi
      ++
      ++	if test -f $srcdir/$cf_dir/modules; then
      ++		if test "$cf_dir" != "c++" ; then
      ++			cat >>$cf_dir/Makefile <<"CF_EOF"
      ++depend : $(AUTO_SRC)
      ++	makedepend -- $(CPPFLAGS) -- $(C_SRC)
      ++
      ++# DO NOT DELETE THIS LINE -- make depend depends on it.
      ++CF_EOF
      ++		fi
      ++	fi
      ++done
      ++
      ++])dnl
      ++dnl ---------------------------------------------------------------------------
      ++dnl CF_LIB_SUFFIX version: 13 updated: 2003/11/01 16:09:07
      ++dnl -------------
      ++dnl Compute the library file-suffix from the given model name
      ++dnl $1 = model name
      ++dnl $2 = variable to set
      ++dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
      ++AC_DEFUN([CF_LIB_SUFFIX],
      ++[
      ++	AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
      ++	case $1 in
      ++	libtool) $2='.la'  ;;
      ++	normal)  $2='.a'   ;;
      ++	debug)   $2='_g.a' ;;
      ++	profile) $2='_p.a' ;;
      ++	shared)
      ++		case $cf_cv_system_name in
      ++		cygwin*) $2='.dll' ;;
      ++		darwin*) $2='.dylib' ;;
      ++		hpux*)
      ++			case $target in
      ++			ia64*)	$2='.so' ;;
      ++			*)	$2='.sl' ;;
      ++			esac
      ++			;;
      ++		*)	$2='.so'  ;;
      ++		esac
      ++	esac
      ++	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
      ++dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
      ++AC_DEFUN([CF_LIB_TYPE],
      ++[
      ++	case $1 in
      ++	libtool) $2=''   ;;
      ++	normal)  $2=''   ;;
      ++	debug)   $2='_g' ;;
      ++	profile) $2='_p' ;;
      ++	shared)  $2=''   ;;
      ++	esac
      ++	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
      ++dnl properly.
      ++AC_DEFUN([CF_LINK_DATAONLY],
      ++[
      ++AC_MSG_CHECKING([if data-only library module links])
      ++AC_CACHE_VAL(cf_cv_link_dataonly,[
      ++	rm -f conftest.a
      ++	cat >conftest.$ac_ext <&AC_FD_CC 1>/dev/null
      ++	fi
      ++	rm -f conftest.$ac_ext data.o
      ++	cat >conftest.$ac_ext <&AC_FD_CC 1>/dev/null
      ++	fi
      ++	rm -f conftest.$ac_ext func.o
      ++	( eval $RANLIB conftest.a ) 2>&AC_FD_CC >/dev/null
      ++	cf_saveLIBS="$LIBS"
      ++	LIBS="conftest.a $LIBS"
      ++	AC_TRY_RUN([
      ++	int main()
      ++	{
      ++		extern int testfunc();
      ++		exit (!testfunc());
      ++	}
      ++	],
      ++	[cf_cv_link_dataonly=yes],
      ++	[cf_cv_link_dataonly=no],
      ++	[cf_cv_link_dataonly=unknown])
      ++	LIBS="$cf_saveLIBS"
      ++	])
      ++AC_MSG_RESULT($cf_cv_link_dataonly)
      ++
      ++if test "$cf_cv_link_dataonly" = no ; then
      ++	AC_DEFINE(BROKEN_LINKER)
      ++	BROKEN_LINKER=1
      ++fi
      ++
      ++])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).
      ++AC_DEFUN([CF_LINK_FUNCS],
      ++[
      ++AC_CHECK_FUNCS( \
      ++	remove \
      ++	unlink )
      ++
      ++if test "$cross_compiling" = yes ; then
      ++	AC_CHECK_FUNCS( \
      ++		link \
      ++		symlink )
      ++else
      ++	AC_CACHE_CHECK(if link/symlink functions work,cf_cv_link_funcs,[
      ++		cf_cv_link_funcs=
      ++		for cf_func in link symlink ; do
      ++			AC_TRY_RUN([
      ++#include 
      ++#include 
      ++#ifdef HAVE_UNISTD_H
      ++#include 
      ++#endif
      ++int main()
      ++{
      ++	int fail = 0;
      ++	char *src = "config.log";
      ++	char *dst = "conftest.chk";
      ++	struct stat src_sb;
      ++	struct stat dst_sb;
      ++
      ++	stat(src, &src_sb);
      ++	fail = ($cf_func("config.log", "conftest.chk") < 0)
      ++	    || (stat(dst, &dst_sb) < 0)
      ++	    || (dst_sb.st_mtime != src_sb.st_mtime);
      ++#ifdef HAVE_UNLINK
      ++	unlink(dst);
      ++#else
      ++	remove(dst);
      ++#endif
      ++	exit (fail);
      ++}
      ++			],[
      ++			cf_cv_link_funcs="$cf_cv_link_funcs $cf_func"
      ++			eval 'ac_cv_func_'$cf_func'=yes'],[
      ++			eval 'ac_cv_func_'$cf_func'=no'],[
      ++			eval 'ac_cv_func_'$cf_func'=error'])
      ++		done
      ++		test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no
      ++	])
      ++	test "$ac_cv_func_link"    = yes && AC_DEFINE(HAVE_LINK)
      ++	test "$ac_cv_func_symlink" = yes && AC_DEFINE(HAVE_SYMLINK)
      ++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
      ++dnl $(MAKEFLAGS) variable incompatible because it adds the assignments :-)
      ++AC_DEFUN([CF_MAKEFLAGS],
      ++[
      ++AC_CACHE_CHECK(for makeflags variable, cf_cv_makeflags,[
      ++	cf_cv_makeflags=''
      ++	for cf_option in '-$(MAKEFLAGS)' '$(MFLAGS)'
      ++	do
      ++		cat >cf_makeflags.tmp </dev/null`
      ++		case "$cf_result" in
      ++		.*k)
      ++			cf_result=`${MAKE-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`
      ++			case "$cf_result" in
      ++			.*CC=*)	cf_cv_makeflags=
      ++				;;
      ++			*)	cf_cv_makeflags=$cf_option
      ++				;;
      ++			esac
      ++			break
      ++			;;
      ++		*)	echo no match "$cf_result"
      ++			;;
      ++		esac
      ++	done
      ++	rm -f cf_makeflags.tmp
      ++])
      ++
      ++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],[
      ++AC_REQUIRE([CF_MIXEDCASE_FILENAMES])
      ++AC_CHECK_PROG(MAKE_LOWER_TAGS, ctags, yes, no)
      ++
      ++if test "$cf_cv_mixedcase" = yes ; then
      ++	AC_CHECK_PROG(MAKE_UPPER_TAGS, etags, yes, no)
      ++else
      ++	MAKE_UPPER_TAGS=no
      ++fi
      ++
      ++if test "$MAKE_UPPER_TAGS" = yes ; then
      ++	MAKE_UPPER_TAGS=
      ++else
      ++	MAKE_UPPER_TAGS="#"
      ++fi
      ++AC_SUBST(MAKE_UPPER_TAGS)
      ++
      ++if test "$MAKE_LOWER_TAGS" = yes ; then
      ++	MAKE_LOWER_TAGS=
      ++else
      ++	MAKE_LOWER_TAGS="#"
      ++fi
      ++AC_SUBST(MAKE_LOWER_TAGS)
      ++])dnl
      ++dnl ---------------------------------------------------------------------------
      ++dnl CF_MANPAGE_FORMAT version: 7 updated: 2003/12/20 19:30:34
      ++dnl -----------------
      ++dnl Option to allow user to override automatic configuration of manpage format.
      ++dnl There are several special cases:
      ++dnl
      ++dnl	gzip - man checks for, can display gzip'd files
      ++dnl	compress - man checks for, can display compressed files
      ++dnl	BSDI - files in the cat-directories are suffixed ".0"
      ++dnl	formatted - installer should format (put files in cat-directory)
      ++dnl	catonly - installer should only format, e.g., for a turnkey system.
      ++dnl
      ++dnl There are other configurations which this macro does not test, e.g., HPUX's
      ++dnl compressed manpages (but uncompressed manpages are fine, and HPUX's naming
      ++dnl convention would not match our use).
      ++AC_DEFUN([CF_MANPAGE_FORMAT],
      ++[
      ++AC_REQUIRE([CF_PATHSEP])
      ++AC_MSG_CHECKING(format of man-pages)
      ++
      ++AC_ARG_WITH(manpage-format,
      ++	[  --with-manpage-format   specify manpage-format: gzip/compress/BSDI/normal and
      ++                          optionally formatted/catonly, e.g., gzip,formatted],
      ++	[MANPAGE_FORMAT=$withval],
      ++	[MANPAGE_FORMAT=unknown])
      ++
      ++test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=unknown
      ++MANPAGE_FORMAT=`echo "$MANPAGE_FORMAT" | sed -e 's/,/ /g'`
      ++
      ++cf_unknown=
      ++
      ++case $MANPAGE_FORMAT in
      ++unknown)
      ++  if test -z "$MANPATH" ; then
      ++    MANPATH="/usr/man:/usr/share/man"
      ++  fi
      ++
      ++  # look for the 'date' man-page (it's most likely to be installed!)
      ++  MANPAGE_FORMAT=
      ++  cf_preform=no
      ++  cf_catonly=yes
      ++  cf_example=date
      ++
      ++  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}${PATHSEP}"
      ++  for cf_dir in $MANPATH; do
      ++    test -z "$cf_dir" && cf_dir=/usr/man
      ++    for cf_name in $cf_dir/man*/$cf_example.[[01]]* $cf_dir/cat*/$cf_example.[[01]]* $cf_dir/man*/$cf_example $cf_dir/cat*/$cf_example
      ++    do
      ++      cf_test=`echo $cf_name | sed -e 's/*//'`
      ++      if test "x$cf_test" = "x$cf_name" ; then
      ++
      ++	case "$cf_name" in
      ++	*.gz) MANPAGE_FORMAT="$MANPAGE_FORMAT gzip";;
      ++	*.Z)  MANPAGE_FORMAT="$MANPAGE_FORMAT compress";;
      ++	*.0)	MANPAGE_FORMAT="$MANPAGE_FORMAT BSDI";;
      ++	*)    MANPAGE_FORMAT="$MANPAGE_FORMAT normal";;
      ++	esac
      ++
      ++	case "$cf_name" in
      ++	$cf_dir/man*)
      ++	  cf_catonly=no
      ++	  ;;
      ++	$cf_dir/cat*)
      ++	  cf_preform=yes
      ++	  ;;
      ++	esac
      ++	break
      ++      fi
      ++
      ++      # if we found a match in either man* or cat*, stop looking
      ++      if test -n "$MANPAGE_FORMAT" ; then
      ++	cf_found=no
      ++	test "$cf_preform" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT formatted"
      ++	test "$cf_catonly" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT catonly"
      ++	case "$cf_name" in
      ++	$cf_dir/cat*)
      ++	  cf_found=yes
      ++	  ;;
      ++	esac
      ++	test $cf_found=yes && break
      ++      fi
      ++    done
      ++    # only check the first directory in $MANPATH where we find manpages
      ++    if test -n "$MANPAGE_FORMAT" ; then
      ++       break
      ++    fi
      ++  done
      ++  # if we did not find the example, just assume it is normal
      ++  test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=normal
      ++  IFS="$ac_save_ifs"
      ++  ;;
      ++*)
      ++  for cf_option in $MANPAGE_FORMAT; do
      ++     case $cf_option in #(vi
      ++     gzip|compress|BSDI|normal|formatted|catonly)
      ++       ;;
      ++     *)
      ++       cf_unknown="$cf_unknown $cf_option"
      ++       ;;
      ++     esac
      ++  done
      ++  ;;
      ++esac
      ++
      ++AC_MSG_RESULT($MANPAGE_FORMAT)
      ++if test -n "$cf_unknown" ; then
      ++  AC_MSG_WARN(Unexpected manpage-format $cf_unknown)
      ++fi
      ++])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.
      ++AC_DEFUN([CF_MANPAGE_RENAMES],
      ++[
      ++AC_MSG_CHECKING(for manpage renaming)
      ++
      ++AC_ARG_WITH(manpage-renames,
      ++	[  --with-manpage-renames  specify manpage-renaming],
      ++	[MANPAGE_RENAMES=$withval],
      ++	[MANPAGE_RENAMES=yes])
      ++
      ++case ".$MANPAGE_RENAMES" in #(vi
      ++.no) #(vi
      ++  ;;
      ++.|.yes)
      ++  # Debian 'man' program?
      ++  if test -f /etc/debian_version ; then
      ++    MANPAGE_RENAMES=`cd $srcdir && pwd`/man/man_db.renames
      ++  else
      ++    MANPAGE_RENAMES=no
      ++  fi
      ++  ;;
      ++esac
      ++
      ++if test "$MANPAGE_RENAMES" != no ; then
      ++  if test -f $srcdir/man/$MANPAGE_RENAMES ; then
      ++    MANPAGE_RENAMES=`cd $srcdir/man && pwd`/$MANPAGE_RENAMES
      ++  elif test ! -f $MANPAGE_RENAMES ; then
      ++    AC_MSG_ERROR(not a filename: $MANPAGE_RENAMES)
      ++  fi
      ++
      ++  test ! -d man && mkdir man
      ++
      ++  # Construct a sed-script to perform renaming within man-pages
      ++  if test -n "$MANPAGE_RENAMES" ; then
      ++    test ! -d man && mkdir man
      ++    sh $srcdir/man/make_sed.sh $MANPAGE_RENAMES >man/edit_man.sed
      ++  fi
      ++fi
      ++
      ++AC_MSG_RESULT($MANPAGE_RENAMES)
      ++AC_SUBST(MANPAGE_RENAMES)
      ++])dnl
      ++dnl ---------------------------------------------------------------------------
      ++dnl CF_MANPAGE_SYMLINKS version: 4 updated: 2003/12/13 18:01:58
      ++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.
      ++AC_DEFUN([CF_MANPAGE_SYMLINKS],
      ++[
      ++AC_MSG_CHECKING(if manpage aliases will be installed)
      ++
      ++AC_ARG_WITH(manpage-aliases,
      ++	[  --with-manpage-aliases  specify manpage-aliases using .so],
      ++	[MANPAGE_ALIASES=$withval],
      ++	[MANPAGE_ALIASES=yes])
      ++
      ++AC_MSG_RESULT($MANPAGE_ALIASES)
      ++
      ++if test "$LN_S" = "ln -s"; then
      ++	cf_use_symlinks=yes
      ++else
      ++	cf_use_symlinks=no
      ++fi
      ++
      ++MANPAGE_SYMLINKS=no
      ++if test "$MANPAGE_ALIASES" = yes ; then
      ++AC_MSG_CHECKING(if manpage symlinks should be used)
      ++
      ++AC_ARG_WITH(manpage-symlinks,
      ++	[  --with-manpage-symlinks specify manpage-aliases using symlinks],
      ++	[MANPAGE_SYMLINKS=$withval],
      ++	[MANPAGE_SYMLINKS=$cf_use_symlinks])
      ++
      ++if test "$$cf_use_symlinks" = no; then
      ++if test "$MANPAGE_SYMLINKS" = yes ; then
      ++	AC_MSG_WARN(cannot make symlinks, will use .so files)
      ++	MANPAGE_SYMLINKS=no
      ++fi
      ++fi
      ++
      ++AC_MSG_RESULT($MANPAGE_SYMLINKS)
      ++fi
      ++
      ++])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],
      ++[
      ++AC_MSG_CHECKING(for manpage tbl)
      ++
      ++AC_ARG_WITH(manpage-tbl,
      ++	[  --with-manpage-tbl      specify manpage processing with tbl],
      ++	[MANPAGE_TBL=$withval],
      ++	[MANPAGE_TBL=no])
      ++
      ++AC_MSG_RESULT($MANPAGE_TBL)
      ++])dnl
      ++dnl ---------------------------------------------------------------------------
      ++dnl CF_MAN_PAGES version: 27 updated: 2003/12/20 20:39:45
      ++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.
      ++AC_DEFUN([CF_MAN_PAGES],
      ++[
      ++CF_MANPAGE_FORMAT
      ++CF_MANPAGE_RENAMES
      ++CF_MANPAGE_SYMLINKS
      ++CF_MANPAGE_TBL
      ++
      ++  if test "$prefix" = "NONE" ; then
      ++     cf_prefix="$ac_default_prefix"
      ++  else
      ++     cf_prefix="$prefix"
      ++  fi
      ++
      ++  case "$MANPAGE_FORMAT" in # (vi
      ++  *catonly*) # (vi
      ++    cf_format=yes
      ++    cf_inboth=no
      ++    ;;
      ++  *formatted*) # (vi
      ++    cf_format=yes
      ++    cf_inboth=yes
      ++    ;;
      ++  *)
      ++    cf_format=no
      ++    cf_inboth=no
      ++    ;;
      ++  esac
      ++
      ++test ! -d man && mkdir man
      ++
      ++cf_so_strip=
      ++cf_compress=
      ++case "$MANPAGE_FORMAT" in #(vi
      ++*compress*) #(vi
      ++	cf_so_strip="Z"
      ++	cf_compress=compress
      ++  ;;
      ++*gzip*) #(vi
      ++	cf_so_strip="gz"
      ++	cf_compress=gzip
      ++  ;;
      ++esac
      ++
      ++cf_edit_man=man/edit_man.sh
      ++
      ++cat >$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <\$TMP
      ++CF_EOF
      ++else
      ++cat >>$cf_edit_man <\$TMP
      ++CF_EOF
      ++fi
      ++
      ++cat >>$cf_edit_man <\$TMP.out
      ++	mv \$TMP.out \$TMP
      ++fi
      ++CF_EOF
      ++
      ++if test $with_curses_h != yes ; then
      ++cat >>$cf_edit_man <\$TMP.out
      ++	mv \$TMP.out \$TMP
      ++CF_EOF
      ++fi
      ++
      ++cat >>$cf_edit_man <\$TMP.out
      ++		mv \$TMP.out \$TMP
      ++	fi
      ++CF_EOF
      ++
      ++if test -n "$cf_compress" ; then
      ++cat >>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <\$TMP
      ++CF_EOF
      ++if test -n "$cf_compress" ; then
      ++cat >>$cf_edit_man <>$cf_edit_man <
      ++	#include 
      ++	],
      ++	[double x = rand(); printf("result = %g\n", ]ifelse($2,,sin(x),$2)[)],
      ++	[cf_cv_need_libm=no],
      ++	[cf_cv_need_libm=yes])])
      ++if test "$cf_cv_need_libm" = yes
      ++then
      ++ifelse($1,,[
      ++	LIBS="$LIBS -lm"
      ++],[$1=-lm])
      ++fi
      ++])
      ++dnl ---------------------------------------------------------------------------
      ++dnl CF_MIXEDCASE_FILENAMES version: 3 updated: 2003/09/20 17:07:55
      ++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],
      ++[
      ++AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
      ++if test "$cross_compiling" = yes ; then
      ++	case $target_alias in #(vi
      ++	*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-mingw32*|*-uwin*) #(vi
      ++		cf_cv_mixedcase=no
      ++		;;
      ++	*)
      ++		cf_cv_mixedcase=yes
      ++		;;
      ++	esac
      ++else
      ++	rm -f conftest CONFTEST
      ++	echo test >conftest
      ++	if test -f CONFTEST ; then
      ++		cf_cv_mixedcase=no
      ++	else
      ++		cf_cv_mixedcase=yes
      ++	fi
      ++	rm -f conftest CONFTEST
      ++fi
      ++])
      ++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],[
      ++AC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[
      ++rm -f conftest*
      ++AC_TRY_RUN([
      ++#include 
      ++#include 
      ++#include 
      ++#include 
      ++#include 
      ++int main()
      ++{
      ++	char *tmpl = "conftestXXXXXX";
      ++	char name[2][80];
      ++	int n;
      ++	int result = 0;
      ++	int fd;
      ++	struct stat sb;
      ++
      ++	umask(077);
      ++	for (n = 0; n < 2; ++n) {
      ++		strcpy(name[n], tmpl);
      ++		if ((fd = mkstemp(name[n])) >= 0) {
      ++			if (!strcmp(name[n], tmpl)
      ++			 || stat(name[n], &sb) != 0
      ++			 || (sb.st_mode & S_IFMT) != S_IFREG
      ++			 || (sb.st_mode & 077) != 0) {
      ++				result = 1;
      ++			}
      ++			close(fd);
      ++		}
      ++	}
      ++	if (result == 0
      ++	 && !strcmp(name[0], name[1]))
      ++		result = 1;
      ++	exit(result);
      ++}
      ++],[cf_cv_func_mkstemp=yes
      ++],[cf_cv_func_mkstemp=no
      ++],[AC_CHECK_FUNC(mkstemp)
      ++])
      ++])
      ++if test "$cf_cv_func_mkstemp" = yes ; then
      ++	AC_DEFINE(HAVE_MKSTEMP)
      ++fi
      ++])dnl
      ++dnl ---------------------------------------------------------------------------
      ++dnl CF_NUMBER_SYNTAX version: 1 updated: 2003/09/20 18:12:49
      ++dnl ----------------
      ++dnl Check if the given variable is a number.  If not, report an error.
      ++dnl $1 is the variable
      ++dnl $2 is the message
      ++AC_DEFUN([CF_NUMBER_SYNTAX],[
      ++if test -n "$1" ; then
      ++  case $1 in #(vi
      ++  [[0-9]]*) #(vi
      ++ 	;;
      ++  *)
      ++	AC_MSG_ERROR($2 is not a number: $1)
      ++ 	;;
      ++  esac
      ++else
      ++  AC_MSG_ERROR($2 value is empty)
      ++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],
      ++[
      ++	case $1 in
      ++	libtool) $2='obj_lo'  ;;
      ++	normal)  $2='objects' ;;
      ++	debug)   $2='obj_g' ;;
      ++	profile) $2='obj_p' ;;
      ++	shared)
      ++		case $cf_cv_system_name in #(vi
      ++		cygwin) #(vi
      ++			$2='objects' ;;
      ++		*)
      ++			$2='obj_s' ;;
      ++		esac
      ++	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],
      ++[
      ++	case $cf_cv_system_name in
      ++	os2*)	PATHSEP=';'  ;;
      ++	*)	PATHSEP=':'  ;;
      ++	esac
      ++ifelse($1,,,[$1=$PATHSEP])
      ++	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
      ++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_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: 10 updated: 2004/01/03 19:28:18
      ++dnl -----------
      ++dnl Compute $PROG_EXT, used for non-Unix ports, such as OS/2 EMX.
      ++AC_DEFUN([CF_PROG_EXT],
      ++[
      ++AC_REQUIRE([CF_CHECK_CACHE])
      ++case $cf_cv_system_name in
      ++os2*)
      ++    CFLAGS="$CFLAGS -Zmt"
      ++    CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__"
      ++    CXXFLAGS="$CXXFLAGS -Zmt"
      ++    # autoconf's macro sets -Zexe and suffix both, which conflict:w
      ++    LDFLAGS="$LDFLAGS -Zmt -Zcrtdll"
      ++    ac_cv_exeext=.exe
      ++    ;;
      ++esac
      ++
      ++AC_EXEEXT
      ++AC_OBJEXT
      ++
      ++PROG_EXT="$EXEEXT"
      ++AC_SUBST(PROG_EXT)
      ++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
      ++AC_DEFUN([CF_PROG_INSTALL],
      ++[AC_PROG_INSTALL
      ++case $INSTALL in
      ++/*)
      ++  ;;
      ++*)
      ++  CF_DIRNAME(cf_dir,$INSTALL)
      ++  test -z "$cf_dir" && cf_dir=.
      ++  INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'`
      ++  ;;
      ++esac
      ++])dnl
      ++dnl ---------------------------------------------------------------------------
      ++dnl CF_PROG_LDCONFIG version: 1 updated: 2003/09/20 17:07:55
      ++dnl ----------------
      ++dnl Check for ldconfig, needed to fixup shared libraries that would be built
      ++dnl and then used in the install.
      ++AC_DEFUN([CF_PROG_LDCONFIG],[
      ++if test "$cross_compiling" = yes ; then
      ++  LDCONFIG=:
      ++else
      ++case "$cf_cv_system_name" in #(vi
      ++freebsd*) #(vi
      ++  test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R"
      ++  ;;
      ++*) LDPATH=$PATH:/sbin:/usr/sbin
      ++  AC_PATH_PROG(LDCONFIG,ldconfig,,$LDPATH)
      ++  ;;
      ++esac
      ++fi
      ++AC_SUBST(LDCONFIG)
      ++])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],
      ++[
      ++AC_MSG_CHECKING([for regular-expression headers])
      ++AC_CACHE_VAL(cf_cv_regex,[
      ++AC_TRY_LINK([#include 
      ++#include ],[
      ++	regex_t *p;
      ++	int x = regcomp(p, "", 0);
      ++	int y = regexec(p, "", 0, 0, 0);
      ++	regfree(p);
      ++	],[cf_cv_regex="regex.h"],[
      ++	AC_TRY_LINK([#include ],[
      ++		char *p = compile("", "", "", 0);
      ++		int x = step("", "");
      ++	],[cf_cv_regex="regexp.h"],[
      ++		cf_save_LIBS="$LIBS"
      ++		LIBS="-lgen $LIBS"
      ++		AC_TRY_LINK([#include ],[
      ++			char *p = compile("", "", "");
      ++			int x = step("", "");
      ++		],[cf_cv_regex="regexpr.h"],[LIBS="$cf_save_LIBS"])])])
      ++])
      ++AC_MSG_RESULT($cf_cv_regex)
      ++case $cf_cv_regex in
      ++	regex.h)   AC_DEFINE(HAVE_REGEX_H_FUNCS) ;;
      ++	regexp.h)  AC_DEFINE(HAVE_REGEXP_H_FUNCS) ;;
      ++	regexpr.h) AC_DEFINE(HAVE_REGEXPR_H_FUNCS) ;;
      ++esac
      ++])dnl
      ++dnl ---------------------------------------------------------------------------
      ++dnl CF_SHARED_OPTS version: 30 updated: 2003/12/27 20:48:07
      ++dnl --------------
      ++dnl Attempt to determine the appropriate CC/LD options for creating a shared
      ++dnl library.
      ++dnl
      ++dnl Note: $(LOCAL_LDFLAGS) is used to link executables that will run within the
      ++dnl build-tree, i.e., by making use of the libraries that are compiled in ../lib
      ++dnl We avoid compiling-in a ../lib path for the shared library since that can
      ++dnl lead to unexpected results at runtime.
      ++dnl $(LOCAL_LDFLAGS2) has the same intention but assumes that the shared libraries
      ++dnl are compiled in ../../lib
      ++dnl
      ++dnl The variable 'cf_cv_do_symlinks' is used to control whether we configure
      ++dnl to install symbolic links to the rel/abi versions of shared libraries.
      ++dnl
      ++dnl The variable 'cf_cv_shlib_version' controls whether we use the rel or abi
      ++dnl version when making symbolic links.
      ++dnl
      ++dnl The variable 'cf_cv_shlib_version_infix' controls whether shared library
      ++dnl version numbers are infix (ex: libncurses..dylib) or postfix
      ++dnl (ex: libncurses.so.).
      ++dnl
      ++dnl Some loaders leave 'so_locations' lying around.  It's nice to clean up.
      ++AC_DEFUN([CF_SHARED_OPTS],
      ++[
      ++	AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
      ++	LOCAL_LDFLAGS=
      ++	LOCAL_LDFLAGS2=
      ++	LD_SHARED_OPTS=
      ++	INSTALL_LIB="-m 644"
      ++
      ++	cf_cv_do_symlinks=no
      ++
      ++	AC_MSG_CHECKING(if release/abi version should be used for shared libs)
      ++	AC_ARG_WITH(shlib-version,
      ++	[  --with-shlib-version=X  Specify rel or abi version for shared libs],
      ++	[test -z "$withval" && withval=auto
      ++	case $withval in #(vi
      ++	yes) #(vi
      ++		cf_cv_shlib_version=auto
      ++		;;
      ++	rel|abi|auto|no) #(vi
      ++		cf_cv_shlib_version=$withval
      ++		;;
      ++	*)
      ++		AC_ERROR([option value must be one of: rel, abi, auto or no])
      ++		;;
      ++	esac
      ++	],[cf_cv_shlib_version=auto])
      ++	AC_MSG_RESULT($cf_cv_shlib_version)
      ++
      ++	cf_cv_rm_so_locs=no
      ++
      ++	# Some less-capable ports of gcc support only -fpic
      ++	CC_SHARED_OPTS=
      ++	if test "$GCC" = yes
      ++	then
      ++		AC_MSG_CHECKING(which $CC option to use)
      ++		cf_save_CFLAGS="$CFLAGS"
      ++		for CC_SHARED_OPTS in -fPIC -fpic ''
      ++		do
      ++			CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
      ++			AC_TRY_COMPILE([#include ],[int x = 1],[break],[])
      ++		done
      ++		AC_MSG_RESULT($CC_SHARED_OPTS)
      ++		CFLAGS="$cf_save_CFLAGS"
      ++	fi
      ++
      ++	cf_cv_shlib_version_infix=no
      ++
      ++	case $cf_cv_system_name in
      ++	beos*)
      ++		MK_SHARED_LIB='$(CC) -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0'
      ++		;;
      ++	cygwin*)
      ++		CC_SHARED_OPTS=
      ++		MK_SHARED_LIB='$(CC) -shared -Wl,--out-implib=$(IMPORT_LIB) -Wl,--export-all-symbols -o $(SHARED_LIB)'
      ++		cf_cv_shlib_version=cygdll
      ++		cf_cv_shlib_version_infix=cygdll
      ++		;;
      ++	darwin*)
      ++		EXTRA_CFLAGS="-no-cpp-precomp"
      ++		CC_SHARED_OPTS="-dynamic"
      ++		MK_SHARED_LIB='$(CC) -dynamiclib -install_name $(DESTDIR)$(libdir)/`basename $[@]` -compatibility_version $(ABI_VERSION) -current_version $(ABI_VERSION) -o $[@]'
      ++		test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi
      ++		cf_cv_shlib_version_infix=yes
      ++		;;
      ++	hpux*)
      ++		# (tested with gcc 2.7.2 -- I don't have c89)
      ++		if test "$GCC" = yes; then
      ++			LD_SHARED_OPTS='-Xlinker +b -Xlinker $(libdir)'
      ++		else
      ++			CC_SHARED_OPTS='+Z'
      ++			LD_SHARED_OPTS='-Wl,+b,$(libdir)'
      ++		fi
      ++		MK_SHARED_LIB='$(LD) +b $(libdir) -b -o $[@]'
      ++		# HP-UX shared libraries must be executable, and should be
      ++		# readonly to exploit a quirk in the memory manager.
      ++		INSTALL_LIB="-m 555"
      ++		;;
      ++	irix*)
      ++		if test "$cf_cv_ld_rpath" = yes ; then
      ++			cf_ld_rpath_opt="-Wl,-rpath,"
      ++			EXTRA_LDFLAGS="-Wl,-rpath,\$(libdir) $EXTRA_LDFLAGS"
      ++		fi
      ++		# tested with IRIX 5.2 and 'cc'.
      ++		if test "$GCC" != yes; then
      ++			CC_SHARED_OPTS='-KPIC'
      ++		fi
      ++		MK_SHARED_LIB='$(LD) -shared -rdata_shared -soname `basename $[@]` -o $[@]'
      ++		cf_cv_rm_so_locs=yes
      ++		;;
      ++	linux*|gnu*|k*bsd*-gnu)
      ++		if test "$DFT_LWR_MODEL" = "shared" ; then
      ++			LOCAL_LDFLAGS="-Wl,-rpath,`pwd`/lib"
      ++			LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
      ++		fi
      ++		if test "$cf_cv_ld_rpath" = yes ; then
      ++			cf_ld_rpath_opt="-Wl,-rpath,"
      ++			EXTRA_LDFLAGS="$LOCAL_LDFLAGS $EXTRA_LDFLAGS"
      ++		fi
      ++		test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
      ++		MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $[@] .$(REL_VERSION)`.$(ABI_VERSION),-stats,-lc -o $[@]'
      ++		;;
      ++	openbsd2*)
      ++		CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
      ++		MK_SHARED_LIB='$(LD) -Bshareable -soname,`basename $[@].$(ABI_VERSION)` -o $[@]'
      ++		;;
      ++	freebsd[[45]]*)
      ++		CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
      ++		MK_SHARED_LIB='$(LD) -Bshareable -soname=`basename $[@]` -o $[@]'
      ++		test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
      ++
      ++# This doesn't work - I keep getting spurious references to needing
      ++# libncurses.so.5.3 when ldd says it's resolved.  LOCAL_LDFLAGS2 seems to be
      ++# no longer used anyway.  And the rpath logic isn't relative - so I have to
      ++# add the local and install lib-directories:
      ++#
      ++#		if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_ld_rpath" = yes ; then
      ++#			LOCAL_LDFLAGS="-rpath `pwd`/lib"
      ++#			LOCAL_LDFLAGS2="-rpath \$(libdir) $LOCAL_LDFLAGS"
      ++#			cf_ld_rpath_opt="-rpath "
      ++#			EXTRA_LDFLAGS="$LOCAL_LDFLAGS $EXTRA_LDFLAGS"
      ++#		fi
      ++		;;
      ++	openbsd*|freebsd*)
      ++		CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
      ++		MK_SHARED_LIB='$(LD) -Bshareable -o $[@]'
      ++		test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
      ++		;;
      ++	netbsd*)
      ++		CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
      ++		test "$cf_cv_ld_rpath" = yes && cf_ld_rpath_opt="-Wl,-rpath,"
      ++		if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_ld_rpath" = yes ; then
      ++			LOCAL_LDFLAGS="-Wl,-rpath,`pwd`/lib"
      ++			LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
      ++			EXTRA_LDFLAGS="-Wl,-rpath,\$(libdir) $EXTRA_LDFLAGS"
      ++			MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $[@] .$(REL_VERSION)`.$(ABI_VERSION) -o $[@]'
      ++			if test "$cf_cv_shlib_version" = auto; then
      ++			if test ! -f /usr/libexec/ld.elf_so; then
      ++				cf_cv_shlib_version=rel
      ++			fi
      ++			fi
      ++		else
      ++			MK_SHARED_LIB='$(LD) -Bshareable -o $[@]'
      ++		fi
      ++		;;
      ++	osf*|mls+*)
      ++		# tested with OSF/1 V3.2 and 'cc'
      ++		# tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't
      ++		# link with shared libs).
      ++		MK_SHARED_LIB='$(LD) -set_version $(REL_VERSION):$(ABI_VERSION) -expect_unresolved "*" -shared -soname `basename $[@]`'
      ++		case $host_os in
      ++		osf4*)
      ++			MK_SHARED_LIB="${MK_SHARED_LIB} -msym"
      ++			;;
      ++		esac
      ++		MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $[@]'
      ++		if test "$DFT_LWR_MODEL" = "shared" ; then
      ++			LOCAL_LDFLAGS="-Wl,-rpath,`pwd`/lib"
      ++			LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
      ++		fi
      ++		if test "$cf_cv_ld_rpath" = yes ; then
      ++			cf_ld_rpath_opt="-rpath"
      ++			# EXTRA_LDFLAGS="$LOCAL_LDFLAGS $EXTRA_LDFLAGS"
      ++		fi
      ++		cf_cv_rm_so_locs=yes
      ++		;;
      ++	sco3.2v5*)  # (also uw2* and UW7) hops 13-Apr-98
      ++		# tested with osr5.0.5
      ++		if test "$GCC" != yes; then
      ++			CC_SHARED_OPTS='-belf -KPIC'
      ++		fi
      ++		MK_SHARED_LIB='$(LD) -dy -G -h `basename $[@] .$(REL_VERSION)`.$(ABI_VERSION) -o [$]@'
      ++		if test "$cf_cv_ld_rpath" = yes ; then
      ++			# only way is to set LD_RUN_PATH but no switch for it
      ++			RUN_PATH=$libdir
      ++		fi
      ++		test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
      ++		LINK_PROGS='LD_RUN_PATH=$(libdir)'
      ++		LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib'
      ++		;;
      ++	sunos4*)
      ++		# tested with SunOS 4.1.1 and gcc 2.7.0
      ++		if test "$GCC" != yes; then
      ++			CC_SHARED_OPTS='-KPIC'
      ++		fi
      ++		MK_SHARED_LIB='$(LD) -assert pure-text -o $[@]'
      ++		test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
      ++		;;
      ++	solaris2*)
      ++		# tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
      ++		if test "$GCC" != yes; then
      ++			CC_SHARED_OPTS='-KPIC'
      ++		fi
      ++		MK_SHARED_LIB='$(LD) -dy -G -h `basename $[@] .$(REL_VERSION)`.$(ABI_VERSION) -o $[@]'
      ++		if test "$DFT_LWR_MODEL" = "shared" ; then
      ++			LOCAL_LDFLAGS="-R `pwd`/lib:\$(libdir)"
      ++			LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
      ++		fi
      ++		if test "$cf_cv_ld_rpath" = yes ; then
      ++			cf_ld_rpath_opt="-R"
      ++			EXTRA_LDFLAGS="$LOCAL_LDFLAGS $EXTRA_LDFLAGS"
      ++		fi
      ++		test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
      ++		;;
      ++	sysv5uw7*|unix_sv*)
      ++		# tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
      ++		if test "$GCC" != yes; then
      ++			CC_SHARED_OPTS='-KPIC'
      ++		fi
      ++		MK_SHARED_LIB='$(LD) -d y -G -o [$]@'
      ++		;;
      ++	*)
      ++		CC_SHARED_OPTS='unknown'
      ++		MK_SHARED_LIB='echo unknown'
      ++		;;
      ++	esac
      ++
      ++	# This works if the last tokens in $MK_SHARED_LIB are the -o target.
      ++	case "$cf_cv_shlib_version" in #(vi
      ++	rel|abi)
      ++		case "$MK_SHARED_LIB" in #(vi
      ++		*'-o $[@]')
      ++			test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
      ++			;;
      ++		*)
      ++			AC_MSG_WARN(ignored --with-shlib-version)
      ++			;;
      ++		esac
      ++		;;
      ++	esac
      ++
      ++	if test -n "$cf_ld_rpath_opt" ; then
      ++		AC_MSG_CHECKING(if we need a space after rpath option)
      ++		cf_save_LIBS="$LIBS"
      ++		LIBS="$LIBS ${cf_ld_rpath_opt}$libdir"
      ++		AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes)
      ++		LIBS="$cf_save_LIBS"
      ++		AC_MSG_RESULT($cf_rpath_space)
      ++		test "$cf_rpath_space" = yes && cf_ld_rpath_opt="$cf_ld_rpath_opt "
      ++		MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\$(libdir)"
      ++	fi
      ++
      ++	AC_SUBST(CC_SHARED_OPTS)
      ++	AC_SUBST(LD_SHARED_OPTS)
      ++	AC_SUBST(MK_SHARED_LIB)
      ++	AC_SUBST(LINK_PROGS)
      ++	AC_SUBST(LINK_TESTS)
      ++	AC_SUBST(EXTRA_LDFLAGS)
      ++	AC_SUBST(LOCAL_LDFLAGS)
      ++	AC_SUBST(LOCAL_LDFLAGS2)
      ++	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],
      ++[
      ++AC_REQUIRE([CF_STRUCT_TERMIOS])
      ++AC_CACHE_CHECK(declaration of size-change, cf_cv_sizechange,[
      ++    cf_cv_sizechange=unknown
      ++    cf_save_CPPFLAGS="$CPPFLAGS"
      ++
      ++for cf_opts in "" "NEED_PTEM_H"
      ++do
      ++
      ++    CPPFLAGS="$cf_save_CPPFLAGS"
      ++    test -n "$cf_opts" && CPPFLAGS="$CPPFLAGS -D$cf_opts"
      ++    AC_TRY_COMPILE([#include 
      ++#ifdef HAVE_TERMIOS_H
      ++#include 
      ++#else
      ++#ifdef HAVE_TERMIO_H
      ++#include 
      ++#endif
      ++#endif
      ++#ifdef NEED_PTEM_H
      ++/* This is a workaround for SCO:  they neglected to define struct winsize in
      ++ * termios.h -- it's only in termio.h and ptem.h
      ++ */
      ++#include        
      ++#include        
      ++#endif
      ++#if !defined(sun) || !defined(HAVE_TERMIOS_H)
      ++#include 
      ++#endif
      ++],[
      ++#ifdef TIOCGSIZE
      ++	struct ttysize win;	/* FIXME: what system is this? */
      ++	int y = win.ts_lines;
      ++	int x = win.ts_cols;
      ++#else
      ++#ifdef TIOCGWINSZ
      ++	struct winsize win;
      ++	int y = win.ws_row;
      ++	int x = win.ws_col;
      ++#else
      ++	no TIOCGSIZE or TIOCGWINSZ
      ++#endif /* TIOCGWINSZ */
      ++#endif /* TIOCGSIZE */
      ++	],
      ++	[cf_cv_sizechange=yes],
      ++	[cf_cv_sizechange=no])
      ++
      ++	CPPFLAGS="$cf_save_CPPFLAGS"
      ++	if test "$cf_cv_sizechange" = yes ; then
      ++		echo "size-change succeeded ($cf_opts)" >&AC_FD_CC
      ++		test -n "$cf_opts" && cf_cv_sizechange="$cf_opts"
      ++		break
      ++	fi
      ++done
      ++])
      ++if test "$cf_cv_sizechange" != no ; then
      ++	AC_DEFINE(HAVE_SIZECHANGE)
      ++	case $cf_cv_sizechange in #(vi
      ++	NEED*)
      ++		AC_DEFINE_UNQUOTED($cf_cv_sizechange )
      ++		;;
      ++	esac
      ++fi
      ++])dnl
      ++dnl ---------------------------------------------------------------------------
      ++dnl CF_SRC_MODULES version: 15 updated: 2004/01/10 16:05:16
      ++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.
      ++dnl
      ++dnl This uses the configured value to make the lists SRC_SUBDIRS and
      ++dnl SUB_MAKEFILES which are used in the makefile-generation scheme.
      ++AC_DEFUN([CF_SRC_MODULES],
      ++[
      ++AC_MSG_CHECKING(for src modules)
      ++
      ++# dependencies and linker-arguments for test-programs
      ++TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS"
      ++if test "$DFT_LWR_MODEL" = "libtool"; then
      ++	TEST_ARGS="${TEST_DEPS}"
      ++else
      ++	TEST_ARGS="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARGS"
      ++fi
      ++
      ++# dependencies and linker-arguments for utility-programs
      ++test "$with_termlib" != yes && PROG_ARGS="$TEST_ARGS"
      ++
      ++cf_cv_src_modules=
      ++for cf_dir in $1
      ++do
      ++	if test -f $srcdir/$cf_dir/modules; then
      ++
      ++		# We may/may not have tack in the distribution, though the
      ++		# makefile is.
      ++		if test $cf_dir = tack ; then
      ++			if test ! -f $srcdir/${cf_dir}/${cf_dir}.h; then
      ++				continue
      ++			fi
      ++		fi
      ++
      ++		if test -z "$cf_cv_src_modules"; then
      ++			cf_cv_src_modules=$cf_dir
      ++		else
      ++			cf_cv_src_modules="$cf_cv_src_modules $cf_dir"
      ++		fi
      ++
      ++		# Make the ncurses_cfg.h file record the library interface files as
      ++		# well.  These are header files that are the same name as their
      ++		# directory.  Ncurses is the only library that does not follow
      ++		# that pattern.
      ++		if test $cf_dir = tack ; then
      ++			continue
      ++		elif test -f $srcdir/${cf_dir}/${cf_dir}.h; then
      ++			CF_UPPER(cf_have_include,$cf_dir)
      ++			AC_DEFINE_UNQUOTED(HAVE_${cf_have_include}_H)
      ++			AC_DEFINE_UNQUOTED(HAVE_LIB${cf_have_include})
      ++			TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${cf_dir}${DFT_DEP_SUFFIX} $TEST_DEPS"
      ++			if test "$DFT_LWR_MODEL" = "libtool"; then
      ++				TEST_ARGS="${TEST_DEPS}"
      ++			else
      ++				TEST_ARGS="-l${cf_dir}${DFT_ARG_SUFFIX} $TEST_ARGS"
      ++			fi
      ++		fi
      ++	fi
      ++done
      ++AC_MSG_RESULT($cf_cv_src_modules)
      ++TEST_ARGS="-L${LIB_DIR} $TEST_ARGS"
      ++AC_SUBST(TEST_DEPS)
      ++AC_SUBST(TEST_ARGS)
      ++
      ++PROG_ARGS="-L${LIB_DIR} $PROG_ARGS"
      ++AC_SUBST(PROG_ARGS)
      ++
      ++SRC_SUBDIRS="man include"
      ++for cf_dir in $cf_cv_src_modules
      ++do
      ++	SRC_SUBDIRS="$SRC_SUBDIRS $cf_dir"
      ++done
      ++SRC_SUBDIRS="$SRC_SUBDIRS test"
      ++test -z "$MAKE_TERMINFO" && SRC_SUBDIRS="$SRC_SUBDIRS misc"
      ++test "$cf_with_cxx_binding" != no && SRC_SUBDIRS="$SRC_SUBDIRS c++"
      ++
      ++ADA_SUBDIRS=
      ++if test "$cf_cv_prog_gnat_correct" = yes && test -f $srcdir/Ada95/Makefile.in; then
      ++   SRC_SUBDIRS="$SRC_SUBDIRS Ada95"
      ++   ADA_SUBDIRS="gen src samples"
      ++fi
      ++
      ++SUB_MAKEFILES=
      ++for cf_dir in $SRC_SUBDIRS
      ++do
      ++	SUB_MAKEFILES="$SUB_MAKEFILES $cf_dir/Makefile"
      ++done
      ++
      ++if test -n "$ADA_SUBDIRS"; then
      ++   for cf_dir in $ADA_SUBDIRS
      ++   do
      ++      SUB_MAKEFILES="$SUB_MAKEFILES Ada95/$cf_dir/Makefile"
      ++   done
      ++   AC_SUBST(ADA_SUBDIRS)
      ++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],
      ++[
      ++if test -n "$GXX" ; then
      ++case $cf_cv_system_name in #(vi
      ++os2*) #(vi
      ++	cf_stdcpp_libname=stdcpp
      ++	;;
      ++*)
      ++	cf_stdcpp_libname=stdc++
      ++	;;
      ++esac
      ++AC_CACHE_CHECK(for library $cf_stdcpp_libname,cf_cv_libstdcpp,[
      ++	cf_save="$LIBS"
      ++	LIBS="$LIBS -l$cf_stdcpp_libname"
      ++AC_TRY_LINK([
      ++#include ],[
      ++char buf[80];
      ++strstreambuf foo(buf, sizeof(buf))
      ++],
      ++	[cf_cv_libstdcpp=yes],
      ++	[cf_cv_libstdcpp=no])
      ++	LIBS="$cf_save"
      ++])
      ++test "$cf_cv_libstdcpp" = yes && CXXLIBS="$CXXLIBS -l$cf_stdcpp_libname"
      ++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
      ++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
      ++dnl If needed, define SVR4_ACTION.
      ++AC_DEFUN([CF_STRUCT_SIGACTION],[
      ++if test "$ac_cv_func_sigaction" = yes; then
      ++AC_MSG_CHECKING(whether sigaction needs _POSIX_SOURCE)
      ++AC_TRY_COMPILE([
      ++#include 
      ++#include ],
      ++	[struct sigaction act],
      ++	[sigact_bad=no],
      ++	[
      ++AC_TRY_COMPILE([
      ++#define _POSIX_SOURCE
      ++#include 
      ++#include ],
      ++	[struct sigaction act],
      ++	[sigact_bad=yes
      ++	 AC_DEFINE(SVR4_ACTION)],
      ++	 [sigact_bad=unknown])])
      ++AC_MSG_RESULT($sigact_bad)
      ++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],[
      ++AC_CHECK_HEADERS( \
      ++termio.h \
      ++termios.h \
      ++unistd.h \
      ++)
      ++if test "$ISC" = yes ; then
      ++	AC_CHECK_HEADERS( sys/termio.h )
      ++fi
      ++if test "$ac_cv_header_termios_h" = yes ; then
      ++	case "$CFLAGS $CPPFLAGS" in
      ++	*-D_POSIX_SOURCE*)
      ++		termios_bad=dunno ;;
      ++	*)	termios_bad=maybe ;;
      ++	esac
      ++	if test "$termios_bad" = maybe ; then
      ++	AC_MSG_CHECKING(whether termios.h needs _POSIX_SOURCE)
      ++	AC_TRY_COMPILE([#include ],
      ++		[struct termios foo; int x = foo.c_iflag],
      ++		termios_bad=no, [
      ++		AC_TRY_COMPILE([
      ++#define _POSIX_SOURCE
      ++#include ],
      ++			[struct termios foo; int x = foo.c_iflag],
      ++			termios_bad=unknown,
      ++			termios_bad=yes AC_DEFINE(SVR4_TERMIO))
      ++			])
      ++	AC_MSG_RESULT($termios_bad)
      ++	fi
      ++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
      ++dnl	$1 = long/descriptive name
      ++dnl	$2 = environment variable
      ++dnl	$3 = default value
      ++AC_DEFUN([CF_SUBST],
      ++[AC_CACHE_VAL(cf_cv_subst_$2,[
      ++AC_MSG_CHECKING(for $1 (symbol $2))
      ++test -z "[$]$2" && $2=$3
      ++AC_MSG_RESULT([$]$2)
      ++AC_SUBST($2)
      ++cf_cv_subst_$2=[$]$2])
      ++$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],
      ++[
      ++NCURSES_MAJOR="`egrep '^NCURSES_MAJOR[[ 	]]*=' $srcdir/dist.mk | sed -e 's/^[[^0-9]]*//'`"
      ++NCURSES_MINOR="`egrep '^NCURSES_MINOR[[ 	]]*=' $srcdir/dist.mk | sed -e 's/^[[^0-9]]*//'`"
      ++NCURSES_PATCH="`egrep '^NCURSES_PATCH[[ 	]]*=' $srcdir/dist.mk | sed -e 's/^[[^0-9]]*//'`"
      ++cf_cv_abi_version=${NCURSES_MAJOR}
      ++cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR}
      ++dnl Show the computed version, for logging
      ++cf_cv_timestamp=`date`
      ++AC_MSG_RESULT(Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp))
      ++dnl We need these values in the generated headers
      ++AC_SUBST(NCURSES_MAJOR)
      ++AC_SUBST(NCURSES_MINOR)
      ++AC_SUBST(NCURSES_PATCH)
      ++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_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],
      ++[
      ++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_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
      ++dnl wide characters, we have to have a type compatible with that, as well.
      ++AC_DEFUN([CF_TYPEOF_CHTYPE],
      ++[
      ++AC_REQUIRE([CF_UNSIGNED_LITERALS])
      ++AC_MSG_CHECKING([for type of chtype])
      ++AC_CACHE_VAL(cf_cv_typeof_chtype,[
      ++		AC_TRY_RUN([
      ++#ifdef USE_WIDEC_SUPPORT
      ++#include 	/* we want wchar_t */
      ++#define WANT_BITS 39
      ++#else
      ++#define WANT_BITS 31
      ++#endif
      ++#include 
      ++int main()
      ++{
      ++	FILE *fp = fopen("cf_test.out", "w");
      ++	if (fp != 0) {
      ++		char *result = "long";
      ++#ifdef USE_WIDEC_SUPPORT
      ++		/*
      ++		 * If wchar_t is smaller than a long, it must be an int or a
      ++		 * short.  We prefer not to use a short anyway.
      ++		 */
      ++		if (sizeof(unsigned long) > sizeof(wchar_t))
      ++			result = "int";
      ++#endif
      ++		if (sizeof(unsigned long) > sizeof(unsigned int)) {
      ++			int n;
      ++			unsigned int x;
      ++			for (n = 0; n < WANT_BITS; n++) {
      ++				unsigned int y = (x >> n);
      ++				if (y != 1 || x == 0) {
      ++					x = 0;
      ++					break;
      ++				}
      ++			}
      ++			/*
      ++			 * If x is nonzero, an int is big enough for the bits
      ++			 * that we want.
      ++			 */
      ++			result = (x != 0) ? "int" : "long";
      ++		}
      ++		fputs(result, fp);
      ++		fclose(fp);
      ++	}
      ++	exit(0);
      ++}
      ++		],
      ++		[cf_cv_typeof_chtype=`cat cf_test.out`],
      ++		[cf_cv_typeof_chtype=long],
      ++		[cf_cv_typeof_chtype=long])
      ++		rm -f cf_test.out
      ++	])
      ++AC_MSG_RESULT($cf_cv_typeof_chtype)
      ++
      ++AC_SUBST(cf_cv_typeof_chtype)
      ++AC_DEFINE_UNQUOTED(TYPEOF_CHTYPE,$cf_cv_typeof_chtype)
      ++
      ++cf_cv_1UL="1"
      ++test "$cf_cv_unsigned_literals" = yes && cf_cv_1UL="${cf_cv_1UL}U"
      ++test "$cf_cv_typeof_chtype"    = long && cf_cv_1UL="${cf_cv_1UL}L"
      ++AC_SUBST(cf_cv_1UL)
      ++
      ++])dnl
      ++dnl ---------------------------------------------------------------------------
      ++dnl CF_TYPE_SIGACTION version: 3 updated: 2000/08/12 23:18:52
      ++dnl -----------------
      ++dnl
      ++AC_DEFUN([CF_TYPE_SIGACTION],
      ++[
      ++AC_MSG_CHECKING([for type sigaction_t])
      ++AC_CACHE_VAL(cf_cv_type_sigaction,[
      ++	AC_TRY_COMPILE([
      ++#include ],
      ++		[sigaction_t x],
      ++		[cf_cv_type_sigaction=yes],
      ++		[cf_cv_type_sigaction=no])])
      ++AC_MSG_RESULT($cf_cv_type_sigaction)
      ++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],
      ++[
      ++AC_MSG_CHECKING([if unsigned literals are legal])
      ++AC_CACHE_VAL(cf_cv_unsigned_literals,[
      ++	AC_TRY_COMPILE([],[long x = 1L + 1UL + 1U + 1],
      ++		[cf_cv_unsigned_literals=yes],
      ++		[cf_cv_unsigned_literals=no])
      ++	])
      ++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],
      ++[
      ++$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: 2 updated: 2004/01/17 19:18:20
      ++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 
      ++#include 
      ++#include 
      ++#ifdef HAVE_LIBUTF8_H
      ++#include 
      ++#endif],
      ++	[$1 state],
      ++	[cf_cv_$1=no],
      ++	[AC_TRY_COMPILE([
      ++#include 
      ++#include 
      ++#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_ABI_VERSION version: 1 updated: 2003/09/20 18:12:49
      ++dnl -------------------
      ++dnl Allow library's ABI to be overridden.  Generally this happens when a
      ++dnl packager has incremented the ABI past that used in the original package,
      ++dnl and wishes to keep doing this.
      ++dnl
      ++dnl $1 is the package name, if any, to derive a corresponding {package}_ABI
      ++dnl symbol.
      ++AC_DEFUN([CF_WITH_ABI_VERSION],[
      ++test -z "$cf_cv_abi_version" && cf_cv_abi_version=0
      ++AC_ARG_WITH(abi-version,
      ++[  --with-abi-version=XXX  override derived ABI version],
      ++[AC_MSG_WARN(overriding ABI version $cf_cv_abi_version to $withval)
      ++ cf_cv_abi_version=$withval])
      ++ CF_NUMBER_SYNTAX($cf_cv_abi_version,ABI version)
      ++ifelse($1,,,[
      ++$1_ABI=$cf_cv_abi_version
      ++])
      ++])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: 9 updated: 2004/01/16 14:55:37
      ++dnl ---------------
      ++dnl Provide a configure option to incorporate libtool.  Define several useful
      ++dnl symbols for the makefile rules.
      ++dnl
      ++dnl The reference to AC_PROG_LIBTOOL does not normally work, since it uses
      ++dnl macros from libtool.m4 which is in the aclocal directory of automake.
      ++dnl Following is a simple script which turns on the AC_PROG_LIBTOOL macro.
      ++dnl But that still does not work properly since the macro is expanded outside
      ++dnl the CF_WITH_LIBTOOL macro:
      ++dnl
      ++dnl	#!/bin/sh
      ++dnl	ACLOCAL=`aclocal --print-ac-dir`
      ++dnl	if test -z "$ACLOCAL" ; then
      ++dnl		echo cannot find aclocal directory
      ++dnl		exit 1
      ++dnl	elif test ! -f $ACLOCAL/libtool.m4 ; then
      ++dnl		echo cannot find libtool.m4 file
      ++dnl		exit 1
      ++dnl	fi
      ++dnl	
      ++dnl	LOCAL=aclocal.m4
      ++dnl	ORIG=aclocal.m4.orig
      ++dnl	
      ++dnl	trap "mv $ORIG $LOCAL" 0 1 2 5 15
      ++dnl	rm -f $ORIG
      ++dnl	mv $LOCAL $ORIG
      ++dnl	
      ++dnl	# sed the LIBTOOL= assignment to omit the current directory?
      ++dnl	sed -e 's/^LIBTOOL=.*/LIBTOOL=${LIBTOOL-libtool}/' $ACLOCAL/libtool.m4 >>$LOCAL
      ++dnl	cat $ORIG >>$LOCAL
      ++dnl	
      ++dnl	autoconf-257 $*
      ++dnl
      ++AC_DEFUN([CF_WITH_LIBTOOL],
      ++[
      ++ifdef([AC_PROG_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
      ++ifdef([AC_PROG_LIBTOOL],[
      ++	# missing_content_AC_PROG_LIBTOOL{{
      ++	AC_PROG_LIBTOOL
      ++	# missing_content_AC_PROG_LIBTOOL}}
      ++],[
      ++ 	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
      ++])dnl
      ++	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/([[^)]]*)//g' -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
      ++dnl $1 = option name
      ++dnl $2 = help-text
      ++dnl $3 = environment variable to set
      ++dnl $4 = default value, shown in the help-message, must be a constant
      ++dnl $5 = default value, if it's an expression & cannot be in the help-message
      ++dnl
      ++AC_DEFUN([CF_WITH_PATH],
      ++[AC_ARG_WITH($1,[$2 ](default: ifelse($4,,empty,$4)),,
      ++ifelse($4,,[withval="${$3}"],[withval="${$3-ifelse($5,,$4,$5)}"]))dnl
      ++CF_PATH_SYNTAX(withval)
      ++eval $3="$withval"
      ++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
      ++dnl $2 = help-text
      ++dnl $3 = environment variable to set
      ++dnl $4 = default value, shown in the help-message, must be a constant
      ++dnl $5 = default value, if it's an expression & cannot be in the help-message
      ++dnl $6 = flag to tell if we want to define or substitute
      ++dnl
      ++AC_DEFUN([CF_WITH_PATHLIST],[
      ++AC_REQUIRE([CF_PATHSEP])
      ++AC_ARG_WITH($1,[$2 ](default: ifelse($4,,empty,$4)),,
      ++ifelse($4,,[withval=${$3}],[withval=${$3-ifelse($5,,$4,$5)}]))dnl
      ++
      ++IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${PATHSEP}"
      ++cf_dst_path=
      ++for cf_src_path in $withval
      ++do
      ++  CF_PATH_SYNTAX(cf_src_path)
      ++  test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}:"
      ++  cf_dst_path="${cf_dst_path}${cf_src_path}"
      ++done
      ++IFS="$ac_save_ifs"
      ++
      ++ifelse($6,define,[
      ++# Strip single quotes from the value, e.g., when it was supplied as a literal
      ++# for $4 or $5.
      ++case $cf_dst_path in #(vi
      ++\'*)
      ++  cf_dst_path=`echo $cf_dst_path |sed -e s/\'// -e s/\'\$//`
      ++  ;;
      ++esac
      ++cf_dst_path=`echo "$cf_dst_path" | sed -e 's/\\\\/\\\\\\\\/g'`
      ++])
      ++
      ++eval '$3="$cf_dst_path"'
      ++AC_SUBST($3)dnl
      ++
      ++])dnl
      ++dnl ---------------------------------------------------------------------------
      ++dnl CF_WITH_REL_VERSION version: 1 updated: 2003/09/20 18:12:49
      ++dnl -------------------
      ++dnl Allow library's release-version to be overridden.  Generally this happens when a
      ++dnl packager has incremented the release-version past that used in the original package,
      ++dnl and wishes to keep doing this.
      ++dnl
      ++dnl $1 is the package name, if any, to derive corresponding {package}_MAJOR
      ++dnl and {package}_MINOR symbols
      ++dnl symbol.
      ++AC_DEFUN([CF_WITH_REL_VERSION],[
      ++test -z "$cf_cv_rel_version" && cf_cv_rel_version=0.0
      ++AC_ARG_WITH(rel-version,
      ++[  --with-rel-version=XXX  override derived release version],
      ++[AC_MSG_WARN(overriding release version $cf_cv_rel_version to $withval)
      ++ cf_cv_rel_version=$withval])
      ++ifelse($1,,[
      ++ CF_NUMBER_SYNTAX($cf_cv_rel_version,Release version)
      ++],[
      ++ $1_MAJOR=`echo "$cf_cv_rel_version" | sed -e 's/\..*//'`
      ++ $1_MINOR=`echo "$cf_cv_rel_version" | sed -e 's/^[[^.]]*//' -e 's/^\.//' -e 's/\..*//'`
      ++ CF_NUMBER_SYNTAX([$]$1_MAJOR,Release major-version)
      ++ CF_NUMBER_SYNTAX([$]$1_MINOR,Release minor-version)
      ++])
      ++])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
      ++dnl ---------------------------------------------------------------------------
      ++dnl CF_XOPEN_SOURCE version: 11 updated: 2004/01/26 20:58:41
      ++dnl ---------------
      ++dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
      ++dnl or adapt to the vendor's definitions to get equivalent functionality.
      ++AC_DEFUN([CF_XOPEN_SOURCE],[
      ++case $host_os in #(vi
      ++freebsd*) #(vi
      ++	CPPFLAGS="$CPPFLAGS -D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600"
      ++	;;
      ++hpux*) #(vi
      ++	CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE"
      ++	;;
      ++irix6.*) #(vi
      ++	CPPFLAGS="$CPPFLAGS -D_SGI_SOURCE"
      ++	;;
      ++linux*) #(vi
      ++	CF_GNU_SOURCE
      ++	;;
      ++mirbsd*) #(vi
      ++	# setting _XOPEN_SOURCE or _POSIX_SOURCE breaks 
      ++	;;
      ++netbsd*) #(vi
      ++	# setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
      ++	;;
      ++openbsd*) #(vi
      ++	# setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
      ++	;;
      ++osf[[45]]*) #(vi
      ++	CPPFLAGS="$CPPFLAGS -D_OSF_SOURCE"
      ++	;;
      ++sco*) #(vi
      ++	# setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
      ++	;;
      ++solaris*) #(vi
      ++	CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__"
      ++	;;
      ++*)
      ++	AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
      ++	AC_TRY_COMPILE([#include ],[
      ++#ifndef _XOPEN_SOURCE
      ++make an error
      ++#endif],
      ++	[cf_cv_xopen_source=no],
      ++	[cf_save="$CPPFLAGS"
      ++	 CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=500"
      ++	 AC_TRY_COMPILE([#include ],[
      ++#ifdef _XOPEN_SOURCE
      ++make an error
      ++#endif],
      ++	[cf_cv_xopen_source=no],
      ++	[cf_cv_xopen_source=yes])
      ++	CPPFLAGS="$cf_save"
      ++	])
      ++])
      ++test "$cf_cv_xopen_source" = yes && CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=500"
      ++
      ++	# FreeBSD 5.x headers demand this...
      ++	AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_xopen_source,[
      ++	AC_TRY_COMPILE([#include ],[
      ++#ifndef _POSIX_C_SOURCE
      ++make an error
      ++#endif],
      ++	[cf_cv_xopen_source=no],
      ++	[cf_save="$CPPFLAGS"
      ++	 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE"
      ++	 AC_TRY_COMPILE([#include ],[
      ++#ifdef _POSIX_C_SOURCE
      ++make an error
      ++#endif],
      ++	[cf_cv_xopen_source=no],
      ++	[cf_cv_xopen_source=yes])
      ++	CPPFLAGS="$cf_save"
      ++	])
      ++])
      ++test "$cf_cv_xopen_source" = yes && CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE"
      ++	;;
      ++esac
      ++])
      +--- /dev/null
      ++++ ncurses-5.4/m4/templates.m4
      +@@ -0,0 +1,78 @@
      ++AH_TEMPLATE([BROKEN_LINKER], [too lazy to enter descriptions])
      ++AH_TEMPLATE([BSD_TPUTS], [too lazy to enter descriptions])
      ++AH_TEMPLATE([CC_HAS_INLINE_FUNCS], [too lazy to enter descriptions])
      ++AH_TEMPLATE([CC_HAS_PROTOS], [too lazy to enter descriptions])
      ++AH_TEMPLATE([CPP_HAS_PARAM_INIT], [too lazy to enter descriptions])
      ++AH_TEMPLATE([CPP_HAS_VSCAN_FUNC], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_BIG_CORE], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_BSD_CGETENT], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_BUILTIN_H], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_CURSES_VERSION], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_GETTIMEOFDAY], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_GPP_BUILTIN_H], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_GXX_BUILTIN_H], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_HAS_KEY], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_ISASCII], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_LIBGPM], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_LIBUTF8_H], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_MKSTEMP], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_NC_ALLOC_H], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_REGEXPR_H_FUNCS], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_REGEXP_H_FUNCS], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_REGEX_H_FUNCS], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_RESIZETERM], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_RESIZE_TERM], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_SIZECHANGE], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_SLK_COLOR], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_SYS_TIME_SELECT], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_TCGETATTR], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_TYPE_SIGACTION], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_USE_DEFAULT_COLORS], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_VFSCANF], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_VSSCANF], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_WORKING_POLL], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE_WRESIZE], [too lazy to enter descriptions])
      ++AH_TEMPLATE([HAVE__DOSCAN], [too lazy to enter descriptions])
      ++AH_TEMPLATE([MIXEDCASE_FILENAMES], [too lazy to enter descriptions])
      ++AH_TEMPLATE([NCURSES_EXPANDED], [too lazy to enter descriptions])
      ++AH_TEMPLATE([NCURSES_EXT_FUNCS], [too lazy to enter descriptions])
      ++AH_TEMPLATE([NCURSES_NOMACROS], [too lazy to enter descriptions])
      ++AH_TEMPLATE([NCURSES_NO_PADDING], [too lazy to enter descriptions])
      ++AH_TEMPLATE([NCURSES_PATHSEP], [too lazy to enter descriptions])
      ++AH_TEMPLATE([NCURSES_VERSION_STRING], [too lazy to enter descriptions])
      ++AH_TEMPLATE([NDEBUG], [too lazy to enter descriptions])
      ++AH_TEMPLATE([NEED_WCHAR_H], [too lazy to enter descriptions])
      ++AH_TEMPLATE([NO_LEAKS], [too lazy to enter descriptions])
      ++AH_TEMPLATE([PROG_EXT], [too lazy to enter descriptions])
      ++AH_TEMPLATE([PURE_TERMINFO], [too lazy to enter descriptions])
      ++AH_TEMPLATE([SVR4_ACTION], [too lazy to enter descriptions])
      ++AH_TEMPLATE([SVR4_TERMIO], [too lazy to enter descriptions])
      ++AH_TEMPLATE([SYSTEM_NAME], [too lazy to enter descriptions])
      ++AH_TEMPLATE([TERMINFO], [too lazy to enter descriptions])
      ++AH_TEMPLATE([TERMINFO_DIRS], [too lazy to enter descriptions])
      ++AH_TEMPLATE([TERMPATH], [too lazy to enter descriptions])
      ++AH_TEMPLATE([TYPEOF_CHTYPE], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_ASSUMED_COLOR], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_COLORFGBG], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_DATABASE], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_GETCAP], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_GETCAP_CACHE], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_HARD_TABS], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_HASHMAP], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_HOME_TERMINFO], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_LINKS], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_MY_MEMMOVE], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_OK_BCOPY], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_RCS_IDS], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_ROOT_ENVIRON], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_SAFE_SPRINTF], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_SCROLL_HINTS], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_SIGWINCH], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_STDIO_VSCAN], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_STRSTREAM_VSCAN], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_STRSTREAM_VSCAN_CAST], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_SYMLINKS], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_SYSMOUSE], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_TERMCAP], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_WIDEC_SUPPORT], [too lazy to enter descriptions])
      ++AH_TEMPLATE([USE_XMC_SUPPORT], [too lazy to enter descriptions])
      diff --git a/meta/packages/ncurses/ncurses_5.4.bb b/meta/packages/ncurses/ncurses_5.4.bb
      new file mode 100644
      index 0000000000..5b03eaaeed
      --- /dev/null
      +++ b/meta/packages/ncurses/ncurses_5.4.bb
      @@ -0,0 +1,7 @@
      +PR = "r8"
      +
      +SRC_URI = "${GNU_MIRROR}/ncurses/ncurses-${PV}.tar.gz \
      +	   file://visibility.patch;patch=1"
      +S = "${WORKDIR}/ncurses-${PV}"
      +
      +include ncurses.inc
      -- 
      cgit v1.2.3-54-g00ecf