Changeset 18eabd2 for patches


Ignore:
Timestamp:
Sep 12, 2009, 8:55:54 AM (15 years ago)
Author:
jim <jim@…>
Branches:
clfs-1.2, clfs-2.1, clfs-3.0.0-systemd, clfs-3.0.0-sysvinit, master, systemd, sysvinit
Children:
0cbb4b7
Parents:
badccbe
Message:

Updated Ncurses Patch to -20

File:
1 moved

Legend:

Unmodified
Added
Removed
  • patches/ncurses-5.7-branch_update-20.patch

    rbadccbe r18eabd2  
    11Submitted By: Jim Gifford (jim at cross-lfs dot org)
    2 Date: 07-19-2009
     2Date: 09-12-2009
    33Initial Package Version: 5.7
    44Origin: Upstream
    55Upstream Status: Applied
    66Description: This is a branch update for NCurses-5.7, and should be
    7              rechecked periodically. This patch covers up to 5.7-20090718.
     7             rechecked periodically. This patch covers up to 5.7-20090906.
    88
    99diff -Naur ncurses-5.7.orig/aclocal.m4 ncurses-5.7/aclocal.m4
    1010--- ncurses-5.7.orig/aclocal.m4 2008-10-25 15:15:32.000000000 -0700
    11 +++ ncurses-5.7/aclocal.m4      2009-07-19 15:04:17.000000000 -0700
     11+++ ncurses-5.7/aclocal.m4      2009-09-12 08:51:54.000000000 -0700
    1212@@ -1,5 +1,5 @@
    1313 dnl***************************************************************************
     
    966966diff -Naur ncurses-5.7.orig/Ada95/gen/adacurses-config.in ncurses-5.7/Ada95/gen/adacurses-config.in
    967967--- ncurses-5.7.orig/Ada95/gen/adacurses-config.in      2007-04-07 14:06:50.000000000 -0700
    968 +++ ncurses-5.7/Ada95/gen/adacurses-config.in   2009-07-19 15:02:13.000000000 -0700
     968+++ ncurses-5.7/Ada95/gen/adacurses-config.in   2009-09-12 08:51:08.000000000 -0700
    969969@@ -1,18 +1,47 @@
    970970 #! /bin/sh
     
    10401040diff -Naur ncurses-5.7.orig/Ada95/gen/gen.c ncurses-5.7/Ada95/gen/gen.c
    10411041--- ncurses-5.7.orig/Ada95/gen/gen.c    2008-10-04 14:59:37.000000000 -0700
    1042 +++ ncurses-5.7/Ada95/gen/gen.c 2009-07-19 15:03:45.000000000 -0700
     1042+++ ncurses-5.7/Ada95/gen/gen.c 2009-09-12 08:51:23.000000000 -0700
    10431043@@ -1,5 +1,5 @@
    10441044 /****************************************************************************
     
    10791079diff -Naur ncurses-5.7.orig/Ada95/gen/Makefile.in ncurses-5.7/Ada95/gen/Makefile.in
    10801080--- ncurses-5.7.orig/Ada95/gen/Makefile.in      2008-10-04 15:58:31.000000000 -0700
    1081 +++ ncurses-5.7/Ada95/gen/Makefile.in   2009-07-19 15:02:13.000000000 -0700
     1081+++ ncurses-5.7/Ada95/gen/Makefile.in   2009-09-12 08:51:08.000000000 -0700
    10821082@@ -1,5 +1,5 @@
    10831083 ##############################################################################
     
    11351135diff -Naur ncurses-5.7.orig/Ada95/samples/Makefile.in ncurses-5.7/Ada95/samples/Makefile.in
    11361136--- ncurses-5.7.orig/Ada95/samples/Makefile.in  2006-12-17 08:45:02.000000000 -0800
    1137 +++ ncurses-5.7/Ada95/samples/Makefile.in       2009-07-19 15:02:13.000000000 -0700
     1137+++ ncurses-5.7/Ada95/samples/Makefile.in       2009-09-12 08:51:08.000000000 -0700
    11381138@@ -1,5 +1,5 @@
    11391139 ##############################################################################
     
    11741174diff -Naur ncurses-5.7.orig/Ada95/src/Makefile.in ncurses-5.7/Ada95/src/Makefile.in
    11751175--- ncurses-5.7.orig/Ada95/src/Makefile.in      2007-09-15 11:22:24.000000000 -0700
    1176 +++ ncurses-5.7/Ada95/src/Makefile.in   2009-07-19 15:02:13.000000000 -0700
     1176+++ ncurses-5.7/Ada95/src/Makefile.in   2009-09-12 08:51:08.000000000 -0700
    11771177@@ -1,5 +1,5 @@
    11781178 ##############################################################################
     
    12661266diff -Naur ncurses-5.7.orig/Ada95/src/terminal_interface-curses-mouse.adb ncurses-5.7/Ada95/src/terminal_interface-curses-mouse.adb
    12671267--- ncurses-5.7.orig/Ada95/src/terminal_interface-curses-mouse.adb      2008-07-26 11:51:11.000000000 -0700
    1268 +++ ncurses-5.7/Ada95/src/terminal_interface-curses-mouse.adb   2009-07-19 15:01:57.000000000 -0700
     1268+++ ncurses-5.7/Ada95/src/terminal_interface-curses-mouse.adb   2009-09-12 08:50:52.000000000 -0700
    12691269@@ -35,8 +35,8 @@
    12701270 ------------------------------------------------------------------------------
     
    12891289diff -Naur ncurses-5.7.orig/c++/cursesw.cc ncurses-5.7/c++/cursesw.cc
    12901290--- ncurses-5.7.orig/c++/cursesw.cc     2007-12-15 15:01:57.000000000 -0800
    1291 +++ ncurses-5.7/c++/cursesw.cc  2009-07-19 15:03:48.000000000 -0700
     1291+++ ncurses-5.7/c++/cursesw.cc  2009-09-12 08:51:25.000000000 -0700
    12921292@@ -1,6 +1,6 @@
    12931293 // * this is for making emacs happy: -*-Mode: C++;-*-
     
    13361336diff -Naur ncurses-5.7.orig/c++/demo.cc ncurses-5.7/c++/demo.cc
    13371337--- ncurses-5.7.orig/c++/demo.cc        2008-08-04 10:16:57.000000000 -0700
    1338 +++ ncurses-5.7/c++/demo.cc     2009-07-19 15:03:58.000000000 -0700
     1338+++ ncurses-5.7/c++/demo.cc     2009-09-12 08:51:35.000000000 -0700
    13391339@@ -35,7 +35,7 @@
    13401340  *   Demo code for NCursesMenu and NCursesForm written by
     
    13621362diff -Naur ncurses-5.7.orig/c++/internal.h ncurses-5.7/c++/internal.h
    13631363--- ncurses-5.7.orig/c++/internal.h     2008-10-25 14:35:44.000000000 -0700
    1364 +++ ncurses-5.7/c++/internal.h  2009-07-19 15:03:58.000000000 -0700
     1364+++ ncurses-5.7/c++/internal.h  2009-09-12 08:51:35.000000000 -0700
    13651365@@ -31,7 +31,7 @@
    13661366  *   Author: Juergen Pfeifer, 1997                                          *
     
    13861386diff -Naur ncurses-5.7.orig/c++/Makefile.in ncurses-5.7/c++/Makefile.in
    13871387--- ncurses-5.7.orig/c++/Makefile.in    2007-04-28 08:29:12.000000000 -0700
    1388 +++ ncurses-5.7/c++/Makefile.in 2009-07-19 15:03:48.000000000 -0700
     1388+++ ncurses-5.7/c++/Makefile.in 2009-09-12 08:51:25.000000000 -0700
    13891389@@ -1,6 +1,6 @@
    13901390-# $Id: Makefile.in,v 1.84 2007/04/28 15:29:12 tom Exp $
     
    14441444diff -Naur ncurses-5.7.orig/config.guess ncurses-5.7/config.guess
    14451445--- ncurses-5.7.orig/config.guess       2008-08-30 13:25:07.000000000 -0700
    1446 +++ ncurses-5.7/config.guess    2009-07-19 15:02:08.000000000 -0700
     1446+++ ncurses-5.7/config.guess    2009-09-12 08:51:04.000000000 -0700
    14471447@@ -4,7 +4,7 @@
    14481448 #   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
     
    15141514diff -Naur ncurses-5.7.orig/config.sub ncurses-5.7/config.sub
    15151515--- ncurses-5.7.orig/config.sub 2008-08-30 13:25:02.000000000 -0700
    1516 +++ ncurses-5.7/config.sub      2009-07-19 15:02:08.000000000 -0700
     1516+++ ncurses-5.7/config.sub      2009-09-12 08:51:04.000000000 -0700
    15171517@@ -4,7 +4,7 @@
    15181518 #   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
     
    15981598diff -Naur ncurses-5.7.orig/configure ncurses-5.7/configure
    15991599--- ncurses-5.7.orig/configure  2008-10-25 17:04:38.000000000 -0700
    1600 +++ ncurses-5.7/configure       2009-07-19 15:04:17.000000000 -0700
     1600+++ ncurses-5.7/configure       2009-09-12 08:52:04.000000000 -0700
    16011601@@ -1,7 +1,7 @@
    16021602 #! /bin/sh
    16031603-# From configure.in Revision: 1.454 .
    1604 +# From configure.in Revision: 1.472 .
     1604+# From configure.in Revision: 1.473 .
    16051605 # Guess values for system-dependent variables and create Makefiles.
    16061606-# Generated by Autoconf 2.52.20080325.
     
    39043904+break
    39053905+done
    3906  
    3907 -echo "$as_me:3831: checking for archiver options (symbol AR_OPTS)" >&5
    3908 -echo $ECHO_N "checking for archiver options (symbol AR_OPTS)... $ECHO_C" >&6
     3906+
    39093907+fi
    39103908+fi
     
    39183916+fi
    39193917 
    3920 -if test -z "$AR_OPTS" ; then
    3921 -       AR_OPTS=rv
     3918-echo "$as_me:3831: checking for archiver options (symbol AR_OPTS)" >&5
     3919-echo $ECHO_N "checking for archiver options (symbol AR_OPTS)... $ECHO_C" >&6
    39223920+fi
    39233921+if test -z "$ac_cv_prog_AR"; then
     
    39443942+done
    39453943 
     3944-if test -z "$AR_OPTS" ; then
     3945-       AR_OPTS=rv
    39463946+  test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="ar"
    39473947+fi
    3948  fi
     3948+fi
    39493949+ac_ct_AR=$ac_cv_prog_ac_ct_AR
    39503950+if test -n "$ac_ct_AR"; then
     
    39553955+echo "${ECHO_T}no" >&6
    39563956+fi
    3957 +
     3957 
    39583958+  AR=$ac_ct_AR
    39593959+else
    39603960+  AR="$ac_cv_prog_AR"
    3961 +fi
    3962 +
     3961 fi
     3962 
     3963-cf_cv_subst_AR_OPTS=$AR_OPTS
     3964-echo "$as_me:3840: result: $AR_OPTS" >&5
     3965-echo "${ECHO_T}$AR_OPTS" >&6
    39633966+echo "$as_me:4049: checking for options to update archives" >&5
    39643967+echo $ECHO_N "checking for options to update archives... $ECHO_C" >&6
     
    39893992+               else
    39903993+                       test -n "$verbose" && echo "    cannot compile test-program" 1>&6
    3991  
    3992 -cf_cv_subst_AR_OPTS=$AR_OPTS
    3993 -echo "$as_me:3840: result: $AR_OPTS" >&5
    3994 -echo "${ECHO_T}$AR_OPTS" >&6
     3994+
    39953995+echo "${as_me-configure}:4078: testing cannot compile test-program ..." 1>&5
    39963996+
     
    52655265 
    52665266 if test "$use_database" != no ; then
    5267 @@ -5393,7 +5690,7 @@
     5267@@ -5393,18 +5690,18 @@
    52685268 #define USE_DATABASE 1
    52695269 EOF
     
    52735273 echo $ECHO_N "checking which terminfo source-file will be installed... $ECHO_C" >&6
    52745274 
    5275  # Check whether --enable-database or --disable-database was given.
    5276 @@ -5401,10 +5698,10 @@
    5277    enableval="$enable_database"
     5275-# Check whether --enable-database or --disable-database was given.
     5276-if test "${enable_database+set}" = set; then
     5277-  enableval="$enable_database"
     5278+# Check whether --with-database or --without-database was given.
     5279+if test "${with_database+set}" = set; then
     5280+  withval="$with_database"
    52785281   TERMINFO_SRC=$withval
    52795282 fi;
     
    1342013423 s,@USE_CXX_BOOL@,$USE_CXX_BOOL,;t t
    1342113424 s,@gnat_exists@,$gnat_exists,;t t
    13422 @@ -17493,6 +17964,7 @@
     13425@@ -17493,6 +17964,8 @@
    1342313426 s,@HAVE_TCGETATTR@,$HAVE_TCGETATTR,;t t
    1342413427 s,@HAVE_TERMIO_H@,$HAVE_TERMIO_H,;t t
    1342513428 s,@HAVE_TERMIOS_H@,$HAVE_TERMIOS_H,;t t
    1342613429+s,@MAKE_PC_FILES@,$MAKE_PC_FILES,;t t
     13430+s,@cross_compiling@,$cross_compiling,;t t
    1342713431 CEOF
    1342813432 
    1342913433 EOF
    13430 @@ -17607,7 +18079,7 @@
     13434@@ -17607,7 +18080,7 @@
    1343113435   esac
    1343213436 
    1343313437   if test x"$ac_file" != x-; then
    1343413438-    { echo "$as_me:17610: creating $ac_file" >&5
    13435 +    { echo "$as_me:18082: creating $ac_file" >&5
     13439+    { echo "$as_me:18083: creating $ac_file" >&5
    1343613440 echo "$as_me: creating $ac_file" >&6;}
    1343713441     rm -f "$ac_file"
    1343813442   fi
    13439 @@ -17625,7 +18097,7 @@
     13443@@ -17625,7 +18098,7 @@
    1344013444       -) echo $tmp/stdin ;;
    1344113445       [\\/$]*)
    1344213446          # Absolute (can't be DOS-style, as IFS=:)
    1344313447-         test -f "$f" || { { echo "$as_me:17628: error: cannot find input file: $f" >&5
    13444 +         test -f "$f" || { { echo "$as_me:18100: error: cannot find input file: $f" >&5
     13448+         test -f "$f" || { { echo "$as_me:18101: error: cannot find input file: $f" >&5
    1344513449 echo "$as_me: error: cannot find input file: $f" >&2;}
    1344613450    { (exit 1); exit 1; }; }
    1344713451          echo $f;;
    13448 @@ -17638,7 +18110,7 @@
     13452@@ -17638,7 +18111,7 @@
    1344913453            echo $srcdir/$f
    1345013454          else
    1345113455            # /dev/null tree
    1345213456-           { { echo "$as_me:17641: error: cannot find input file: $f" >&5
    13453 +           { { echo "$as_me:18113: error: cannot find input file: $f" >&5
     13457+           { { echo "$as_me:18114: error: cannot find input file: $f" >&5
    1345413458 echo "$as_me: error: cannot find input file: $f" >&2;}
    1345513459    { (exit 1); exit 1; }; }
    1345613460          fi;;
    13457 @@ -17704,7 +18176,7 @@
     13461@@ -17704,7 +18177,7 @@
    1345813462   * )   ac_file_in=$ac_file.in ;;
    1345913463   esac
    1346013464 
    1346113465-  test x"$ac_file" != x- && { echo "$as_me:17707: creating $ac_file" >&5
    13462 +  test x"$ac_file" != x- && { echo "$as_me:18179: creating $ac_file" >&5
     13466+  test x"$ac_file" != x- && { echo "$as_me:18180: creating $ac_file" >&5
    1346313467 echo "$as_me: creating $ac_file" >&6;}
    1346413468 
    1346513469   # First look for the input files in the build tree, otherwise in the
    13466 @@ -17715,7 +18187,7 @@
     13470@@ -17715,7 +18188,7 @@
    1346713471       -) echo $tmp/stdin ;;
    1346813472       [\\/$]*)
    1346913473          # Absolute (can't be DOS-style, as IFS=:)
    1347013474-         test -f "$f" || { { echo "$as_me:17718: error: cannot find input file: $f" >&5
    13471 +         test -f "$f" || { { echo "$as_me:18190: error: cannot find input file: $f" >&5
     13475+         test -f "$f" || { { echo "$as_me:18191: error: cannot find input file: $f" >&5
    1347213476 echo "$as_me: error: cannot find input file: $f" >&2;}
    1347313477    { (exit 1); exit 1; }; }
    1347413478          echo $f;;
    13475 @@ -17728,7 +18200,7 @@
     13479@@ -17728,7 +18201,7 @@
    1347613480            echo $srcdir/$f
    1347713481          else
    1347813482            # /dev/null tree
    1347913483-           { { echo "$as_me:17731: error: cannot find input file: $f" >&5
    13480 +           { { echo "$as_me:18203: error: cannot find input file: $f" >&5
     13484+           { { echo "$as_me:18204: error: cannot find input file: $f" >&5
    1348113485 echo "$as_me: error: cannot find input file: $f" >&2;}
    1348213486    { (exit 1); exit 1; }; }
    1348313487          fi;;
    13484 @@ -17786,7 +18258,7 @@
     13488@@ -17786,7 +18259,7 @@
    1348513489   rm -f $tmp/in
    1348613490   if test x"$ac_file" != x-; then
    1348713491     if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
    1348813492-      { echo "$as_me:17789: $ac_file is unchanged" >&5
    13489 +      { echo "$as_me:18261: $ac_file is unchanged" >&5
     13493+      { echo "$as_me:18262: $ac_file is unchanged" >&5
    1349013494 echo "$as_me: $ac_file is unchanged" >&6;}
    1349113495     else
    1349213496       ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
    13493 @@ -17873,40 +18345,44 @@
     13497@@ -17873,40 +18346,44 @@
    1349413498                for cf_item in $cf_LIST_MODELS
    1349513499                do
     
    1354713551                                cf_depsuf=$cf_suffix
    1354813552                                ;;
    13549 @@ -18020,40 +18496,44 @@
     13553@@ -18020,40 +18497,44 @@
    1355013554 
    1355113555 cf_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
     
    1360313607                                cf_depsuf=$cf_suffix
    1360413608                                ;;
    13605 @@ -18234,18 +18714,28 @@
     13609@@ -18234,18 +18715,28 @@
    1360613610 install.libs uninstall.libs \\
    1360713611 install.data uninstall.data ::
     
    1363213636 if test -f $srcdir/$tack.h; then
    1363313637 cat >> Makefile <<CF_EOF
    13634 @@ -18256,6 +18746,7 @@
     13638@@ -18256,6 +18747,7 @@
    1363513639 CF_EOF
    1363613640 fi
     
    1364213646diff -Naur ncurses-5.7.orig/configure.in ncurses-5.7/configure.in
    1364313647--- ncurses-5.7.orig/configure.in       2008-10-18 07:53:32.000000000 -0700
    13644 +++ ncurses-5.7/configure.in    2009-07-19 15:04:17.000000000 -0700
     13648+++ ncurses-5.7/configure.in    2009-09-12 08:52:04.000000000 -0700
    1364513649@@ -1,5 +1,5 @@
    1364613650 dnl***************************************************************************
     
    1365513659 dnl
    1365613660-dnl $Id: configure.in,v 1.454 2008/10/18 14:53:32 tom Exp $
    13657 +dnl $Id: configure.in,v 1.472 2009/07/18 16:18:30 tom Exp $
     13661+dnl $Id: configure.in,v 1.473 2009/08/15 16:28:00 tom Exp $
    1365813662 dnl Process this file with autoconf to produce a configure script.
    1365913663 dnl
     
    1366313667 AC_PREREQ(2.13.20020210)
    1366413668-AC_REVISION($Revision: 1.454 $)
    13665 +AC_REVISION($Revision: 1.472 $)
     13669+AC_REVISION($Revision: 1.473 $)
    1366613670 AC_INIT(ncurses/base/lib_initscr.c)
    1366713671 AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
     
    1372213726 dnl Special option for use by system-builders: the install-prefix is used to
    1372313727 dnl adjust the location into which the actual install is done, so that an
     13728@@ -413,7 +445,7 @@
     13729        AC_DEFINE(USE_DATABASE)
     13730 
     13731        AC_MSG_CHECKING(which terminfo source-file will be installed)
     13732-       AC_ARG_ENABLE(database,
     13733+       AC_ARG_WITH(database,
     13734                [  --with-database=XXX     specify terminfo source to install],
     13735                [TERMINFO_SRC=$withval])
     13736        AC_MSG_RESULT($TERMINFO_SRC)
    1372413737@@ -797,6 +829,15 @@
    1372513738        [NCURSES_MMASK_T=auto])
     
    1392513938 AC_DEFINE_UNQUOTED(NCURSES_VERSION_STRING, "${NCURSES_MAJOR}.${NCURSES_MINOR}.${NCURSES_PATCH}")
    1392613939 
    13927 @@ -1765,11 +1860,23 @@
     13940@@ -1765,11 +1860,24 @@
    1392813941 CF_SUBST_IF(["$ac_cv_header_termios_h" = yes], HAVE_TERMIOS_H, 1, 0)
    1392913942 
     
    1394213955+fi
    1394313956+AC_SUBST(MAKE_PC_FILES)
     13957+AC_SUBST(cross_compiling)
    1394413958+
    1394513959 AC_OUTPUT( \
     
    1395013964        include/unctrl.h \
    1395113965        $SUB_MAKEFILES \
    13952 @@ -1796,13 +1903,13 @@
     13966@@ -1796,13 +1904,13 @@
    1395313967 NCURSES_PATCH="$NCURSES_PATCH"
    1395413968 SRC_SUBDIRS="$SRC_SUBDIRS"
     
    1396713981 WITH_ECHO="$with_echo"
    1396813982 WITH_OVERWRITE="$with_overwrite"
    13969 @@ -1821,6 +1928,7 @@
     13983@@ -1821,6 +1929,7 @@
    1397013984 cf_cv_shlib_version_infix="$cf_cv_shlib_version_infix"
    1397113985 cf_cv_system_name="$cf_cv_system_name"
     
    1397713991diff -Naur ncurses-5.7.orig/dist.mk ncurses-5.7/dist.mk
    1397813992--- ncurses-5.7.orig/dist.mk    2008-11-01 17:58:38.000000000 -0700
    13979 +++ ncurses-5.7/dist.mk 2009-07-19 15:04:17.000000000 -0700
     13993+++ ncurses-5.7/dist.mk 2009-09-12 08:52:10.000000000 -0700
    1398013994@@ -25,7 +25,7 @@
    1398113995 # use or other dealings in this Software without prior written               #
     
    1398313997 ##############################################################################
    1398413998-# $Id: dist.mk,v 1.671 2008/11/02 00:58:38 tom Exp $
    13985 +# $Id: dist.mk,v 1.709 2009/07/15 23:12:22 tom Exp $
     13999+# $Id: dist.mk,v 1.719 2009/09/06 14:11:10 tom Exp $
    1398614000 # Makefile for creating ncurses distributions.
    1398714001 #
     
    1399214006 NCURSES_MINOR = 7
    1399314007-NCURSES_PATCH = 20081102
    13994 +NCURSES_PATCH = 20090718
     14008+NCURSES_PATCH = 20090906
    1399514009 
    1399614010 # We don't append the patch to the version, since this only applies to releases
     
    1399814012diff -Naur ncurses-5.7.orig/form/fld_def.c ncurses-5.7/form/fld_def.c
    1399914013--- ncurses-5.7.orig/form/fld_def.c     2007-10-13 12:29:58.000000000 -0700
    14000 +++ ncurses-5.7/form/fld_def.c  2009-07-19 15:02:23.000000000 -0700
     14014+++ ncurses-5.7/form/fld_def.c  2009-09-12 08:51:19.000000000 -0700
    1400114015@@ -32,7 +32,7 @@
    1400214016 
     
    1402014034diff -Naur ncurses-5.7.orig/form/fld_newftyp.c ncurses-5.7/form/fld_newftyp.c
    1402114035--- ncurses-5.7.orig/form/fld_newftyp.c 2007-10-13 12:30:55.000000000 -0700
    14022 +++ ncurses-5.7/form/fld_newftyp.c      2009-07-19 15:03:51.000000000 -0700
     14036+++ ncurses-5.7/form/fld_newftyp.c      2009-09-12 08:51:28.000000000 -0700
    1402314037@@ -1,5 +1,5 @@
    1402414038 /****************************************************************************
     
    1405114065diff -Naur ncurses-5.7.orig/form/form.priv.h ncurses-5.7/form/form.priv.h
    1405214066--- ncurses-5.7.orig/form/form.priv.h   2008-09-08 13:29:05.000000000 -0700
    14053 +++ ncurses-5.7/form/form.priv.h        2009-07-19 15:03:51.000000000 -0700
     14067+++ ncurses-5.7/form/form.priv.h        2009-09-12 08:51:28.000000000 -0700
    1405414068@@ -1,5 +1,5 @@
    1405514069 /****************************************************************************
     
    1411614130diff -Naur ncurses-5.7.orig/form/frm_driver.c ncurses-5.7/form/frm_driver.c
    1411714131--- ncurses-5.7.orig/form/frm_driver.c  2008-10-18 09:25:00.000000000 -0700
    14118 +++ ncurses-5.7/form/frm_driver.c       2009-07-19 15:02:00.000000000 -0700
     14132+++ ncurses-5.7/form/frm_driver.c       2009-09-12 08:52:07.000000000 -0700
     14133@@ -1,5 +1,5 @@
     14134 /****************************************************************************
     14135- * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              *
     14136+ * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.              *
     14137  *                                                                          *
     14138  * Permission is hereby granted, free of charge, to any person obtaining a  *
     14139  * copy of this software and associated documentation files (the            *
    1411914140@@ -32,7 +32,7 @@
    1412014141 
     
    1412214143 
    1412314144-MODULE_ID("$Id: frm_driver.c,v 1.88 2008/10/18 16:25:00 tom Exp $")
    14124 +MODULE_ID("$Id: frm_driver.c,v 1.89 2008/12/06 23:08:12 tom Exp $")
     14145+MODULE_ID("$Id: frm_driver.c,v 1.90 2009/08/29 19:02:25 tom Exp $")
    1412514146 
    1412614147 /*----------------------------------------------------------------------------
    1412714148   This is the core module of the form library. It contains the majority
    14128 @@ -4366,6 +4366,7 @@
     14149@@ -188,7 +188,7 @@
     14150 /* Macro to set the attributes for a fields window */
     14151 #define Set_Field_Window_Attributes(field,win) \
     14152 (  wbkgdset((win),(chtype)((field)->pad | (field)->back)), \
     14153-   wattrset((win),(field)->fore) )
     14154+   (void) wattrset((win),(field)->fore) )
     14155 
     14156 /* Logic to decide whether or not a field really appears on the form */
     14157 #define Field_Really_Appears(field)         \
     14158@@ -1073,9 +1073,13 @@
     14159   else
     14160     {
     14161       if (field->opts & O_VISIBLE)
     14162-       Set_Field_Window_Attributes(field, win);
     14163+       {
     14164+         Set_Field_Window_Attributes(field, win);
     14165+       }
     14166       else
     14167-       wattrset(win, WINDOW_ATTRS(fwin));
     14168+       {
     14169+         (void)wattrset(win, WINDOW_ATTRS(fwin));
     14170+       }
     14171       werase(win);
     14172     }
     14173 
     14174@@ -4366,6 +4370,7 @@
    1412914175       delwin(field->working);
    1413014176       field->working = newpad(field->drows, field->dcols);
     
    1413614182diff -Naur ncurses-5.7.orig/form/frm_sub.c ncurses-5.7/form/frm_sub.c
    1413714183--- ncurses-5.7.orig/form/frm_sub.c     2004-12-11 14:13:39.000000000 -0800
    14138 +++ ncurses-5.7/form/frm_sub.c  2009-07-19 15:03:51.000000000 -0700
     14184+++ ncurses-5.7/form/frm_sub.c  2009-09-12 08:51:28.000000000 -0700
    1413914185@@ -1,5 +1,5 @@
    1414014186 /****************************************************************************
     
    1418314229diff -Naur ncurses-5.7.orig/form/frm_win.c ncurses-5.7/form/frm_win.c
    1418414230--- ncurses-5.7.orig/form/frm_win.c     2004-12-11 14:15:27.000000000 -0800
    14185 +++ ncurses-5.7/form/frm_win.c  2009-07-19 15:03:53.000000000 -0700
     14231+++ ncurses-5.7/form/frm_win.c  2009-09-12 08:51:30.000000000 -0700
    1418614232@@ -1,5 +1,5 @@
    1418714233 /****************************************************************************
     
    1424414290diff -Naur ncurses-5.7.orig/form/fty_generic.c ncurses-5.7/form/fty_generic.c
    1424514291--- ncurses-5.7.orig/form/fty_generic.c 1969-12-31 16:00:00.000000000 -0800
    14246 +++ ncurses-5.7/form/fty_generic.c      2009-07-19 15:04:11.000000000 -0700
     14292+++ ncurses-5.7/form/fty_generic.c      2009-09-12 08:51:49.000000000 -0700
    1424714293@@ -0,0 +1,287 @@
    1424814294+/****************************************************************************
     
    1453514581diff -Naur ncurses-5.7.orig/form/Makefile.in ncurses-5.7/form/Makefile.in
    1453614582--- ncurses-5.7.orig/form/Makefile.in   2007-04-28 07:56:11.000000000 -0700
    14537 +++ ncurses-5.7/form/Makefile.in        2009-07-19 15:03:48.000000000 -0700
     14583+++ ncurses-5.7/form/Makefile.in        2009-09-12 08:51:25.000000000 -0700
    1453814584@@ -1,6 +1,6 @@
    1453914585-# $Id: Makefile.in,v 1.47 2007/04/28 14:56:11 tom Exp $
     
    1456414610diff -Naur ncurses-5.7.orig/include/capdefaults.c ncurses-5.7/include/capdefaults.c
    1456514611--- ncurses-5.7.orig/include/capdefaults.c      2008-08-04 05:33:42.000000000 -0700
    14566 +++ ncurses-5.7/include/capdefaults.c   2009-07-19 15:02:22.000000000 -0700
     14612+++ ncurses-5.7/include/capdefaults.c   2009-09-12 08:51:17.000000000 -0700
    1456714613@@ -32,7 +32,7 @@
    1456814614  *     and: Thomas E. Dickey                        1996-on                 *
     
    1459014636diff -Naur ncurses-5.7.orig/include/curses.h.in ncurses-5.7/include/curses.h.in
    1459114637--- ncurses-5.7.orig/include/curses.h.in        2008-08-30 13:11:29.000000000 -0700
    14592 +++ ncurses-5.7/include/curses.h.in     2009-07-19 15:04:17.000000000 -0700
     14638+++ ncurses-5.7/include/curses.h.in     2009-09-12 08:52:10.000000000 -0700
    1459314639@@ -1,5 +1,5 @@
    1459414640 /****************************************************************************
     
    1460314649 
    1460414650-/* $Id: curses.h.in,v 1.187 2008/08/30 20:11:29 tom Exp $ */
    14605 +/* $Id: curses.h.in,v 1.204 2009/07/18 16:02:07 tom Exp $ */
     14651+/* $Id: curses.h.in,v 1.206 2009/09/06 15:55:10 tom Exp $ */
    1460614652 
    1460714653 #ifndef __NCURSES_H
     
    1472914775 extern NCURSES_EXPORT(int) keyok (int, bool);
    1473014776 extern NCURSES_EXPORT(int) resize_term (int, int);
    14731 @@ -856,23 +869,133 @@
     14777@@ -856,23 +869,135 @@
    1473214778  * These extensions provide access to information stored in the WINDOW even
    1473314779  * when NCURSES_OPAQUE is set:
     
    1475414800+extern NCURSES_EXPORT(bool) is_nodelay (const WINDOW *);       /* @GENERATED_EXT_FUNCS@ */
    1475514801+extern NCURSES_EXPORT(bool) is_notimeout (const WINDOW *);     /* @GENERATED_EXT_FUNCS@ */
     14802+extern NCURSES_EXPORT(bool) is_pad (const WINDOW *);           /* @GENERATED_EXT_FUNCS@ */
    1475614803+extern NCURSES_EXPORT(bool) is_scrollok (const WINDOW *);      /* @GENERATED_EXT_FUNCS@ */
     14804+extern NCURSES_EXPORT(bool) is_subwin (const WINDOW *);                /* @GENERATED_EXT_FUNCS@ */
    1475714805+extern NCURSES_EXPORT(bool) is_syncok (const WINDOW *);                /* @GENERATED_EXT_FUNCS@ */
    1475814806+extern NCURSES_EXPORT(int) wgetscrreg (const WINDOW *, int *, int *); /* @GENERATED_EXT_FUNCS@ */
     
    1487514923 
    1487614924 #define NCURSES_ATTR_SHIFT       8
    14877 @@ -971,9 +1094,9 @@
     14925@@ -971,9 +1096,11 @@
    1487814926 #if !NCURSES_OPAQUE
    1487914927 #if defined(_XOPEN_SOURCE_EXTENDED) && @NCURSES_EXT_COLORS@
    1488014928 #define wattrset(win,at)       ((win)->_color = PAIR_NUMBER(at), \
    1488114929-                                (win)->_attrs = (at))
    14882 +                                 NCURSES_CAST(int, (win)->_attrs = (at)))
     14930+                                 (win)->_attrs = (at), \
     14931+                                 NCURSES_CAST(int, (win)->_attrs))
    1488314932 #else
    1488414933-#define wattrset(win,at)       ((win)->_attrs = (at))
    14885 +#define wattrset(win,at)        NCURSES_CAST(int, (win)->_attrs = (at))
     14934+#define wattrset(win,at)        ((win)->_attrs = (at), \
     14935+                                NCURSES_CAST(int, (win)->_attrs))
    1488614936 #endif
    1488714937 #endif /* NCURSES_OPAQUE */
    1488814938 
    14889 @@ -1173,7 +1296,7 @@
     14939@@ -1148,16 +1275,18 @@
     14940  */
     14941 #if @NCURSES_EXT_FUNCS@
     14942 #if !NCURSES_OPAQUE
     14943-#define is_cleared(win)                ((win)->_clear)
     14944-#define is_idcok(win)          ((win)->_idcok)
     14945-#define is_idlok(win)          ((win)->_idlok)
     14946-#define is_immedok(win)                ((win)->_immed)
     14947-#define is_keypad(win)         ((win)->_use_keypad)
     14948-#define is_leaveok(win)                ((win)->_leaveok)
     14949-#define is_nodelay(win)                ((win)->_delay == 0)
     14950-#define is_notimeout(win)      ((win)->_notimeout)
     14951-#define is_scrollok(win)       ((win)->_scroll)
     14952-#define is_syncok(win)         ((win)->_sync)
     14953+#define is_cleared(win)                ((win) ? (win)->_clear : FALSE)
     14954+#define is_idcok(win)          ((win) ? (win)->_idcok : FALSE)
     14955+#define is_idlok(win)          ((win) ? (win)->_idlok : FALSE)
     14956+#define is_immedok(win)                ((win) ? (win)->_immed : FALSE)
     14957+#define is_keypad(win)         ((win) ? (win)->_use_keypad : FALSE)
     14958+#define is_leaveok(win)                ((win) ? (win)->_leaveok : FALSE)
     14959+#define is_nodelay(win)                ((win) ? ((win)->_delay == 0) : FALSE)
     14960+#define is_notimeout(win)      ((win) ? (win)->_notimeout : FALSE)
     14961+#define is_pad(win)            ((win) ? ((win)->_flags & _ISPAD) != 0 : FALSE)
     14962+#define is_scrollok(win)       ((win) ? (win)->_scroll : FALSE)
     14963+#define is_subwin(win)         ((win) ? ((win)->_flags & _SUBWIN) != 0 : FALSE)
     14964+#define is_syncok(win)         ((win) ? (win)->_sync : FALSE)
     14965 #define wgetparent(win)                ((win) ? (win)->_parent : 0)
     14966 #define wgetscrreg(win,t,b)    ((win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR)
     14967 #endif
     14968@@ -1173,7 +1302,7 @@
    1489014969  *        It gives the ESC expire time in milliseconds.
    1489114970  *     b. ttytype is needed for backward compatibility
     
    1489814977diff -Naur ncurses-5.7.orig/include/curses.tail ncurses-5.7/include/curses.tail
    1489914978--- ncurses-5.7.orig/include/curses.tail        2008-07-05 13:20:38.000000000 -0700
    14900 +++ ncurses-5.7/include/curses.tail     2009-07-19 15:04:03.000000000 -0700
     14979+++ ncurses-5.7/include/curses.tail     2009-09-12 08:51:40.000000000 -0700
    1490114980@@ -1,4 +1,4 @@
    1490214981-/* $Id: curses.tail,v 1.16 2008/07/05 20:20:38 tom Exp $ */
     
    1495715036diff -Naur ncurses-5.7.orig/include/curses.wide ncurses-5.7/include/curses.wide
    1495815037--- ncurses-5.7.orig/include/curses.wide        2007-03-10 09:52:23.000000000 -0800
    14959 +++ ncurses-5.7/include/curses.wide     2009-07-19 15:03:59.000000000 -0700
     15038+++ ncurses-5.7/include/curses.wide     2009-09-12 08:51:37.000000000 -0700
    1496015039@@ -1,9 +1,11 @@
    1496115040-/* $Id: curses.wide,v 1.34 2007/03/10 17:52:23 tom Exp $ */
     
    1499515074 
    1499615075 /*
     15076diff -Naur ncurses-5.7.orig/include/headers ncurses-5.7/include/headers
     15077--- ncurses-5.7.orig/include/headers    2007-01-20 11:57:04.000000000 -0800
     15078+++ ncurses-5.7/include/headers 2009-09-12 08:52:09.000000000 -0700
     15079@@ -1,6 +1,6 @@
     15080-# $Id: headers,v 1.9 2007/01/20 19:57:04 Miroslav.Lichvar Exp $
     15081+# $Id: headers,v 1.10 2009/09/05 17:46:30 tom Exp $
     15082 ##############################################################################
     15083-# Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.                #
     15084+# Copyright (c) 1998-2007,2009 Free Software Foundation, Inc.                #
     15085 #                                                                            #
     15086 # Permission is hereby granted, free of charge, to any person obtaining a    #
     15087 # copy of this software and associated documentation files (the "Software"), #
     15088@@ -33,7 +33,7 @@
     15089 curses.h
     15090 unctrl.h
     15091 termcap.h
     15092-$(srcdir)/ncurses_dll.h
     15093+ncurses_dll.h
     15094 @ ticlib
     15095 $(srcdir)/tic.h
     15096 $(srcdir)/term_entry.h
    1499715097diff -Naur ncurses-5.7.orig/include/Makefile.in ncurses-5.7/include/Makefile.in
    1499815098--- ncurses-5.7.orig/include/Makefile.in        2001-12-08 10:50:06.000000000 -0800
    14999 +++ ncurses-5.7/include/Makefile.in     2009-07-19 15:04:09.000000000 -0700
    15000 @@ -1,4 +1,4 @@
     15099+++ ncurses-5.7/include/Makefile.in     2009-09-12 08:52:04.000000000 -0700
     15100@@ -1,6 +1,6 @@
    1500115101-# $Id: Makefile.in,v 1.35 2001/12/08 18:50:06 tom Exp $
    15002 +# $Id: Makefile.in,v 1.36 2009/06/13 21:42:45 tom Exp $
     15102+# $Id: Makefile.in,v 1.37 2009/08/10 20:50:04 tom Exp $
    1500315103 ##############################################################################
    15004  # Copyright (c) 1998,2000,2001 Free Software Foundation, Inc.                #
     15104-# Copyright (c) 1998,2000,2001 Free Software Foundation, Inc.                #
     15105+# Copyright (c) 1998,2001,2009 Free Software Foundation, Inc.                #
    1500515106 #                                                                            #
    15006 @@ -72,6 +72,7 @@
    15007         curses.h \
    15008         hashsize.h \
    15009         ncurses_def.h \
     15107 # Permission is hereby granted, free of charge, to any person obtaining a    #
     15108 # copy of this software and associated documentation files (the "Software"), #
     15109@@ -64,6 +64,7 @@
     15110 CONFIG_SRC = \
     15111        MKterm.h.awk \
     15112        curses.head \
    1501015113+       ncurses_dll.h \
    15011         parametrized.h \
    15012         term.h
     15114        termcap.h \
     15115        unctrl.h
    1501315116 
    1501415117diff -Naur ncurses-5.7.orig/include/MKterm.h.awk.in ncurses-5.7/include/MKterm.h.awk.in
    1501515118--- ncurses-5.7.orig/include/MKterm.h.awk.in    2008-05-24 16:13:59.000000000 -0700
    15016 +++ ncurses-5.7/include/MKterm.h.awk.in 2009-07-19 15:03:59.000000000 -0700
     15119+++ ncurses-5.7/include/MKterm.h.awk.in 2009-09-12 08:51:37.000000000 -0700
    1501715120@@ -1,7 +1,7 @@
    1501815121 # vile:awkmode
     
    1512515228diff -Naur ncurses-5.7.orig/include/nc_alloc.h ncurses-5.7/include/nc_alloc.h
    1512615229--- ncurses-5.7.orig/include/nc_alloc.h 2008-09-27 15:30:33.000000000 -0700
    15127 +++ ncurses-5.7/include/nc_alloc.h      2009-07-19 15:03:53.000000000 -0700
     15230+++ ncurses-5.7/include/nc_alloc.h      2009-09-12 08:51:30.000000000 -0700
    1512815231@@ -1,5 +1,5 @@
    1512915232 /****************************************************************************
     
    1516115264diff -Naur ncurses-5.7.orig/include/nc_mingw.h ncurses-5.7/include/nc_mingw.h
    1516215265--- ncurses-5.7.orig/include/nc_mingw.h 1969-12-31 16:00:00.000000000 -0800
    15163 +++ ncurses-5.7/include/nc_mingw.h      2009-07-19 15:04:11.000000000 -0700
     15266+++ ncurses-5.7/include/nc_mingw.h      2009-09-12 08:51:49.000000000 -0700
    1516415267@@ -0,0 +1,59 @@
    1516515268+/****************************************************************************
     
    1522415327diff -Naur ncurses-5.7.orig/include/nc_panel.h ncurses-5.7/include/nc_panel.h
    1522515328--- ncurses-5.7.orig/include/nc_panel.h 2008-08-04 11:26:46.000000000 -0700
    15226 +++ ncurses-5.7/include/nc_panel.h      2009-07-19 15:04:13.000000000 -0700
     15329+++ ncurses-5.7/include/nc_panel.h      2009-09-12 08:51:50.000000000 -0700
    1522715330@@ -1,5 +1,5 @@
    1522815331 /****************************************************************************
     
    1529015393diff -Naur ncurses-5.7.orig/include/ncurses_defs ncurses-5.7/include/ncurses_defs
    1529115394--- ncurses-5.7.orig/include/ncurses_defs       2008-09-06 08:57:41.000000000 -0700
    15292 +++ ncurses-5.7/include/ncurses_defs    2009-07-19 15:03:58.000000000 -0700
     15395+++ ncurses-5.7/include/ncurses_defs    2009-09-12 08:51:35.000000000 -0700
    1529315396@@ -1,4 +1,4 @@
    1529415397-# $Id: ncurses_defs,v 1.40 2008/09/06 15:57:41 tom Exp $
     
    1530715410diff -Naur ncurses-5.7.orig/include/ncurses_dll.h ncurses-5.7/include/ncurses_dll.h
    1530815411--- ncurses-5.7.orig/include/ncurses_dll.h      2007-03-10 11:21:49.000000000 -0800
    15309 +++ ncurses-5.7/include/ncurses_dll.h   2009-07-19 15:03:53.000000000 -0700
     15412+++ ncurses-5.7/include/ncurses_dll.h   2009-09-12 08:51:30.000000000 -0700
    1531015413@@ -1,5 +1,5 @@
    1531115414 /****************************************************************************
     
    1534715450diff -Naur ncurses-5.7.orig/include/ncurses_dll.h.in ncurses-5.7/include/ncurses_dll.h.in
    1534815451--- ncurses-5.7.orig/include/ncurses_dll.h.in   1969-12-31 16:00:00.000000000 -0800
    15349 +++ ncurses-5.7/include/ncurses_dll.h.in        2009-07-19 15:04:09.000000000 -0700
     15452+++ ncurses-5.7/include/ncurses_dll.h.in        2009-09-12 08:51:47.000000000 -0700
    1535015453@@ -0,0 +1,86 @@
    1535115454+/****************************************************************************
     
    1543715540diff -Naur ncurses-5.7.orig/include/ncurses_mingw.h ncurses-5.7/include/ncurses_mingw.h
    1543815541--- ncurses-5.7.orig/include/ncurses_mingw.h    1969-12-31 16:00:00.000000000 -0800
    15439 +++ ncurses-5.7/include/ncurses_mingw.h 2009-07-19 15:04:11.000000000 -0700
     15542+++ ncurses-5.7/include/ncurses_mingw.h 2009-09-12 08:51:49.000000000 -0700
    1544015543@@ -0,0 +1,164 @@
    1544115544+/****************************************************************************
     
    1560515708diff -Naur ncurses-5.7.orig/include/term_entry.h ncurses-5.7/include/term_entry.h
    1560615709--- ncurses-5.7.orig/include/term_entry.h       2008-08-16 09:16:03.000000000 -0700
    15607 +++ ncurses-5.7/include/term_entry.h    2009-07-19 15:04:15.000000000 -0700
     15710+++ ncurses-5.7/include/term_entry.h    2009-09-12 08:51:52.000000000 -0700
    1560815711@@ -1,5 +1,5 @@
    1560915712 /****************************************************************************
     
    1564415747diff -Naur ncurses-5.7.orig/include/tic.h ncurses-5.7/include/tic.h
    1564515748--- ncurses-5.7.orig/include/tic.h      2007-08-11 09:12:43.000000000 -0700
    15646 +++ ncurses-5.7/include/tic.h   2009-07-19 15:04:15.000000000 -0700
     15749+++ ncurses-5.7/include/tic.h   2009-09-12 08:52:02.000000000 -0700
    1564715750@@ -1,5 +1,5 @@
    1564815751 /****************************************************************************
     
    1565715760 /*
    1565815761- * $Id: tic.h,v 1.62 2007/08/11 16:12:43 tom Exp $
    15659 + * $Id: tic.h,v 1.63 2009/07/11 18:11:15 tom Exp $
     15762+ * $Id: tic.h,v 1.65 2009/08/08 17:52:46 tom Exp $
    1566015763  *     tic.h - Global variables and structures for the terminfo
    1566115764  *                     compiler.
    1566215765  */
    15663 @@ -246,7 +246,7 @@
     15766@@ -183,6 +183,8 @@
     15767 
     15768 #endif
     15769 
     15770+typedef short HashValue;
     15771+
     15772        /*
     15773         * The file comp_captab.c contains an array of these structures, one
     15774         * per possible capability.  These are indexed by a hash table array of
     15775@@ -193,10 +195,21 @@
     15776 {
     15777        const char *nte_name;   /* name to hash on */
     15778        int     nte_type;       /* BOOLEAN, NUMBER or STRING */
     15779-       short   nte_index;      /* index of associated variable in its array */
     15780-       short   nte_link;       /* index in table of next hash, or -1 */
     15781+       HashValue nte_index;    /* index of associated variable in its array */
     15782+       HashValue nte_link;     /* index in table of next hash, or -1 */
     15783 };
     15784 
     15785+       /*
     15786+        * Use this structure to hide differences between terminfo and termcap
     15787+        * tables.
     15788+        */
     15789+typedef struct {
     15790+       unsigned table_size;
     15791+       const HashValue *table_data;
     15792+       HashValue (*hash_of)(const char *);
     15793+       int (*compare_names)(const char *, const char *);
     15794+} HashData;
     15795+
     15796 struct alias
     15797 {
     15798        const char      *from;
     15799@@ -205,7 +218,8 @@
     15800 };
     15801 
     15802 extern NCURSES_EXPORT(const struct name_table_entry *) _nc_get_table (bool);
     15803-extern NCURSES_EXPORT(const short *) _nc_get_hash_table (bool);
     15804+extern NCURSES_EXPORT(const HashData *) _nc_get_hash_info (bool);
     15805+extern NCURSES_EXPORT(const HashValue *) _nc_get_hash_table (bool);
     15806 extern NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool);
     15807 
     15808 #define NOTFOUND       ((struct name_table_entry *) 0)
     15809@@ -244,9 +258,9 @@
     15810 
     15811 /* comp_hash.c: name lookup */
    1566415812 extern NCURSES_EXPORT(struct name_table_entry const *) _nc_find_entry
    15665         (const char *, const short *);
     15813-       (const char *, const short *);
     15814+       (const char *, const HashValue *);
    1566615815 extern NCURSES_EXPORT(struct name_table_entry const *) _nc_find_type_entry
    1566715816-       (const char *, int, const struct name_table_entry *);
     
    1567215821diff -Naur ncurses-5.7.orig/include/unctrl.h.in ncurses-5.7/include/unctrl.h.in
    1567315822--- ncurses-5.7.orig/include/unctrl.h.in        2001-03-24 13:53:25.000000000 -0800
    15674 +++ ncurses-5.7/include/unctrl.h.in     2009-07-19 15:03:53.000000000 -0700
     15823+++ ncurses-5.7/include/unctrl.h.in     2009-09-12 08:51:30.000000000 -0700
    1567515824@@ -1,5 +1,5 @@
    1567615825 /****************************************************************************
     
    1570215851diff -Naur ncurses-5.7.orig/INSTALL ncurses-5.7/INSTALL
    1570315852--- ncurses-5.7.orig/INSTALL    2008-11-02 13:13:51.000000000 -0800
    15704 +++ ncurses-5.7/INSTALL 2009-07-19 15:04:17.000000000 -0700
     15853+++ ncurses-5.7/INSTALL 2009-09-12 08:51:59.000000000 -0700
    1570515854@@ -1,5 +1,5 @@
    1570615855 -------------------------------------------------------------------------------
     
    1571515864 -------------------------------------------------------------------------------
    1571615865--- $Id: INSTALL,v 1.135 2008/11/02 21:13:51 tom Exp $
    15717 +-- $Id: INSTALL,v 1.139 2009/07/18 20:50:08 tom Exp $
     15866+-- $Id: INSTALL,v 1.140 2009/08/01 19:32:04 tom Exp $
    1571815867 ---------------------------------------------------------------------
    1571915868              How to install Ncurses/Terminfo on your system
     
    1578015929        Tell the configure script to suppress the build of ncurses' application
    1578115930        programs (e.g., tic).  The test applications will still be built if you
     15931@@ -1584,7 +1610,8 @@
     15932        tree is accessible (that is, in single-user mode or at OS installation
     15933        time) the ncurses library can be compiled to include an array of
     15934        pre-fetched fallback entries.  This must be done on a machine which
     15935-       has ncurses' infocmp and terminfo database installed.
     15936+       has ncurses' infocmp and terminfo database installed (as well as
     15937+       ncurses' tic and infocmp programs).
     15938 
     15939        These entries are checked by setupterm() only when the conventional
     15940        fetches from the terminfo tree and the termcap fallback (if configured)
     15941@@ -1735,6 +1762,10 @@
     15942        option), ncurses uses the development platform's tic to do the
     15943        "make install.data" portion.
     15944 
     15945+       The system's tic program is used to install the terminal database,
     15946+       even for cross-compiles.  For best results, the tic program should
     15947+       be from the most current version of ncurses.
     15948+
     15949 BUGS:
     15950        Send any feedback to the ncurses mailing list at
     15951        bug-ncurses@gnu.org. To subscribe send mail to
    1578215952diff -Naur ncurses-5.7.orig/Makefile.in ncurses-5.7/Makefile.in
    1578315953--- ncurses-5.7.orig/Makefile.in        2005-01-29 11:30:06.000000000 -0800
    15784 +++ ncurses-5.7/Makefile.in     2009-07-19 15:04:11.000000000 -0700
     15954+++ ncurses-5.7/Makefile.in     2009-09-12 08:51:49.000000000 -0700
    1578515955@@ -1,4 +1,4 @@
    1578615956-# $Id: Makefile.in,v 1.24 2005/01/29 19:30:06 tom Exp $
     
    1580615976diff -Naur ncurses-5.7.orig/man/curs_color.3x ncurses-5.7/man/curs_color.3x
    1580715977--- ncurses-5.7.orig/man/curs_color.3x  2005-12-17 16:00:37.000000000 -0800
    15808 +++ ncurses-5.7/man/curs_color.3x       2009-07-19 15:02:16.000000000 -0700
     15978+++ ncurses-5.7/man/curs_color.3x       2009-09-12 08:51:11.000000000 -0700
    1580915979@@ -1,5 +1,5 @@
    1581015980 .\"***************************************************************************
     
    1583716007diff -Naur ncurses-5.7.orig/man/curs_getcchar.3x ncurses-5.7/man/curs_getcchar.3x
    1583816008--- ncurses-5.7.orig/man/curs_getcchar.3x       2008-05-17 12:37:05.000000000 -0700
    15839 +++ ncurses-5.7/man/curs_getcchar.3x    2009-07-19 15:04:17.000000000 -0700
     16009+++ ncurses-5.7/man/curs_getcchar.3x    2009-09-12 08:51:54.000000000 -0700
    1584016010@@ -1,5 +1,5 @@
    1584116011 .\"***************************************************************************
     
    1586616036diff -Naur ncurses-5.7.orig/man/curs_mouse.3x ncurses-5.7/man/curs_mouse.3x
    1586716037--- ncurses-5.7.orig/man/curs_mouse.3x  2006-12-30 15:43:34.000000000 -0800
    15868 +++ ncurses-5.7/man/curs_mouse.3x       2009-07-19 15:01:57.000000000 -0700
     16038+++ ncurses-5.7/man/curs_mouse.3x       2009-09-12 08:52:07.000000000 -0700
    1586916039@@ -1,6 +1,6 @@
    1587016040 '\" t
    1587116041 .\"***************************************************************************
    1587216042-.\" Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
    15873 +.\" Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.              *
     16043+.\" Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.              *
    1587416044 .\"                                                                          *
    1587516045 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
     
    1588016050 .\"
    1588116051-.\" $Id: curs_mouse.3x,v 1.30 2006/12/30 23:43:34 tom Exp $
    15882 +.\" $Id: curs_mouse.3x,v 1.31 2008/11/23 00:09:53 tom Exp $
     16052+.\" $Id: curs_mouse.3x,v 1.32 2009/08/29 18:11:58 tom Exp $
    1588316053 .TH curs_mouse 3X ""
    1588416054 .na
     
    1591016080 cause an error beep when cooked mode is being simulated in a window by a
    1591116081 function such as \fBgetstr\fR that expects a linefeed for input-loop
     16082@@ -256,7 +262,7 @@
     16083 xterm's built-in mouse-tracking API or
     16084 platform-specific drivers including
     16085 .RS
     16086-Alessandro Rubini's gpm server.
     16087+Alessandro Rubini's gpm server
     16088 .br
     16089 FreeBSD sysmouse
     16090 .br
     16091diff -Naur ncurses-5.7.orig/man/curs_opaque.3x ncurses-5.7/man/curs_opaque.3x
     16092--- ncurses-5.7.orig/man/curs_opaque.3x 2007-09-08 11:49:13.000000000 -0700
     16093+++ ncurses-5.7/man/curs_opaque.3x      2009-09-12 08:52:10.000000000 -0700
     16094@@ -1,5 +1,5 @@
     16095 .\"***************************************************************************
     16096-.\" Copyright (c) 2007 Free Software Foundation, Inc.                        *
     16097+.\" Copyright (c) 2007,2009 Free Software Foundation, Inc.                   *
     16098 .\"                                                                          *
     16099 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
     16100 .\" copy of this software and associated documentation files (the            *
     16101@@ -26,7 +26,7 @@
     16102 .\" authorization.                                                           *
     16103 .\"***************************************************************************
     16104 .\"
     16105-.\" $Id: curs_opaque.3x,v 1.6 2007/09/08 18:49:13 tom Exp $
     16106+.\" $Id: curs_opaque.3x,v 1.7 2009/09/06 16:01:55 tom Exp $
     16107 .TH curs_opaque 3X ""
     16108 .na
     16109 .hy 0
     16110@@ -38,8 +38,10 @@
     16111 \fBis_keypad\fR,
     16112 \fBis_leaveok\fR,
     16113 \fBis_nodelay\fR,
     16114-\fBis_timeout\fR,
     16115+\fBis_notimeout\fR,
     16116+\fBis_pad\fR,
     16117 \fBis_scrollok\fR,
     16118+\fBis_subwin\fR,
     16119 \fBis_syncok\fR - \fBcurses\fR window properties
     16120 .ad
     16121 .hy
     16122@@ -62,8 +64,12 @@
     16123 .br
     16124 \fBbool is_notimeout(const WINDOW *win);\fR
     16125 .br
     16126+\fBbool is_pad(const WINDOW *win);\fR
     16127+.br
     16128 \fBbool is_scrollok(const WINDOW *win);\fR
     16129 .br
     16130+\fBbool is_subwin(const WINDOW *win);\fR
     16131+.br
     16132 \fBbool is_syncok(const WINDOW *win);\fR
     16133 .br
     16134 \fBWINDOW * wgetparent(const WINDOW *win);\fR
     16135@@ -99,9 +105,17 @@
     16136 \fBis_notimeout\fR
     16137 returns the value set in \fBnotimeout\fR
     16138 .TP 5
     16139+\fBis_pad\fR
     16140+returns TRUE if the window is a pad
     16141+i.e., created by \fBnewpad\fP
     16142+.TP 5
     16143 \fBis_scrollok\fR
     16144 returns the value set in \fBscrollok\fR
     16145 .TP 5
     16146+\fBis_subwin\fR
     16147+returns TRUE if the window is a subwindow,
     16148+i.e., created by \fBsubwin\fP or \fBderwin\fP
     16149+.TP 5
     16150 \fBis_syncok\fR
     16151 returns the value set in \fBsyncok\fR
     16152 .TP 5
    1591216153diff -Naur ncurses-5.7.orig/man/form_field_validation.3x ncurses-5.7/man/form_field_validation.3x
    1591316154--- ncurses-5.7.orig/man/form_field_validation.3x       2006-12-24 08:08:08.000000000 -0800
    15914 +++ ncurses-5.7/man/form_field_validation.3x    2009-07-19 15:03:51.000000000 -0700
     16155+++ ncurses-5.7/man/form_field_validation.3x    2009-09-12 08:51:28.000000000 -0700
    1591516156@@ -26,7 +26,7 @@
    1591616157 .\" authorization.                                                           *
     
    1593516176diff -Naur ncurses-5.7.orig/man/keybound.3x ncurses-5.7/man/keybound.3x
    1593616177--- ncurses-5.7.orig/man/keybound.3x    2006-02-25 13:47:06.000000000 -0800
    15937 +++ ncurses-5.7/man/keybound.3x 2009-07-19 15:02:02.000000000 -0700
     16178+++ ncurses-5.7/man/keybound.3x 2009-09-12 08:50:57.000000000 -0700
    1593816179@@ -1,5 +1,5 @@
    1593916180 .\"***************************************************************************
     
    1595416195 \fBkeybound\fP \- return definition of keycode
    1595516196 .SH SYNOPSIS
     16197diff -Naur ncurses-5.7.orig/man/man_db.renames ncurses-5.7/man/man_db.renames
     16198--- ncurses-5.7.orig/man/man_db.renames 2008-10-25 16:24:03.000000000 -0700
     16199+++ ncurses-5.7/man/man_db.renames      2009-09-12 08:52:01.000000000 -0700
     16200@@ -1,5 +1,5 @@
     16201 ##############################################################################
     16202-# Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.                #
     16203+# Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.                #
     16204 #                                                                            #
     16205 # Permission is hereby granted, free of charge, to any person obtaining a    #
     16206 # copy of this software and associated documentation files (the "Software"), #
     16207@@ -25,7 +25,7 @@
     16208 # use or other dealings in this Software without prior written               #
     16209 # authorization.                                                             #
     16210 ##############################################################################
     16211-# $Id: man_db.renames,v 0.41 2008/10/25 23:24:03 tom Exp $
     16212+# $Id: man_db.renames,v 0.43 2009/08/04 00:30:32 tom Exp $
     16213 # Manual-page renamings for the man_db program
     16214 #
     16215 # Files:
     16216@@ -152,6 +152,7 @@
     16217 resizeterm.3x                  resizeterm.3ncurses
     16218 scanf.3s                       scanf.3
     16219 system.3s                      system.3
     16220+tabs.1                         tabs.1
     16221 term.5                         term.5
     16222 term.7                         term.7
     16223 terminfo.5                     terminfo.5
    1595616224diff -Naur ncurses-5.7.orig/man/tabs.1 ncurses-5.7/man/tabs.1
    1595716225--- ncurses-5.7.orig/man/tabs.1 1969-12-31 16:00:00.000000000 -0800
    15958 +++ ncurses-5.7/man/tabs.1      2009-07-19 15:01:56.000000000 -0700
     16226+++ ncurses-5.7/man/tabs.1      2009-09-12 08:52:09.000000000 -0700
    1595916227@@ -0,0 +1,143 @@
    1596016228+.\"***************************************************************************
    15961 +.\" Copyright (c) 2008 Free Software Foundation, Inc.                        *
     16229+.\" Copyright (c) 2008,2009 Free Software Foundation, Inc.                   *
    1596216230+.\"                                                                          *
    1596316231+.\" Permission is hereby granted, free of charge, to any person obtaining a  *
     
    1598616254+.\"***************************************************************************
    1598716255+.\"
    15988 +.\" $Id: tabs.1,v 1.2 2008/11/15 23:03:45 tom Exp $
    15989 +.TH @TABS@ 1M ""
     16256+.\" $Id: tabs.1,v 1.3 2009/09/05 17:06:08 tom Exp $
     16257+.TH @TABS@ 1 ""
    1599016258+.ds n 5
    1599116259+.SH NAME
     
    1610316371diff -Naur ncurses-5.7.orig/man/tset.1 ncurses-5.7/man/tset.1
    1610416372--- ncurses-5.7.orig/man/tset.1 2006-12-24 07:00:30.000000000 -0800
    16105 +++ ncurses-5.7/man/tset.1      2009-07-19 15:01:56.000000000 -0700
     16373+++ ncurses-5.7/man/tset.1      2009-09-12 08:50:51.000000000 -0700
    1610616374@@ -1,5 +1,5 @@
    1610716375 .\"***************************************************************************
     
    1612416392diff -Naur ncurses-5.7.orig/MANIFEST ncurses-5.7/MANIFEST
    1612516393--- ncurses-5.7.orig/MANIFEST   2008-10-25 16:47:24.000000000 -0700
    16126 +++ ncurses-5.7/MANIFEST        2009-07-19 15:04:15.000000000 -0700
     16394+++ ncurses-5.7/MANIFEST        2009-09-12 08:52:02.000000000 -0700
    1612716395@@ -172,6 +172,7 @@
    1612816396 ./Makefile.os2
     
    1619616464 ./ncurses/modules
    1619716465 ./ncurses/tinfo/MKcaptab.awk
    16198 @@ -870,6 +879,7 @@
     16466@@ -863,6 +872,7 @@
     16467 ./ncurses/tinfo/lib_tparm.c
     16468 ./ncurses/tinfo/lib_tputs.c
     16469 ./ncurses/tinfo/lib_ttyflags.c
     16470+./ncurses/tinfo/make_hash.c
     16471 ./ncurses/tinfo/make_keys.c
     16472 ./ncurses/tinfo/name_match.c
     16473 ./ncurses/tinfo/parse_entry.c
     16474@@ -870,6 +880,7 @@
    1619916475 ./ncurses/tinfo/read_termcap.c
    1620016476 ./ncurses/tinfo/setbuf.c
     
    1620416480 ./ncurses/tinfo/use_screen.c
    1620516481 ./ncurses/tinfo/write_entry.c
    16206 @@ -915,6 +925,8 @@
     16482@@ -915,6 +926,8 @@
    1620716483 ./ncurses/widechar/lib_vline_set.c
    1620816484 ./ncurses/widechar/lib_wacs.c
     
    1621316489 ./panel/headers
    1621416490 ./panel/llib-lpanel
    16215 @@ -947,9 +959,11 @@
     16491@@ -947,9 +960,11 @@
    1621616492 ./progs/infocmp.c
    1621716493 ./progs/modules
     
    1622516501 ./tar-copy.sh
    1622616502 ./test/Makefile.in
    16227 @@ -963,6 +977,7 @@
     16503@@ -963,6 +978,7 @@
    1622816504 ./test/cardfile.c
    1622916505 ./test/cardfile.dat
     
    1623316509 ./test/configure
    1623416510 ./test/configure.in
    16235 @@ -973,6 +988,7 @@
     16511@@ -973,6 +989,7 @@
    1623616512 ./test/demo_menus.c
    1623716513 ./test/demo_panels.c
     
    1624116517 ./test/dots.c
    1624216518 ./test/dots_mvcur.c
    16243 @@ -990,6 +1006,7 @@
     16519@@ -990,6 +1007,7 @@
    1624416520 ./test/inch_wide.c
    1624516521 ./test/inchs.c
     
    1625116527diff -Naur ncurses-5.7.orig/menu/Makefile.in ncurses-5.7/menu/Makefile.in
    1625216528--- ncurses-5.7.orig/menu/Makefile.in   2007-04-28 07:56:11.000000000 -0700
    16253 +++ ncurses-5.7/menu/Makefile.in        2009-07-19 15:03:48.000000000 -0700
     16529+++ ncurses-5.7/menu/Makefile.in        2009-09-12 08:51:25.000000000 -0700
    1625416530@@ -1,6 +1,6 @@
    1625516531-# $Id: Makefile.in,v 1.48 2007/04/28 14:56:11 tom Exp $
     
    1628016556diff -Naur ncurses-5.7.orig/menu/m_attribs.c ncurses-5.7/menu/m_attribs.c
    1628116557--- ncurses-5.7.orig/menu/m_attribs.c   2004-12-11 15:29:12.000000000 -0800
    16282 +++ ncurses-5.7/menu/m_attribs.c        2009-07-19 15:03:51.000000000 -0700
     16558+++ ncurses-5.7/menu/m_attribs.c        2009-09-12 08:51:28.000000000 -0700
    1628316559@@ -37,7 +37,7 @@
    1628416560 
     
    1631016586diff -Naur ncurses-5.7.orig/menu/m_cursor.c ncurses-5.7/menu/m_cursor.c
    1631116587--- ncurses-5.7.orig/menu/m_cursor.c    2005-10-22 16:03:32.000000000 -0700
    16312 +++ ncurses-5.7/menu/m_cursor.c 2009-07-19 15:02:23.000000000 -0700
     16588+++ ncurses-5.7/menu/m_cursor.c 2009-09-12 08:51:19.000000000 -0700
    1631316589@@ -1,5 +1,5 @@
    1631416590 /****************************************************************************
     
    1633816614diff -Naur ncurses-5.7.orig/menu/m_driver.c ncurses-5.7/menu/m_driver.c
    1633916615--- ncurses-5.7.orig/menu/m_driver.c    2008-08-03 15:08:22.000000000 -0700
    16340 +++ ncurses-5.7/menu/m_driver.c 2009-07-19 15:02:23.000000000 -0700
     16616+++ ncurses-5.7/menu/m_driver.c 2009-09-12 08:51:19.000000000 -0700
    1634116617@@ -1,5 +1,5 @@
    1634216618 /****************************************************************************
     
    1636616642diff -Naur ncurses-5.7.orig/menu/menu.h ncurses-5.7/menu/menu.h
    1636716643--- ncurses-5.7.orig/menu/menu.h        2007-02-24 09:32:13.000000000 -0800
    16368 +++ ncurses-5.7/menu/menu.h     2009-07-19 15:03:51.000000000 -0700
     16644+++ ncurses-5.7/menu/menu.h     2009-09-12 08:51:28.000000000 -0700
    1636916645@@ -1,5 +1,5 @@
    1637016646 /****************************************************************************
     
    1639616672diff -Naur ncurses-5.7.orig/menu/menu.priv.h ncurses-5.7/menu/menu.priv.h
    1639716673--- ncurses-5.7.orig/menu/menu.priv.h   2005-01-15 17:02:23.000000000 -0800
    16398 +++ ncurses-5.7/menu/menu.priv.h        2009-07-19 15:02:23.000000000 -0700
     16674+++ ncurses-5.7/menu/menu.priv.h        2009-09-12 08:51:19.000000000 -0700
    1639916675@@ -1,5 +1,5 @@
    1640016676 /****************************************************************************
     
    1642916705diff -Naur ncurses-5.7.orig/menu/m_global.c ncurses-5.7/menu/m_global.c
    1643016706--- ncurses-5.7.orig/menu/m_global.c    2005-12-31 13:51:52.000000000 -0800
    16431 +++ ncurses-5.7/menu/m_global.c 2009-07-19 15:02:23.000000000 -0700
     16707+++ ncurses-5.7/menu/m_global.c 2009-09-12 08:51:19.000000000 -0700
    1643216708@@ -1,5 +1,5 @@
    1643316709 /****************************************************************************
     
    1647016746diff -Naur ncurses-5.7.orig/menu/m_new.c ncurses-5.7/menu/m_new.c
    1647116747--- ncurses-5.7.orig/menu/m_new.c       2006-11-04 11:04:06.000000000 -0800
    16472 +++ ncurses-5.7/menu/m_new.c    2009-07-19 15:03:51.000000000 -0700
     16748+++ ncurses-5.7/menu/m_new.c    2009-09-12 08:51:28.000000000 -0700
    1647316749@@ -1,5 +1,5 @@
    1647416750 /****************************************************************************
     
    1655716833diff -Naur ncurses-5.7.orig/menu/m_pad.c ncurses-5.7/menu/m_pad.c
    1655816834--- ncurses-5.7.orig/menu/m_pad.c       2004-12-25 13:40:58.000000000 -0800
    16559 +++ ncurses-5.7/menu/m_pad.c    2009-07-19 15:03:51.000000000 -0700
     16835+++ ncurses-5.7/menu/m_pad.c    2009-09-12 08:51:28.000000000 -0700
    1656016836@@ -37,19 +37,19 @@
    1656116837 
     
    1658316859diff -Naur ncurses-5.7.orig/menu/m_post.c ncurses-5.7/menu/m_post.c
    1658416860--- ncurses-5.7.orig/menu/m_post.c      2004-12-25 15:57:04.000000000 -0800
    16585 +++ ncurses-5.7/menu/m_post.c   2009-07-19 15:02:23.000000000 -0700
     16861+++ ncurses-5.7/menu/m_post.c   2009-09-12 08:51:19.000000000 -0700
    1658616862@@ -1,5 +1,5 @@
    1658716863 /****************************************************************************
     
    1662016896diff -Naur ncurses-5.7.orig/menu/m_sub.c ncurses-5.7/menu/m_sub.c
    1662116897--- ncurses-5.7.orig/menu/m_sub.c       2004-12-25 13:38:31.000000000 -0800
    16622 +++ ncurses-5.7/menu/m_sub.c    2009-07-19 15:03:51.000000000 -0700
     16898+++ ncurses-5.7/menu/m_sub.c    2009-09-12 08:51:28.000000000 -0700
    1662316899@@ -37,7 +37,7 @@
    1662416900 
     
    1666616942diff -Naur ncurses-5.7.orig/menu/m_win.c ncurses-5.7/menu/m_win.c
    1666716943--- ncurses-5.7.orig/menu/m_win.c       2004-12-25 13:39:20.000000000 -0800
    16668 +++ ncurses-5.7/menu/m_win.c    2009-07-19 15:03:51.000000000 -0700
     16944+++ ncurses-5.7/menu/m_win.c    2009-09-12 08:51:28.000000000 -0700
    1666916945@@ -37,7 +37,7 @@
    1667016946 
     
    1672116997diff -Naur ncurses-5.7.orig/misc/gen-pkgconfig.in ncurses-5.7/misc/gen-pkgconfig.in
    1672216998--- ncurses-5.7.orig/misc/gen-pkgconfig.in      1969-12-31 16:00:00.000000000 -0800
    16723 +++ ncurses-5.7/misc/gen-pkgconfig.in   2009-07-19 15:03:43.000000000 -0700
     16999+++ ncurses-5.7/misc/gen-pkgconfig.in   2009-09-12 08:51:21.000000000 -0700
    1672417000@@ -0,0 +1,140 @@
    1672517001+#!@SHELL@
     
    1686517141diff -Naur ncurses-5.7.orig/misc/Makefile.in ncurses-5.7/misc/Makefile.in
    1686617142--- ncurses-5.7.orig/misc/Makefile.in   2007-03-31 08:54:17.000000000 -0700
    16867 +++ ncurses-5.7/misc/Makefile.in        2009-07-19 15:02:18.000000000 -0700
     17143+++ ncurses-5.7/misc/Makefile.in        2009-09-12 08:52:04.000000000 -0700
    1686817144@@ -1,6 +1,6 @@
    1686917145-# $Id: Makefile.in,v 1.43 2007/03/31 15:54:17 tom Exp $
    16870 +# $Id: Makefile.in,v 1.51 2009/02/07 18:17:17 Miroslav.Lichvar Exp $
     17146+# $Id: Makefile.in,v 1.52 2009/08/15 17:13:49 tom Exp $
    1687117147 ##############################################################################
    1687217148-# Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.                #
     
    1687517151 # Permission is hereby granted, free of charge, to any person obtaining a    #
    1687617152 # copy of this software and associated documentation files (the "Software"), #
    16877 @@ -66,15 +66,17 @@
     17153@@ -57,24 +57,23 @@
     17154 libdir         = @libdir@
     17155 datadir                = @datadir@
     17156 
     17157-CC             = @CC@
     17158-HOSTCC         = @BUILD_CC@
     17159-
     17160 tabsetdir      = $(datadir)/tabset
     17161 ticdir         = @TERMINFO@
     17162 ticfile                = $(ticdir).db
    1687817163 source         = @TERMINFO_SRC@
    1687917164 
     
    1689517180 install : install.data install.libs
    1689617181 
    16897 @@ -103,9 +105,17 @@
     17182@@ -91,8 +90,7 @@
     17183        datadir=${datadir} \
     17184        ticdir=${ticdir} \
     17185        source=terminfo.tmp \
     17186-       THIS_CC="$(CC)" \
     17187-       THAT_CC="$(HOSTCC)" \
     17188+       cross_compiling=@cross_compiling@ \
     17189        $(SHELL) ./run_tic.sh
     17190        @cd $(srcdir)/tabset && \
     17191                $(SHELL) -c 'for i in * ; do \
     17192@@ -103,9 +101,17 @@
    1689817193 
    1689917194 NCURSES_CONFIG = ncurses@DFT_ARG_SUFFIX@@cf_cv_abi_version@-config
     
    1691417209        echo '** adjusting tabset paths'
    1691517210        sed -f run_tic.sed $(source) >terminfo.tmp
    16916 @@ -118,7 +128,8 @@
     17211@@ -118,7 +124,8 @@
    1691717212 $(DESTDIR)$(bindir) \
    1691817213 $(DESTDIR)$(libdir) \
     
    1692417219 
    1692517220 uninstall : uninstall.data uninstall.libs
    16926 @@ -130,6 +141,7 @@
     17221@@ -130,6 +137,7 @@
    1692717222 
    1692817223 uninstall.libs :
     
    1693217227 tags :
    1693317228 
    16934 @@ -138,11 +150,13 @@
     17229@@ -138,11 +146,13 @@
    1693517230 mostlyclean :
    1693617231        -rm -f terminfo.tmp
     
    1694817243diff -Naur ncurses-5.7.orig/misc/ncu-indent ncurses-5.7/misc/ncu-indent
    1694917244--- ncurses-5.7.orig/misc/ncu-indent    2008-08-03 08:46:44.000000000 -0700
    16950 +++ ncurses-5.7/misc/ncu-indent 2009-07-19 15:02:23.000000000 -0700
     17245+++ ncurses-5.7/misc/ncu-indent 2009-09-12 08:51:19.000000000 -0700
    1695117246@@ -26,7 +26,7 @@
    1695217247 #* sale, use or other dealings in this Software without prior written       *
     
    1699717292diff -Naur ncurses-5.7.orig/misc/ncurses-config.in ncurses-5.7/misc/ncurses-config.in
    1699817293--- ncurses-5.7.orig/misc/ncurses-config.in     2007-03-17 13:02:19.000000000 -0700
    16999 +++ ncurses-5.7/misc/ncurses-config.in  2009-07-19 15:03:43.000000000 -0700
     17294+++ ncurses-5.7/misc/ncurses-config.in  2009-09-12 08:51:21.000000000 -0700
    1700017295@@ -1,7 +1,7 @@
    1700117296 #!@SHELL@
     
    1713017425   --mandir           echos the directory containing ${THIS} manpages
    1713117426   --terminfo         echos the \$TERMINFO terminfo database path
     17427diff -Naur ncurses-5.7.orig/misc/run_tic.in ncurses-5.7/misc/run_tic.in
     17428--- ncurses-5.7.orig/misc/run_tic.in    2006-10-28 12:43:30.000000000 -0700
     17429+++ ncurses-5.7/misc/run_tic.in 2009-09-12 08:52:04.000000000 -0700
     17430@@ -1,7 +1,7 @@
     17431 #!@SHELL@
     17432-# $Id: run_tic.in,v 1.23 2006/10/28 19:43:30 tom Exp $
     17433+# $Id: run_tic.in,v 1.24 2009/08/15 17:19:36 tom Exp $
     17434 ##############################################################################
     17435-# Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.                #
     17436+# Copyright (c) 1998-2006,2009 Free Software Foundation, Inc.                #
     17437 #                                                                            #
     17438 # Permission is hereby granted, free of charge, to any person obtaining a    #
     17439 # copy of this software and associated documentation files (the "Software"), #
     17440@@ -28,7 +28,7 @@
     17441 # authorization.                                                             #
     17442 ##############################################################################
     17443 #
     17444-# Author: Thomas E. Dickey 1996,2000
     17445+# Author: Thomas E. Dickey 1996-on
     17446 #
     17447 # This script is used to install terminfo.src using tic.  We use a script
     17448 # because the path checking is too awkward to do in a makefile.
     17449@@ -52,8 +52,7 @@
     17450 : ${ticdir=@TERMINFO@}
     17451 : ${source=@TERMINFO_SRC@}
     17452 : ${LN_S="@LN_S@"}
     17453-: ${THAT_CC=cc}
     17454-: ${THIS_CC=cc}
     17455+: ${cross_compiling=no}
     17456 : ${ext_funcs=@NCURSES_EXT_FUNCS@}
     17457 
     17458 test -z "${DESTDIR}" && DESTDIR=
     17459@@ -61,10 +60,10 @@
     17460 # Allow tic to run either from the install-path, or from the build-directory.
     17461 # Do not do this if we appear to be cross-compiling.  In that case, we rely
     17462 # on the host's copy of tic to compile the terminfo database.
     17463-if test "$THAT_CC" = "$THIS_CC" ; then
     17464+if test "x$cross_compiling" = "xno" ; then
     17465 case "$PATH" in
     17466-:*) PATH=../progs:../lib:${DESTDIR}$bindir$PATH ;;
     17467-*) PATH=../progs:../lib:${DESTDIR}$bindir:$PATH ;;
     17468+@PATH_SEPARATOR@*) PATH=../progs@PATH_SEPARATOR@../lib@PATH_SEPARATOR@${DESTDIR}$bindir$PATH ;;
     17469+*) PATH=../progs@PATH_SEPARATOR@../lib@PATH_SEPARATOR@${DESTDIR}$bindir@PATH_SEPARATOR@$PATH ;;
     17470 esac
     17471 export PATH
     17472 SHLIB="sh $srcdir/shlib"
    1713217473diff -Naur ncurses-5.7.orig/misc/terminfo.src ncurses-5.7/misc/terminfo.src
    1713317474--- ncurses-5.7.orig/misc/terminfo.src  2008-10-12 16:03:54.000000000 -0700
    17134 +++ ncurses-5.7/misc/terminfo.src       2009-07-19 15:03:58.000000000 -0700
     17475+++ ncurses-5.7/misc/terminfo.src       2009-09-12 08:51:35.000000000 -0700
    1713517476@@ -6,8 +6,8 @@
    1713617477 # Report bugs and new terminal descriptions to
     
    1743217773diff -Naur ncurses-5.7.orig/mk-1st.awk ncurses-5.7/mk-1st.awk
    1743317774--- ncurses-5.7.orig/mk-1st.awk 2007-03-24 15:10:55.000000000 -0700
    17434 +++ ncurses-5.7/mk-1st.awk      2009-07-19 15:03:48.000000000 -0700
     17775+++ ncurses-5.7/mk-1st.awk      2009-09-12 08:51:25.000000000 -0700
    1743517776@@ -1,6 +1,6 @@
    1743617777-# $Id: mk-1st.awk,v 1.78 2007/03/24 22:10:55 tom Exp $
     
    1747717818diff -Naur ncurses-5.7.orig/mk-dlls.sh ncurses-5.7/mk-dlls.sh
    1747817819--- ncurses-5.7.orig/mk-dlls.sh 1969-12-31 16:00:00.000000000 -0800
    17479 +++ ncurses-5.7/mk-dlls.sh      2009-07-19 15:04:11.000000000 -0700
     17820+++ ncurses-5.7/mk-dlls.sh      2009-09-12 08:51:49.000000000 -0700
    1748017821@@ -0,0 +1,93 @@
    1748117822+#!/bin/sh
     
    1757417915diff -Naur ncurses-5.7.orig/ncurses/base/define_key.c ncurses-5.7/ncurses/base/define_key.c
    1757517916--- ncurses-5.7.orig/ncurses/base/define_key.c  2006-12-30 15:23:31.000000000 -0800
    17576 +++ ncurses-5.7/ncurses/base/define_key.c       2009-07-19 15:03:59.000000000 -0700
     17917+++ ncurses-5.7/ncurses/base/define_key.c       2009-09-12 08:51:37.000000000 -0700
    1757717918@@ -1,5 +1,5 @@
    1757817919 /****************************************************************************
     
    1764717988diff -Naur ncurses-5.7.orig/ncurses/base/keybound.c ncurses-5.7/ncurses/base/keybound.c
    1764817989--- ncurses-5.7.orig/ncurses/base/keybound.c    2006-06-17 11:19:24.000000000 -0700
    17649 +++ ncurses-5.7/ncurses/base/keybound.c 2009-07-19 15:02:22.000000000 -0700
     17990+++ ncurses-5.7/ncurses/base/keybound.c 2009-09-12 08:51:17.000000000 -0700
    1765017991@@ -1,5 +1,5 @@
    1765117992 /****************************************************************************
     
    1769818039diff -Naur ncurses-5.7.orig/ncurses/base/key_defined.c ncurses-5.7/ncurses/base/key_defined.c
    1769918040--- ncurses-5.7.orig/ncurses/base/key_defined.c 2006-12-30 15:22:55.000000000 -0800
    17700 +++ ncurses-5.7/ncurses/base/key_defined.c      2009-07-19 15:02:22.000000000 -0700
     18041+++ ncurses-5.7/ncurses/base/key_defined.c      2009-09-12 08:51:17.000000000 -0700
    1770118042@@ -1,5 +1,5 @@
    1770218043 /****************************************************************************
     
    1774418085diff -Naur ncurses-5.7.orig/ncurses/base/keyok.c ncurses-5.7/ncurses/base/keyok.c
    1774518086--- ncurses-5.7.orig/ncurses/base/keyok.c       2006-12-30 08:22:33.000000000 -0800
    17746 +++ ncurses-5.7/ncurses/base/keyok.c    2009-07-19 15:04:06.000000000 -0700
     18087+++ ncurses-5.7/ncurses/base/keyok.c    2009-09-12 08:51:43.000000000 -0700
    1774718088@@ -1,5 +1,5 @@
    1774818089 /****************************************************************************
     
    1782818169diff -Naur ncurses-5.7.orig/ncurses/base/legacy_coding.c ncurses-5.7/ncurses/base/legacy_coding.c
    1782918170--- ncurses-5.7.orig/ncurses/base/legacy_coding.c       2005-12-17 15:38:17.000000000 -0800
    17830 +++ ncurses-5.7/ncurses/base/legacy_coding.c    2009-07-19 15:02:22.000000000 -0700
     18171+++ ncurses-5.7/ncurses/base/legacy_coding.c    2009-09-12 08:51:17.000000000 -0700
    1783118172@@ -1,5 +1,5 @@
    1783218173 /****************************************************************************
     
    1787718218diff -Naur ncurses-5.7.orig/ncurses/base/lib_addch.c ncurses-5.7/ncurses/base/lib_addch.c
    1787818219--- ncurses-5.7.orig/ncurses/base/lib_addch.c   2008-08-16 12:20:04.000000000 -0700
    17879 +++ ncurses-5.7/ncurses/base/lib_addch.c        2009-07-19 15:04:01.000000000 -0700
     18220+++ ncurses-5.7/ncurses/base/lib_addch.c        2009-09-12 08:52:01.000000000 -0700
    1788018221@@ -1,5 +1,5 @@
    1788118222 /****************************************************************************
     
    1789018231 
    1789118232-MODULE_ID("$Id: lib_addch.c,v 1.113 2008/08/16 19:20:04 tom Exp $")
    17892 +MODULE_ID("$Id: lib_addch.c,v 1.119 2009/05/15 23:47:26 tom Exp $")
     18233+MODULE_ID("$Id: lib_addch.c,v 1.121 2009/08/04 00:20:09 tom Exp $")
    1789318234 
    1789418235 static const NCURSES_CH_T blankchar = NewChar(BLANK_TEXT);
     
    1790118242+#define DeriveSP() SCREEN *sp = _nc_screen_of(win);
    1790218243+#else
    17903 +#define DeriveSP() /*nothing*/
     18244+#define DeriveSP()             /*nothing */
    1790418245+#endif
    1790518246     if_WIDEC({
     
    1791018251            if (len >= -1) {
    1791118252-               /* handle EILSEQ */
    17912 +               attr_t attr = AttrOf(ch);
    17913 +
    17914 +               /* handle EILSEQ (i.e., when len >= -1) */
    17915                 if (is8bits(CharOf(ch))) {
     18253-               if (is8bits(CharOf(ch))) {
    1791618254-                   const char *s = unctrl((chtype) CharOf(ch));
    1791718255-                   if (s[1] != 0) {
    1791818256-                       return waddstr(win, s);
     18257+               attr_t attr = AttrOf(ch);
     18258+
     18259+               /* handle EILSEQ (i.e., when len >= -1) */
     18260+               if (len == -1 && is8bits(CharOf(ch))) {
    1791918261+                   int rc = OK;
    1792018262+                   const char *s = NCURSES_SP_NAME(unctrl)
     
    1798318325-
    1798418326+#if USE_REENTRANT
    17985 +       tabsize = sp->_TABSIZE;
     18327+       tabsize = *ptrTabsize(sp);
    1798618328+#else
    1798718329+       tabsize = TABSIZE;
     
    1799318335diff -Naur ncurses-5.7.orig/ncurses/base/lib_beep.c ncurses-5.7/ncurses/base/lib_beep.c
    1799418336--- ncurses-5.7.orig/ncurses/base/lib_beep.c    2005-04-09 08:20:04.000000000 -0700
    17995 +++ ncurses-5.7/ncurses/base/lib_beep.c 2009-07-19 15:04:03.000000000 -0700
     18337+++ ncurses-5.7/ncurses/base/lib_beep.c 2009-09-12 08:51:40.000000000 -0700
    1799618338@@ -1,5 +1,5 @@
    1799718339 /****************************************************************************
     
    1805918401+}
    1806018402+#endif
     18403diff -Naur ncurses-5.7.orig/ncurses/base/lib_bkgd.c ncurses-5.7/ncurses/base/lib_bkgd.c
     18404--- ncurses-5.7.orig/ncurses/base/lib_bkgd.c    2008-03-22 17:09:14.000000000 -0700
     18405+++ ncurses-5.7/ncurses/base/lib_bkgd.c 2009-09-12 08:52:07.000000000 -0700
     18406@@ -1,5 +1,5 @@
     18407 /****************************************************************************
     18408- * Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.              *
     18409+ * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.              *
     18410  *                                                                          *
     18411  * Permission is hereby granted, free of charge, to any person obtaining a  *
     18412  * copy of this software and associated documentation files (the            *
     18413@@ -36,7 +36,7 @@
     18414 
     18415 #include <curses.priv.h>
     18416 
     18417-MODULE_ID("$Id: lib_bkgd.c,v 1.36 2008/03/23 00:09:14 tom Exp $")
     18418+MODULE_ID("$Id: lib_bkgd.c,v 1.37 2009/08/29 19:02:25 tom Exp $")
     18419 
     18420 /*
     18421  * Set the window's background information.
     18422@@ -126,8 +126,8 @@
     18423        NCURSES_CH_T old_bkgrnd;
     18424        wgetbkgrnd(win, &old_bkgrnd);
     18425 
     18426-       wbkgrndset(win, CHREF(new_bkgd));
     18427-       wattrset(win, AttrOf(win->_nc_bkgd));
     18428+       (void) wbkgrndset(win, CHREF(new_bkgd));
     18429+       (void) wattrset(win, AttrOf(win->_nc_bkgd));
     18430 
     18431        for (y = 0; y <= win->_maxy; y++) {
     18432            for (x = 0; x <= win->_maxx; x++) {
    1806118433diff -Naur ncurses-5.7.orig/ncurses/base/lib_color.c ncurses-5.7/ncurses/base/lib_color.c
    1806218434--- ncurses-5.7.orig/ncurses/base/lib_color.c   2007-04-07 10:07:28.000000000 -0700
    18063 +++ ncurses-5.7/ncurses/base/lib_color.c        2009-07-19 15:04:06.000000000 -0700
     18435+++ ncurses-5.7/ncurses/base/lib_color.c        2009-09-12 08:52:05.000000000 -0700
    1806418436@@ -1,5 +1,5 @@
    1806518437 /****************************************************************************
    1806618438- * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
    18067 + * Copyright (c) 1998-2007,2009 Free Software Foundation, Inc.              *
     18439+ * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.              *
    1806818440  *                                                                          *
    1806918441  * Permission is hereby granted, free of charge, to any person obtaining a  *
     
    1807718449 
    1807818450 /* lib_color.c
    18079 @@ -42,7 +43,11 @@
    18080  #include <term.h>
     18451@@ -38,12 +39,33 @@
     18452  */
     18453 
     18454 #include <curses.priv.h>
     18455-
     18456-#include <term.h>
    1808118457 #include <tic.h>
    1808218458 
     
    1808618462+#endif
    1808718463+
    18088 +MODULE_ID("$Id: lib_color.c,v 1.92 2009/06/06 20:26:16 tom Exp $")
    18089  
     18464+MODULE_ID("$Id: lib_color.c,v 1.95 2009/08/22 19:04:36 tom Exp $")
     18465+
     18466+#ifdef USE_TERM_DRIVER
     18467+#define CanChange      InfoOf(SP_PARM).canchange
     18468+#define DefaultPalette InfoOf(SP_PARM).defaultPalette
     18469+#define HasColor       InfoOf(SP_PARM).hascolor
     18470+#define InitColor      InfoOf(SP_PARM).initcolor
     18471+#define MaxColors      InfoOf(SP_PARM).maxcolors
     18472+#define MaxPairs       InfoOf(SP_PARM).maxpairs
     18473+#define UseHlsPalette  (DefaultPalette == _nc_hls_palette)
     18474+#else
     18475+#define CanChange      can_change
     18476+#define DefaultPalette (hue_lightness_saturation ? hls_palette : cga_palette)
     18477+#define HasColor       has_color
     18478+#define InitColor      initialize_color
     18479+#define MaxColors      max_colors
     18480+#define MaxPairs       max_pairs
     18481+#define UseHlsPalette  (hue_lightness_saturation)
     18482+#endif
     18483 
     18484+#ifndef USE_TERM_DRIVER
    1809018485 /*
    1809118486  * These should be screen structure members.  They need to be globals for
    18092 @@ -108,6 +113,13 @@
     18487  * historical reasons.  So we assign them in start_color() and also in
     18488@@ -64,6 +86,7 @@
     18489 NCURSES_EXPORT_VAR(int) COLOR_PAIRS = 0;
     18490 NCURSES_EXPORT_VAR(int) COLORS = 0;
     18491 #endif
     18492+#endif /* !USE_TERM_DRIVER */
     18493 
     18494 #define DATA(r,g,b) {r,g,b, 0,0,0, 0}
     18495 
     18496@@ -71,7 +94,7 @@
     18497 
     18498 #define MAX_PALETTE    8
     18499 
     18500-#define OkColorHi(n)   (((n) < COLORS) && ((n) < max_colors))
     18501+#define OkColorHi(n)   (((n) < COLORS) && ((n) < maxcolors))
     18502 #define InPalette(n)   ((n) >= 0 && (n) < MAX_PALETTE)
     18503 
     18504 /*
     18505@@ -106,29 +129,43 @@
     18506     DATA(      300,    50,     100),           /* COLOR_CYAN */
     18507     DATA(      0,      50,     100),           /* COLOR_WHITE */
    1809318508 };
     18509+
     18510+#ifdef USE_TERM_DRIVER
     18511+NCURSES_EXPORT_VAR(const color_t*) _nc_cga_palette = cga_palette;
     18512+NCURSES_EXPORT_VAR(const color_t*) _nc_hls_palette = hls_palette;
     18513+#endif
     18514+
    1809418515 /* *INDENT-ON* */
    1809518516 
     
    1809918520+ */
    1810018521+#define ValidPair(pair) \
    18101 +    ((SP != 0) && (pair >= 0) && (pair < SP->_pair_limit) && SP->_coloron)
     18522+    ((SP_PARM != 0) && (pair >= 0) && (pair < SP_PARM->_pair_limit) && SP_PARM->_coloron)
    1810218523+
    1810318524 #if NCURSES_EXT_FUNCS
    1810418525 /*
    1810518526  * These are called from _nc_do_color(), which in turn is called from
    18106 @@ -147,31 +159,39 @@
     18527- * vidattr - so we have to assume that SP may be null.
     18528+ * vidattr - so we have to assume that sp may be null.
     18529  */
     18530 static int
     18531-default_fg(void)
     18532+default_fg(NCURSES_SP_DCL0)
     18533 {
     18534-    return (SP != 0) ? SP->_default_fg : COLOR_WHITE;
     18535+    return (SP_PARM != 0) ? SP_PARM->_default_fg : COLOR_WHITE;
    1810718536 }
     18537 
     18538 static int
     18539-default_bg(void)
     18540+default_bg(NCURSES_SP_DCL0)
     18541 {
     18542-    return SP != 0 ? SP->_default_bg : COLOR_BLACK;
     18543+    return SP_PARM != 0 ? SP_PARM->_default_bg : COLOR_BLACK;
     18544 }
     18545 #else
     18546-#define default_fg() COLOR_WHITE
     18547-#define default_bg() COLOR_BLACK
     18548+#define default_fg(sp) COLOR_WHITE
     18549+#define default_bg(sp) COLOR_BLACK
     18550 #endif
     18551 
     18552+#ifndef USE_TERM_DRIVER
     18553 /*
     18554  * SVr4 curses is known to interchange color codes (1,4) and (3,6), possibly
     18555  * to maintain compatibility with a pre-ANSI scheme.  The same scheme is
     18556@@ -145,52 +182,70 @@
     18557     }
     18558     return c;
     18559 }
     18560+#endif
    1810818561 
    1810918562 static void
     
    1811118564+set_background_color(NCURSES_SP_DCLx int bg, NCURSES_SP_OUTC outc)
    1811218565 {
     18566+#ifdef USE_TERM_DRIVER
     18567+    CallDriver_3(SP_PARM, color, FALSE, bg, outc);
     18568+#else
    1811318569     if (set_a_background) {
    1811418570        TPUTS_TRACE("set_a_background");
     
    1812418580+                               1, outc);
    1812518581     }
     18582+#endif
    1812618583 }
    1812718584 
     
    1813018587+set_foreground_color(NCURSES_SP_DCLx int fg, NCURSES_SP_OUTC outc)
    1813118588 {
     18589+#ifdef USE_TERM_DRIVER
     18590+    CallDriver_3(SP_PARM, color, TRUE, fg, outc);
     18591+#else
    1813218592     if (set_a_foreground) {
    1813318593        TPUTS_TRACE("set_a_foreground");
     
    1814318603+                               1, outc);
    1814418604     }
     18605+#endif
    1814518606 }
    1814618607 
     
    1814918610+init_color_table(NCURSES_SP_DCL0)
    1815018611 {
    18151      const color_t *tp;
     18612-    const color_t *tp;
     18613+    const color_t *tp = DefaultPalette;
    1815218614     int n;
    18153 @@ -179,18 +199,18 @@
    18154      tp = (hue_lightness_saturation) ? hls_palette : cga_palette;
     18615 
     18616-    tp = (hue_lightness_saturation) ? hls_palette : cga_palette;
     18617+    assert(tp != 0);
     18618+
    1815518619     for (n = 0; n < COLORS; n++) {
    1815618620        if (InPalette(n)) {
     
    1815918623        } else {
    1816018624-           SP->_color_table[n] = tp[n % MAX_PALETTE];
     18625-           if (hue_lightness_saturation) {
     18626-               SP->_color_table[n].green = 100;
    1816118627+           SP_PARM->_color_table[n] = tp[n % MAX_PALETTE];
    18162             if (hue_lightness_saturation) {
    18163 -               SP->_color_table[n].green = 100;
     18628+           if (UseHlsPalette) {
    1816418629+               SP_PARM->_color_table[n].green = 100;
    1816518630            } else {
     
    1817918644        }
    1818018645     }
    18181 @@ -200,7 +220,7 @@
     18646@@ -200,8 +255,11 @@
    1818218647  * Reset the color pair, e.g., to whatever color pair 0 is.
    1818318648  */
     
    1818618651+reset_color_pair(NCURSES_SP_DCL0)
    1818718652 {
     18653+#ifdef USE_TERM_DRIVER
     18654+    return CallDriver(SP_PARM, rescol);
     18655+#else
    1818818656     bool result = FALSE;
    1818918657 
    18190 @@ -218,15 +238,14 @@
     18658     if (orig_pair != 0) {
     18659@@ -210,6 +268,7 @@
     18660        result = TRUE;
     18661     }
     18662     return result;
     18663+#endif
     18664 }
     18665 
     18666 /*
     18667@@ -217,65 +276,93 @@
     18668  * badly-written terminal descriptions than for the relatively rare case where
    1819118669  * someone has changed the color definitions.
    1819218670  */
    18193  bool
     18671-bool
    1819418672-_nc_reset_colors(void)
    18195 -{
    18196 +NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_DCL0) {
     18673+NCURSES_EXPORT(bool)
     18674+NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_DCL0)
     18675 {
    1819718676     int result = FALSE;
    1819818677 
    18199      T((T_CALLED("_nc_reset_colors()")));
     18678-    T((T_CALLED("_nc_reset_colors()")));
    1820018679-    if (SP->_color_defs > 0)
    1820118680-       SP->_color_defs = -(SP->_color_defs);
     18681-
     18682-    if (reset_color_pair())
     18683+    T((T_CALLED("_nc_reset_colors(%p)"), SP_PARM));
    1820218684+    if (SP_PARM->_color_defs > 0)
    1820318685+       SP_PARM->_color_defs = -(SP_PARM->_color_defs);
    18204  
    18205 -    if (reset_color_pair())
    1820618686+    if (reset_color_pair(NCURSES_SP_ARG))
    1820718687        result = TRUE;
     18688+
     18689+#ifdef USE_TERM_DRIVER
     18690+    result = CallDriver(SP_PARM, rescolors);
     18691+#else
    1820818692     if (orig_colors != 0) {
    1820918693        TPUTS_TRACE("orig_colors");
    18210 @@ -236,46 +255,69 @@
     18694        putp(orig_colors);
     18695        result = TRUE;
     18696     }
     18697+#endif
    1821118698     returnBool(result);
    1821218699 }
    1821318700 
    1821418701+#if NCURSES_SP_FUNCS
    18215 +bool
     18702+NCURSES_EXPORT(bool)
    1821618703+_nc_reset_colors(void)
    1821718704+{
     
    1822518712 {
    1822618713     int result = ERR;
    18227  
    18228      T((T_CALLED("start_color()")));
     18714+    int maxpairs = 0, maxcolors = 0;
     18715 
     18716-    T((T_CALLED("start_color()")));
     18717+    T((T_CALLED("start_color(%p)"), SP_PARM));
    1822918718 
    1823018719-    if (SP == 0) {
     
    1823518724        result = OK;
    1823618725     } else {
    18237  
     18726-
    1823818727-       if (reset_color_pair() != TRUE) {
    1823918728-           set_foreground_color(default_fg(), _nc_outch);
    1824018729-           set_background_color(default_bg(), _nc_outch);
     18730+       maxpairs = MaxPairs;
     18731+       maxcolors = MaxColors;
    1824118732+       if (reset_color_pair(NCURSES_SP_ARG) != TRUE) {
    1824218733+           set_foreground_color(NCURSES_SP_ARGx
    18243 +                                default_fg(),
     18734+                                default_fg(NCURSES_SP_ARG),
    1824418735+                                NCURSES_SP_NAME(_nc_outch));
    1824518736+           set_background_color(NCURSES_SP_ARGx
    18246 +                                default_bg(),
     18737+                                default_bg(NCURSES_SP_ARG),
    1824718738+                                NCURSES_SP_NAME(_nc_outch));
    1824818739        }
    1824918740 
    18250         if (max_pairs > 0 && max_colors > 0) {
     18741-       if (max_pairs > 0 && max_colors > 0) {
    1825118742-           SP->_pair_count = max_pairs;
    1825218743-           SP->_color_count = max_colors;
    18253 +           SP_PARM->_pair_limit = max_pairs;
     18744+       if (maxpairs > 0 && maxcolors > 0) {
     18745+           SP_PARM->_pair_limit = maxpairs;
    1825418746+
    1825518747+#if NCURSES_EXT_FUNCS
     
    1825818750+            * allow for default-color as a component of a color-pair.
    1825918751+            */
    18260 +           SP_PARM->_pair_limit += (1 + (2 * max_colors));
     18752+           SP_PARM->_pair_limit += (1 + (2 * maxcolors));
    1826118753+#endif
    18262 +           SP_PARM->_pair_count = max_pairs;
    18263 +           SP_PARM->_color_count = max_colors;
     18754+           SP_PARM->_pair_count = maxpairs;
     18755+           SP_PARM->_color_count = maxcolors;
    1826418756 #if !USE_REENTRANT
    18265             COLOR_PAIRS = max_pairs;
    18266             COLORS = max_colors;
     18757-           COLOR_PAIRS = max_pairs;
     18758-           COLORS = max_colors;
     18759+           COLOR_PAIRS = maxpairs;
     18760+           COLORS = maxcolors;
    1826718761 #endif
    1826818762 
     
    1827318767-                   SP->_color_pairs[0] = PAIR_OF(default_fg(), default_bg());
    1827418768-                   init_color_table();
    18275 +           SP_PARM->_color_pairs = TYPE_CALLOC(colorpair_t,
    18276 +                                               SP_PARM->_pair_limit);
     18769+           SP_PARM->_color_pairs = TYPE_CALLOC(colorpair_t, SP_PARM->_pair_limit);
    1827718770+           if (SP_PARM->_color_pairs != 0) {
    18278 +               SP_PARM->_color_table = TYPE_CALLOC(color_t, max_colors);
     18771+               SP_PARM->_color_table = TYPE_CALLOC(color_t, maxcolors);
    1827918772+               if (SP_PARM->_color_table != 0) {
    18280 +                   SP_PARM->_color_pairs[0] = PAIR_OF(default_fg(),
    18281 +                                                      default_bg());
     18773+                   SP_PARM->_color_pairs[0] = PAIR_OF(default_fg(NCURSES_SP_ARG),
     18774+                                                      default_bg(NCURSES_SP_ARG));
    1828218775+                   init_color_table(NCURSES_SP_ARG);
    1828318776 
     
    1829518788            }
    1829618789        } else {
    18297 @@ -285,6 +327,14 @@
     18790@@ -285,6 +372,14 @@
    1829818791     returnCode(result);
    1829918792 }
     
    1831018803 static void
    1831118804 rgb2hls(short r, short g, short b, short *h, short *l, short *s)
    18312 @@ -328,24 +378,72 @@
     18805@@ -328,24 +423,75 @@
    1831318806  * values.
    1831418807  */
     
    1831918812     colorpair_t result;
    1832018813+    colorpair_t previous;
    18321  
    18322      T((T_CALLED("init_pair(%d,%d,%d)"), pair, f, b));
     18814+    int maxcolors;
     18815 
     18816-    T((T_CALLED("init_pair(%d,%d,%d)"), pair, f, b));
     18817+    T((T_CALLED("init_pair(%p,%d,%d,%d)"), SP_PARM, pair, f, b));
    1832318818 
    1832418819-    if ((pair < 0) || (pair >= COLOR_PAIRS) || SP == 0 || !SP->_coloron)
    1832518820+    if (!ValidPair(pair))
    1832618821        returnCode(ERR);
     18822+
     18823+    maxcolors = MaxColors;
    1832718824+
    1832818825+    previous = SP_PARM->_color_pairs[pair];
     
    1839018887 #endif
    1839118888     {
    18392 @@ -361,8 +459,8 @@
     18889@@ -361,14 +507,14 @@
    1839318890      * pair colors with the new ones).
    1839418891      */
     
    1840018897        int y, x;
    1840118898 
    18402         for (y = 0; y <= curscr->_maxy; y++) {
    18403 @@ -381,9 +479,9 @@
    18404                 _nc_make_oldhash(y);
     18899-       for (y = 0; y <= curscr->_maxy; y++) {
     18900-           struct ldat *ptr = &(curscr->_line[y]);
     18901+       for (y = 0; y <= CurScreen(SP_PARM)->_maxy; y++) {
     18902+           struct ldat *ptr = &(CurScreen(SP_PARM)->_line[y]);
     18903            bool changed = FALSE;
     18904-           for (x = 0; x <= curscr->_maxx; x++) {
     18905+           for (x = 0; x <= CurScreen(SP_PARM)->_maxx; x++) {
     18906                if (GetPair(ptr->text[x]) == pair) {
     18907                    /* Set the old cell to zero to ensure it will be
     18908                       updated on the next doupdate() */
     18909@@ -378,15 +524,19 @@
     18910                }
     18911            }
     18912            if (changed)
     18913-               _nc_make_oldhash(y);
     18914+               NCURSES_SP_NAME(_nc_make_oldhash) (NCURSES_SP_ARGx y);
    1840518915        }
    1840618916     }
     
    1840818918-    if (GET_SCREEN_PAIR(SP) == pair)
    1840918919-       SET_SCREEN_PAIR(SP, (chtype) (~0));     /* force attribute update */
     18920 
    1841018921+    SP_PARM->_color_pairs[pair] = result;
    1841118922+    if (GET_SCREEN_PAIR(SP_PARM) == pair)
    1841218923+       SET_SCREEN_PAIR(SP_PARM, (chtype) (~0));        /* force attribute update */
    18413  
     18924+
     18925+#ifdef USE_TERM_DRIVER
     18926+    CallDriver_3(SP_PARM, initpair, pair, f, b);
     18927+#else
    1841418928     if (initialize_pair && InPalette(f) && InPalette(b)) {
    18415         const color_t *tp = hue_lightness_saturation ? hls_palette : cga_palette;
    18416 @@ -404,54 +502,79 @@
     18929-       const color_t *tp = hue_lightness_saturation ? hls_palette : cga_palette;
     18930+       const color_t *tp = DefaultPalette;
     18931 
     18932        TR(TRACE_ATTRS,
     18933           ("initializing pair: pair = %d, fg=(%d,%d,%d), bg=(%d,%d,%d)",
     18934@@ -400,80 +550,139 @@
     18935                     tp[f].red, tp[f].green, tp[f].blue,
     18936                     tp[b].red, tp[b].green, tp[b].blue));
     18937     }
     18938+#endif
     18939 
    1841718940     returnCode(OK);
    1841818941 }
     
    1843418957 {
    1843518958     int result = ERR;
    18436  
    18437      T((T_CALLED("init_color(%d,%d,%d,%d)"), color, r, g, b));
    18438  
    18439      if (initialize_color != NULL
     18959+    int maxcolors;
     18960+
     18961+    T((T_CALLED("init_color(%p,%d,%d,%d,%d)"), SP_PARM, color, r, g, b));
     18962 
     18963-    T((T_CALLED("init_color(%d,%d,%d,%d)"), color, r, g, b));
     18964+    if (SP_PARM == 0)
     18965+       returnCode(result);
     18966 
     18967-    if (initialize_color != NULL
    1844018968-       && SP != 0
    1844118969-       && SP->_coloron
    18442 +       && SP_PARM != 0
     18970+    maxcolors = MaxColors;
     18971+
     18972+    if (InitColor
    1844318973+       && SP_PARM->_coloron
    1844418974        && (color >= 0 && OkColorHi(color))
     
    1845418984+       SP_PARM->_color_table[color].b = b;
    1845518985 
    18456         if (hue_lightness_saturation) {
     18986-       if (hue_lightness_saturation) {
     18987+       if (UseHlsPalette) {
    1845718988            rgb2hls(r, g, b,
    1845818989-                   &SP->_color_table[color].red,
     
    1847119002        }
    1847219003 
     19004+#ifdef USE_TERM_DRIVER
     19005+       CallDriver_4(SP_PARM, initcolor, color, r, g, b);
     19006+#else
    1847319007        TPUTS_TRACE("initialize_color");
    1847419008        putp(TPARM_4(initialize_color, color, r, g, b));
    1847519009-       SP->_color_defs = max(color + 1, SP->_color_defs);
     19010+#endif
    1847619011+       SP_PARM->_color_defs = max(color + 1, SP_PARM->_color_defs);
     19012+
    1847719013        result = OK;
    1847819014     }
     
    1848819024+#endif
    1848919025+
    18490  NCURSES_EXPORT(bool)
    18491 -can_change_color(void)
    18492 +NCURSES_SP_NAME(can_change_color) (NCURSES_SP_DCL0)
    18493  {
    18494      T((T_CALLED("can_change_color()")));
    18495      returnCode((can_change != 0) ? TRUE : FALSE);
    18496  }
    18497  
     19026+NCURSES_EXPORT(bool)
     19027+NCURSES_SP_NAME(can_change_color) (NCURSES_SP_DCL)
     19028+{
     19029+    T((T_CALLED("can_change_color(%p)"), SP_PARM));
     19030+    returnCode((CanChange != 0) ? TRUE : FALSE);
     19031+}
     19032+
    1849819033+#if NCURSES_SP_FUNCS
    1849919034 NCURSES_EXPORT(bool)
     19035 can_change_color(void)
     19036 {
     19037-    T((T_CALLED("can_change_color()")));
     19038-    returnCode((can_change != 0) ? TRUE : FALSE);
     19039+    return NCURSES_SP_NAME(can_change_color) (CURRENT_SCREEN);
     19040 }
     19041+#endif
     19042 
     19043 NCURSES_EXPORT(bool)
    1850019044-has_colors(void)
    18501 +can_change_color(void)
    18502 +{
    18503 +    return NCURSES_SP_NAME(can_change_color) (CURRENT_SCREEN);
    18504 +}
    18505 +#endif
    18506 +
    18507 +NCURSES_EXPORT(bool)
    1850819045+NCURSES_SP_NAME(has_colors) (NCURSES_SP_DCL0)
    1850919046 {
     19047+    int code;
     19048+
    1851019049     T((T_CALLED("has_colors()")));
    18511      returnCode((VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs)
    18512 @@ -462,18 +585,27 @@
    18513                     || set_color_pair)) ? TRUE : FALSE);
     19050-    returnCode((VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs)
     19051-               && (((set_foreground != NULL)
     19052-                    && (set_background != NULL))
     19053-                   || ((set_a_foreground != NULL)
     19054-                       && (set_a_background != NULL))
     19055-                   || set_color_pair)) ? TRUE : FALSE);
     19056+#ifdef USE_TERM_DRIVER
     19057+    code = HasColor;
     19058+#else
     19059+    code = ((VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs)
     19060+            && (((set_foreground != NULL)
     19061+                 && (set_background != NULL))
     19062+                || ((set_a_foreground != NULL)
     19063+                    && (set_a_background != NULL))
     19064+                || set_color_pair)) ? TRUE : FALSE);
     19065+#endif
     19066+    returnCode(code);
    1851419067 }
    1851519068 
     
    1852419077 NCURSES_EXPORT(int)
    1852519078-color_content(short color, short *r, short *g, short *b)
    18526 +NCURSES_SP_NAME(color_content) (NCURSES_SP_DCLx short color, short *r,
    18527 +                               short *g, short *b)
     19079+NCURSES_SP_NAME(color_content) (NCURSES_SP_DCLx
     19080+                               short color, short *r, short *g, short *b)
    1852819081 {
    18529      int result;
    18530  
    18531      T((T_CALLED("color_content(%d,%p,%p,%p)"), color, r, g, b));
     19082-    int result;
     19083+    int result = ERR;
     19084+    int maxcolors;
     19085+
     19086+    T((T_CALLED("color_content(%p,%d,%p,%p,%p)"), SP_PARM, color, r, g, b));
     19087+
     19088+    if (SP_PARM == 0)
     19089+       returnCode(result);
     19090 
     19091-    T((T_CALLED("color_content(%d,%p,%p,%p)"), color, r, g, b));
    1853219092-    if (color < 0 || !OkColorHi(color) || SP == 0 || !SP->_coloron) {
    18533 +    if (color < 0 || !OkColorHi(color) || SP_PARM == 0 || !SP_PARM->_coloron) {
     19093+    maxcolors = MaxColors;
     19094+
     19095+    if (color < 0 || !OkColorHi(color) || !SP_PARM->_coloron) {
    1853419096        result = ERR;
    1853519097     } else {
     
    1854319105        if (r)
    1854419106            *r = c_r;
    18545 @@ -489,18 +621,27 @@
     19107@@ -489,18 +698,27 @@
    1854619108     returnCode(result);
    1854719109 }
     
    1855719119+
    1855819120+NCURSES_EXPORT(int)
    18559 +NCURSES_SP_NAME(pair_content) (NCURSES_SP_DCLx short pair, short *f,
    18560 +                              short *b)
     19121+NCURSES_SP_NAME(pair_content) (NCURSES_SP_DCLx
     19122+                              short pair, short *f, short *b)
    1856119123 {
    1856219124     int result;
    1856319125 
    18564      T((T_CALLED("pair_content(%d,%p,%p)"), pair, f, b));
     19126-    T((T_CALLED("pair_content(%d,%p,%p)"), pair, f, b));
     19127+    T((T_CALLED("pair_content(%p,%d,%p,%p)"), SP_PARM, pair, f, b));
    1856519128 
    1856619129-    if ((pair < 0) || (pair >= COLOR_PAIRS) || SP == 0 || !SP->_coloron) {
     
    1857519138 #if NCURSES_EXT_FUNCS
    1857619139        if (fg == COLOR_DEFAULT)
    18577 @@ -520,27 +661,41 @@
     19140@@ -514,33 +732,50 @@
     19141        if (b)
     19142            *b = bg;
     19143 
     19144-       TR(TRACE_ATTRS, ("...pair_content(%d,%d,%d)", pair, fg, bg));
     19145+       TR(TRACE_ATTRS, ("...pair_content(%p,%d,%d,%d)", SP_PARM, pair, fg, bg));
     19146        result = OK;
     19147     }
    1857819148     returnCode(result);
    1857919149 }
     
    1859519165+                              NCURSES_SP_OUTC outc)
    1859619166 {
     19167+#ifdef USE_TERM_DRIVER
     19168+    CallDriver_4(SP_PARM, docolor, old_pair, pair, reverse, outc);
     19169+#else
    1859719170     NCURSES_COLOR_T fg = COLOR_DEFAULT;
    1859819171     NCURSES_COLOR_T bg = COLOR_DEFAULT;
     
    1862219195        if ((isDefaultColor(fg) && !isDefaultColor(old_fg))
    1862319196            || (isDefaultColor(bg) && !isDefaultColor(old_bg))) {
    18624 @@ -550,20 +705,20 @@
     19197@@ -550,29 +785,29 @@
    1862519198             * the terminal description, treat it as screen's indicator of ECMA
    1862619199             * SGR 39 and SGR 49, and assume the two sequences are independent.
     
    1864919222            return;
    1865019223     }
    18651 @@ -585,9 +740,22 @@
     19224 
     19225 #if NCURSES_EXT_FUNCS
     19226     if (isDefaultColor(fg))
     19227-       fg = default_fg();
     19228+       fg = default_fg(NCURSES_SP_ARG);
     19229     if (isDefaultColor(bg))
     19230-       bg = default_bg();
     19231+       bg = default_bg(NCURSES_SP_ARG);
     19232 #endif
     19233 
     19234     if (reverse) {
     19235@@ -585,9 +820,23 @@
    1865219236                     fg, bg));
    1865319237 
     
    1866019244+       set_background_color(NCURSES_SP_ARGx bg, outc);
    1866119245     }
     19246+#endif
    1866219247 }
    1866319248+
     
    1867619261diff -Naur ncurses-5.7.orig/ncurses/base/lib_colorset.c ncurses-5.7/ncurses/base/lib_colorset.c
    1867719262--- ncurses-5.7.orig/ncurses/base/lib_colorset.c        2005-01-29 13:40:51.000000000 -0800
    18678 +++ ncurses-5.7/ncurses/base/lib_colorset.c     2009-07-19 15:02:16.000000000 -0700
     19263+++ ncurses-5.7/ncurses/base/lib_colorset.c     2009-09-12 08:51:11.000000000 -0700
    1867919264@@ -1,5 +1,5 @@
    1868019265 /****************************************************************************
     
    1872419309diff -Naur ncurses-5.7.orig/ncurses/base/lib_delwin.c ncurses-5.7/ncurses/base/lib_delwin.c
    1872519310--- ncurses-5.7.orig/ncurses/base/lib_delwin.c  2008-06-07 07:10:56.000000000 -0700
    18726 +++ ncurses-5.7/ncurses/base/lib_delwin.c       2009-07-19 15:04:03.000000000 -0700
     19311+++ ncurses-5.7/ncurses/base/lib_delwin.c       2009-09-12 08:51:40.000000000 -0700
    1872719312@@ -1,5 +1,5 @@
    1872819313 /****************************************************************************
     
    1878119366diff -Naur ncurses-5.7.orig/ncurses/base/lib_dft_fgbg.c ncurses-5.7/ncurses/base/lib_dft_fgbg.c
    1878219367--- ncurses-5.7.orig/ncurses/base/lib_dft_fgbg.c        2005-11-26 12:03:38.000000000 -0800
    18783 +++ ncurses-5.7/ncurses/base/lib_dft_fgbg.c     2009-07-19 15:04:04.000000000 -0700
     19368+++ ncurses-5.7/ncurses/base/lib_dft_fgbg.c     2009-09-12 08:51:42.000000000 -0700
    1878419369@@ -1,5 +1,5 @@
    1878519370 /****************************************************************************
     
    1888819473diff -Naur ncurses-5.7.orig/ncurses/base/lib_driver.c ncurses-5.7/ncurses/base/lib_driver.c
    1888919474--- ncurses-5.7.orig/ncurses/base/lib_driver.c  1969-12-31 16:00:00.000000000 -0800
    18890 +++ ncurses-5.7/ncurses/base/lib_driver.c       2009-07-19 15:04:11.000000000 -0700
     19475+++ ncurses-5.7/ncurses/base/lib_driver.c       2009-09-12 08:51:49.000000000 -0700
    1889119476@@ -0,0 +1,142 @@
    1889219477+/****************************************************************************
     
    1903419619diff -Naur ncurses-5.7.orig/ncurses/base/lib_echo.c ncurses-5.7/ncurses/base/lib_echo.c
    1903519620--- ncurses-5.7.orig/ncurses/base/lib_echo.c    2000-12-09 18:43:27.000000000 -0800
    19036 +++ ncurses-5.7/ncurses/base/lib_echo.c 2009-07-19 15:02:22.000000000 -0700
     19621+++ ncurses-5.7/ncurses/base/lib_echo.c 2009-09-12 08:51:17.000000000 -0700
    1903719622@@ -1,5 +1,5 @@
    1903819623 /****************************************************************************
     
    1910019685diff -Naur ncurses-5.7.orig/ncurses/base/lib_endwin.c ncurses-5.7/ncurses/base/lib_endwin.c
    1910119686--- ncurses-5.7.orig/ncurses/base/lib_endwin.c  2000-12-09 18:43:27.000000000 -0800
    19102 +++ ncurses-5.7/ncurses/base/lib_endwin.c       2009-07-19 15:04:13.000000000 -0700
     19687+++ ncurses-5.7/ncurses/base/lib_endwin.c       2009-09-12 08:51:50.000000000 -0700
    1910319688@@ -1,5 +1,5 @@
    1910419689 /****************************************************************************
     
    1916819753diff -Naur ncurses-5.7.orig/ncurses/base/lib_flash.c ncurses-5.7/ncurses/base/lib_flash.c
    1916919754--- ncurses-5.7.orig/ncurses/base/lib_flash.c   2000-12-09 18:43:27.000000000 -0800
    19170 +++ ncurses-5.7/ncurses/base/lib_flash.c        2009-07-19 15:04:03.000000000 -0700
     19755+++ ncurses-5.7/ncurses/base/lib_flash.c        2009-09-12 08:51:40.000000000 -0700
    1917119756@@ -1,5 +1,5 @@
    1917219757 /****************************************************************************
     
    1923719822diff -Naur ncurses-5.7.orig/ncurses/base/lib_freeall.c ncurses-5.7/ncurses/base/lib_freeall.c
    1923819823--- ncurses-5.7.orig/ncurses/base/lib_freeall.c 2008-09-27 06:09:57.000000000 -0700
    19239 +++ ncurses-5.7/ncurses/base/lib_freeall.c      2009-07-19 15:03:59.000000000 -0700
     19824+++ ncurses-5.7/ncurses/base/lib_freeall.c      2009-09-12 08:51:37.000000000 -0700
    1924019825@@ -1,5 +1,5 @@
    1924119826 /****************************************************************************
     
    1936319948diff -Naur ncurses-5.7.orig/ncurses/base/lib_getch.c ncurses-5.7/ncurses/base/lib_getch.c
    1936419949--- ncurses-5.7.orig/ncurses/base/lib_getch.c   2008-09-20 12:46:13.000000000 -0700
    19365 +++ ncurses-5.7/ncurses/base/lib_getch.c        2009-07-19 15:04:13.000000000 -0700
     19950+++ ncurses-5.7/ncurses/base/lib_getch.c        2009-09-12 08:52:04.000000000 -0700
    1936619951@@ -1,5 +1,5 @@
    1936719952 /****************************************************************************
     
    1938419969 
    1938519970-MODULE_ID("$Id: lib_getch.c,v 1.99 2008/09/20 19:46:13 tom Exp $")
    19386 +MODULE_ID("$Id: lib_getch.c,v 1.104 2009/07/04 20:41:13 tom Exp $")
     19971+MODULE_ID("$Id: lib_getch.c,v 1.107 2009/08/15 20:41:24 Clemens.Ladisch Exp $")
    1938719972 
    1938819973 #include <fifo_defs.h>
     
    1939119976-#define GetEscdelay(sp) (sp)->_ESCDELAY
    1939219977+#define GetEscdelay(sp) *_nc_ptr_Escdelay(sp)
    19393 +NCURSES_EXPORT(int *)
    19394 +_nc_ptr_Escdelay(SCREEN *sp)
    19395 +{
    19396 +    return ptrEscdelay(sp);
    19397 +}
    1939819978 NCURSES_EXPORT(int)
    1939919979 NCURSES_PUBLIC_VAR(ESCDELAY) (void)
     
    1940119981-    return SP ? GetEscdelay(SP) : 1000;
    1940219982+    return *(_nc_ptr_Escdelay(CURRENT_SCREEN));
     19983+}
     19984+
     19985+NCURSES_EXPORT(int *)
     19986+_nc_ptr_Escdelay(SCREEN *sp)
     19987+{
     19988+    return ptrEscdelay(sp);
    1940319989 }
    1940419990 #else
     
    1940619992-NCURSES_EXPORT_VAR(int)
    1940719993-ESCDELAY = 1000;               /* max interval betw. chars in funkeys, in millisecs */
    19408 +NCURSES_EXPORT_VAR (int)
    19409 +  ESCDELAY = 1000;             /* max interval betw. chars in funkeys, in millisecs */
     19994+NCURSES_EXPORT_VAR(int) ESCDELAY = 1000;
    1941019995 #endif
    1941119996 
     
    1942620011 #else
    1942720012+    (void) SP_PARM;
    19428      ESCDELAY = value;
    19429  #endif
    19430      return code;
    19431  }
     20013+    ESCDELAY = value;
     20014+#endif
     20015+    return code;
     20016+}
    1943220017+
    1943320018+#if NCURSES_SP_FUNCS
     
    1943920024+    code = NCURSES_SP_NAME(set_escdelay) (CURRENT_SCREEN, value);
    1944020025+#else
    19441 +    ESCDELAY = value;
     20026     ESCDELAY = value;
    1944220027+    code = OK;
    19443 +#endif
    19444 +    return code;
    19445 +}
    19446 +#endif
     20028 #endif
     20029     return code;
     20030 }
     20031 #endif
    1944720032+#endif /* NCURSES_EXT_FUNCS */
    1944820033+
     
    1945920044+#if NCURSES_SP_FUNCS
    1946020045+NCURSES_EXPORT(int)
    19461 +get_escdelay (void)
     20046+get_escdelay(void)
    1946220047+{
    19463 +    return NCURSES_SP_NAME(get_escdelay)(CURRENT_SCREEN);
     20048+    return NCURSES_SP_NAME(get_escdelay) (CURRENT_SCREEN);
    1946420049+}
    19465  #endif
     20050+#endif
    1946620051+#endif /* NCURSES_EXT_FUNCS */
    1946720052 
     
    1959120176 #ifdef NCURSES_WGETCH_EVENTS
    1959220177        /* Return it first */
    19593 @@ -402,7 +461,7 @@
     20178@@ -402,13 +461,13 @@
    1959420179            rc = check_mouse_activity(sp, delay EVENTLIST_2nd(evl));
    1959520180 
     
    1960020185                returnCode(KEY_CODE_YES);
    1960120186            }
     20187 #endif
     20188            if (!rc) {
     20189-               returnCode(ERR);
     20190+               goto check_sigwinch;
     20191            }
     20192        }
     20193        /* else go on to read data available */
    1960220194@@ -427,7 +486,7 @@
    1960320195         * increase the wait with mouseinterval().
     
    1963920231            }
    1964020232        }
    19641 @@ -645,7 +704,7 @@
     20233@@ -470,6 +529,7 @@
     20234     }
     20235 
     20236     if (ch == ERR) {
     20237+      check_sigwinch:
     20238 #if USE_SIZECHANGE
     20239        if (_nc_handle_sigwinch(sp)) {
     20240            _nc_update_screensize(sp);
     20241@@ -645,7 +705,7 @@
    1964220242            TR(TRACE_IEVENT, ("waiting for rest of sequence"));
    1964320243            rc = check_mouse_activity(sp, timeleft EVENTLIST_2nd(evl));
     
    1965020250diff -Naur ncurses-5.7.orig/ncurses/base/lib_getstr.c ncurses-5.7/ncurses/base/lib_getstr.c
    1965120251--- ncurses-5.7.orig/ncurses/base/lib_getstr.c  2008-08-16 12:20:04.000000000 -0700
    19652 +++ ncurses-5.7/ncurses/base/lib_getstr.c       2009-07-19 15:03:59.000000000 -0700
     20252+++ ncurses-5.7/ncurses/base/lib_getstr.c       2009-09-12 08:51:37.000000000 -0700
    1965320253@@ -1,5 +1,5 @@
    1965420254 /****************************************************************************
     
    1971620316diff -Naur ncurses-5.7.orig/ncurses/base/lib_initscr.c ncurses-5.7/ncurses/base/lib_initscr.c
    1971720317--- ncurses-5.7.orig/ncurses/base/lib_initscr.c 2008-08-16 14:20:48.000000000 -0700
    19718 +++ ncurses-5.7/ncurses/base/lib_initscr.c      2009-07-19 15:03:51.000000000 -0700
     20318+++ ncurses-5.7/ncurses/base/lib_initscr.c      2009-09-12 08:51:28.000000000 -0700
    1971920319@@ -1,5 +1,5 @@
    1972020320 /****************************************************************************
     
    1974720347diff -Naur ncurses-5.7.orig/ncurses/base/lib_insch.c ncurses-5.7/ncurses/base/lib_insch.c
    1974820348--- ncurses-5.7.orig/ncurses/base/lib_insch.c   2008-02-02 16:14:37.000000000 -0800
    19749 +++ ncurses-5.7/ncurses/base/lib_insch.c        2009-07-19 15:04:04.000000000 -0700
     20349+++ ncurses-5.7/ncurses/base/lib_insch.c        2009-09-12 08:51:42.000000000 -0700
    1975020350@@ -1,5 +1,5 @@
    1975120351 /****************************************************************************
     
    1984920449diff -Naur ncurses-5.7.orig/ncurses/base/lib_insnstr.c ncurses-5.7/ncurses/base/lib_insnstr.c
    1985020450--- ncurses-5.7.orig/ncurses/base/lib_insnstr.c 2004-02-28 15:44:56.000000000 -0800
    19851 +++ ncurses-5.7/ncurses/base/lib_insnstr.c      2009-07-19 15:04:04.000000000 -0700
     20451+++ ncurses-5.7/ncurses/base/lib_insnstr.c      2009-09-12 08:51:42.000000000 -0700
    1985220452@@ -1,5 +1,5 @@
    1985320453 /****************************************************************************
     
    1988220482diff -Naur ncurses-5.7.orig/ncurses/base/lib_isendwin.c ncurses-5.7/ncurses/base/lib_isendwin.c
    1988320483--- ncurses-5.7.orig/ncurses/base/lib_isendwin.c        2000-12-09 18:43:27.000000000 -0800
    19884 +++ ncurses-5.7/ncurses/base/lib_isendwin.c     2009-07-19 15:02:20.000000000 -0700
     20484+++ ncurses-5.7/ncurses/base/lib_isendwin.c     2009-09-12 08:51:16.000000000 -0700
    1988520485@@ -1,5 +1,5 @@
    1988620486 /****************************************************************************
     
    1992620526diff -Naur ncurses-5.7.orig/ncurses/base/lib_mouse.c ncurses-5.7/ncurses/base/lib_mouse.c
    1992720527--- ncurses-5.7.orig/ncurses/base/lib_mouse.c   2008-10-18 14:48:55.000000000 -0700
    19928 +++ ncurses-5.7/ncurses/base/lib_mouse.c        2009-07-19 15:04:13.000000000 -0700
     20528+++ ncurses-5.7/ncurses/base/lib_mouse.c        2009-09-12 08:51:50.000000000 -0700
    1992920529@@ -1,5 +1,5 @@
    1993020530 /****************************************************************************
     
    2031320913diff -Naur ncurses-5.7.orig/ncurses/base/lib_mvwin.c ncurses-5.7/ncurses/base/lib_mvwin.c
    2031420914--- ncurses-5.7.orig/ncurses/base/lib_mvwin.c   2006-02-25 14:53:46.000000000 -0800
    20315 +++ ncurses-5.7/ncurses/base/lib_mvwin.c        2009-07-19 15:04:06.000000000 -0700
     20915+++ ncurses-5.7/ncurses/base/lib_mvwin.c        2009-09-12 08:51:43.000000000 -0700
    2031620916@@ -1,5 +1,5 @@
    2031720917 /****************************************************************************
     
    2036020960diff -Naur ncurses-5.7.orig/ncurses/base/lib_newterm.c ncurses-5.7/ncurses/base/lib_newterm.c
    2036120961--- ncurses-5.7.orig/ncurses/base/lib_newterm.c 2008-08-16 14:20:48.000000000 -0700
    20362 +++ ncurses-5.7/ncurses/base/lib_newterm.c      2009-07-19 15:03:59.000000000 -0700
     20962+++ ncurses-5.7/ncurses/base/lib_newterm.c      2009-09-12 08:52:10.000000000 -0700
    2036320963@@ -1,5 +1,5 @@
    2036420964 /****************************************************************************
     
    2037620976 
    2037720977 /*
    20378 @@ -45,10 +46,14 @@
     20978@@ -45,10 +46,19 @@
    2037920979 #define _POSIX_SOURCE
    2038020980 #endif
    2038120981 
     20982-#include <term.h>              /* clear_screen, cup & friends, cur_term */
    2038220983+#ifndef CUR
    20383 +#define CUR SP_TERMTYPE 
     20984+#define CUR SP_TERMTYPE
    2038420985+#endif
    2038520986+
    20386  #include <term.h>              /* clear_screen, cup & friends, cur_term */
    2038720987 #include <tic.h>
    2038820988 
    2038920989-MODULE_ID("$Id: lib_newterm.c,v 1.73 2008/08/16 21:20:48 Werner.Fink Exp $")
    20390 +MODULE_ID("$Id: lib_newterm.c,v 1.77 2009/05/10 00:48:29 tom Exp $")
     20990+MODULE_ID("$Id: lib_newterm.c,v 1.79 2009/09/06 15:13:41 tom Exp $")
     20991+
     20992+#ifdef USE_TERM_DRIVER
     20993+#define NumLabels      InfoOf(SP_PARM).numlabels
     20994+#else
     20995+#define NumLabels      num_labels
     20996+#endif
    2039120997 
    2039220998 #ifndef ONLCR                  /* Allows compilation under the QNX 4.2 OS */
    2039320999 #define ONLCR 0
    20394 @@ -95,7 +100,7 @@
     21000@@ -63,16 +73,17 @@
     21001  * is supposed to behave as if it calls newterm, we do it here.
     21002  */
     21003 static NCURSES_INLINE int
     21004-_nc_initscr(void)
     21005+_nc_initscr(NCURSES_SP_DCL0)
     21006 {
     21007     int result = ERR;
     21008+    TERMINAL *term = TerminalOf(SP_PARM);
     21009 
     21010     /* for extended XPG4 conformance requires cbreak() at this point */
     21011     /* (SVr4 curses does this anyway) */
     21012-    if (cbreak() == OK) {
     21013+    if (NCURSES_SP_NAME(cbreak) (NCURSES_SP_ARG) == OK) {
     21014        TTY buf;
     21015 
     21016-       buf = cur_term->Nttyb;
     21017+       buf = term->Nttyb;
     21018 #ifdef TERMIOS
     21019        buf.c_lflag &= ~(ECHO | ECHONL);
     21020        buf.c_iflag &= ~(ICRNL | INLCR | IGNCR);
     21021@@ -82,8 +93,9 @@
     21022 #else
     21023        memset(&buf, 0, sizeof(buf));
     21024 #endif
     21025-       if ((result = _nc_set_tty_mode(&buf)) == OK)
     21026-           cur_term->Nttyb = buf;
     21027+       result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
     21028+       if (result == OK)
     21029+           term->Nttyb = buf;
     21030     }
     21031     return result;
     21032 }
     21033@@ -95,13 +107,30 @@
    2039521034  * initialized.
    2039621035  */
    2039721036 NCURSES_EXPORT(void)
    20398 -filter(void)
    2039921037+NCURSES_SP_NAME(filter) (NCURSES_SP_DCL0)
     21038+{
     21039+    START_TRACE();
     21040+    T((T_CALLED("filter(%p)"), SP_PARM));
     21041+#if NCURSES_SP_FUNCS
     21042+    if (IsPreScreen(SP_PARM)) {
     21043+       SP_PARM->_filtered = TRUE;
     21044+    }
     21045+#else
     21046+    _nc_prescreen.filter_mode = TRUE;
     21047+#endif
     21048+    returnVoid;
     21049+}
     21050+
     21051+#if NCURSES_SP_FUNCS
     21052+NCURSES_EXPORT(void)
     21053 filter(void)
    2040021054 {
    2040121055     START_TRACE();
    20402      T((T_CALLED("filter")));
    20403 @@ -103,23 +108,42 @@
     21056-    T((T_CALLED("filter")));
     21057+    T((T_CALLED("filter()")));
     21058     _nc_prescreen.filter_mode = TRUE;
    2040421059     returnVoid;
    2040521060 }
    20406  
    20407 +#if NCURSES_SP_FUNCS
    20408 +NCURSES_EXPORT(void)
    20409 +filter(void)
    20410 +{
    20411 +    NCURSES_SP_NAME(filter) (CURRENT_SCREEN);
    20412 +}
    2041321061+#endif
    20414 +
     21062 
    2041521063 #if NCURSES_EXT_FUNCS
    2041621064 /*
    20417   * An extension, allowing the application to open a new screen without
     21065@@ -109,62 +138,105 @@
    2041821066  * requiring it to also be filtered.
    2041921067  */
    2042021068 NCURSES_EXPORT(void)
    20421 -nofilter(void)
    2042221069+NCURSES_SP_NAME(nofilter) (NCURSES_SP_DCL0)
     21070+{
     21071+    START_TRACE();
     21072+    T((T_CALLED("nofilter(%p)"), SP_PARM));
     21073+#if NCURSES_SP_FUNCS
     21074+    if (IsPreScreen(SP_PARM)) {
     21075+       SP_PARM->_filtered = FALSE;
     21076+    }
     21077+#else
     21078+    _nc_prescreen.filter_mode = FALSE;
     21079+#endif
     21080+    returnVoid;
     21081+}
     21082+
     21083+#if NCURSES_SP_FUNCS
     21084+NCURSES_EXPORT(void)
     21085 nofilter(void)
    2042321086 {
    2042421087     START_TRACE();
    20425      T((T_CALLED("nofilter")));
     21088-    T((T_CALLED("nofilter")));
     21089+    T((T_CALLED("nofilter()")));
    2042621090     _nc_prescreen.filter_mode = FALSE;
    2042721091     returnVoid;
    2042821092 }
    20429 +
    20430 +#if NCURSES_SP_FUNCS
    20431 +NCURSES_EXPORT(void)
    20432 +nofilter(void)
    20433 +{
    20434 +    NCURSES_SP_NAME(nofilter) (CURRENT_SCREEN);
    20435 +}
    2043621093 #endif
    2043721094+#endif /* NCURSES_EXT_FUNCS */
     
    2044621103     int value;
    2044721104     int errret;
    20448 @@ -133,8 +157,8 @@
     21105-    SCREEN *current;
     21106     SCREEN *result = 0;
     21107+    SCREEN *current;
     21108     TERMINAL *its_term;
     21109+    FILE *_ofp = ofp ? ofp : stdout;
     21110+    FILE *_ifp = ifp ? ifp : stdin;
     21111+    int cols;
     21112+    int numlab;
     21113+#ifdef USE_TERM_DRIVER
     21114+    TERMINAL *new_term;
     21115+#endif
     21116 
     21117     START_TRACE();
     21118-    T((T_CALLED("newterm(\"%s\",%p,%p)"), name, ofp, ifp));
     21119+    T((T_CALLED("newterm(%p, \"%s\", %p,%p)"), SP_PARM, name, ofp, ifp));
     21120 
    2044921121     _nc_init_pthreads();
    2045021122     _nc_lock_global(curses);
     
    2045621128 
    2045721129     /* this loads the capability entry, then sets LINES and COLS */
    20458      if (setupterm(name, fileno(ofp), &errret) != ERR) {
    20459 @@ -159,7 +183,7 @@
     21130-    if (setupterm(name, fileno(ofp), &errret) != ERR) {
     21131+    if (setupterm(name, fileno(_ofp), &errret) != ERR) {
     21132        int slk_format = _nc_globals.slk_format;
     21133 
     21134-       /*
     21135-        * This actually allocates the screen structure, and saves the original
     21136-        * terminal settings.
     21137-        */
     21138        _nc_set_screen(0);
     21139+#ifdef USE_TERM_DRIVER
     21140+       assert(new_term != 0);
     21141+#endif
     21142 
     21143        /* allow user to set maximum escape delay from the environment */
     21144        if ((value = _nc_getenv_num("ESCDELAY")) >= 0) {
     21145            set_escdelay(value);
     21146        }
     21147 
     21148+       /*
     21149+        * This actually allocates the screen structure, and saves the original
     21150+        * terminal settings.
     21151+        */
     21152        if (_nc_setupscreen(LINES,
     21153                            COLS,
     21154-                           ofp,
     21155+                           _ofp,
     21156                            _nc_prescreen.filter_mode,
     21157                            slk_format) == ERR) {
    2046021158            _nc_set_screen(current);
    2046121159            result = 0;
    2046221160        } else {
    2046321161-           assert(SP != 0);
     21162+#ifdef USE_TERM_DRIVER
     21163+           TERMINAL_CONTROL_BLOCK *TCB;
     21164+#else
     21165+           SP_PARM = CURRENT_SCREEN;
     21166+#endif
    2046421167+           assert(SP_PARM != 0);
     21168+           cols = *(ptrCols(SP_PARM));
     21169+#ifdef USE_TERM_DRIVER
     21170+           TCB = (TERMINAL_CONTROL_BLOCK *) new_term;
     21171+           TCB->csp = SP_PARM;
     21172+#endif
     21173+           numlab = NumLabels;
     21174+
    2046521175            /*
    2046621176             * In setupterm() we did a set_curterm(), but it was before we set
    20467              * SP.  So the "current" screen's terminal pointer was overwritten
    20468 @@ -233,3 +257,11 @@
     21177-            * SP.  So the "current" screen's terminal pointer was overwritten
     21178-            * with a different terminal.  Later, in _nc_setupscreen(), we set
     21179-            * SP and the terminal pointer in the new screen.
     21180+            * CURRENT_SCREEN.  So the "current" screen's terminal pointer was
     21181+            * overwritten with a different terminal.  Later, in
     21182+            * _nc_setupscreen(), we set CURRENT_SCREEN and the terminal
     21183+            * pointer in the new screen.
     21184             *
     21185             * Restore the terminal-pointer for the pre-existing screen, if
     21186             * any.
     21187@@ -173,36 +245,41 @@
     21188                current->_term = its_term;
     21189 
     21190            /* if the terminal type has real soft labels, set those up */
     21191-           if (slk_format && num_labels > 0 && SLK_STDFMT(slk_format))
     21192+           if (slk_format && NumLabels > 0 && SLK_STDFMT(slk_format))
     21193                _nc_slk_initialize(stdscr, COLS);
     21194 
     21195-           SP->_ifd = fileno(ifp);
     21196-           typeahead(fileno(ifp));
     21197+           SP_PARM->_ifd = fileno(_ifp);
     21198+           NCURSES_SP_NAME(typeahead) (NCURSES_SP_ARGx fileno(_ifp));
     21199 #ifdef TERMIOS
     21200-           SP->_use_meta = ((cur_term->Ottyb.c_cflag & CSIZE) == CS8 &&
     21201-                            !(cur_term->Ottyb.c_iflag & ISTRIP));
     21202+           SP_PARM->_use_meta = ((cur_term->Ottyb.c_cflag & CSIZE) == CS8 &&
     21203+                                 !(cur_term->Ottyb.c_iflag & ISTRIP));
     21204 #else
     21205-           SP->_use_meta = FALSE;
     21206+           SP_PARM->_use_meta = FALSE;
     21207 #endif
     21208-           SP->_endwin = FALSE;
     21209-
     21210+           SP_PARM->_endwin = FALSE;
     21211+#ifndef USE_TERM_DRIVER
     21212            /*
     21213             * Check whether we can optimize scrolling under dumb terminals in
     21214             * case we do not have any of these capabilities, scrolling
     21215             * optimization will be useless.
     21216             */
     21217-           SP->_scrolling = ((scroll_forward && scroll_reverse) ||
     21218-                             ((parm_rindex ||
     21219-                               parm_insert_line ||
     21220-                               insert_line) &&
     21221-                              (parm_index ||
     21222-                               parm_delete_line ||
     21223-                               delete_line)));
     21224+           SP_PARM->_scrolling = ((scroll_forward && scroll_reverse) ||
     21225+                                  ((parm_rindex ||
     21226+                                    parm_insert_line ||
     21227+                                    insert_line) &&
     21228+                                   (parm_index ||
     21229+                                    parm_delete_line ||
     21230+                                    delete_line)));
     21231+#endif
     21232 
     21233-           baudrate();         /* sets a field in the SP structure */
     21234+           NCURSES_SP_NAME(baudrate) (NCURSES_SP_ARG);         /* sets a field in the screen structure */
     21235 
     21236-           SP->_keytry = 0;
     21237+           SP_PARM->_keytry = 0;
     21238 
     21239+           /* compute movement costs so we can do better move optimization */
     21240+#ifdef USE_TERM_DRIVER
     21241+           TCBOf(SP_PARM)->drv->scinit(SP_PARM);
     21242+#else
     21243            /*
     21244             * Check for mismatched graphic-rendition capabilities.  Most SVr4
     21245             * terminfo trees contain entries that have rmul or rmso equated to
     21246@@ -213,23 +290,31 @@
     21247             * shouldn't be looking at this detail.
     21248             */
     21249 #define SGR0_TEST(mode) (mode != 0) && (exit_attribute_mode == 0 || strcmp(mode, exit_attribute_mode))
     21250-           SP->_use_rmso = SGR0_TEST(exit_standout_mode);
     21251-           SP->_use_rmul = SGR0_TEST(exit_underline_mode);
     21252+           SP_PARM->_use_rmso = SGR0_TEST(exit_standout_mode);
     21253+           SP_PARM->_use_rmul = SGR0_TEST(exit_underline_mode);
     21254 
     21255            /* compute movement costs so we can do better move optimization */
     21256            _nc_mvcur_init();
     21257 
     21258            /* initialize terminal to a sane state */
     21259            _nc_screen_init();
     21260+#endif
     21261 
     21262            /* Initialize the terminal line settings. */
     21263-           _nc_initscr();
     21264+           _nc_initscr(NCURSES_SP_ARG);
     21265 
     21266            _nc_signal_handler(TRUE);
     21267-
     21268-           result = SP;
     21269+           result = SP_PARM;
     21270        }
     21271     }
    2046921272     _nc_unlock_global(curses);
    2047021273     returnSP(result);
     
    2048021283diff -Naur ncurses-5.7.orig/ncurses/base/lib_newwin.c ncurses-5.7/ncurses/base/lib_newwin.c
    2048121284--- ncurses-5.7.orig/ncurses/base/lib_newwin.c  2008-06-07 06:58:09.000000000 -0700
    20482 +++ ncurses-5.7/ncurses/base/lib_newwin.c       2009-07-19 15:04:06.000000000 -0700
     21285+++ ncurses-5.7/ncurses/base/lib_newwin.c       2009-09-12 08:52:10.000000000 -0700
    2048321286@@ -1,5 +1,5 @@
    2048421287 /****************************************************************************
     
    2050121304 
    2050221305-MODULE_ID("$Id: lib_newwin.c,v 1.52 2008/06/07 13:58:09 tom Exp $")
    20503 +MODULE_ID("$Id: lib_newwin.c,v 1.58 2009/06/06 17:53:11 tom Exp $")
     21306+MODULE_ID("$Id: lib_newwin.c,v 1.60 2009/09/06 16:32:48 tom Exp $")
    2050421307 
    2050521308 #define window_is(name) ((sp)->_##name == win)
    2050621309 
    20507 @@ -87,11 +88,11 @@
     21310@@ -61,6 +62,17 @@
     21311 {
     21312     SCREEN *sp;
     21313 
     21314+#ifdef USE_SP_WINDOWLIST
     21315+    if ((sp = _nc_screen_of(win)) != 0) {
     21316+       if (window_is(curscr)) {
     21317+           remove_window(curscr);
     21318+       } else if (window_is(stdscr)) {
     21319+           remove_window(stdscr);
     21320+       } else if (window_is(newscr)) {
     21321+           remove_window(newscr);
     21322+       }
     21323+    }
     21324+#else
     21325     for (each_screen(sp)) {
     21326        if (window_is(curscr)) {
     21327            remove_window(curscr);
     21328@@ -73,6 +85,7 @@
     21329            break;
     21330        }
     21331     }
     21332+#endif
     21333 }
     21334 
     21335 NCURSES_EXPORT(int)
     21336@@ -81,17 +94,20 @@
     21337     WINDOWLIST *p, *q;
     21338     int i;
     21339     int result = ERR;
     21340+#ifdef USE_SP_WINDOWLIST
     21341+    SCREEN *sp = _nc_screen_of(win);   /* pretend this is parameter */
     21342+#endif
     21343 
     21344     T((T_CALLED("_nc_freewin(%p)"), win));
     21345 
    2050821346     if (win != 0) {
    20509         if (_nc_try_global(curses) == 0) {
     21347-       if (_nc_try_global(curses) == 0) {
     21348+       if (_nc_nonsp_try_global(curses) == 0) {
    2051021349            q = 0;
    2051121350-           for (each_window(p)) {
    20512 +           for (each_window(SP, p)) {
     21351+           for (each_window(SP_PARM, p)) {
    2051321352                if (&(p->win) == win) {
    2051421353                    remove_window_from_screen(win);
    2051521354                    if (q == 0)
    2051621355-                       _nc_windows = p->next;
    20517 +                       WindowList(SP) = p->next;
     21356+                       WindowList(SP_PARM) = p->next;
    2051821357                    else
    2051921358                        q->next = p->next;
    2052021359 
    20521 @@ -115,7 +116,8 @@
     21360@@ -108,30 +124,34 @@
     21361                }
     21362                q = p;
     21363            }
     21364-           _nc_unlock_global(curses);
     21365+           _nc_nonsp_unlock_global(curses);
     21366        }
     21367     }
     21368     returnCode(result);
    2052221369 }
    2052321370 
     
    2052921376     WINDOW *win;
    2053021377     NCURSES_CH_T *ptr;
    20531 @@ -127,11 +129,13 @@
     21378     int i;
     21379 
     21380-    T((T_CALLED("newwin(%d,%d,%d,%d)"), num_lines, num_columns, begy, begx));
     21381+    T((T_CALLED("newwin(%p, %d,%d,%d,%d)"), SP_PARM, num_lines, num_columns,
     21382+       begy, begx));
     21383 
     21384     if (begy < 0 || begx < 0 || num_lines < 0 || num_columns < 0)
    2053221385        returnWin(0);
    2053321386 
     
    2054621399 
    2054721400     for (i = 0; i < num_lines; i++) {
    20548 @@ -149,9 +153,22 @@
     21401@@ -149,12 +169,28 @@
    2054921402     returnWin(win);
    2055021403 }
     
    2055421407+newwin(int num_lines, int num_columns, int begy, int begx)
    2055521408+{
    20556 +    return NCURSES_SP_NAME(newwin) (CURRENT_SCREEN,
    20557 +                                   num_lines, num_columns,
    20558 +                                   begy, begx);
     21409+    WINDOW *win;
     21410+    _nc_sp_lock_global(curses);
     21411+    win = NCURSES_SP_NAME(newwin) (CURRENT_SCREEN,
     21412+                                  num_lines, num_columns, begy, begx);
     21413+    _nc_sp_unlock_global(curses);
     21414+    return (win);
    2055921415+}
    2056021416+#endif
     
    2056321419 derwin(WINDOW *orig, int num_lines, int num_columns, int begy, int begx)
    2056421420 {
    20565 +#if NCURSES_SP_FUNCS
    20566 +    SCREEN *sp = CURRENT_SCREEN;
    20567 +#endif
    2056821421     WINDOW *win;
    2056921422     int i;
    2057021423     int flags = _SUBWIN;
    20571 @@ -177,8 +194,10 @@
     21424+#if NCURSES_SP_FUNCS
     21425+    SCREEN *sp = _nc_screen_of(orig);
     21426+#endif
     21427 
     21428     T((T_CALLED("derwin(%p,%d,%d,%d,%d)"), orig, num_lines, num_columns,
     21429        begy, begx));
     21430@@ -177,8 +213,10 @@
    2057221431     if (orig->_flags & _ISPAD)
    2057321432        flags |= _ISPAD;
     
    2058221441 
    2058321442     win->_pary = begy;
    20584 @@ -211,16 +230,22 @@
     21443@@ -211,16 +249,22 @@
    2058521444 }
    2058621445 
     
    2059721456     WINDOWLIST *wp;
    2059821457     WINDOW *win;
    20599      bool is_pad = (flags & _ISPAD);
     21458-    bool is_pad = (flags & _ISPAD);
     21459+    bool is_padwin = (flags & _ISPAD);
    2060021460 
    2060121461-    T((T_CALLED("_nc_makenew(%d,%d,%d,%d)"), num_lines, num_columns, begy, begx));
     
    2060821468 
    2060921469     if (!dimension_limit(num_lines) || !dimension_limit(num_columns))
    20610 @@ -244,14 +269,16 @@
     21470@@ -236,7 +280,7 @@
     21471        returnWin(0);
     21472     }
     21473 
     21474-    _nc_lock_global(curses);
     21475+    _nc_nonsp_lock_global(curses);
     21476 
     21477     win->_curx = 0;
     21478     win->_cury = 0;
     21479@@ -244,14 +288,16 @@
    2061121480     win->_maxx = num_columns - 1;
    2061221481     win->_begy = begy;
     
    2062121490-    win->_clear = is_pad ? FALSE : (num_lines == screen_lines
    2062221491-                                   && num_columns == screen_columns);
    20623 +    win->_clear = (is_pad
     21492+    win->_clear = (is_padwin
    2062421493+                  ? FALSE
    2062521494+                  : (num_lines == screen_lines(SP_PARM)
     
    2062821497     win->_idcok = TRUE;
    2062921498     win->_scroll = FALSE;
    20630 @@ -300,19 +327,19 @@
     21499@@ -300,23 +346,23 @@
    2063121500        if_USE_SCROLL_HINTS(win->_line[i].oldindex = i);
    2063221501     }
    2063321502 
    2063421503-    if (!is_pad && (begx + num_columns == screen_columns)) {
    20635 +    if (!is_pad && (begx + num_columns == screen_columns(SP_PARM))) {
     21504+    if (!is_padwin && (begx + num_columns == screen_columns(SP_PARM))) {
    2063621505        win->_flags |= _ENDLINE;
    2063721506 
     
    2065421523     T((T_CREATE("window %p"), win));
    2065521524 
    20656 @@ -320,19 +347,37 @@
     21525-    _nc_unlock_global(curses);
     21526+    _nc_nonsp_unlock_global(curses);
    2065721527     returnWin(win);
    2065821528 }
    2065921529 
    20660 +#if NCURSES_SP_FUNCS
    20661 +NCURSES_EXPORT(WINDOW *)
    20662 +_nc_makenew(int num_lines, int num_columns, int begy, int begx, int flags)
    20663 +{
    20664 +    return NCURSES_SP_NAME(_nc_makenew) (CURRENT_SCREEN,
    20665 +                                        num_lines, num_columns,
    20666 +                                        begy, begx, flags);
    20667 +}
    20668 +#endif
    20669 +
    20670  /*
    20671   * wgetch() and other functions with a WINDOW* parameter may use a SCREEN*
     21530@@ -325,14 +371,22 @@
    2067221531  * internally, and it is useful to allow those to be invoked without switching
    2067321532  * SCREEN's, e.g., for multi-threaded applications.
     
    2070221561diff -Naur ncurses-5.7.orig/ncurses/base/lib_nl.c ncurses-5.7/ncurses/base/lib_nl.c
    2070321562--- ncurses-5.7.orig/ncurses/base/lib_nl.c      2000-12-09 18:43:27.000000000 -0800
    20704 +++ ncurses-5.7/ncurses/base/lib_nl.c   2009-07-19 15:04:13.000000000 -0700
     21563+++ ncurses-5.7/ncurses/base/lib_nl.c   2009-09-12 08:51:50.000000000 -0700
    2070521564@@ -1,5 +1,5 @@
    2070621565 /****************************************************************************
     
    2078821647diff -Naur ncurses-5.7.orig/ncurses/base/lib_pad.c ncurses-5.7/ncurses/base/lib_pad.c
    2078921648--- ncurses-5.7.orig/ncurses/base/lib_pad.c     2006-10-14 13:47:13.000000000 -0700
    20790 +++ ncurses-5.7/ncurses/base/lib_pad.c  2009-07-19 15:04:13.000000000 -0700
     21649+++ ncurses-5.7/ncurses/base/lib_pad.c  2009-09-12 08:51:50.000000000 -0700
    2079121650@@ -1,5 +1,5 @@
    2079221651 /****************************************************************************
     
    2094521804diff -Naur ncurses-5.7.orig/ncurses/base/lib_printw.c ncurses-5.7/ncurses/base/lib_printw.c
    2094621805--- ncurses-5.7.orig/ncurses/base/lib_printw.c  2006-12-17 11:21:39.000000000 -0800
    20947 +++ ncurses-5.7/ncurses/base/lib_printw.c       2009-07-19 15:03:53.000000000 -0700
     21806+++ ncurses-5.7/ncurses/base/lib_printw.c       2009-09-12 08:51:30.000000000 -0700
    2094821807@@ -1,5 +1,5 @@
    2094921808 /****************************************************************************
     
    2098021839diff -Naur ncurses-5.7.orig/ncurses/base/lib_redrawln.c ncurses-5.7/ncurses/base/lib_redrawln.c
    2098121840--- ncurses-5.7.orig/ncurses/base/lib_redrawln.c        2007-10-13 13:08:56.000000000 -0700
    20982 +++ ncurses-5.7/ncurses/base/lib_redrawln.c     2009-07-19 15:03:53.000000000 -0700
     21841+++ ncurses-5.7/ncurses/base/lib_redrawln.c     2009-09-12 08:51:30.000000000 -0700
    2098321842@@ -1,5 +1,5 @@
    2098421843 /****************************************************************************
     
    2104821907diff -Naur ncurses-5.7.orig/ncurses/base/lib_refresh.c ncurses-5.7/ncurses/base/lib_refresh.c
    2104921908--- ncurses-5.7.orig/ncurses/base/lib_refresh.c 2007-09-29 13:39:34.000000000 -0700
    21050 +++ ncurses-5.7/ncurses/base/lib_refresh.c      2009-07-19 15:04:06.000000000 -0700
     21909+++ ncurses-5.7/ncurses/base/lib_refresh.c      2009-09-12 08:51:43.000000000 -0700
    2105121910@@ -1,5 +1,5 @@
    2105221911 /****************************************************************************
     
    2118222041diff -Naur ncurses-5.7.orig/ncurses/base/lib_restart.c ncurses-5.7/ncurses/base/lib_restart.c
    2118322042--- ncurses-5.7.orig/ncurses/base/lib_restart.c 2008-06-21 10:31:22.000000000 -0700
    21184 +++ ncurses-5.7/ncurses/base/lib_restart.c      2009-07-19 15:03:58.000000000 -0700
     22043+++ ncurses-5.7/ncurses/base/lib_restart.c      2009-09-12 08:52:09.000000000 -0700
    2118522044@@ -1,5 +1,5 @@
    2118622045 /****************************************************************************
     
    2119822057 
    2119922058 /*
    21200 @@ -44,49 +45,52 @@
     22059@@ -44,49 +45,58 @@
    2120122060 #define _POSIX_SOURCE
    2120222061 #endif
     
    2120522064-
    2120622065-MODULE_ID("$Id: lib_restart.c,v 1.10 2008/06/21 17:31:22 tom Exp $")
    21207 +MODULE_ID("$Id: lib_restart.c,v 1.11 2009/05/02 20:47:42 tom Exp $")
     22066+MODULE_ID("$Id: lib_restart.c,v 1.12 2009/08/30 17:59:13 tom Exp $")
    2120822067 
    2120922068 NCURSES_EXPORT(int)
     
    2121522074 {
    2121622075     int result;
     22076+#ifdef USE_TERM_DRIVER
     22077+    TERMINAL *new_term;
     22078+#endif
    2121722079 
    2121822080-    T((T_CALLED("restartterm(%s,%d,%p)"), termp, filenum, errret));
    2121922081+    T((T_CALLED("restartterm(%p,%s,%d,%p)"), SP_PARM, termp, filenum, errret));
    2122022082 
    21221      if (setupterm(termp, filenum, errret) != OK) {
     22083-    if (setupterm(termp, filenum, errret) != OK) {
     22084+    if (TINFO_SETUP_TERM(&new_term, termp, filenum, errret, FALSE) != OK) {
    2122222085        result = ERR;
    2122322086-    } else if (SP != 0) {
     
    2123722100+       int savenl = SP_PARM->_nl;
    2123822101+
     22102+#ifdef USE_TERM_DRIVER
     22103+       SP_PARM->_term = new_term;
     22104+#endif
    2123922105+       if (saveecho) {
    2124022106+           NCURSES_SP_NAME(echo) (NCURSES_SP_ARG);
     
    2125322119+           NCURSES_SP_NAME(nocbreak) (NCURSES_SP_ARG);
    2125422120+           NCURSES_SP_NAME(raw) (NCURSES_SP_ARG);
    21255 +       } else {
     22121        } else {
     22122-           nocbreak();
     22123-           noraw();
    2125622124+           NCURSES_SP_NAME(nocbreak) (NCURSES_SP_ARG);
    2125722125+           NCURSES_SP_NAME(noraw) (NCURSES_SP_ARG);
     
    2125922127+       if (savenl) {
    2126022128+           NCURSES_SP_NAME(nl) (NCURSES_SP_ARG);
    21261         } else {
    21262 -           nocbreak();
    21263 -           noraw();
     22129+       } else {
    2126422130+           NCURSES_SP_NAME(nonl) (NCURSES_SP_ARG);
    2126522131        }
     
    2127822144 
    2127922145        result = OK;
    21280 @@ -95,3 +99,11 @@
     22146@@ -95,3 +105,11 @@
    2128122147     }
    2128222148     returnCode(result);
     
    2129222158diff -Naur ncurses-5.7.orig/ncurses/base/lib_screen.c ncurses-5.7/ncurses/base/lib_screen.c
    2129322159--- ncurses-5.7.orig/ncurses/base/lib_screen.c  2008-08-16 12:05:37.000000000 -0700
    21294 +++ ncurses-5.7/ncurses/base/lib_screen.c       2009-07-19 15:04:06.000000000 -0700
     22160+++ ncurses-5.7/ncurses/base/lib_screen.c       2009-09-12 08:51:43.000000000 -0700
    2129522161@@ -1,5 +1,5 @@
    2129622162 /****************************************************************************
     
    2148022346diff -Naur ncurses-5.7.orig/ncurses/base/lib_set_term.c ncurses-5.7/ncurses/base/lib_set_term.c
    2148122347--- ncurses-5.7.orig/ncurses/base/lib_set_term.c        2008-08-04 11:11:12.000000000 -0700
    21482 +++ ncurses-5.7/ncurses/base/lib_set_term.c     2009-07-19 15:04:11.000000000 -0700
     22348+++ ncurses-5.7/ncurses/base/lib_set_term.c     2009-09-12 08:52:09.000000000 -0700
    2148322349@@ -1,5 +1,5 @@
    2148422350 /****************************************************************************
     
    2149622362 
    2149722363 /*
    21498 @@ -44,7 +45,11 @@
    21499  #include <term.h>              /* cur_term */
     22364@@ -41,10 +42,21 @@
     22365 
     22366 #include <curses.priv.h>
     22367 
     22368-#include <term.h>              /* cur_term */
    2150022369 #include <tic.h>
    2150122370 
     
    2150522374+#endif
    2150622375+
    21507 +MODULE_ID("$Id: lib_set_term.c,v 1.124 2009/06/27 21:36:14 tom Exp $")
     22376+MODULE_ID("$Id: lib_set_term.c,v 1.126 2009/09/05 18:18:10 tom Exp $")
     22377+
     22378+#ifdef USE_TERM_DRIVER
     22379+#define MaxColors      InfoOf(sp).maxcolors
     22380+#define NumLabels      InfoOf(sp).numlabels
     22381+#else
     22382+#define MaxColors      max_colors
     22383+#define NumLabels      num_labels
     22384+#endif
    2150822385 
    2150922386 NCURSES_EXPORT(SCREEN *)
    2151022387 set_term(SCREEN *screenp)
    21511 @@ -256,6 +261,9 @@
     22388@@ -61,7 +73,7 @@
     22389     newSP = SP;
     22390 
     22391     if (newSP != 0) {
     22392-       set_curterm(newSP->_term);
     22393+       TINFO_SET_CURTERM(newSP, newSP->_term);
     22394 #if !USE_REENTRANT
     22395        curscr = newSP->_curscr;
     22396        newscr = newSP->_newscr;
     22397@@ -70,7 +82,7 @@
     22398        COLOR_PAIRS = newSP->_pair_count;
     22399 #endif
     22400     } else {
     22401-       set_curterm(0);
     22402+       TINFO_SET_CURTERM(oldSP, 0);
     22403 #if !USE_REENTRANT
     22404        curscr = 0;
     22405        newscr = 0;
     22406@@ -129,6 +141,19 @@
     22407 
     22408     _nc_lock_global(curses);
     22409     if (delink_screen(sp)) {
     22410+#ifdef USE_SP_RIPOFF
     22411+       ripoff_t *rop;
     22412+       if (safe_ripoff_sp && safe_ripoff_sp != safe_ripoff_stack) {
     22413+           for (rop = safe_ripoff_stack;
     22414+                rop != safe_ripoff_sp && (rop - safe_ripoff_stack) < N_RIPS;
     22415+                rop++) {
     22416+               if (rop->win) {
     22417+                   (void) delwin(rop->win);
     22418+                   rop->win = 0;
     22419+               }
     22420+           }
     22421+       }
     22422+#endif
     22423 
     22424        (void) _nc_freewin(sp->_curscr);
     22425        (void) _nc_freewin(sp->_newscr);
     22426@@ -176,7 +201,7 @@
     22427            free(sp->_setbuf);
     22428        }
     22429 
     22430-       del_curterm(sp->_term);
     22431+       NCURSES_SP_NAME(del_curterm) (NCURSES_SP_ARGx sp->_term);
     22432        free(sp);
     22433 
     22434        /*
     22435@@ -248,6 +273,41 @@
     22436 }
     22437 #endif
     22438 
     22439+#if NCURSES_SP_FUNCS
     22440+/*
     22441+ * In case of handling multiple screens, we need to have a screen before
     22442+ * initialization in setupscreen takes place.  This is to extend the substitute
     22443+ * for some of the stuff in _nc_prescreen, especially for slk and ripoff
     22444+ * handling which should be done per screen.
     22445+ */
     22446+NCURSES_EXPORT(SCREEN *)
     22447+new_prescr(void)
     22448+{
     22449+    SCREEN *sp = _nc_alloc_screen_sp();
     22450+    if (sp) {
     22451+       sp->rsp = sp->rippedoff;
     22452+       sp->_filtered = _nc_prescreen.filter_mode;
     22453+       sp->_use_env = _nc_prescreen.use_env;
     22454+#if NCURSES_NO_PADDING
     22455+       sp->_no_padding = _nc_prescreen._no_padding;
     22456+#endif
     22457+       sp->slk_format = 0;
     22458+       sp->_slk = 0;
     22459+       sp->_prescreen = TRUE;
     22460+       SP_PRE_INIT(sp);
     22461+#if USE_REENTRANT
     22462+       sp->_TABSIZE = _nc_prescreen._TABSIZE;
     22463+       sp->_ESCDELAY = _nc_prescreen._ESCDELAY;
     22464+#endif
     22465+       _nc_set_screen(sp);
     22466+    }
     22467+    return sp;
     22468+}
     22469+#endif
     22470+
     22471+#define ReturnScreenError() _nc_set_screen(0); \
     22472+                            returnCode(ERR)
     22473+
     22474 /* OS-independent screen initializations */
     22475 NCURSES_EXPORT(int)
     22476 _nc_setupscreen(int slines GCC_UNUSED,
     22477@@ -256,6 +316,9 @@
    2151222478                bool filtered,
    2151322479                int slk_format)
     
    2151922485     int bottom_stolen = 0;
    2152022486     bool support_cookies = USE_XMC_SUPPORT;
    21521 @@ -272,6 +280,9 @@
     22487@@ -272,6 +335,9 @@
    2152222488     }
    2152322489 
     
    2152922495     _nc_screen_chain = SP;
    2153022496 
    21531 @@ -546,7 +557,7 @@
     22497@@ -292,6 +358,9 @@
     22498     if (filtered) {
     22499        slines = 1;
     22500        SET_LINES(slines);
     22501+#ifdef USE_TERM_DRIVER
     22502+       CallDriver(sp, setfilter);
     22503+#else
     22504        clear_screen = 0;
     22505        cursor_down = parm_down_cursor = 0;
     22506        cursor_address = 0;
     22507@@ -299,6 +368,7 @@
     22508        row_address = 0;
     22509 
     22510        cursor_home = carriage_return;
     22511+#endif
     22512        T(("filter screensize %dx%d", LINES, COLS));
     22513     }
     22514 #ifdef __DJGPP__
     22515@@ -364,9 +434,9 @@
     22516        char sep1, sep2;
     22517        int count = sscanf(env, "%d%c%d%c", &fg, &sep1, &bg, &sep2);
     22518        if (count >= 1) {
     22519-           SP->_default_fg = (fg >= 0 && fg < max_colors) ? fg : C_MASK;
     22520+           SP->_default_fg = (fg >= 0 && fg < MaxColors) ? fg : C_MASK;
     22521            if (count >= 3) {
     22522-               SP->_default_bg = (bg >= 0 && bg < max_colors) ? bg : C_MASK;
     22523+               SP->_default_bg = (bg >= 0 && bg < MaxColors) ? bg : C_MASK;
     22524            }
     22525            TR(TRACE_CHARPUT | TRACE_MOVE,
     22526               ("from environment assumed fg=%d, bg=%d",
     22527@@ -390,20 +460,20 @@
     22528            p = extract_fgbg(p, &(SP->_default_bg));
     22529        TR(TRACE_CHARPUT | TRACE_MOVE, ("decoded fg=%d, bg=%d",
     22530                                        SP->_default_fg, SP->_default_bg));
     22531-       if (SP->_default_fg >= max_colors) {
     22532+       if (SP->_default_fg >= MaxColors) {
     22533            if (set_a_foreground != ABSENT_STRING
     22534                && !strcmp(set_a_foreground, "\033[3%p1%dm")) {
     22535                set_a_foreground = "\033[3%?%p1%{8}%>%t9%e%p1%d%;m";
     22536            } else {
     22537-               SP->_default_fg %= max_colors;
     22538+               SP->_default_fg %= MaxColors;
     22539            }
     22540        }
     22541-       if (SP->_default_bg >= max_colors) {
     22542+       if (SP->_default_bg >= MaxColors) {
     22543            if (set_a_background != ABSENT_STRING
     22544                && !strcmp(set_a_background, "\033[4%p1%dm")) {
     22545                set_a_background = "\033[4%?%p1%{8}%>%t9%e%p1%d%;m";
     22546            } else {
     22547-               SP->_default_bg %= max_colors;
     22548+               SP->_default_bg %= MaxColors;
     22549            }
     22550        }
     22551     }
     22552@@ -546,7 +616,7 @@
    2153222553     curscr = SP->_curscr;
    2153322554 #endif
     
    2153822559 
    2153922560     newscr->_clear = TRUE;
    21540 @@ -555,8 +566,8 @@
     22561@@ -555,8 +625,8 @@
    2154122562     def_shell_mode();
    2154222563     def_prog_mode();
     
    2154922570 
    2155022571        /* If we must simulate soft labels, grab off the line to be used.
    21551 @@ -595,7 +606,7 @@
     22572@@ -564,7 +634,7 @@
     22573           formats (4-4 or 3-2-3) for which there may be some hardware
     22574           support. */
     22575        if (rop->hook == _nc_slk_initialize)
     22576-           if (!(num_labels <= 0 || !SLK_STDFMT(slk_format)))
     22577+           if (!(NumLabels <= 0 || !SLK_STDFMT(slk_format)))
     22578                continue;
     22579        if (rop->hook) {
     22580            int count;
     22581@@ -595,7 +665,7 @@
    2155222582        }
    2155322583     }
     
    2155822588     T(("creating stdscr"));
    2155922589     assert((SP->_lines_avail + SP->_topstolen + bottom_stolen) == slines);
    21560 @@ -615,27 +626,39 @@
     22590@@ -615,27 +685,39 @@
    2156122591  * off from the top or bottom.
    2156222592  */
     
    2160622636     START_TRACE();
    2160722637     T((T_CALLED("ripoffline(%d,%p)"), line, init));
    21608 @@ -643,5 +666,15 @@
     22638@@ -643,5 +725,15 @@
    2160922639     if (line == 0)
    2161022640        returnCode(OK);
     
    2162522655diff -Naur ncurses-5.7.orig/ncurses/base/lib_slkatrof.c ncurses-5.7/ncurses/base/lib_slkatrof.c
    2162622656--- ncurses-5.7.orig/ncurses/base/lib_slkatrof.c        2005-01-08 15:01:32.000000000 -0800
    21627 +++ ncurses-5.7/ncurses/base/lib_slkatrof.c     2009-07-19 15:02:22.000000000 -0700
     22657+++ ncurses-5.7/ncurses/base/lib_slkatrof.c     2009-09-12 08:51:17.000000000 -0700
    2162822658@@ -1,5 +1,5 @@
    2162922659 /****************************************************************************
     
    2167322703diff -Naur ncurses-5.7.orig/ncurses/base/lib_slkatron.c ncurses-5.7/ncurses/base/lib_slkatron.c
    2167422704--- ncurses-5.7.orig/ncurses/base/lib_slkatron.c        2005-01-08 15:02:01.000000000 -0800
    21675 +++ ncurses-5.7/ncurses/base/lib_slkatron.c     2009-07-19 15:02:22.000000000 -0700
     22705+++ ncurses-5.7/ncurses/base/lib_slkatron.c     2009-09-12 08:51:17.000000000 -0700
    2167622706@@ -1,5 +1,5 @@
    2167722707 /****************************************************************************
     
    2172122751diff -Naur ncurses-5.7.orig/ncurses/base/lib_slkatr_set.c ncurses-5.7/ncurses/base/lib_slkatr_set.c
    2172222752--- ncurses-5.7.orig/ncurses/base/lib_slkatr_set.c      2005-01-28 13:11:53.000000000 -0800
    21723 +++ ncurses-5.7/ncurses/base/lib_slkatr_set.c   2009-07-19 15:02:22.000000000 -0700
     22753+++ ncurses-5.7/ncurses/base/lib_slkatr_set.c   2009-09-12 08:51:17.000000000 -0700
    2172422754@@ -1,5 +1,5 @@
    2172522755 /****************************************************************************
     
    2179222822diff -Naur ncurses-5.7.orig/ncurses/base/lib_slkatrset.c ncurses-5.7/ncurses/base/lib_slkatrset.c
    2179322823--- ncurses-5.7.orig/ncurses/base/lib_slkatrset.c       2005-01-08 13:46:47.000000000 -0800
    21794 +++ ncurses-5.7/ncurses/base/lib_slkatrset.c    2009-07-19 15:02:22.000000000 -0700
     22824+++ ncurses-5.7/ncurses/base/lib_slkatrset.c    2009-09-12 08:51:17.000000000 -0700
    2179522825@@ -1,5 +1,5 @@
    2179622826 /****************************************************************************
     
    2183222862diff -Naur ncurses-5.7.orig/ncurses/base/lib_slkattr.c ncurses-5.7/ncurses/base/lib_slkattr.c
    2183322863--- ncurses-5.7.orig/ncurses/base/lib_slkattr.c 2005-01-08 13:44:28.000000000 -0800
    21834 +++ ncurses-5.7/ncurses/base/lib_slkattr.c      2009-07-19 15:02:22.000000000 -0700
     22864+++ ncurses-5.7/ncurses/base/lib_slkattr.c      2009-09-12 08:51:17.000000000 -0700
    2183522865@@ -1,5 +1,5 @@
    2183622866 /****************************************************************************
     
    2187622906diff -Naur ncurses-5.7.orig/ncurses/base/lib_slk.c ncurses-5.7/ncurses/base/lib_slk.c
    2187722907--- ncurses-5.7.orig/ncurses/base/lib_slk.c     2008-09-27 07:07:33.000000000 -0700
    21878 +++ ncurses-5.7/ncurses/base/lib_slk.c  2009-07-19 15:04:17.000000000 -0700
     22908+++ ncurses-5.7/ncurses/base/lib_slk.c  2009-09-12 08:52:04.000000000 -0700
    2187922909@@ -1,5 +1,5 @@
    2188022910 /****************************************************************************
     
    2188422914  * Permission is hereby granted, free of charge, to any person obtaining a  *
    2188522915  * copy of this software and associated documentation files (the            *
    21886 @@ -41,26 +41,81 @@
     22916@@ -41,26 +41,94 @@
    2188722917  */
    2188822918 
     
    2189722927+#endif
    2189822928+
    21899 +MODULE_ID("$Id: lib_slk.c,v 1.40 2009/07/19 00:34:07 tom Exp $")
     22929+MODULE_ID("$Id: lib_slk.c,v 1.42 2009/08/15 23:05:02 tom Exp $")
     22930+
     22931+#ifdef USE_TERM_DRIVER
     22932+#define NumLabels    InfoOf(SP_PARM).numlabels
     22933+#define NoColorVideo InfoOf(SP_PARM).nocolorvideo
     22934+#define LabelWidth   InfoOf(SP_PARM).labelwidth
     22935+#define LabelHeight  InfoOf(SP_PARM).labelheight
     22936+#else
     22937+#define NumLabels    num_labels
     22938+#define NoColorVideo no_color_video
     22939+#define LabelWidth   label_width
     22940+#define LabelHeight  label_height
     22941+#endif
    2190022942 
    2190122943 /*
     
    2196223004+                   x += (i == 2 || i == 4) ? gap : 1;
    2196323005+               }
    21964 +           } else
    21965 +               returnCode(slk_failed(NCURSES_SP_ARG));
     23006+           } else {
     23007+               return slk_failed(NCURSES_SP_ARG);
     23008+           }
    2196623009+       }
    2196723010+    }
     
    2197423017  * Initialize soft labels.
    2197523018  * Called from newterm()
    21976 @@ -68,108 +123,91 @@
     23019@@ -68,108 +136,91 @@
    2197723020 NCURSES_EXPORT(int)
    2197823021 _nc_slk_initialize(WINDOW *stwin, int cols)
     
    2199823041+    assert(term);
    2199923042+
    22000 +    numlab = InfoOf(SP_PARM).numlabels;
     23043+    numlab = NumLabels;
    2200123044+
    2200223045+    if (SP_PARM->_slk) {       /* we did this already, so simply return */
     
    2201923062-    if ((no_color_video & 1) == 0)
    2202023063-       SetAttr(SP->_slk->attr, A_STANDOUT);
    22021 +    if ((InfoOf(SP_PARM).nocolorvideo & 1) == 0)
     23064+    if ((NoColorVideo & 1) == 0)
    2202223065+       SetAttr(SP_PARM->_slk->attr, A_STANDOUT);
    2202323066     else
     
    2204423087+                            : MAX_SKEY(SP_PARM->slk_format));
    2204523088+    SP_PARM->_slk->maxlen = ((numlab > 0)
    22046 +                            ? InfoOf(SP_PARM).labelwidth * InfoOf(SP_PARM).labelheight
     23089+                            ? LabelWidth * LabelHeight
    2204723090+                            : MAX_SKEY_LEN(SP_PARM->slk_format));
    2204823091+    SP_PARM->_slk->labcnt = ((SP_PARM->_slk->maxlab < MAX_SKEY(SP_PARM->slk_format))
     
    2209023133-       if (gap < 1)
    2209123134-           gap = 1;
    22092 -
     23135+    res = _nc_format_slks(NCURSES_SP_ARGx cols);
     23136 
    2209323137-       for (i = x = 0; i < SP->_slk->maxlab; i++) {
    2209423138-           SP->_slk->ent[i].ent_x = x;
     
    2211123155-               int gap = (cols - (SP->_slk->maxlab * max_length) - 5)
    2211223156-               / 2;
    22113 +    res = _nc_format_slks(NCURSES_SP_ARGx cols);
    22114  
     23157-
    2211523158-               if (gap < 1)
    2211623159-                   gap = 1;
     
    2213923182     returnCode(res);
    2214023183 }
    22141 @@ -178,14 +216,24 @@
     23184@@ -178,14 +229,24 @@
    2214223185  * Restore the soft labels on the screen.
    2214323186  */
     
    2217323216diff -Naur ncurses-5.7.orig/ncurses/base/lib_slkclear.c ncurses-5.7/ncurses/base/lib_slkclear.c
    2217423217--- ncurses-5.7.orig/ncurses/base/lib_slkclear.c        2007-12-29 09:51:47.000000000 -0800
    22175 +++ ncurses-5.7/ncurses/base/lib_slkclear.c     2009-07-19 15:02:22.000000000 -0700
     23218+++ ncurses-5.7/ncurses/base/lib_slkclear.c     2009-09-12 08:51:17.000000000 -0700
    2217623219@@ -1,5 +1,5 @@
    2217723220 /****************************************************************************
     
    2222923272diff -Naur ncurses-5.7.orig/ncurses/base/lib_slkcolor.c ncurses-5.7/ncurses/base/lib_slkcolor.c
    2223023273--- ncurses-5.7.orig/ncurses/base/lib_slkcolor.c        2005-01-28 13:11:53.000000000 -0800
    22231 +++ ncurses-5.7/ncurses/base/lib_slkcolor.c     2009-07-19 15:02:22.000000000 -0700
     23274+++ ncurses-5.7/ncurses/base/lib_slkcolor.c     2009-09-12 08:51:17.000000000 -0700
    2223223275@@ -1,5 +1,5 @@
    2223323276 /****************************************************************************
     
    2229323336diff -Naur ncurses-5.7.orig/ncurses/base/lib_slkinit.c ncurses-5.7/ncurses/base/lib_slkinit.c
    2229423337--- ncurses-5.7.orig/ncurses/base/lib_slkinit.c 2008-01-12 12:23:39.000000000 -0800
    22295 +++ ncurses-5.7/ncurses/base/lib_slkinit.c      2009-07-19 15:04:03.000000000 -0700
     23338+++ ncurses-5.7/ncurses/base/lib_slkinit.c      2009-09-12 08:51:40.000000000 -0700
    2229623339@@ -1,5 +1,5 @@
    2229723340 /****************************************************************************
     
    2235823401diff -Naur ncurses-5.7.orig/ncurses/base/lib_slklab.c ncurses-5.7/ncurses/base/lib_slklab.c
    2235923402--- ncurses-5.7.orig/ncurses/base/lib_slklab.c  2003-03-29 14:53:48.000000000 -0800
    22360 +++ ncurses-5.7/ncurses/base/lib_slklab.c       2009-07-19 15:02:22.000000000 -0700
     23403+++ ncurses-5.7/ncurses/base/lib_slklab.c       2009-09-12 08:51:17.000000000 -0700
    2236123404@@ -1,5 +1,5 @@
    2236223405 /****************************************************************************
     
    2240523448diff -Naur ncurses-5.7.orig/ncurses/base/lib_slkrefr.c ncurses-5.7/ncurses/base/lib_slkrefr.c
    2240623449--- ncurses-5.7.orig/ncurses/base/lib_slkrefr.c 2008-09-27 07:07:53.000000000 -0700
    22407 +++ ncurses-5.7/ncurses/base/lib_slkrefr.c      2009-07-19 15:04:06.000000000 -0700
     23450+++ ncurses-5.7/ncurses/base/lib_slkrefr.c      2009-09-12 08:52:07.000000000 -0700
    2240823451@@ -1,5 +1,5 @@
    2240923452 /****************************************************************************
     
    2241323456  * Permission is hereby granted, free of charge, to any person obtaining a  *
    2241423457  * copy of this software and associated documentation files (the            *
    22415 @@ -38,9 +38,12 @@
     23458@@ -38,9 +38,18 @@
    2241623459  *     Write SLK window to the (virtual) screen.
    2241723460  */
     
    2242423467+#endif
    2242523468+
    22426 +MODULE_ID("$Id: lib_slkrefr.c,v 1.21 2009/06/06 20:26:17 tom Exp $")
     23469+MODULE_ID("$Id: lib_slkrefr.c,v 1.24 2009/08/29 18:43:13 tom Exp $")
     23470+
     23471+#ifdef USE_TERM_DRIVER
     23472+#define NumLabels    InfoOf(SP_PARM).numlabels
     23473+#else
     23474+#define NumLabels    num_labels
     23475+#endif
    2242723476 
    2242823477 /*
    2242923478  * Paint the info line for the PC style SLK emulation.
    22430 @@ -66,31 +69,47 @@
     23479@@ -66,31 +75,47 @@
    2243123480  * Write the soft labels to the soft-key window.
    2243223481  */
     
    2244623495+    slk = sp->_slk;
    2244723496+    fmt = sp->slk_format;
    22448 +    numlab = InfoOf(sp).numlabels;
     23497+    numlab = NumLabels;
    2244923498+
    2245023499+    if (slk->hidden)
     
    2247123520-                       wattrset(slk->win, AttrOf(SP->_slk->attr));
    2247223521+                   if (sp->_slk) {
    22473 +                       wattrset(slk->win, AttrOf(sp->_slk->attr));
     23522+                       (void) wattrset(slk->win, AttrOf(sp->_slk->attr));
    2247423523                    }
    2247523524                    waddstr(slk->win, slk->ent[i].form_text);
     
    2247823527                       for the label window */
    2247923528-                   wattrset(slk->win, WINDOW_ATTRS(stdscr));
    22480 +                   wattrset(slk->win, WINDOW_ATTRS(StdScreen(sp)));
     23529+                   (void) wattrset(slk->win, WINDOW_ATTRS(StdScreen(sp)));
    2248123530                }
    2248223531            }
    2248323532            slk->ent[i].dirty = FALSE;
    22484 @@ -98,7 +117,10 @@
     23533@@ -98,7 +123,10 @@
    2248523534     }
    2248623535     slk->dirty = FALSE;
     
    2249423543            TPUTS_TRACE("label_off");
    2249523544            putp(label_off);
    22496 @@ -106,6 +128,7 @@
     23545@@ -106,6 +134,7 @@
    2249723546            TPUTS_TRACE("label_on");
    2249823547            putp(label_on);
     
    2250223551 }
    2250323552 
    22504 @@ -113,32 +136,48 @@
     23553@@ -113,32 +142,48 @@
    2250523554  * Refresh the soft labels.
    2250623555  */
     
    2252023569-    slk_intern_refresh(SP->_slk);
    2252123570+    slk_intern_refresh(SP_PARM);
    22522  
    22523 -    returnCode(wnoutrefresh(SP->_slk->win));
     23571+
    2252423572+    returnCode(wnoutrefresh(SP_PARM->_slk->win));
    2252523573+}
    22526 +
     23574 
     23575-    returnCode(wnoutrefresh(SP->_slk->win));
    2252723576+#if NCURSES_SP_FUNCS
    2252823577+NCURSES_EXPORT(int)
     
    2256523614diff -Naur ncurses-5.7.orig/ncurses/base/lib_slkset.c ncurses-5.7/ncurses/base/lib_slkset.c
    2256623615--- ncurses-5.7.orig/ncurses/base/lib_slkset.c  2007-10-13 13:08:46.000000000 -0700
    22567 +++ ncurses-5.7/ncurses/base/lib_slkset.c       2009-07-19 15:02:22.000000000 -0700
     23616+++ ncurses-5.7/ncurses/base/lib_slkset.c       2009-09-12 08:51:17.000000000 -0700
    2256823617@@ -1,5 +1,5 @@
    2256923618 /****************************************************************************
     
    2262623675diff -Naur ncurses-5.7.orig/ncurses/base/lib_slktouch.c ncurses-5.7/ncurses/base/lib_slktouch.c
    2262723676--- ncurses-5.7.orig/ncurses/base/lib_slktouch.c        2000-12-09 18:43:27.000000000 -0800
    22628 +++ ncurses-5.7/ncurses/base/lib_slktouch.c     2009-07-19 15:02:22.000000000 -0700
     23677+++ ncurses-5.7/ncurses/base/lib_slktouch.c     2009-09-12 08:51:17.000000000 -0700
    2262923678@@ -1,5 +1,5 @@
    2263023679 /****************************************************************************
     
    2267723726diff -Naur ncurses-5.7.orig/ncurses/base/lib_ungetch.c ncurses-5.7/ncurses/base/lib_ungetch.c
    2267823727--- ncurses-5.7.orig/ncurses/base/lib_ungetch.c 2008-05-31 09:44:54.000000000 -0700
    22679 +++ ncurses-5.7/ncurses/base/lib_ungetch.c      2009-07-19 15:03:53.000000000 -0700
     23728+++ ncurses-5.7/ncurses/base/lib_ungetch.c      2009-09-12 08:51:30.000000000 -0700
    2268023729@@ -1,5 +1,5 @@
    2268123730 /****************************************************************************
     
    2273323782diff -Naur ncurses-5.7.orig/ncurses/base/lib_winch.c ncurses-5.7/ncurses/base/lib_winch.c
    2273423783--- ncurses-5.7.orig/ncurses/base/lib_winch.c   2001-06-02 16:42:08.000000000 -0700
    22735 +++ ncurses-5.7/ncurses/base/lib_winch.c        2009-07-19 15:02:22.000000000 -0700
     23784+++ ncurses-5.7/ncurses/base/lib_winch.c        2009-09-12 08:51:17.000000000 -0700
    2273623785@@ -39,16 +39,16 @@
    2273723786 
     
    2275723806diff -Naur ncurses-5.7.orig/ncurses/base/lib_window.c ncurses-5.7/ncurses/base/lib_window.c
    2275823807--- ncurses-5.7.orig/ncurses/base/lib_window.c  2008-06-07 07:12:56.000000000 -0700
    22759 +++ ncurses-5.7/ncurses/base/lib_window.c       2009-07-19 15:03:53.000000000 -0700
     23808+++ ncurses-5.7/ncurses/base/lib_window.c       2009-09-12 08:51:30.000000000 -0700
    2276023809@@ -1,5 +1,5 @@
    2276123810 /****************************************************************************
     
    2280423853diff -Naur ncurses-5.7.orig/ncurses/base/MKkeyname.awk ncurses-5.7/ncurses/base/MKkeyname.awk
    2280523854--- ncurses-5.7.orig/ncurses/base/MKkeyname.awk 2008-07-12 11:40:00.000000000 -0700
    22806 +++ ncurses-5.7/ncurses/base/MKkeyname.awk      2009-07-19 15:03:59.000000000 -0700
     23855+++ ncurses-5.7/ncurses/base/MKkeyname.awk      2009-09-12 08:51:37.000000000 -0700
    2280723856@@ -1,6 +1,6 @@
    2280823857-# $Id: MKkeyname.awk,v 1.40 2008/07/12 18:40:00 tom Exp $
     
    2285723906diff -Naur ncurses-5.7.orig/ncurses/base/MKlib_gen.sh ncurses-5.7/ncurses/base/MKlib_gen.sh
    2285823907--- ncurses-5.7.orig/ncurses/base/MKlib_gen.sh  2008-08-30 12:20:50.000000000 -0700
    22859 +++ ncurses-5.7/ncurses/base/MKlib_gen.sh       2009-07-19 15:02:22.000000000 -0700
     23908+++ ncurses-5.7/ncurses/base/MKlib_gen.sh       2009-09-12 08:51:17.000000000 -0700
    2286023909@@ -2,7 +2,7 @@
    2286123910 #
     
    2287823927diff -Naur ncurses-5.7.orig/ncurses/base/MKunctrl.awk ncurses-5.7/ncurses/base/MKunctrl.awk
    2287923928--- ncurses-5.7.orig/ncurses/base/MKunctrl.awk  2008-10-04 14:40:24.000000000 -0700
    22880 +++ ncurses-5.7/ncurses/base/MKunctrl.awk       2009-07-19 15:04:13.000000000 -0700
     23929+++ ncurses-5.7/ncurses/base/MKunctrl.awk       2009-09-12 08:51:50.000000000 -0700
    2288123930@@ -1,6 +1,6 @@
    2288223931-# $Id: MKunctrl.awk,v 1.23 2008/10/04 21:40:24 tom Exp $
     
    2294423993diff -Naur ncurses-5.7.orig/ncurses/base/nc_panel.c ncurses-5.7/ncurses/base/nc_panel.c
    2294523994--- ncurses-5.7.orig/ncurses/base/nc_panel.c    2000-12-09 18:43:28.000000000 -0800
    22946 +++ ncurses-5.7/ncurses/base/nc_panel.c 2009-07-19 15:03:51.000000000 -0700
     23995+++ ncurses-5.7/ncurses/base/nc_panel.c 2009-09-12 08:51:28.000000000 -0700
    2294723996@@ -1,5 +1,5 @@
    2294823997 /****************************************************************************
     
    2297924028diff -Naur ncurses-5.7.orig/ncurses/base/resizeterm.c ncurses-5.7/ncurses/base/resizeterm.c
    2298024029--- ncurses-5.7.orig/ncurses/base/resizeterm.c  2008-06-07 06:58:40.000000000 -0700
    22981 +++ ncurses-5.7/ncurses/base/resizeterm.c       2009-07-19 15:04:13.000000000 -0700
     24030+++ ncurses-5.7/ncurses/base/resizeterm.c       2009-09-12 08:52:09.000000000 -0700
    2298224031@@ -1,5 +1,5 @@
    2298324032 /****************************************************************************
     
    2300724056 
    2300824057-#define stolen_lines (screen_lines - SP->_lines_avail)
    23009 +MODULE_ID("$Id: resizeterm.c,v 1.40 2009/07/04 18:38:49 tom Exp $")
     24058+MODULE_ID("$Id: resizeterm.c,v 1.41 2009/08/30 16:18:58 tom Exp $")
    2301024059 
    2301124060 /*
     
    2312224171+           _nc_format_slks(
    2312324172+#if NCURSES_SP_FUNCS
    23124 +               _nc_screen_of(win),
     24173+                              _nc_screen_of(win),
    2312524174+#endif
    23126 +               ToCols);
     24175+                              ToCols);
    2312724176     } else if (win->_begy >= bottom) {
    2312824177        /*
     
    2319724246     }
    2319824247 
    23199      _nc_lock_global(curses);
     24248-    _nc_lock_global(curses);
     24249+    _nc_nonsp_lock_global(curses);
    2320024250 
    2320124251-    was_stolen = (screen_lines - SP->_lines_avail);
     
    2324224292+       screen_lines(SP_PARM) = ToLines;
    2324324293+       screen_columns(SP_PARM) = ToCols;
    23244 +
     24294 
     24295-       SP->_lines_avail = lines - was_stolen;
    2324524296+#ifdef USE_TERM_DRIVER
    2324624297+       CallDriver_2(SP_PARM, setsize, ToLines, ToCols);
     
    2325024301+#endif
    2325124302 
    23252 -       SP->_lines_avail = lines - was_stolen;
    23253 +       SP_PARM->_lines_avail = ToLines - was_stolen;
    23254  
    2325524303-       if (SP->oldhash) {
    2325624304-           FreeAndNull(SP->oldhash);
     24305+       SP_PARM->_lines_avail = ToLines - was_stolen;
     24306+
    2325724307+       if (SP_PARM->oldhash) {
    2325824308+           FreeAndNull(SP_PARM->oldhash);
     
    2326524315 #ifdef TRACE
    2326624316        if (USE_TRACEF(TRACE_UPDATE)) {
    23267 @@ -383,6 +423,18 @@
     24317@@ -378,11 +418,23 @@
     24318     SET_LINES(ToLines - was_stolen);
     24319     SET_COLS(ToCols);
     24320 
     24321-    _nc_unlock_global(curses);
     24322+    _nc_nonsp_unlock_global(curses);
     24323 
    2326824324     returnCode(result);
    2326924325 }
     
    2327424330+{
    2327524331+    int res = ERR;
    23276 +    _nc_lock_global(curses);
     24332+    _nc_sp_lock_global(curses);
    2327724333+    res = NCURSES_SP_NAME(resize_term) (CURRENT_SCREEN, ToLines, ToCols);
    23278 +    _nc_unlock_global(curses);
     24334+    _nc_sp_unlock_global(curses);
    2327924335+    return (res);
    2328024336+}
     
    2336924425diff -Naur ncurses-5.7.orig/ncurses/base/safe_sprintf.c ncurses-5.7/ncurses/base/safe_sprintf.c
    2337024426--- ncurses-5.7.orig/ncurses/base/safe_sprintf.c        2007-04-21 15:28:06.000000000 -0700
    23371 +++ ncurses-5.7/ncurses/base/safe_sprintf.c     2009-07-19 15:03:53.000000000 -0700
     24427+++ ncurses-5.7/ncurses/base/safe_sprintf.c     2009-09-12 08:51:30.000000000 -0700
    2337224428@@ -1,5 +1,5 @@
    2337324429 /****************************************************************************
     
    2343724493diff -Naur ncurses-5.7.orig/ncurses/base/tries.c ncurses-5.7/ncurses/base/tries.c
    2343824494--- ncurses-5.7.orig/ncurses/base/tries.c       2008-08-16 12:22:55.000000000 -0700
    23439 +++ ncurses-5.7/ncurses/base/tries.c    2009-07-19 15:02:22.000000000 -0700
     24495+++ ncurses-5.7/ncurses/base/tries.c    2009-09-12 08:51:17.000000000 -0700
    2344024496@@ -39,7 +39,7 @@
    2344124497 
     
    2346024516diff -Naur ncurses-5.7.orig/ncurses/base/wresize.c ncurses-5.7/ncurses/base/wresize.c
    2346124517--- ncurses-5.7.orig/ncurses/base/wresize.c     2008-06-07 06:59:01.000000000 -0700
    23462 +++ ncurses-5.7/ncurses/base/wresize.c  2009-07-19 15:04:03.000000000 -0700
     24518+++ ncurses-5.7/ncurses/base/wresize.c  2009-09-12 08:51:40.000000000 -0700
    2346324519@@ -1,5 +1,5 @@
    2346424520 /****************************************************************************
     
    2350124557diff -Naur ncurses-5.7.orig/ncurses/curses.priv.h ncurses-5.7/ncurses/curses.priv.h
    2350224558--- ncurses-5.7.orig/ncurses/curses.priv.h      2008-10-04 14:37:45.000000000 -0700
    23503 +++ ncurses-5.7/ncurses/curses.priv.h   2009-07-19 15:04:13.000000000 -0700
     24559+++ ncurses-5.7/ncurses/curses.priv.h   2009-09-12 08:52:09.000000000 -0700
    2350424560@@ -1,5 +1,5 @@
    2350524561 /****************************************************************************
     
    2351924575 /*
    2352024576- * $Id: curses.priv.h,v 1.394 2008/10/04 21:37:45 tom Exp $
    23521 + * $Id: curses.priv.h,v 1.430 2009/07/04 20:40:42 tom Exp $
     24577+ * $Id: curses.priv.h,v 1.436 2009/08/30 18:13:54 tom Exp $
    2352224578  *
    2352324579  *     curses.priv.h
     
    2364824704 #define GetNoPadding(sp)       FALSE
    2364924705 #define SetNoPadding(sp)       /*nothing*/
    23650 @@ -302,17 +375,34 @@
     24706@@ -301,18 +374,37 @@
     24707 #define GET_SCREEN_PAIR(s)     GetPair(SCREEN_ATTRS(s))
    2365124708 #define SET_SCREEN_PAIR(s,p)   SetPair(SCREEN_ATTRS(s), p)
    2365224709 
     24710+#if USE_REENTRANT || NCURSES_SP_FUNCS
     24711+NCURSES_EXPORT(int *)        _nc_ptr_Lines (SCREEN *);
     24712+NCURSES_EXPORT(int *)        _nc_ptr_Cols (SCREEN *);
     24713+NCURSES_EXPORT(int *)        _nc_ptr_Tabsize (SCREEN *);
     24714+NCURSES_EXPORT(int *)        _nc_ptr_Escdelay (SCREEN *);
     24715+#endif
     24716+
    2365324717 #if USE_REENTRANT
    2365424718-NCURSES_EXPORT(int *) _nc_ptr_Lines (void);
     
    2366424728-#define SET_COLS(value)  COLS = value
    2366524729+
    23666 +NCURSES_EXPORT(int *)        _nc_ptr_Lines (SCREEN *);
    23667 +NCURSES_EXPORT(int *)        _nc_ptr_Cols (SCREEN *);
    23668 +NCURSES_EXPORT(int *)        _nc_ptr_Tabsize (SCREEN *);
    23669 +NCURSES_EXPORT(int *)        _nc_ptr_Escdelay (SCREEN *);
    23670 +
    2367124730+#define ptrLines(sp)         (sp ? &(sp->_LINES) : &(_nc_prescreen._LINES))
    2367224731+#define ptrCols(sp)          (sp ? &(sp->_COLS) : &(_nc_prescreen._COLS))
     
    2369424753 
    2369524754 #define TR_MUTEX(data) _tracef("%s@%d: me:%08lX COUNT:%2u/%2d/%6d/%2d/%s%9u: " #data, \
    23696 @@ -404,6 +494,8 @@
     24755@@ -389,6 +481,36 @@
     24756 
     24757 #endif /* USE_PTHREADS */
     24758 
     24759+/*
     24760+ * When using sp-funcs, locks are targeted to SCREEN-level granularity.
     24761+ * So the locking is done in the non-sp-func (which calls the sp-func) rather
     24762+ * than in the sp-func itself.
     24763+ *
     24764+ * Use the _nc_nonsp_XXX functions in the function using "NCURSES_SP_NAME()".
     24765+ * Use the _nc_sp_XXX functions in the function using "#if NCURSES_SP_FUNCS".
     24766+ */
     24767+#if NCURSES_SP_FUNCS
     24768+
     24769+#define _nc_nonsp_lock_global(name)    /* nothing */
     24770+#define _nc_nonsp_try_global(name)    0
     24771+#define _nc_nonsp_unlock_global(name)  /* nothing */
     24772+
     24773+#define _nc_sp_lock_global(name)       _nc_lock_global(name)
     24774+#define _nc_sp_try_global(name)         _nc_try_global(name)
     24775+#define _nc_sp_unlock_global(name)     _nc_unlock_global(name)
     24776+
     24777+#else
     24778+
     24779+#define _nc_nonsp_lock_global(name)    _nc_lock_global(name)
     24780+#define _nc_nonsp_try_global(name)      _nc_try_global(name)
     24781+#define _nc_nonsp_unlock_global(name)  _nc_unlock_global(name)
     24782+
     24783+#define _nc_sp_lock_global(name)       /* nothing */
     24784+#define _nc_sp_try_global(name)    0
     24785+#define _nc_sp_unlock_global(name)     /* nothing */
     24786+
     24787+#endif
     24788+
     24789 #if HAVE_GETTIMEOFDAY
     24790 # define PRECISE_GETTIME 1
     24791 # define TimeType struct timeval
     24792@@ -404,6 +526,8 @@
    2369724793 #define C_SHIFT 9              /* we need more bits than there are colors */
    2369824794 #define C_MASK                 ((1 << C_SHIFT) - 1)
     
    2370324799 
    2370424800 #define COLOR_DEFAULT          C_MASK
    23705 @@ -464,13 +556,13 @@
     24801@@ -464,13 +588,13 @@
    2370624802 } slk_ent;
    2370724803 
     
    2372324819 } SLK;
    2372424820 
    23725 @@ -493,10 +585,10 @@
     24821@@ -493,10 +617,10 @@
    2372624822 typedef int (*TYPE_Gpm_Close) (void);
    2372724823 typedef int (*TYPE_Gpm_GetEvent) (Gpm_Event *);
     
    2373824834 /* link statically to GPM */
    2373924835 #define my_gpm_fd       &gpm_fd
    23740 @@ -609,8 +701,10 @@
     24836@@ -609,8 +733,10 @@
    2374124837        int             tgetent_index;
    2374224838        long            tgetent_sequence;
     
    2375024846 #if USE_HOME_TERMINFO
    2375124847        char            *home_terminfo;
    23752 @@ -644,7 +738,9 @@
     24848@@ -644,7 +770,9 @@
    2375324849        char            traceatr_color_buf[2][80];
    2375424850        int             traceatr_color_sel;
     
    2376124857 
    2376224858 #ifdef USE_PTHREADS
    23763 @@ -669,8 +765,10 @@
     24859@@ -669,8 +797,10 @@
    2376424860        bool            use_env;
    2376524861        bool            filter_mode;
     
    2377224868        TTY             *saved_tty;     /* savetty/resetty information      */
    2377324869 #if NCURSES_NO_PADDING
    23774 @@ -680,6 +778,8 @@
     24870@@ -680,6 +810,8 @@
    2377524871        chtype          *real_acs_map;
    2377624872        int             _LINES;
     
    2378124877 #ifdef TRACE
    2378224878        long            _outchars;
    23783 @@ -688,8 +788,16 @@
     24879@@ -688,8 +820,16 @@
    2378424880 #endif
    2378524881 } NCURSES_PRESCREEN;
     
    2380024896 extern NCURSES_EXPORT_VAR(NCURSES_PRESCREEN) _nc_prescreen;
    2380124897 
    23802 @@ -703,6 +811,8 @@
     24898@@ -703,6 +843,8 @@
    2380324899        char            *_setbuf;       /* buffered I/O for output          */
    2380424900        bool            _filtered;      /* filter() was called              */
     
    2380924905        TERMINAL        *_term;         /* terminal type information        */
    2381024906        TTY             _saved_tty;     /* savetty/resetty information      */
    23811 @@ -716,6 +826,10 @@
     24907@@ -716,6 +858,10 @@
    2381224908        WINDOW          *_newscr;       /* virtual screen to be updated to  */
    2381324909        WINDOW          *_stdscr;       /* screen's full-window context     */
     
    2382024916        TRIES           *_key_ok;       /* Disabled keys via keyok(,FALSE)  */
    2382124917        bool            _tried;         /* keypad mode was initialized      */
    23822 @@ -794,11 +908,13 @@
     24918@@ -794,11 +940,13 @@
    2382324919        int             _color_count;   /* count of colors in palette        */
    2382424920        colorpair_t     *_color_pairs;  /* screen's color pair list          */
     
    2383424930        chtype          _ok_attributes; /* valid attributes for terminal     */
    2383524931        chtype          _xmc_suppress;  /* attributes to suppress if xmc     */
    23836 @@ -820,8 +936,9 @@
     24932@@ -820,8 +968,9 @@
    2383724933         */
    2383824934        bool            _nc_sp_idlok;
     
    2384624942        /*
    2384724943         * These are the data that support the mouse interface.
    23848 @@ -875,7 +992,7 @@
     24944@@ -875,7 +1024,7 @@
    2384924945         * This supports automatic resizing
    2385024946         */
     
    2385524951 
    2385624952        /*
    23857 @@ -895,7 +1012,7 @@
     24953@@ -895,7 +1044,7 @@
    2385824954        int             _oldnum_size;
    2385924955 
     
    2386424960        int             _legacy_coding; /* see use_legacy_coding() */
    2386524961 
    23866 @@ -915,6 +1032,15 @@
     24962@@ -915,6 +1064,15 @@
    2386724963        char            tracechr_buf[40];
    2386824964        char            tracemse_buf[TRACEMSE_MAX];
     
    2388024976         * ncurses/ncursesw are the same up to this point.
    2388124977         */
    23882 @@ -943,6 +1069,20 @@
     24978@@ -943,6 +1101,20 @@
    2388324979 
    2388424980 #define WINDOW_EXT(win,field) (((WINDOWLIST *)(win))->field)
     
    2390124997 #ifndef UCHAR_MAX
    2390224998 #define UCHAR_MAX 255
    23903 @@ -1112,7 +1252,7 @@
     24999@@ -1112,7 +1284,7 @@
    2390425000                                AttrOf(dst) |= (ext + 1)
    2390525001 
     
    2391025006                         || (!isWidecExt(ch) &&                         \
    2391125007                             (ch).chars[1] == L'\0' &&                  \
    23912 @@ -1214,8 +1354,8 @@
     25008@@ -1214,8 +1386,8 @@
    2391325009  * Standardize/simplify common loops
    2391425010  */
     
    2392125017 /*
    2392225018  * Prefixes for call/return points of library function traces.  We use these to
    23923 @@ -1263,7 +1403,7 @@
     25019@@ -1263,7 +1435,7 @@
    2392425020 #define returnBool(code)       TRACE_RETURN(code,bool)
    2392525021 #define returnCPtr(code)       TRACE_RETURN(code,cptr)
     
    2393025026 #define returnPtr(code)                TRACE_RETURN(code,ptr)
    2393125027 #define returnSP(code)         TRACE_RETURN(code,sp)
    23932 @@ -1322,7 +1462,7 @@
     25028@@ -1322,7 +1494,7 @@
    2393325029 #define returnBool(code)       return code
    2393425030 #define returnCPtr(code)       return code
     
    2393925035 #define returnPtr(code)                return code
    2394025036 #define returnSP(code)         return code
    23941 @@ -1348,7 +1488,7 @@
     25037@@ -1348,7 +1520,7 @@
    2394225038 
    2394325039 #define ALL_BUT_COLOR ((chtype)~(A_COLOR))
     
    2394825044 #define toggle_attr_on(S,at) {\
    2394925045    if (PAIR_NUMBER(at) > 0) {\
    23950 @@ -1367,38 +1507,38 @@
     25046@@ -1367,38 +1539,38 @@
    2395125047    }\
    2395225048    TR(TRACE_ATTRS, ("new attribute is %s", _traceattr((S))));}
     
    2400325099 
    2400425100 /*
    24005 @@ -1425,16 +1565,28 @@
     25101@@ -1425,16 +1597,28 @@
    2400625102 extern NCURSES_EXPORT(void) _nc_toggle_attr_off (attr_t *, attr_t);
    2400725103 
     
    2403825134 #else
    2403925135 
    24040 @@ -1483,8 +1635,8 @@
     25136@@ -1483,8 +1667,8 @@
    2404125137 #endif
    2404225138 
     
    2404925145 /* lib_addch.c */
    2405025146 #if USE_WIDEC_SUPPORT
    24051 @@ -1503,7 +1655,7 @@
     25147@@ -1503,7 +1687,7 @@
    2405225148 extern NCURSES_EXPORT(int) _nc_wgetch(WINDOW *, unsigned long *, int EVENTLIST_2nd(_nc_eventlist *));
    2405325149 
     
    2405825154 /* lib_mvcur.c */
    2405925155 #define INFINITY       1000000 /* cost: too high to use */
    24060 @@ -1519,7 +1671,7 @@
     25156@@ -1519,7 +1703,7 @@
    2406125157 extern NCURSES_EXPORT(void) _nc_screen_wrap (void);
    2406225158 
     
    2406725163 /* lib_mvcur.c */
    2406825164 #define INFINITY       1000000 /* cost: too high to use */
    24069 @@ -1527,10 +1679,13 @@
     25165@@ -1527,10 +1711,12 @@
    2407025166 
    2407125167 /* lib_setup.c */
     
    2407825174+extern NCURSES_EXPORT(int)    _nc_locale_breaks_acs(TERMINAL *);
    2407925175+extern NCURSES_EXPORT(int)    _nc_setupterm(NCURSES_CONST char *, int, int *, bool);
    24080 +extern NCURSES_EXPORT(void)   _nc_get_screensize(SCREEN *, int *, int *);
    2408125176+
    2408225177+/* lib_set_term.c */
     
    2408525180 /* lib_tstp.c */
    2408625181 #if USE_SIGWINCH
    24087 @@ -1539,9 +1694,6 @@
     25182@@ -1539,9 +1725,6 @@
    2408825183 #define _nc_handle_sigwinch(a) /* nothing */
    2408925184 #endif
     
    2409525190 #if USE_WIDEC_SUPPORT
    2409625191 extern NCURSES_EXPORT(void) _nc_init_wacs(void);
    24097 @@ -1577,8 +1729,6 @@
     25192@@ -1577,9 +1760,8 @@
    2409825193 
    2409925194 /* elsewhere ... */
     
    2410225197-extern NCURSES_EXPORT(NCURSES_CONST char *) _nc_unctrl (SCREEN *, chtype);
    2410325198 extern NCURSES_EXPORT(SCREEN *) _nc_screen_of (WINDOW *);
     25199+extern NCURSES_EXPORT(TERMINAL*) _nc_get_cur_term (void);
    2410425200 extern NCURSES_EXPORT(WINDOW *) _nc_makenew (int, int, int, int, int);
    2410525201 extern NCURSES_EXPORT(char *) _nc_trace_buf (int, size_t);
    24106 @@ -1592,12 +1742,14 @@
     25202 extern NCURSES_EXPORT(char *) _nc_trace_bufcat (int, const char *);
     25203@@ -1592,12 +1774,14 @@
    2410725204 extern NCURSES_EXPORT(int) _nc_keypad (SCREEN *, bool);
    2410825205 extern NCURSES_EXPORT(int) _nc_ospeed (int);
     
    2412125218 extern NCURSES_EXPORT(void) _nc_freeall (void);
    2412225219 extern NCURSES_EXPORT(void) _nc_hash_map (void);
    24123 @@ -1661,24 +1813,33 @@
     25220@@ -1661,24 +1845,33 @@
    2412425221 
    2412525222 #define USE_SETBUF_0 0
     
    2416225259 
    2416325260 /*
    24164 @@ -1686,10 +1847,11 @@
     25261@@ -1686,10 +1879,11 @@
    2416525262  * if the application is running multiple screens under X, it's quite possible
    2416625263  * they could all have type xterm but have different sizes!  So...
     
    2417625273 /*
    2417725274  * Some constants related to SLK's
    24178 @@ -1707,14 +1869,240 @@
     25275@@ -1707,14 +1901,277 @@
    2417925276 #define MAX_SKEY(fmt)     (SLK_STDFMT(fmt)? MAX_SKEY_OLD : MAX_SKEY_PC)
    2418025277 #define MAX_SKEY_LEN(fmt) (SLK_STDFMT(fmt)? MAX_SKEY_LEN_OLD : MAX_SKEY_LEN_PC)
     
    2420825305+    sp->jump = outc
    2420925306+
     25307+#ifdef USE_TERM_DRIVER
    2421025308+struct DriverTCB; /* Terminal Control Block forward declaration */
    2421125309+typedef void* TERM_HANDLE;
     
    2426925367+} TERM_DRIVER;
    2427025368+
    24271 +
    2427225369+typedef struct DriverTCB
    2427325370+{
     
    2429825395+extern NCURSES_EXPORT_VAR(const color_t*) _nc_hls_palette;
    2429925396+
     25397+extern NCURSES_EXPORT(int)      _nc_get_driver(TERMINAL_CONTROL_BLOCK*, const char*, int*);
     25398+extern NCURSES_EXPORT(void)     _nc_get_screensize_ex(SCREEN *, TERMINAL *, int *, int *);
     25399+#endif /* USE_TERM_DRIVER */
     25400+
     25401+/*
     25402+ * Entrypoints which are actually provided in the terminal driver, which would
     25403+ * be an sp-name otherwise.
     25404+ */
    2430025405+#ifdef USE_TERM_DRIVER
    24301 +extern NCURSES_EXPORT(int)      _nc_tinfo_has_key(SCREEN*, int);
    24302 +extern NCURSES_EXPORT(int)      _nc_tinfo_doupdate(SCREEN *sp);
    24303 +extern NCURSES_EXPORT(int)      _nc_tinfo_mvcur(SCREEN*,int,int,int,int);
    24304 +extern NCURSES_EXPORT(int)      _nc_get_driver(TERMINAL_CONTROL_BLOCK*, const char*, int*);
     25406+#define TINFO_HAS_KEY           _nc_tinfo_has_key
     25407+#define TINFO_DOUPDATE          _nc_tinfo_doupdate
     25408+#define TINFO_MVCUR             _nc_tinfo_mvcur
     25409+extern NCURSES_EXPORT(int)      TINFO_HAS_KEY(SCREEN*, int);
     25410+extern NCURSES_EXPORT(int)      TINFO_DOUPDATE(SCREEN *);
     25411+extern NCURSES_EXPORT(int)      TINFO_MVCUR(SCREEN*, int, int, int, int);
     25412+#else
     25413+#define TINFO_HAS_KEY           NCURSES_SP_NAME(has_key)
     25414+#define TINFO_DOUPDATE          NCURSES_SP_NAME(doupdate)
     25415+#define TINFO_MVCUR             NCURSES_SP_NAME(mvcur)
    2430525416+#endif
    2430625417+
     25418+/*
     25419+ * Entrypoints using an extra parameter with the terminal driver.
     25420+ */
     25421+#ifdef USE_TERM_DRIVER
     25422+extern NCURSES_EXPORT(void)   _nc_get_screensize(SCREEN *, TERMINAL *, int *, int *);
     25423+extern NCURSES_EXPORT(int)    _nc_setupterm_ex(TERMINAL **, NCURSES_CONST char *, int , int *, bool);
     25424+#define TINFO_GET_SIZE(sp, tp, lp, cp) \
     25425+       _nc_get_screensize(sp, tp, lp, cp)
     25426+#define TINFO_SET_CURTERM(sp, tp) \
     25427+       NCURSES_SP_NAME(set_curterm)(sp, tp)
     25428+#define TINFO_SETUP_TERM(tpp, name, fd, err, reuse) \
     25429+       _nc_setupterm_ex(tpp, name, fd, err, reuse)
     25430+#else /* !USE_TERM_DRIVER */
     25431+extern NCURSES_EXPORT(void)   _nc_get_screensize(SCREEN *, int *, int *);
     25432+#define TINFO_GET_SIZE(sp, tp, lp, cp) \
     25433+       _nc_get_screensize(sp, lp, cp)
     25434+#define TINFO_SET_CURTERM(sp, tp) \
     25435+       set_curterm(tp)
     25436+#define TINFO_SETUP_TERM(tpp, name, fd, err, reuse) \
     25437+       _nc_setupterm(name, fd, err, reuse)
     25438+#endif /* !USE_TERM_DRIVER */
     25439+
     25440+#ifdef USE_TERM_DRIVER
    2430725441+#ifdef __MINGW32__
    2430825442+#include <nc_mingw.h>
     
    2431025444+#endif
    2431125445+extern NCURSES_EXPORT_VAR(TERM_DRIVER) _nc_TINFO_DRIVER;
     25446+#endif
    2431225447+
    2431325448+#ifdef USE_TERM_DRIVER
     
    2433025465+
    2433125466+#if USE_REENTRANT
    24332 +extern NCURSES_EXPORT(char *)    NCURSES_SP_NAME(_nc_ttytype)(SCREEN*);
    2433325467+extern NCURSES_EXPORT(int)       NCURSES_SP_NAME(_nc_TABSIZE)(SCREEN*);
    2433425468+extern NCURSES_EXPORT(char *)    NCURSES_SP_NAME(longname)(SCREEN*);
     
    2434325477+ * part of the API up to now
    2434425478+ */
    24345 +extern NCURSES_EXPORT(TERMINAL*) NCURSES_SP_NAME(cur_term)(SCREEN *sp);
     25479+extern NCURSES_EXPORT(TERMINAL*) NCURSES_SP_NAME(_nc_get_cur_term) (SCREEN *sp);
    2434625480+extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(_nc_makenew) (SCREEN*, int, int, int, int, int);
    2434725481+extern NCURSES_EXPORT(bool)     NCURSES_SP_NAME(_nc_reset_colors)(SCREEN*);
     
    2442125555diff -Naur ncurses-5.7.orig/ncurses/llib-lncurses ncurses-5.7/ncurses/llib-lncurses
    2442225556--- ncurses-5.7.orig/ncurses/llib-lncurses      2008-10-11 13:57:29.000000000 -0700
    24423 +++ ncurses-5.7/ncurses/llib-lncurses   2009-07-19 15:04:11.000000000 -0700
     25557+++ ncurses-5.7/ncurses/llib-lncurses   2009-09-12 08:51:49.000000000 -0700
    2442425558@@ -1,5 +1,5 @@
    2442525559 /****************************************************************************
     
    2611327247diff -Naur ncurses-5.7.orig/ncurses/llib-lncursest ncurses-5.7/ncurses/llib-lncursest
    2611427248--- ncurses-5.7.orig/ncurses/llib-lncursest     2008-10-11 14:13:13.000000000 -0700
    26115 +++ ncurses-5.7/ncurses/llib-lncursest  2009-07-19 15:04:11.000000000 -0700
     27249+++ ncurses-5.7/ncurses/llib-lncursest  2009-09-12 08:51:49.000000000 -0700
    2611627250@@ -1,5 +1,5 @@
    2611727251 /****************************************************************************
     
    2785928993diff -Naur ncurses-5.7.orig/ncurses/llib-lncursestw ncurses-5.7/ncurses/llib-lncursestw
    2786028994--- ncurses-5.7.orig/ncurses/llib-lncursestw    1969-12-31 16:00:00.000000000 -0800
    27861 +++ ncurses-5.7/ncurses/llib-lncursestw 2009-07-19 15:04:11.000000000 -0700
     28995+++ ncurses-5.7/ncurses/llib-lncursestw 2009-09-12 08:51:49.000000000 -0700
    2786228996@@ -0,0 +1,5192 @@
    2786328997+/****************************************************************************
     
    3305534189diff -Naur ncurses-5.7.orig/ncurses/llib-lncursesw ncurses-5.7/ncurses/llib-lncursesw
    3305634190--- ncurses-5.7.orig/ncurses/llib-lncursesw     2008-10-11 14:03:02.000000000 -0700
    33057 +++ ncurses-5.7/ncurses/llib-lncursesw  2009-07-19 15:04:11.000000000 -0700
     34191+++ ncurses-5.7/ncurses/llib-lncursesw  2009-09-12 08:51:49.000000000 -0700
    3305834192@@ -1,5 +1,5 @@
    3305934193 /****************************************************************************
     
    3482435958diff -Naur ncurses-5.7.orig/ncurses/Makefile.in ncurses-5.7/ncurses/Makefile.in
    3482535959--- ncurses-5.7.orig/ncurses/Makefile.in        2008-10-18 07:11:54.000000000 -0700
    34826 +++ ncurses-5.7/ncurses/Makefile.in     2009-07-19 15:04:13.000000000 -0700
     35960+++ ncurses-5.7/ncurses/Makefile.in     2009-09-12 08:52:04.000000000 -0700
    3482735961@@ -1,6 +1,6 @@
    3482835962-# $Id: Makefile.in,v 1.113 2008/10/18 14:11:54 tom Exp $
    34829 +# $Id: Makefile.in,v 1.117 2009/07/04 16:36:11 tom Exp $
     35963+# $Id: Makefile.in,v 1.119 2009/08/10 09:06:37 tom Exp $
    3483035964 ##############################################################################
    3483135965-# Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.                #
     
    3486936003 ################################################################################
    3487036004 all \
    34871 @@ -204,7 +206,7 @@
     36005@@ -200,11 +202,11 @@
     36006        $(BUILD_CC) -o $@ $(BUILD_CCFLAGS) $(tinfo)/make_keys.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
     36007 
     36008 make_hash$(BUILD_EXEEXT) : \
     36009-               $(tinfo)/comp_hash.c \
     36010+               $(tinfo)/make_hash.c \
    3487236011                ../include/hashsize.h
    34873         $(BUILD_CC) -o $@ $(BUILD_CCFLAGS) -DMAIN_PROGRAM $(tinfo)/comp_hash.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
     36012-       $(BUILD_CC) -o $@ $(BUILD_CCFLAGS) -DMAIN_PROGRAM $(tinfo)/comp_hash.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
     36013+       $(BUILD_CC) -o $@ $(BUILD_CCFLAGS) $(tinfo)/make_hash.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
    3487436014 
    3487536015-./expanded.c : $(serial)/MKexpanded.sh
    34876 +./expanded.c : curses.priv.h $(serial)/MKexpanded.sh
     36016+./expanded.c : $(srcdir)/curses.priv.h $(serial)/MKexpanded.sh
    3487736017        sh -e $(serial)/MKexpanded.sh "$(CPP)" $(CPPFLAGS) > $@
    3487836018 
     
    3488036020diff -Naur ncurses-5.7.orig/ncurses/modules ncurses-5.7/ncurses/modules
    3488136021--- ncurses-5.7.orig/ncurses/modules    2007-09-08 15:03:34.000000000 -0700
    34882 +++ ncurses-5.7/ncurses/modules 2009-07-19 15:04:15.000000000 -0700
     36022+++ ncurses-5.7/ncurses/modules 2009-09-12 08:51:52.000000000 -0700
    3488336023@@ -1,6 +1,6 @@
    3488436024-# $Id: modules,v 1.112 2007/09/08 22:03:34 tom Exp $
     
    3491236052diff -Naur ncurses-5.7.orig/ncurses/README ncurses-5.7/ncurses/README
    3491336053--- ncurses-5.7.orig/ncurses/README     2006-04-22 15:19:37.000000000 -0700
    34914 +++ ncurses-5.7/ncurses/README  2009-07-19 15:04:11.000000000 -0700
     36054+++ ncurses-5.7/ncurses/README  2009-09-12 08:51:49.000000000 -0700
    3491536055@@ -1,5 +1,5 @@
    3491636056 -------------------------------------------------------------------------------
     
    3495036090diff -Naur ncurses-5.7.orig/ncurses/tinfo/access.c ncurses-5.7/ncurses/tinfo/access.c
    3495136091--- ncurses-5.7.orig/ncurses/tinfo/access.c     2007-11-17 16:57:53.000000000 -0800
    34952 +++ ncurses-5.7/ncurses/tinfo/access.c  2009-07-19 15:03:51.000000000 -0700
     36092+++ ncurses-5.7/ncurses/tinfo/access.c  2009-09-12 08:51:28.000000000 -0700
    3495336093@@ -1,5 +1,5 @@
    3495436094 /****************************************************************************
     
    3497836118diff -Naur ncurses-5.7.orig/ncurses/tinfo/alloc_ttype.c ncurses-5.7/ncurses/tinfo/alloc_ttype.c
    3497936119--- ncurses-5.7.orig/ncurses/tinfo/alloc_ttype.c        2008-10-12 09:12:00.000000000 -0700
    34980 +++ ncurses-5.7/ncurses/tinfo/alloc_ttype.c     2009-07-19 15:03:53.000000000 -0700
     36120+++ ncurses-5.7/ncurses/tinfo/alloc_ttype.c     2009-09-12 08:51:30.000000000 -0700
    3498136121@@ -1,5 +1,5 @@
    3498236122 /****************************************************************************
     
    3512536265diff -Naur ncurses-5.7.orig/ncurses/tinfo/captoinfo.c ncurses-5.7/ncurses/tinfo/captoinfo.c
    3512636266--- ncurses-5.7.orig/ncurses/tinfo/captoinfo.c  2008-08-16 12:24:51.000000000 -0700
    35127 +++ ncurses-5.7/ncurses/tinfo/captoinfo.c       2009-07-19 15:03:48.000000000 -0700
     36267+++ ncurses-5.7/ncurses/tinfo/captoinfo.c       2009-09-12 08:51:25.000000000 -0700
    3512836268@@ -1,5 +1,5 @@
    3512936269 /****************************************************************************
     
    3515336293diff -Naur ncurses-5.7.orig/ncurses/tinfo/comp_hash.c ncurses-5.7/ncurses/tinfo/comp_hash.c
    3515436294--- ncurses-5.7.orig/ncurses/tinfo/comp_hash.c  2008-08-16 10:06:53.000000000 -0700
    35155 +++ ncurses-5.7/ncurses/tinfo/comp_hash.c       2009-07-19 15:04:17.000000000 -0700
     36295+++ ncurses-5.7/ncurses/tinfo/comp_hash.c       2009-09-12 08:52:02.000000000 -0700
    3515636296@@ -1,5 +1,5 @@
    3515736297 /****************************************************************************
     
    3516136301  * Permission is hereby granted, free of charge, to any person obtaining a  *
    3516236302  * copy of this software and associated documentation files (the            *
    35163 @@ -50,7 +50,7 @@
    35164  #define DEBUG(level, params)   /*nothing */
    35165  #endif
    35166  
     36303@@ -44,110 +44,36 @@
     36304 #include <tic.h>
     36305 #include <hashsize.h>
     36306 
     36307-#ifdef MAIN_PROGRAM
     36308-#include <ctype.h>
     36309-#undef  DEBUG
     36310-#define DEBUG(level, params)   /*nothing */
     36311-#endif
     36312-
    3516736313-MODULE_ID("$Id: comp_hash.c,v 1.36 2008/08/16 17:06:53 tom Exp $")
    35168 +MODULE_ID("$Id: comp_hash.c,v 1.45 2009/07/18 20:30:21 tom Exp $")
    35169  
    35170  static int hash_function(const char *);
    35171  
    35172 @@ -91,8 +91,7 @@
    35173         hash_table[hashvalue] = i;
    35174      }
    35175  
     36314-
     36315-static int hash_function(const char *);
     36316-
     36317-/*
     36318- *     _nc_make_hash_table()
     36319- *
     36320- *     Takes the entries in table[] and hashes them into hash_table[]
     36321- *     by name.  There are CAPTABSIZE entries in table[] and HASHTABSIZE
     36322- *     slots in hash_table[].
     36323- *
     36324- */
     36325-
     36326-#ifdef MAIN_PROGRAM
     36327-
     36328-#undef MODULE_ID
     36329-#define MODULE_ID(id)          /*nothing */
     36330-#include <tinfo/doalloc.c>
     36331-
     36332-static void
     36333-_nc_make_hash_table(struct name_table_entry *table,
     36334-                   short *hash_table)
     36335-{
     36336-    short i;
     36337-    int hashvalue;
     36338-    int collisions = 0;
     36339-
     36340-    for (i = 0; i < HASHTABSIZE; i++) {
     36341-       hash_table[i] = -1;
     36342-    }
     36343-    for (i = 0; i < CAPTABSIZE; i++) {
     36344-       hashvalue = hash_function(table[i].nte_name);
     36345-
     36346-       if (hash_table[hashvalue] >= 0)
     36347-           collisions++;
     36348-
     36349-       if (hash_table[hashvalue] != 0)
     36350-           table[i].nte_link = hash_table[hashvalue];
     36351-       hash_table[hashvalue] = i;
     36352-    }
     36353-
    3517636354-    DEBUG(4, ("Hash table complete: %d collisions out of %d entries",
    3517736355-             collisions, CAPTABSIZE));
    35178 +    printf("/* %d collisions out of %d entries */\n", collisions, CAPTABSIZE);
    35179  }
    35180  #endif
    35181  
    35182 @@ -121,16 +120,24 @@
    35183      return (int) (sum % HASHTABSIZE);
    35184  }
    35185  
    35186 +#ifndef MAIN_PROGRAM
    35187 +
    35188 +#define SameName(a,b,termcap) (termcap ? !strncmp(a,b,2) : !strcmp(a,b))
    35189 +#if 0
    35190 +static bool
    35191 +same_name(const char *a, const char *b, bool termcap)
    35192 +{
    35193 +    fprintf(stderr, "compare(%s,%s)\n", a, b);
    35194 +    return SameName(a, b, termcap);
    35195 +}
    35196 +#else
    35197 +#define same_name(a,b,termcap) SameName(a,b,termcap)
    35198 +#endif
    35199 +
     36356-}
     36357-#endif
     36358+MODULE_ID("$Id: comp_hash.c,v 1.48 2009/08/08 17:36:21 tom Exp $")
     36359 
    3520036360 /*
     36361- *     int hash_function(string)
     36362- *
     36363- *     Computes the hashing function on the given string.
     36364- *
     36365- *     The current hash function is the sum of each consectutive pair
     36366- *     of characters, taken as two-byte integers, mod HASHTABSIZE.
     36367- *
     36368+ * Finds the entry for the given string in the hash table if present.
     36369+ * Returns a pointer to the entry in the table or 0 if not found.
     36370  */
     36371-
     36372-static int
     36373-hash_function(const char *string)
     36374-{
     36375-    long sum = 0;
     36376-
     36377-    DEBUG(9, ("hashing %s", string));
     36378-    while (*string) {
     36379-       sum += (long) (*string + (*(string + 1) << 8));
     36380-       string++;
     36381-    }
     36382-
     36383-    DEBUG(9, ("sum is %ld", sum));
     36384-    return (int) (sum % HASHTABSIZE);
     36385-}
     36386-
     36387-/*
    3520136388- *     struct name_table_entry *
    3520236389- *     find_entry(string)
     
    3520536392- *     Returns a pointer to the entry in the table or 0 if not found.
    3520636393- *
    35207 + * Finds the entry for the given string in the hash table if present.
    35208 + * Returns a pointer to the entry in the table or 0 if not found.
    35209   */
     36394- */
    3521036395-
    3521136396-#ifndef MAIN_PROGRAM
     36397+/* entrypoint used by tack (do not alter) */
    3521236398 NCURSES_EXPORT(struct name_table_entry const *)
    3521336399 _nc_find_entry(const char *string,
    35214                const short *hash_table)
    35215 @@ -142,11 +149,15 @@
    35216      hashvalue = hash_function(string);
    35217  
    35218      if (hash_table[hashvalue] >= 0) {
     36400-              const short *hash_table)
     36401+              const HashValue * hash_table)
     36402 {
     36403+    bool termcap = (hash_table != _nc_get_hash_table(FALSE));
     36404+    const HashData *data = _nc_get_hash_info(termcap);
     36405     int hashvalue;
     36406     struct name_table_entry const *ptr = 0;
     36407     struct name_table_entry const *real_table;
     36408 
     36409-    hashvalue = hash_function(string);
     36410+    hashvalue = data->hash_of(string);
     36411+
     36412+    if (data->table_data[hashvalue] >= 0) {
     36413 
     36414-    if (hash_table[hashvalue] >= 0) {
    3521936415-       real_table = _nc_get_table(hash_table != _nc_get_hash_table(FALSE));
    35220 +       bool termcap = (hash_table != _nc_get_hash_table(FALSE));
    35221 +
    35222 +       real_table = _nc_get_table(termcap);
    35223         ptr = real_table + hash_table[hashvalue];
     36416-       ptr = real_table + hash_table[hashvalue];
    3522436417-       while (strcmp(ptr->nte_name, string) != 0) {
    3522536418-           if (ptr->nte_link < 0)
    3522636419-               return 0;
    35227 +       while (!same_name(ptr->nte_name, string, termcap)) {
     36420-           ptr = real_table + (ptr->nte_link + hash_table[HASHTABSIZE]);
     36421+       real_table = _nc_get_table(termcap);
     36422+       ptr = real_table + data->table_data[hashvalue];
     36423+       while (!data->compare_names(ptr->nte_name, string)) {
    3522836424+           if (ptr->nte_link < 0) {
    3522936425+               ptr = 0;
    3523036426+               break;
    3523136427+           }
    35232             ptr = real_table + (ptr->nte_link + hash_table[HASHTABSIZE]);
     36428+           ptr = real_table + (ptr->nte_link
     36429+                               + data->table_data[data->table_size]);
    3523336430        }
    3523436431     }
    35235 @@ -155,29 +166,36 @@
     36432 
     36433@@ -155,216 +81,34 @@
    3523636434 }
    3523736435 
     
    3525836456 {
    3525936457-    struct name_table_entry const *ptr;
    35260 +    struct name_table_entry const *ptr = NULL;
    35261 +    const short *hash_table = _nc_get_hash_table(termcap);
    35262 +    int hashvalue = hash_function(string);
    35263  
     36458-
    3526436459-    for (ptr = table; ptr < table + CAPTABSIZE; ptr++) {
    3526536460-       if (ptr->nte_type == type && strcmp(string, ptr->nte_name) == 0)
    3526636461-           return (ptr);
    35267 +    if (hash_table[hashvalue] >= 0) {
     36462-    }
     36463-
     36464-    return ((struct name_table_entry *) NULL);
     36465-}
     36466-#endif
     36467-
     36468-#ifdef MAIN_PROGRAM
     36469-/*
     36470- * This filter reads from standard input a list of tab-delimited columns,
     36471- * (e.g., from Caps.filtered) computes the hash-value of a specified column and
     36472- * writes the hashed tables to standard output.
     36473- *
     36474- * By compiling the hash table at build time, we're able to make the entire
     36475- * set of terminfo and termcap tables readonly (and also provide some runtime
     36476- * performance enhancement).
     36477- */
     36478-
     36479-#define MAX_COLUMNS BUFSIZ     /* this _has_ to be worst-case */
     36480-
     36481-static char **
     36482-parse_columns(char *buffer)
     36483-{
     36484-    static char **list;
     36485-
     36486-    int col = 0;
     36487-
     36488-    if (list == 0 && (list = typeCalloc(char *, MAX_COLUMNS)) == 0)
     36489-         return (0);
     36490-
     36491-    if (*buffer != '#') {
     36492-       while (*buffer != '\0') {
     36493-           char *s;
     36494-           for (s = buffer; (*s != '\0') && !isspace(UChar(*s)); s++)
     36495-               /*EMPTY */ ;
     36496-           if (s != buffer) {
     36497-               char mark = *s;
     36498-               *s = '\0';
     36499-               if ((s - buffer) > 1
     36500-                   && (*buffer == '"')
     36501-                   && (s[-1] == '"')) {        /* strip the quotes */
     36502-                   assert(s > buffer + 1);
     36503-                   s[-1] = '\0';
     36504-                   buffer++;
     36505-               }
     36506-               list[col] = buffer;
     36507-               col++;
     36508-               if (mark == '\0')
     36509-                   break;
     36510-               while (*++s && isspace(UChar(*s)))
     36511-                   /*EMPTY */ ;
     36512-               buffer = s;
     36513-           } else
     36514+    struct name_table_entry const *ptr = NULL;
     36515+    const HashData *data = _nc_get_hash_info(termcap);
     36516+    int hashvalue = data->hash_of(string);
     36517+
     36518+    if (data->table_data[hashvalue] >= 0) {
    3526836519+       const struct name_table_entry *const table = _nc_get_table(termcap);
    3526936520+
    35270 +       ptr = table + hash_table[hashvalue];
     36521+       ptr = table + data->table_data[hashvalue];
    3527136522+       while (ptr->nte_type != type
    35272 +              || !same_name(ptr->nte_name, string, termcap)) {
     36523+              || !data->compare_names(ptr->nte_name, string)) {
    3527336524+           if (ptr->nte_link < 0) {
    3527436525+               ptr = 0;
    35275 +               break;
    35276 +           }
    35277 +           ptr = table + (ptr->nte_link + hash_table[HASHTABSIZE]);
    35278 +       }
     36526                break;
     36527-       }
     36528-    }
     36529-    return col ? list : 0;
     36530-}
     36531-
     36532-int
     36533-main(int argc, char **argv)
     36534-{
     36535-    struct name_table_entry *name_table = typeCalloc(struct
     36536-                                                    name_table_entry, CAPTABSIZE);
     36537-    short *hash_table = typeCalloc(short, HASHTABSIZE);
     36538-    const char *root_name = "";
     36539-    int column = 0;
     36540-    int bigstring = 0;
     36541-    int n;
     36542-    char buffer[BUFSIZ];
     36543-
     36544-    static const char *typenames[] =
     36545-    {"BOOLEAN", "NUMBER", "STRING"};
     36546-
     36547-    short BoolCount = 0;
     36548-    short NumCount = 0;
     36549-    short StrCount = 0;
     36550-
     36551-    /* The first argument is the column-number (starting with 0).
     36552-     * The second is the root name of the tables to generate.
     36553-     */
     36554-    if (argc <= 3
     36555-       || (column = atoi(argv[1])) <= 0
     36556-       || (column >= MAX_COLUMNS)
     36557-       || *(root_name = argv[2]) == 0
     36558-       || (bigstring = atoi(argv[3])) < 0
     36559-       || name_table == 0
     36560-       || hash_table == 0) {
     36561-       fprintf(stderr, "usage: make_hash column root_name bigstring\n");
     36562-       exit(EXIT_FAILURE);
     36563-    }
     36564-
     36565-    /*
     36566-     * Read the table into our arrays.
     36567-     */
     36568-    for (n = 0; (n < CAPTABSIZE) && fgets(buffer, BUFSIZ, stdin);) {
     36569-       char **list, *nlp = strchr(buffer, '\n');
     36570-       if (nlp)
     36571-           *nlp = '\0';
     36572-       list = parse_columns(buffer);
     36573-       if (list == 0)          /* blank or comment */
     36574-           continue;
     36575-       name_table[n].nte_link = -1;    /* end-of-hash */
     36576-       name_table[n].nte_name = strdup(list[column]);
     36577-       if (!strcmp(list[2], "bool")) {
     36578-           name_table[n].nte_type = BOOLEAN;
     36579-           name_table[n].nte_index = BoolCount++;
     36580-       } else if (!strcmp(list[2], "num")) {
     36581-           name_table[n].nte_type = NUMBER;
     36582-           name_table[n].nte_index = NumCount++;
     36583-       } else if (!strcmp(list[2], "str")) {
     36584-           name_table[n].nte_type = STRING;
     36585-           name_table[n].nte_index = StrCount++;
     36586-       } else {
     36587-           fprintf(stderr, "Unknown type: %s\n", list[2]);
     36588-           exit(EXIT_FAILURE);
     36589-       }
     36590-       n++;
     36591-    }
     36592-    _nc_make_hash_table(name_table, hash_table);
     36593-
     36594-    /*
     36595-     * Write the compiled tables to standard output
     36596-     */
     36597-    if (bigstring) {
     36598-       int len = 0;
     36599-       int nxt;
     36600-
     36601-       printf("static const char %s_names_text[] = \\\n", root_name);
     36602-       for (n = 0; n < CAPTABSIZE; n++) {
     36603-           nxt = (int) strlen(name_table[n].nte_name) + 5;
     36604-           if (nxt + len > 72) {
     36605-               printf("\\\n");
     36606-               len = 0;
     36607            }
     36608-           printf("\"%s\\0\" ", name_table[n].nte_name);
     36609-           len += nxt;
     36610-       }
     36611-       printf(";\n\n");
     36612-
     36613-       len = 0;
     36614-       printf("static name_table_data const %s_names_data[] =\n",
     36615-              root_name);
     36616-       printf("{\n");
     36617-       for (n = 0; n < CAPTABSIZE; n++) {
     36618-           printf("\t{ %15d,\t%10s,\t%3d, %3d }%c\n",
     36619-                  len,
     36620-                  typenames[name_table[n].nte_type],
     36621-                  name_table[n].nte_index,
     36622-                  name_table[n].nte_link,
     36623-                  n < CAPTABSIZE - 1 ? ',' : ' ');
     36624-           len += (int) strlen(name_table[n].nte_name) + 1;
     36625+           ptr = table + (ptr->nte_link + data->table_data[data->table_size]);
     36626        }
     36627-       printf("};\n\n");
     36628-       printf("static struct name_table_entry *_nc_%s_table = 0;\n\n", root_name);
     36629-    } else {
     36630-
     36631-       printf("static struct name_table_entry %s _nc_%s_table[] =\n",
     36632-              bigstring ? "" : "const",
     36633-              root_name);
     36634-       printf("{\n");
     36635-       for (n = 0; n < CAPTABSIZE; n++) {
     36636-           sprintf(buffer, "\"%s\"",
     36637-                   name_table[n].nte_name);
     36638-           printf("\t{ %15s,\t%10s,\t%3d, %3d }%c\n",
     36639-                  buffer,
     36640-                  typenames[name_table[n].nte_type],
     36641-                  name_table[n].nte_index,
     36642-                  name_table[n].nte_link,
     36643-                  n < CAPTABSIZE - 1 ? ',' : ' ');
     36644-       }
     36645-       printf("};\n\n");
     36646-    }
     36647-
     36648-    printf("static const short _nc_%s_hash_table[%d] =\n",
     36649-          root_name,
     36650-          HASHTABSIZE + 1);
     36651-    printf("{\n");
     36652-    for (n = 0; n < HASHTABSIZE; n++) {
     36653-       printf("\t%3d,\n", hash_table[n]);
    3527936654     }
    35280  
    35281 -    return ((struct name_table_entry *) NULL);
     36655-    printf("\t0\t/* base-of-table */\n");
     36656-    printf("};\n\n");
     36657-
     36658-    printf("#if (BOOLCOUNT!=%d)||(NUMCOUNT!=%d)||(STRCOUNT!=%d)\n",
     36659-          BoolCount, NumCount, StrCount);
     36660-    printf("#error\t--> term.h and comp_captab.c disagree about the <--\n");
     36661-    printf("#error\t--> numbers of booleans, numbers and/or strings <--\n");
     36662-    printf("#endif\n\n");
     36663 
     36664-    free(hash_table);
     36665-    return EXIT_SUCCESS;
    3528236666+    return ptr;
    3528336667 }
    35284  #endif
    35285  
     36668-#endif
    3528636669diff -Naur ncurses-5.7.orig/ncurses/tinfo/comp_parse.c ncurses-5.7/ncurses/tinfo/comp_parse.c
    3528736670--- ncurses-5.7.orig/ncurses/tinfo/comp_parse.c 2008-08-16 14:58:16.000000000 -0700
    35288 +++ ncurses-5.7/ncurses/tinfo/comp_parse.c      2009-07-19 15:04:17.000000000 -0700
     36671+++ ncurses-5.7/ncurses/tinfo/comp_parse.c      2009-09-12 08:51:54.000000000 -0700
    3528936672@@ -1,5 +1,5 @@
    3529036673 /****************************************************************************
     
    3532736710diff -Naur ncurses-5.7.orig/ncurses/tinfo/comp_scan.c ncurses-5.7/ncurses/tinfo/comp_scan.c
    3532836711--- ncurses-5.7.orig/ncurses/tinfo/comp_scan.c  2008-08-16 12:22:55.000000000 -0700
    35329 +++ ncurses-5.7/ncurses/tinfo/comp_scan.c       2009-07-19 15:03:59.000000000 -0700
     36712+++ ncurses-5.7/ncurses/tinfo/comp_scan.c       2009-09-12 08:51:37.000000000 -0700
    3533036713@@ -51,7 +51,7 @@
    3533136714 #include <term_entry.h>
     
    3538536768diff -Naur ncurses-5.7.orig/ncurses/tinfo/entries.c ncurses-5.7/ncurses/tinfo/entries.c
    3538636769--- ncurses-5.7.orig/ncurses/tinfo/entries.c    2008-09-27 06:11:10.000000000 -0700
    35387 +++ ncurses-5.7/ncurses/tinfo/entries.c 2009-07-19 15:04:15.000000000 -0700
     36770+++ ncurses-5.7/ncurses/tinfo/entries.c 2009-09-12 08:51:52.000000000 -0700
    3538836771@@ -1,5 +1,5 @@
    3538936772 /****************************************************************************
     
    3543736820diff -Naur ncurses-5.7.orig/ncurses/tinfo/hashed_db.c ncurses-5.7/ncurses/tinfo/hashed_db.c
    3543836821--- ncurses-5.7.orig/ncurses/tinfo/hashed_db.c  2006-08-19 12:48:38.000000000 -0700
    35439 +++ ncurses-5.7/ncurses/tinfo/hashed_db.c       2009-07-19 15:02:02.000000000 -0700
     36822+++ ncurses-5.7/ncurses/tinfo/hashed_db.c       2009-09-12 08:50:57.000000000 -0700
    3544036823@@ -1,5 +1,5 @@
    3544136824 /****************************************************************************
     
    3554336926diff -Naur ncurses-5.7.orig/ncurses/tinfo/init_keytry.c ncurses-5.7/ncurses/tinfo/init_keytry.c
    3554436927--- ncurses-5.7.orig/ncurses/tinfo/init_keytry.c        2008-05-24 14:44:51.000000000 -0700
    35545 +++ ncurses-5.7/ncurses/tinfo/init_keytry.c     2009-07-19 15:03:59.000000000 -0700
     36928+++ ncurses-5.7/ncurses/tinfo/init_keytry.c     2009-09-12 08:51:37.000000000 -0700
    3554636929@@ -1,5 +1,5 @@
    3554736930 /****************************************************************************
     
    3559036973diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_acs.c ncurses-5.7/ncurses/tinfo/lib_acs.c
    3559136974--- ncurses-5.7.orig/ncurses/tinfo/lib_acs.c    2008-08-16 12:22:55.000000000 -0700
    35592 +++ ncurses-5.7/ncurses/tinfo/lib_acs.c 2009-07-19 15:04:06.000000000 -0700
     36975+++ ncurses-5.7/ncurses/tinfo/lib_acs.c 2009-09-12 08:51:43.000000000 -0700
    3559336976@@ -1,5 +1,5 @@
    3559436977 /****************************************************************************
     
    3570037083diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_baudrate.c ncurses-5.7/ncurses/tinfo/lib_baudrate.c
    3570137084--- ncurses-5.7.orig/ncurses/tinfo/lib_baudrate.c       2008-06-28 08:19:24.000000000 -0700
    35702 +++ ncurses-5.7/ncurses/tinfo/lib_baudrate.c    2009-07-19 15:03:59.000000000 -0700
     37085+++ ncurses-5.7/ncurses/tinfo/lib_baudrate.c    2009-09-12 08:51:37.000000000 -0700
    3570337086@@ -1,5 +1,5 @@
    3570437087 /****************************************************************************
     
    3578737170diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_cur_term.c ncurses-5.7/ncurses/tinfo/lib_cur_term.c
    3578837171--- ncurses-5.7.orig/ncurses/tinfo/lib_cur_term.c       2008-08-16 12:22:55.000000000 -0700
    35789 +++ ncurses-5.7/ncurses/tinfo/lib_cur_term.c    2009-07-19 15:04:04.000000000 -0700
     37172+++ ncurses-5.7/ncurses/tinfo/lib_cur_term.c    2009-09-12 08:52:09.000000000 -0700
    3579037173@@ -1,5 +1,5 @@
    3579137174 /****************************************************************************
     
    3579537178  * Permission is hereby granted, free of charge, to any person obtaining a  *
    3579637179  * copy of this software and associated documentation files (the            *
    35797 @@ -40,12 +40,14 @@
     37180@@ -40,23 +40,41 @@
    3579837181 #include <term_entry.h>                /* TTY, cur_term */
    3579937182 #include <termcap.h>           /* ospeed */
    3580037183 
    3580137184-MODULE_ID("$Id: lib_cur_term.c,v 1.18 2008/08/16 19:22:55 tom Exp $")
    35802 +MODULE_ID("$Id: lib_cur_term.c,v 1.22 2009/05/30 13:55:19 tom Exp $")
     37185+MODULE_ID("$Id: lib_cur_term.c,v 1.26 2009/09/05 18:05:27 tom Exp $")
    3580337186 
    3580437187 #undef CUR
     
    3580937192+NCURSES_EXPORT_VAR(TERMINAL *) cur_term = 0;
    3581037193+#elif BROKEN_LINKER || USE_REENTRANT
     37194+
     37195+NCURSES_EXPORT(TERMINAL *)
     37196+NCURSES_SP_NAME(_nc_get_cur_term) (NCURSES_SP_DCL0)
     37197+{
     37198+    return ((0 != TerminalOf(SP_PARM)) ? TerminalOf(SP_PARM) : CurTerm);
     37199+}
     37200+
     37201+#if NCURSES_SP_FUNCS
     37202+NCURSES_EXPORT(TERMINAL *)
     37203+_nc_get_cur_term(void)
     37204+{
     37205+    return NCURSES_SP_NAME(_nc_get_cur_term) (CURRENT_SCREEN);
     37206+}
     37207+#endif
     37208+
    3581137209 NCURSES_EXPORT(TERMINAL *)
    3581237210 NCURSES_PUBLIC_VAR(cur_term) (void)
    3581337211 {
    35814 @@ -66,7 +68,9 @@
     37212-    return (SP != 0 && SP->_term != 0) ? SP->_term : _nc_prescreen._cur_term;
     37213+    return NCURSES_SP_NAME(_nc_get_cur_term) (NCURSES_SP_ARG);
     37214 }
     37215+
     37216 #else
     37217 NCURSES_EXPORT_VAR(TERMINAL *) cur_term = 0;
     37218 #endif
     37219 
     37220 NCURSES_EXPORT(TERMINAL *)
     37221-set_curterm(TERMINAL * termp)
     37222+NCURSES_SP_NAME(set_curterm) (NCURSES_SP_DCLx TERMINAL * termp)
     37223 {
     37224     TERMINAL *oldterm;
     37225 
     37226@@ -64,18 +82,27 @@
     37227 
     37228     _nc_lock_global(curses);
    3581537229     oldterm = cur_term;
    35816      if (SP)
    35817         SP->_term = termp;
     37230-    if (SP)
     37231-       SP->_term = termp;
    3581837232-#if BROKEN_LINKER || USE_REENTRANT
     37233-    _nc_prescreen._cur_term = termp;
     37234-#else
     37235+    if (SP_PARM)
     37236+       SP_PARM->_term = termp;
    3581937237+#if BROKEN_LINKER && !USE_REENTRANT
    35820 +    cur_term = termp;
    35821 +#elif BROKEN_LINKER || USE_REENTRANT
    35822      _nc_prescreen._cur_term = termp;
    35823  #else
    3582437238     cur_term = termp;
    35825 @@ -84,7 +88,7 @@
     37239+#else
     37240+    CurTerm = termp;
     37241 #endif
     37242     if (termp != 0) {
     37243+#ifdef USE_TERM_DRIVER
     37244+       TERMINAL_CONTROL_BLOCK *TCB = (TERMINAL_CONTROL_BLOCK *) termp;
     37245+       ospeed = _nc_ospeed(termp->_baudrate);
     37246+       if (TCB->drv->isTerminfo && termp->type.Strings) {
     37247+           PC = (char) ((pad_char != NULL) ? pad_char[0] : 0);
     37248+       }
     37249+       TCB->csp = SP_PARM;
     37250+#else
     37251        ospeed = _nc_ospeed(termp->_baudrate);
     37252        if (termp->type.Strings) {
     37253            PC = (char) ((pad_char != NULL) ? pad_char[0] : 0);
     37254        }
     37255+#endif
     37256     }
     37257     _nc_unlock_global(curses);
     37258 
     37259@@ -83,23 +110,65 @@
     37260     return (oldterm);
    3582637261 }
    3582737262 
     37263+#if NCURSES_SP_FUNCS
     37264+NCURSES_EXPORT(TERMINAL *)
     37265+set_curterm(TERMINAL * termp)
     37266+{
     37267+    return NCURSES_SP_NAME(set_curterm) (CURRENT_SCREEN, termp);
     37268+}
     37269+#endif
     37270+
    3582837271 NCURSES_EXPORT(int)
    3582937272-del_curterm(TERMINAL * termp)
     
    3583237275     int rc = ERR;
    3583337276 
    35834 @@ -94,6 +98,10 @@
     37277-    T((T_CALLED("del_curterm(%p)"), termp));
     37278+    T((T_CALLED("del_curterm(%p, %p)"), SP_PARM, termp));
     37279 
     37280-    _nc_lock_global(curses);
    3583537281     if (termp != 0) {
     37282+#ifdef USE_TERM_DRIVER
     37283+       TERMINAL_CONTROL_BLOCK *TCB = (TERMINAL_CONTROL_BLOCK *) termp;
     37284+#endif
     37285+       TERMINAL *cur = (
     37286+#if BROKEN_LINKER && !USE_REENTRANT
     37287+                           cur_term
     37288+#elif BROKEN_LINKER || USE_REENTRANT
     37289+                           NCURSES_SP_NAME(_nc_get_cur_term) (NCURSES_SP_ARG)
     37290+#else
     37291+                           cur_term
     37292+#endif
     37293+       );
     37294+
    3583637295        _nc_free_termtype(&(termp->type));
     37296+       if (termp == cur)
     37297+           NCURSES_SP_NAME(set_curterm) (NCURSES_SP_ARGx 0);
     37298+
    3583737299        FreeIfNeeded(termp->_termname);
    3583837300+#if USE_HOME_TERMINFO
     
    3584037302+           FreeAndNull(_nc_globals.home_terminfo);
    3584137303+#endif
     37304+#ifdef USE_TERM_DRIVER
     37305+       if (TCB->drv)
     37306+           TCB->drv->release(TCB);
     37307+#endif
    3584237308        free(termp);
    35843         if (termp == cur_term)
    35844             set_curterm(0);
    35845 @@ -103,3 +111,13 @@
    35846  
    35847      returnCode(rc);
    35848  }
     37309-       if (termp == cur_term)
     37310-           set_curterm(0);
     37311+
     37312        rc = OK;
     37313     }
     37314+    returnCode(rc);
     37315+}
    3584937316+
    3585037317+#if NCURSES_SP_FUNCS
     
    3585337320+{
    3585437321+    int rc = ERR;
     37322+
     37323+    _nc_lock_global(curses);
    3585537324+    rc = NCURSES_SP_NAME(del_curterm) (CURRENT_SCREEN, termp);
     37325     _nc_unlock_global(curses);
     37326 
     37327-    returnCode(rc);
    3585637328+    return (rc);
    35857 +}
     37329 }
    3585837330+#endif
    3585937331diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_data.c ncurses-5.7/ncurses/tinfo/lib_data.c
    3586037332--- ncurses-5.7.orig/ncurses/tinfo/lib_data.c   2008-08-23 15:16:15.000000000 -0700
    35861 +++ ncurses-5.7/ncurses/tinfo/lib_data.c        2009-07-19 15:04:09.000000000 -0700
     37333+++ ncurses-5.7/ncurses/tinfo/lib_data.c        2009-09-12 08:51:47.000000000 -0700
    3586237334@@ -1,5 +1,5 @@
    3586337335 /****************************************************************************
     
    3598937461diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_has_cap.c ncurses-5.7/ncurses/tinfo/lib_has_cap.c
    3599037462--- ncurses-5.7.orig/ncurses/tinfo/lib_has_cap.c        2003-10-25 12:43:55.000000000 -0700
    35991 +++ ncurses-5.7/ncurses/tinfo/lib_has_cap.c     2009-07-19 15:03:59.000000000 -0700
     37463+++ ncurses-5.7/ncurses/tinfo/lib_has_cap.c     2009-09-12 08:51:37.000000000 -0700
    3599237464@@ -1,5 +1,5 @@
    3599337465 /****************************************************************************
     
    3607237544diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_kernel.c ncurses-5.7/ncurses/tinfo/lib_kernel.c
    3607337545--- ncurses-5.7.orig/ncurses/tinfo/lib_kernel.c 2004-05-08 10:11:21.000000000 -0700
    36074 +++ ncurses-5.7/ncurses/tinfo/lib_kernel.c      2009-07-19 15:04:06.000000000 -0700
     37546+++ ncurses-5.7/ncurses/tinfo/lib_kernel.c      2009-09-12 08:51:43.000000000 -0700
    3607537547@@ -1,5 +1,5 @@
    3607637548 /****************************************************************************
     
    3622737699diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_longname.c ncurses-5.7/ncurses/tinfo/lib_longname.c
    3622837700--- ncurses-5.7.orig/ncurses/tinfo/lib_longname.c       2000-12-09 18:55:07.000000000 -0800
    36229 +++ ncurses-5.7/ncurses/tinfo/lib_longname.c    2009-07-19 15:03:59.000000000 -0700
     37701+++ ncurses-5.7/ncurses/tinfo/lib_longname.c    2009-09-12 08:51:37.000000000 -0700
    3623037702@@ -1,5 +1,5 @@
    3623137703 /****************************************************************************
     
    3630037772diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_napms.c ncurses-5.7/ncurses/tinfo/lib_napms.c
    3630137773--- ncurses-5.7.orig/ncurses/tinfo/lib_napms.c  2008-05-03 14:34:13.000000000 -0700
    36302 +++ ncurses-5.7/ncurses/tinfo/lib_napms.c       2009-07-19 15:04:06.000000000 -0700
     37774+++ ncurses-5.7/ncurses/tinfo/lib_napms.c       2009-09-12 08:51:43.000000000 -0700
    3630337775@@ -1,5 +1,5 @@
    3630437776 /****************************************************************************
     
    3635437826diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_options.c ncurses-5.7/ncurses/tinfo/lib_options.c
    3635537827--- ncurses-5.7.orig/ncurses/tinfo/lib_options.c        2008-08-16 14:20:48.000000000 -0700
    36356 +++ ncurses-5.7/ncurses/tinfo/lib_options.c     2009-07-19 15:04:13.000000000 -0700
     37828+++ ncurses-5.7/ncurses/tinfo/lib_options.c     2009-09-12 08:52:05.000000000 -0700
    3635737829@@ -1,5 +1,5 @@
    3635837830 /****************************************************************************
     
    3637037842 
    3637137843 /*
    36372 @@ -43,14 +44,20 @@
    36373  
    36374  #include <term.h>
    36375  
     37844@@ -41,23 +42,28 @@
     37845 
     37846 #include <curses.priv.h>
     37847 
     37848-#include <term.h>
     37849-
    3637637850-MODULE_ID("$Id: lib_options.c,v 1.58 2008/08/16 21:20:48 Werner.Fink Exp $")
    3637737851+#ifndef CUR
    3637837852+#define CUR SP_TERMTYPE
    3637937853+#endif
    36380 +
    36381 +MODULE_ID("$Id: lib_options.c,v 1.65 2009/07/04 18:14:31 tom Exp $")
    3638237854 
    3638337855-static int _nc_curs_set(SCREEN *, int);
    36384  static int _nc_meta(SCREEN *, bool);
     37856-static int _nc_meta(SCREEN *, bool);
     37857+MODULE_ID("$Id: lib_options.c,v 1.70 2009/08/16 14:16:38 tom Exp $")
    3638537858 
    3638637859 NCURSES_EXPORT(int)
    3638737860 idlok(WINDOW *win, bool flag)
    3638837861 {
    36389 +#if NCURSES_SP_FUNCS
    36390 +    SCREEN *sp = CURRENT_SCREEN;
    36391 +#endif
     37862+    int res = ERR;
    3639237863     T((T_CALLED("idlok(%p,%d)"), win, flag));
    3639337864 
    3639437865     if (win) {
    36395 @@ -63,6 +70,9 @@
     37866-       _nc_idlok = win->_idlok = (flag && (has_il() || change_scroll_region));
     37867-       returnCode(OK);
     37868-    } else
     37869-       returnCode(ERR);
     37870+       SCREEN *sp = _nc_screen_of(win);
     37871+       if (sp && IsTermInfo(sp)) {
     37872+           sp->_nc_sp_idlok =
     37873+               win->_idlok = (flag && (NCURSES_SP_NAME(has_il) (NCURSES_SP_ARG)
     37874+                                       || change_scroll_region));
     37875+           res = OK;
     37876+       }
     37877+    }
     37878+    returnCode(res);
     37879 }
     37880 
    3639637881 NCURSES_EXPORT(void)
    36397  idcok(WINDOW *win, bool flag)
     37882@@ -65,25 +71,34 @@
    3639837883 {
    36399 +#if NCURSES_SP_FUNCS
    36400 +    SCREEN *sp = CURRENT_SCREEN;
    36401 +#endif
    3640237884     T((T_CALLED("idcok(%p,%d)"), win, flag));
    3640337885 
    36404      if (win)
    36405 @@ -72,18 +82,26 @@
     37886-    if (win)
     37887-       _nc_idcok = win->_idcok = (flag && has_ic());
     37888-
     37889+    if (win) {
     37890+       SCREEN *sp = _nc_screen_of(win);
     37891+       sp->_nc_sp_idcok = win->_idcok = (flag && NCURSES_SP_NAME(has_ic) (NCURSES_SP_ARG));
     37892+    }
     37893     returnVoid;
    3640637894 }
    3640737895 
     
    3641037898+NCURSES_SP_NAME(halfdelay) (NCURSES_SP_DCLx int t)
    3641137899 {
    36412      T((T_CALLED("halfdelay(%d)"), t));
     37900-    T((T_CALLED("halfdelay(%d)"), t));
     37901+    T((T_CALLED("halfdelay(%p,%d)"), SP_PARM, t));
    3641337902 
    3641437903-    if (t < 1 || t > 255 || SP == 0)
    36415 +    if (t < 1 || t > 255 || SP_PARM == 0)
     37904+    if (t < 1 || t > 255 || !IsValidTIScreen(SP_PARM))
    3641637905        returnCode(ERR);
    3641737906 
    36418      cbreak();
     37907-    cbreak();
    3641937908-    SP->_cbreak = t + 1;
     37909+    NCURSES_SP_NAME(cbreak) (NCURSES_SP_ARG);
    3642037910+    SP_PARM->_cbreak = t + 1;
    3642137911     returnCode(OK);
     
    3643337923 nodelay(WINDOW *win, bool flag)
    3643437924 {
    36435 @@ -148,27 +166,64 @@
     37925@@ -129,7 +144,7 @@
     37926 
     37927     if (win) {
     37928        win->_use_keypad = flag;
     37929-       returnCode(_nc_keypad(SP, flag));
     37930+       returnCode(_nc_keypad(_nc_screen_of(win), flag));
     37931     } else
     37932        returnCode(ERR);
     37933 }
     37934@@ -137,38 +152,106 @@
     37935 NCURSES_EXPORT(int)
     37936 meta(WINDOW *win GCC_UNUSED, bool flag)
     37937 {
     37938-    int result;
     37939+    int result = ERR;
     37940+    SCREEN *sp = (win == 0) ? CURRENT_SCREEN : _nc_screen_of(win);
     37941 
     37942     /* Ok, we stay relaxed and don't signal an error if win is NULL */
     37943     T((T_CALLED("meta(%p,%d)"), win, flag));
     37944-    result = _nc_meta(SP, flag);
     37945+
     37946+    /* Ok, we stay relaxed and don't signal an error if win is NULL */
     37947+
     37948+    if (sp != 0) {
     37949+       sp->_use_meta = flag;
     37950+#ifdef USE_TERM_DRIVER
     37951+       if (IsTermInfo(sp)) {
     37952+           if (flag) {
     37953+               NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "meta_on", meta_on);
     37954+           } else {
     37955+               NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "meta_off", meta_off);
     37956+           }
     37957+       }
     37958+#else
     37959+       if (flag) {
     37960+           NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "meta_on", meta_on);
     37961+       } else {
     37962+           NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "meta_off", meta_off);
     37963+       }
     37964+#endif
     37965+       result = OK;
     37966+    }
     37967     returnCode(result);
     37968 }
     37969 
    3643637970 /* curs_set() moved here to narrow the kernel interface */
    3643737971 
     
    3644137975 {
    3644237976-    int result;
    36443 +    int result = ERR;
    36444 +
     37977+    int code = ERR;
    3644537978+    T((T_CALLED("curs_set(%p,%d)"), SP_PARM, vis));
     37979 
     37980-    T((T_CALLED("curs_set(%d)"), vis));
     37981-    result = _nc_curs_set(SP, vis);
     37982-    returnCode(result);
    3644637983+    if (SP_PARM != 0 && vis >= 0 && vis <= 2) {
    3644737984+       int cursor = SP_PARM->_cursor;
    36448  
    36449 -    T((T_CALLED("curs_set(%d)"), vis));
    36450 -    result = _nc_curs_set(SP, vis);
     37985+       bool bBuiltIn = !IsTermInfo(SP_PARM);
    3645137986+       if (vis == cursor) {
    36452 +           result = cursor;
     37987+           code = cursor;
    3645337988+       } else {
    36454 +           switch (vis) {
    36455 +           case 2:
    36456 +               result = _nc_putp_flush("cursor_visible", cursor_visible);
    36457 +               break;
    36458 +           case 1:
    36459 +               result = _nc_putp_flush("cursor_normal", cursor_normal);
    36460 +               break;
    36461 +           case 0:
    36462 +               result = _nc_putp_flush("cursor_invisible", cursor_invisible);
    36463 +               break;
    36464 +           }
    36465 +           if (result != ERR)
    36466 +               result = (cursor == -1 ? 1 : cursor);
     37989+           if (!bBuiltIn) {
     37990+               switch (vis) {
     37991+               case 2:
     37992+                   code = NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx
     37993+                                                           "cursor_visible",
     37994+                                                           cursor_visible);
     37995+                   break;
     37996+               case 1:
     37997+                   code = NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx
     37998+                                                           "cursor_normal",
     37999+                                                           cursor_normal);
     38000+                   break;
     38001+               case 0:
     38002+                   code = NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx
     38003+                                                           "cursor_invisible",
     38004+                                                           cursor_invisible);
     38005+                   break;
     38006+               }
     38007+           } else
     38008+               code = ERR;
     38009+           if (code != ERR)
     38010+               code = (cursor == -1 ? 1 : cursor);
    3646738011+           SP_PARM->_cursor = vis;
    3646838012+       }
    3646938013+    }
    36470      returnCode(result);
     38014+    returnCode(code);
    3647138015 }
    3647238016 
     
    3647538019-typeahead(int fd)
    3647638020+curs_set(int vis)
    36477 +{
     38021 {
     38022-    T((T_CALLED("typeahead(%d)"), fd));
     38023-    if (SP != 0) {
     38024-       SP->_checkfd = fd;
    3647838025+    return (NCURSES_SP_NAME(curs_set) (CURRENT_SCREEN, vis));
    3647938026+}
     
    3648238029+NCURSES_EXPORT(int)
    3648338030+NCURSES_SP_NAME(typeahead) (NCURSES_SP_DCLx int fd)
    36484  {
    36485      T((T_CALLED("typeahead(%d)"), fd));
    36486 -    if (SP != 0) {
    36487 -       SP->_checkfd = fd;
    36488 +    if (SP_PARM != 0) {
     38031+{
     38032+    T((T_CALLED("typeahead(%p, %d)"), SP_PARM, fd));
     38033+    if (IsValidTIScreen(SP_PARM)) {
    3648938034+       SP_PARM->_checkfd = fd;
    3649038035        returnCode(OK);
     
    3650538050 **      has_key()
    3650638051 **
    36507 @@ -190,11 +245,19 @@
     38052@@ -189,42 +272,49 @@
     38053                || has_key_internal(keycode, tp->sibling));
    3650838054 }
    3650938055 
    36510  NCURSES_EXPORT(int)
     38056+#ifdef USE_TERM_DRIVER
     38057+NCURSES_EXPORT(int)
     38058+TINFO_HAS_KEY(SCREEN *sp, int keycode)
     38059+{
     38060+    return IsValidTIScreen(sp) ?
     38061+       has_key_internal(keycode, sp->_keytry) : 0;
     38062+}
     38063+#else
     38064+NCURSES_EXPORT(int)
    3651138065+NCURSES_SP_NAME(has_key) (NCURSES_SP_DCLx int keycode)
    3651238066+{
     
    3651638070+
    3651738071+#if NCURSES_SP_FUNCS
    36518 +NCURSES_EXPORT(int)
     38072 NCURSES_EXPORT(int)
    3651938073 has_key(int keycode)
    3652038074 {
     
    3652438078 }
    3652538079+#endif
     38080+#endif
    3652638081 #endif /* NCURSES_EXT_FUNCS */
    3652738082 
    36528  /*
    36529 @@ -202,29 +265,26 @@
    36530   * than cur_term.
    36531   */
    36532  #undef CUR
     38083-/*
     38084- * Internal entrypoints use SCREEN* parameter to obtain capabilities rather
     38085- * than cur_term.
     38086- */
     38087-#undef CUR
    3653338088-#define CUR (sp->_term)->type.
    36534 +#define CUR SP_TERMTYPE
    36535  
     38089-
    3653638090-static int
    3653738091-_nc_putp(const char *name GCC_UNUSED, const char *value)
     
    3654538099-       TPUTS_TRACE(name);
    3654638100-       rc = putp(value);
    36547 +    int rc = _nc_putp(name, value);
     38101+    int rc = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx name, value);
    3654838102+    if (rc != ERR) {
    3654938103+       _nc_flush();
     
    3655338107 
    3655438108-static int
    36555 +#if NCURSES_SP_FUNCS
     38109+#if 0 && NCURSES_SP_FUNCS
    3655638110+NCURSES_EXPORT(int)
    3655738111 _nc_putp_flush(const char *name, const char *value)
     
    3656838122 /* Turn the keypad on/off
    3656938123  *
    36570 @@ -245,12 +305,12 @@
     38124@@ -245,12 +335,12 @@
    3657138125         * has wgetch() reading in more than one thread.  putp() and below
    3657238126         * may use SP explicitly.
     
    3658338137            rc = _nc_keypad(sp, flag);
    3658438138            _nc_set_screen(save_sp);
    36585 @@ -276,45 +336,14 @@
     38139@@ -258,10 +348,19 @@
     38140        } else
     38141 #endif
     38142        {
     38143+#ifdef USE_TERM_DRIVER
     38144+           rc = CallDriver_1(sp, kpad, flag);
     38145+           if (rc == OK)
     38146+               sp->_keypad_on = flag;
     38147+#else
     38148            if (flag) {
     38149-               (void) _nc_putp_flush("keypad_xmit", keypad_xmit);
     38150+               (void) NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx
     38151+                                                       "keypad_xmit",
     38152+                                                       keypad_xmit);
     38153            } else if (!flag && keypad_local) {
     38154-               (void) _nc_putp_flush("keypad_local", keypad_local);
     38155+               (void) NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx
     38156+                                                       "keypad_local",
     38157+                                                       keypad_local);
     38158            }
     38159 
     38160            if (flag && !sp->_tried) {
     38161@@ -270,58 +369,8 @@
     38162            }
     38163            sp->_keypad_on = flag;
     38164            rc = OK;
     38165+#endif
     38166        }
     38167     }
     38168     return (rc);
    3658638169 }
    36587  
    36588  static int
     38170-
     38171-static int
    3658938172-_nc_curs_set(SCREEN *sp, int vis)
    3659038173-{
     
    3661838201-
    3661938202-static int
    36620  _nc_meta(SCREEN *sp, bool flag)
    36621  {
    36622      int result = ERR;
    36623  
    36624      /* Ok, we stay relaxed and don't signal an error if win is NULL */
    36625  
     38203-_nc_meta(SCREEN *sp, bool flag)
     38204-{
     38205-    int result = ERR;
     38206-
     38207-    /* Ok, we stay relaxed and don't signal an error if win is NULL */
     38208-
    3662638209-    if (SP != 0) {
    3662738210-       SP->_use_meta = flag;
    36628 +    if (sp != 0) {
    36629 +       sp->_use_meta = flag;
    36630  
    36631         if (flag) {
    36632             _nc_putp("meta_on", meta_on);
     38211-
     38212-       if (flag) {
     38213-           _nc_putp("meta_on", meta_on);
     38214-       } else {
     38215-           _nc_putp("meta_off", meta_off);
     38216-       }
     38217-       result = OK;
     38218-    }
     38219-    return result;
     38220-}
    3663338221diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_print.c ncurses-5.7/ncurses/tinfo/lib_print.c
    3663438222--- ncurses-5.7.orig/ncurses/tinfo/lib_print.c  2006-11-25 16:26:34.000000000 -0800
    36635 +++ ncurses-5.7/ncurses/tinfo/lib_print.c       2009-07-19 15:04:06.000000000 -0700
     38223+++ ncurses-5.7/ncurses/tinfo/lib_print.c       2009-09-12 08:51:43.000000000 -0700
    3663638224@@ -1,5 +1,5 @@
    3663738225 /****************************************************************************
     
    3670238290diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_raw.c ncurses-5.7/ncurses/tinfo/lib_raw.c
    3670338291--- ncurses-5.7.orig/ncurses/tinfo/lib_raw.c    2007-09-29 14:50:22.000000000 -0700
    36704 +++ ncurses-5.7/ncurses/tinfo/lib_raw.c 2009-07-19 15:02:20.000000000 -0700
     38292+++ ncurses-5.7/ncurses/tinfo/lib_raw.c 2009-09-12 08:51:59.000000000 -0700
    3670538293@@ -1,5 +1,5 @@
    3670638294 /****************************************************************************
    3670738295- * Copyright (c) 1998-2002,2007 Free Software Foundation, Inc.              *
    36708 + * Copyright (c) 1998-2007,2009 Free Software Foundation, Inc.              *
     38296+ * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.              *
    3670938297  *                                                                          *
    3671038298  * Permission is hereby granted, free of charge, to any person obtaining a  *
     
    3672038308 
    3672138309 /*
    36722 @@ -49,7 +50,7 @@
     38310@@ -47,9 +48,8 @@
     38311  */
     38312 
    3672338313 #include <curses.priv.h>
    36724  #include <term.h>              /* cur_term */
     38314-#include <term.h>              /* cur_term */
    3672538315 
    3672638316-MODULE_ID("$Id: lib_raw.c,v 1.14 2007/09/29 21:50:22 tom Exp $")
    36727 +MODULE_ID("$Id: lib_raw.c,v 1.15 2009/02/15 00:49:02 tom Exp $")
     38317+MODULE_ID("$Id: lib_raw.c,v 1.17 2009/08/01 23:11:02 tom Exp $")
    3672838318 
    3672938319 #if SVR4_TERMIO && !defined(_POSIX_SOURCE)
    3673038320 #define _POSIX_SOURCE
    36731 @@ -61,7 +62,7 @@
     38321@@ -61,7 +61,7 @@
    3673238322 
    3673338323 #ifdef __EMX__
     
    3673838328 #define _nc_setmode(mode)      /* nothing */
    3673938329 #endif
    36740 @@ -77,13 +78,13 @@
     38330@@ -77,19 +77,19 @@
    3674138331 #endif /* TRACE */
    3674238332 
     
    3674638336 {
    3674738337     int result = ERR;
    36748  
    36749      T((T_CALLED("raw()")));
    36750  
     38338+    TERMINAL *termp;
     38339 
     38340-    T((T_CALLED("raw()")));
     38341-
    3675138342-    if (SP != 0 && cur_term != 0) {
    36752 +    if (SP_PARM != 0 && cur_term != 0) {
     38343+    T((T_CALLED("raw(%p)"), SP_PARM));
     38344+    if ((termp = TerminalOf(SP_PARM)) != 0) {
    3675338345        TTY buf;
    3675438346 
    3675538347        BEFORE("raw");
    36756 @@ -99,8 +100,8 @@
     38348        _nc_setmode(O_BINARY);
     38349 
     38350-       buf = cur_term->Nttyb;
     38351+       buf = termp->Nttyb;
     38352 #ifdef TERMIOS
     38353        buf.c_lflag &= ~(ICANON | ISIG | IEXTEN);
     38354        buf.c_iflag &= ~(COOKED_INPUT);
     38355@@ -98,30 +98,39 @@
     38356 #else
    3675738357        buf.sg_flags |= RAW;
    3675838358 #endif
    36759         if ((result = _nc_set_tty_mode(&buf)) == OK) {
     38359-       if ((result = _nc_set_tty_mode(&buf)) == OK) {
    3676038360-           SP->_raw = TRUE;
    3676138361-           SP->_cbreak = 1;
     38362-           cur_term->Nttyb = buf;
     38363+       result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
     38364+       if (result == OK) {
    3676238365+           SP_PARM->_raw = TRUE;
    3676338366+           SP_PARM->_cbreak = 1;
    36764             cur_term->Nttyb = buf;
     38367+           termp->Nttyb = buf;
    3676538368        }
    3676638369        AFTER("raw");
    36767 @@ -108,14 +109,22 @@
     38370     }
    3676838371     returnCode(result);
    3676938372 }
     
    3677338376-cbreak(void)
    3677438377+raw(void)
    36775 +{
     38378 {
     38379-    int result = ERR;
    3677638380+    return NCURSES_SP_NAME(raw) (CURRENT_SCREEN);
    3677738381+}
    3677838382+#endif
    36779 +
     38383 
     38384-    T((T_CALLED("cbreak()")));
    3678038385+NCURSES_EXPORT(int)
    3678138386+NCURSES_SP_NAME(cbreak) (NCURSES_SP_DCL0)
    36782  {
    36783      int result = ERR;
    36784  
    36785      T((T_CALLED("cbreak()")));
     38387+{
     38388+    int result = ERR;
     38389+    TERMINAL *termp;
    3678638390 
    3678738391-    if (SP != 0 && cur_term != 0) {
    36788 +    if (SP_PARM != 0 && cur_term != 0) {
     38392+    T((T_CALLED("cbreak(%p)"), SP_PARM));
     38393+    if ((termp = TerminalOf(SP_PARM)) != 0) {
    3678938394        TTY buf;
    3679038395 
    3679138396        BEFORE("cbreak");
    36792 @@ -132,7 +141,7 @@
     38397        _nc_setmode(O_BINARY);
     38398 
     38399-       buf = cur_term->Nttyb;
     38400+       buf = termp->Nttyb;
     38401 #ifdef TERMIOS
     38402        buf.c_lflag &= ~ICANON;
     38403        buf.c_iflag &= ~ICRNL;
     38404@@ -131,134 +140,172 @@
     38405 #else
    3679338406        buf.sg_flags |= CBREAK;
    3679438407 #endif
    36795         if ((result = _nc_set_tty_mode(&buf)) == OK) {
     38408-       if ((result = _nc_set_tty_mode(&buf)) == OK) {
    3679638409-           SP->_cbreak = 1;
     38410-           cur_term->Nttyb = buf;
     38411+       result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
     38412+       if (result == OK) {
    3679738413+           SP_PARM->_cbreak = 1;
    36798             cur_term->Nttyb = buf;
     38414+           termp->Nttyb = buf;
    3679938415        }
    3680038416        AFTER("cbreak");
    36801 @@ -140,12 +149,20 @@
     38417     }
    3680238418     returnCode(result);
    3680338419 }
     
    3682038436 {
    3682138437     int result = ERR;
    36822  
    36823 @@ -169,14 +186,22 @@
     38438+    TERMINAL *termp;
     38439 
     38440-    T((T_CALLED("qiflush()")));
     38441-
     38442-    if (cur_term != 0) {
     38443+    T((T_CALLED("qiflush(%p)"), SP_PARM));
     38444+    if ((termp = TerminalOf(SP_PARM)) != 0) {
     38445        TTY buf;
     38446 
     38447        BEFORE("qiflush");
     38448-       buf = cur_term->Nttyb;
     38449+       buf = termp->Nttyb;
     38450 #ifdef TERMIOS
     38451        buf.c_lflag &= ~(NOFLSH);
     38452-       result = _nc_set_tty_mode(&buf);
     38453+       result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
     38454 #else
     38455        /* FIXME */
     38456 #endif
     38457        if (result == OK)
     38458-           cur_term->Nttyb = buf;
     38459+           termp->Nttyb = buf;
     38460        AFTER("qiflush");
     38461     }
    3682438462     returnVoid;
    3682538463 }
     
    3683838476 {
    3683938477     int result = ERR;
    36840  
    36841      T((T_CALLED("noraw()")));
    36842  
     38478+    TERMINAL *termp;
     38479 
     38480-    T((T_CALLED("noraw()")));
     38481-
    3684338482-    if (SP != 0 && cur_term != 0) {
    36844 +    if (SP_PARM != 0 && cur_term != 0) {
     38483+    T((T_CALLED("noraw(%p)"), SP_PARM));
     38484+    if ((termp = TerminalOf(SP_PARM)) != 0) {
    3684538485        TTY buf;
    3684638486 
    3684738487        BEFORE("noraw");
    36848 @@ -191,8 +216,8 @@
     38488        _nc_setmode(O_TEXT);
     38489 
     38490-       buf = cur_term->Nttyb;
     38491+       buf = termp->Nttyb;
     38492 #ifdef TERMIOS
     38493        buf.c_lflag |= ISIG | ICANON |
     38494-           (cur_term->Ottyb.c_lflag & IEXTEN);
     38495+           (termp->Ottyb.c_lflag & IEXTEN);
     38496        buf.c_iflag |= COOKED_INPUT;
     38497 #else
    3684938498        buf.sg_flags &= ~(RAW | CBREAK);
    3685038499 #endif
    36851         if ((result = _nc_set_tty_mode(&buf)) == OK) {
     38500-       if ((result = _nc_set_tty_mode(&buf)) == OK) {
    3685238501-           SP->_raw = FALSE;
    3685338502-           SP->_cbreak = 0;
     38503-           cur_term->Nttyb = buf;
     38504+       result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
     38505+       if (result == OK) {
    3685438506+           SP_PARM->_raw = FALSE;
    3685538507+           SP_PARM->_cbreak = 0;
    36856             cur_term->Nttyb = buf;
     38508+           termp->Nttyb = buf;
    3685738509        }
    3685838510        AFTER("noraw");
    36859 @@ -200,14 +225,22 @@
     38511     }
    3686038512     returnCode(result);
    3686138513 }
     
    3686538517-nocbreak(void)
    3686638518+noraw(void)
    36867 +{
     38519 {
     38520-    int result = ERR;
    3686838521+    return NCURSES_SP_NAME(noraw) (CURRENT_SCREEN);
    3686938522+}
    3687038523+#endif
    36871 +
     38524 
     38525-    T((T_CALLED("nocbreak()")));
    3687238526+NCURSES_EXPORT(int)
    3687338527+NCURSES_SP_NAME(nocbreak) (NCURSES_SP_DCL0)
    36874  {
    36875      int result = ERR;
    36876  
    36877      T((T_CALLED("nocbreak()")));
     38528+{
     38529+    int result = ERR;
     38530+    TERMINAL *termp;
    3687838531 
    3687938532-    if (SP != 0 && cur_term != 0) {
    36880 +    if (SP_PARM != 0 && cur_term != 0) {
     38533+    T((T_CALLED("nocbreak(%p)"), SP_PARM));
     38534+    if ((termp = TerminalOf(SP_PARM)) != 0) {
    3688138535        TTY buf;
    3688238536 
    3688338537        BEFORE("nocbreak");
    36884 @@ -221,7 +254,7 @@
     38538        _nc_setmode(O_TEXT);
     38539 
     38540-       buf = cur_term->Nttyb;
     38541+       buf = termp->Nttyb;
     38542 #ifdef TERMIOS
     38543        buf.c_lflag |= ICANON;
     38544        buf.c_iflag |= ICRNL;
     38545 #else
    3688538546        buf.sg_flags &= ~CBREAK;
    3688638547 #endif
    36887         if ((result = _nc_set_tty_mode(&buf)) == OK) {
     38548-       if ((result = _nc_set_tty_mode(&buf)) == OK) {
    3688838549-           SP->_cbreak = 0;
     38550-           cur_term->Nttyb = buf;
     38551+       result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
     38552+       if (result == OK) {
    3688938553+           SP_PARM->_cbreak = 0;
    36890             cur_term->Nttyb = buf;
     38554+           termp->Nttyb = buf;
    3689138555        }
    3689238556        AFTER("nocbreak");
    36893 @@ -229,12 +262,20 @@
     38557     }
    3689438558     returnCode(result);
    3689538559 }
    3689638560 
     38561-/*
     38562- * Note:
     38563- * this implementation may be wrong.  See the comment under intrflush().
     38564- */
    3689738565+#if NCURSES_SP_FUNCS
    3689838566+NCURSES_EXPORT(int)
     
    3690338571+#endif
    3690438572+
    36905  /*
    36906   * Note:
    36907   * this implementation may be wrong.  See the comment under intrflush().
    36908   */
    3690938573 NCURSES_EXPORT(void)
    3691038574-noqiflush(void)
     
    3691238576 {
    3691338577     int result = ERR;
    36914  
    36915 @@ -259,6 +300,14 @@
     38578+    TERMINAL *termp;
     38579 
     38580-    T((T_CALLED("noqiflush()")));
     38581-
     38582-    if (cur_term != 0) {
     38583+    T((T_CALLED("noqiflush(%p)"), SP_PARM));
     38584+    if ((termp = TerminalOf(SP_PARM)) != 0) {
     38585        TTY buf;
     38586 
     38587        BEFORE("noqiflush");
     38588-       buf = cur_term->Nttyb;
     38589+       buf = termp->Nttyb;
     38590 #ifdef TERMIOS
     38591        buf.c_lflag |= NOFLSH;
     38592-       result = _nc_set_tty_mode(&buf);
     38593+       result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
     38594 #else
     38595        /* FIXME */
     38596 #endif
     38597-       if (result == OK) {
     38598-           cur_term->Nttyb = buf;
     38599-       }
     38600+       if (result == OK)
     38601+           termp->Nttyb = buf;
     38602        AFTER("noqiflush");
     38603     }
    3691638604     returnVoid;
    3691738605 }
     
    3692838616  * This call does the same thing as the qiflush()/noqiflush() pair.  We know
    3692938617  * for certain that SVr3 intrflush() tweaks the NOFLSH bit; on the other hand,
    36930 @@ -267,7 +316,7 @@
     38618@@ -267,30 +314,41 @@
    3693138619  * curs_inopts(3x) is too exact to be coincidence.
    3693238620  */
     
    3693638624 {
    3693738625     int result = ERR;
    36938  
    36939 @@ -294,3 +343,11 @@
     38626+    TERMINAL *termp;
     38627 
     38628-    T((T_CALLED("intrflush(%d)"), flag));
     38629+    T((T_CALLED("intrflush(%p,%d)"), SP_PARM, flag));
     38630+    if (SP_PARM == 0)
     38631+       returnCode(ERR);
     38632 
     38633-    if (cur_term != 0) {
     38634+    if ((termp = TerminalOf(SP_PARM)) != 0) {
     38635        TTY buf;
     38636 
     38637        BEFORE("intrflush");
     38638-       buf = cur_term->Nttyb;
     38639+       buf = termp->Nttyb;
     38640 #ifdef TERMIOS
     38641        if (flag)
     38642            buf.c_lflag &= ~(NOFLSH);
     38643        else
     38644            buf.c_lflag |= (NOFLSH);
     38645-       result = _nc_set_tty_mode(&buf);
     38646+       result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
     38647 #else
     38648        /* FIXME */
     38649 #endif
     38650        if (result == OK) {
     38651-           cur_term->Nttyb = buf;
     38652+           termp->Nttyb = buf;
     38653        }
     38654        AFTER("intrflush");
    3694038655     }
    3694138656     returnCode(result);
     
    3695138666diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_setup.c ncurses-5.7/ncurses/tinfo/lib_setup.c
    3695238667--- ncurses-5.7.orig/ncurses/tinfo/lib_setup.c  2008-08-03 15:42:33.000000000 -0700
    36953 +++ ncurses-5.7/ncurses/tinfo/lib_setup.c       2009-07-19 15:04:06.000000000 -0700
     38668+++ ncurses-5.7/ncurses/tinfo/lib_setup.c       2009-09-12 08:52:09.000000000 -0700
    3695438669@@ -1,5 +1,5 @@
    3695538670 /****************************************************************************
     
    3696738682 
    3696838683 /*
    36969 @@ -53,7 +54,7 @@
    36970  
    36971  #include <term.h>              /* lines, columns, cur_term */
    36972  
     38684@@ -51,9 +52,7 @@
     38685 #include <locale.h>
     38686 #endif
     38687 
     38688-#include <term.h>              /* lines, columns, cur_term */
     38689-
    3697338690-MODULE_ID("$Id: lib_setup.c,v 1.111 2008/08/03 22:42:33 tom Exp $")
    36974 +MODULE_ID("$Id: lib_setup.c,v 1.117 2009/06/06 17:56:31 tom Exp $")
     38691+MODULE_ID("$Id: lib_setup.c,v 1.119 2009/09/05 20:10:02 tom Exp $")
    3697538692 
    3697638693 /****************************************************************************
    3697738694  *
    36978 @@ -116,54 +117,68 @@
    36979      return cur_term ? cur_term->type.term_names : empty;
     38695@@ -109,61 +108,96 @@
     38696  * Wrap global variables in this module.
     38697  */
     38698 #if USE_REENTRANT
     38699+
     38700 NCURSES_EXPORT(char *)
     38701 NCURSES_PUBLIC_VAR(ttytype) (void)
     38702 {
     38703     static char empty[] = "";
     38704-    return cur_term ? cur_term->type.term_names : empty;
     38705+    char *result = empty;
     38706+
     38707+#if NCURSES_SP_FUNCS
     38708+    if (CURRENT_SCREEN) {
     38709+       TERMINAL *termp = TerminalOf(CURRENT_SCREEN);
     38710+       if (termp != 0) {
     38711+           result = termp->type.term_names;
     38712+       }
     38713+    }
     38714+#else
     38715+    if (cur_term != 0) {
     38716+       result = cur_term->type.term_names;
     38717+    }
     38718+#endif
     38719+    return result;
    3698038720 }
     38721+
    3698138722 NCURSES_EXPORT(int *)
    3698238723-_nc_ptr_Lines(void)
     
    3698638727+    return ptrLines(sp);
    3698738728 }
     38729+
    3698838730 NCURSES_EXPORT(int)
    3698938731 NCURSES_PUBLIC_VAR(LINES) (void)
     
    3699238734+    return *_nc_ptr_Lines(CURRENT_SCREEN);
    3699338735 }
     38736+
    3699438737 NCURSES_EXPORT(int *)
    3699538738-_nc_ptr_Cols(void)
     
    3699938742+    return ptrCols(sp);
    3700038743 }
     38744+
    3700138745 NCURSES_EXPORT(int)
    3700238746 NCURSES_PUBLIC_VAR(COLS) (void)
     
    3700538749+    return *_nc_ptr_Cols(CURRENT_SCREEN);
    3700638750+}
     38751+
    3700738752+NCURSES_EXPORT(int *)
    3700838753+_nc_ptr_Tabsize(SCREEN *sp)
     
    3701038755+    return ptrTabsize(sp);
    3701138756 }
     38757+
    3701238758 NCURSES_EXPORT(int)
    3701338759 NCURSES_PUBLIC_VAR(TABSIZE) (void)
     
    3705638802 #if USE_SIGWINCH
    3705738803 /*
    37058 @@ -188,13 +203,25 @@
     38804@@ -188,17 +222,56 @@
    3705938805 #endif
    3706038806 
    3706138807 NCURSES_EXPORT(void)
    37062 -use_env(bool f)
    3706338808+NCURSES_SP_NAME(use_env) (NCURSES_SP_DCLx bool f)
    37064  {
    37065      T((T_CALLED("use_env()")));
    37066 -    _nc_prescreen.use_env = f;
     38809+{
     38810+    T((T_CALLED("use_env(%p,%d)"), SP_PARM, (int) f));
     38811+#if NCURSES_SP_FUNCS
    3706738812+    if (IsPreScreen(SP_PARM)) {
    3706838813+       SP_PARM->_use_env = f;
    37069 +    } else {
    37070 +       _nc_prescreen.use_env = f;
    3707138814+    }
     38815+#else
     38816+    _nc_prescreen.use_env = f;
     38817+#endif
     38818+    returnVoid;
     38819+}
     38820+
     38821+#if NCURSES_SP_FUNCS
     38822+NCURSES_EXPORT(void)
     38823 use_env(bool f)
     38824 {
     38825-    T((T_CALLED("use_env()")));
     38826+    T((T_CALLED("use_env(%d)"), (int) f));
     38827     _nc_prescreen.use_env = f;
    3707238828     returnVoid;
    3707338829 }
    37074  
    37075 +#if NCURSES_SP_FUNCS
    37076 +NCURSES_EXPORT(void)
    37077 +use_env(bool f)
    37078 +{
    37079 +    NCURSES_SP_NAME(use_env) (CURRENT_SCREEN, f);
    37080 +}
    3708138830+#endif
    37082 +
     38831 
    3708338832 NCURSES_EXPORT(void)
    37084  _nc_get_screensize(SCREEN *sp, int *linep, int *colp)
     38833-_nc_get_screensize(SCREEN *sp, int *linep, int *colp)
     38834+_nc_get_screensize(SCREEN *sp,
     38835+#ifdef USE_TERM_DRIVER
     38836+                  TERMINAL * termp,
     38837+#endif
     38838+                  int *linep, int *colp)
    3708538839 /* Obtain lines/columns values from the environment and/or terminfo entry */
    37086 @@ -320,7 +347,7 @@
     38840 {
     38841+#ifdef USE_TERM_DRIVER
     38842+    TERMINAL_CONTROL_BLOCK *TCB;
     38843+    int my_tabsize;
     38844+
     38845+    assert(termp != 0 && linep != 0 && colp != 0);
     38846+    TCB = (TERMINAL_CONTROL_BLOCK *) termp;
     38847+
     38848+    my_tabsize = TCB->info.tabsize;
     38849+    TCB->drv->size(TCB, linep, colp);
     38850+
     38851+#if USE_REENTRANT
     38852+    if (sp != 0) {
     38853+       sp->_TABSIZE = my_tabsize;
     38854+    }
     38855+#else
     38856+    TABSIZE = my_tabsize;
     38857+#endif
     38858+    T(("TABSIZE = %d", my_tabsize));
     38859+#else /* !USE_TERM_DRIVER */
     38860     TERMINAL *termp = cur_term;
     38861     int my_tabsize;
     38862 
     38863@@ -298,19 +371,31 @@
     38864     TABSIZE = my_tabsize;
     38865 #endif
     38866     T(("TABSIZE = %d", TABSIZE));
     38867+#endif /* USE_TERM_DRIVER */
     38868 }
     38869 
     38870 #if USE_SIZECHANGE
     38871 NCURSES_EXPORT(void)
     38872 _nc_update_screensize(SCREEN *sp)
     38873 {
     38874+    int new_lines;
     38875+    int new_cols;
     38876+
     38877+#ifdef USE_TERM_DRIVER
     38878+    int old_lines;
     38879+    int old_cols;
     38880+
     38881+    assert(sp != 0);
     38882+
     38883+    CallDriver_2(sp, getsize, &old_lines, &old_cols);
     38884+
     38885+#else
     38886     TERMINAL *termp = cur_term;
     38887     int old_lines = lines;
     38888-    int new_lines;
     38889     int old_cols = columns;
     38890-    int new_cols;
     38891+#endif
     38892 
     38893-    _nc_get_screensize(sp, &new_lines, &new_cols);
     38894+    TINFO_GET_SIZE(sp, sp->_term, &new_lines, &new_cols);
     38895 
     38896     /*
     38897      * See is_term_resized() and resizeterm().
     38898@@ -320,7 +405,7 @@
    3708738899     if (sp != 0
    3708838900        && sp->_resize != 0) {
     
    3709338905     }
    3709438906 }
    37095 @@ -604,7 +631,7 @@
     38907@@ -348,6 +433,7 @@
     38908                                            exit(EXIT_FAILURE);\
     38909                                        }
     38910 
     38911+#ifndef USE_TERM_DRIVER
     38912 #if USE_DATABASE || USE_TERMCAP
     38913 /*
     38914  * Return 1 if entry found, 0 if not found, -1 if database not accessible,
     38915@@ -407,6 +493,7 @@
     38916        }
     38917     }
     38918 }
     38919+#endif /* !USE_TERM_DRIVER */
     38920 
     38921 /*
     38922  * Find the locale which is in effect.
     38923@@ -486,18 +573,37 @@
     38924     return 0;
     38925 }
     38926 
     38927-/*
     38928- * This entrypoint is called from tgetent() to allow a special case of reusing
     38929- * the same TERMINAL data (see comment).
     38930- */
     38931 NCURSES_EXPORT(int)
     38932-_nc_setupterm(NCURSES_CONST char *tname, int Filedes, int *errret, bool reuse)
     38933+TINFO_SETUP_TERM(TERMINAL ** tp,
     38934+                NCURSES_CONST char *tname,
     38935+                int Filedes,
     38936+                int *errret,
     38937+                bool reuse)
     38938 {
     38939-    TERMINAL *termp;
     38940+#ifdef USE_TERM_DRIVER
     38941+    TERMINAL_CONTROL_BLOCK *TCB = 0;
     38942+#else
     38943     int status;
     38944+#endif
     38945+    TERMINAL *termp;
     38946+    SCREEN *sp = 0;
     38947+    int code = ERR;
     38948 
     38949     START_TRACE();
     38950+
     38951+#ifdef USE_TERM_DRIVER
     38952+    T((T_CALLED("_nc_setupterm_ex(%p,%s,%d,%p)"),
     38953+       tp, _nc_visbuf(tname), Filedes, errret));
     38954+
     38955+    if (tp == 0) {
     38956+       ret_error0(TGETENT_ERR,
     38957+                  "Invalid parameter, internal error.\n");
     38958+    } else
     38959+       termp = *tp;
     38960+#else
     38961+    termp = cur_term;
     38962     T((T_CALLED("setupterm(%s,%d,%p)"), _nc_visbuf(tname), Filedes, errret));
     38963+#endif
     38964 
     38965     if (tname == 0) {
     38966        tname = getenv("TERM");
     38967@@ -538,20 +644,34 @@
     38968      * properly with this feature).
     38969      */
     38970     if (reuse
     38971-       && (termp = cur_term) != 0
     38972+       && (termp != 0)
     38973        && termp->Filedes == Filedes
     38974        && termp->_termname != 0
     38975        && !strcmp(termp->_termname, tname)
     38976        && _nc_name_match(termp->type.term_names, tname, "|")) {
     38977        T(("reusing existing terminal information and mode-settings"));
     38978+       code = OK;
     38979     } else {
     38980-
     38981+#ifdef USE_TERM_DRIVER
     38982+       termp = (TERMINAL *) typeCalloc(TERMINAL_CONTROL_BLOCK, 1);
     38983+#else
     38984        termp = typeCalloc(TERMINAL, 1);
     38985-
     38986+#endif
     38987        if (termp == 0) {
     38988            ret_error0(TGETENT_ERR,
     38989                       "Not enough memory to create terminal structure.\n");
     38990        }
     38991+#ifdef USE_TERM_DRIVER
     38992+       TCB = (TERMINAL_CONTROL_BLOCK *) termp;
     38993+       code = _nc_get_driver(TCB, tname, errret);
     38994+       if (code == OK) {
     38995+           termp->Filedes = Filedes;
     38996+           termp->_termname = strdup(tname);
     38997+       } else {
     38998+           ret_error0(TGETENT_ERR,
     38999+                      "Could not find any driver to handle this terminal.\n");
     39000+       }
     39001+#else
     39002 #if USE_DATABASE || USE_TERMCAP
     39003        status = grab_entry(tname, &termp->type);
     39004 #else
     39005@@ -599,25 +719,57 @@
     39006            def_prog_mode();
     39007            baudrate();
     39008        }
     39009+       code = OK;
     39010+#endif
     39011     }
     39012 
     39013+#ifdef USE_TERM_DRIVER
     39014+    *tp = termp;
     39015+    NCURSES_SP_NAME(set_curterm) (sp, termp);
     39016+    TCB->drv->init(TCB);
     39017+#else
     39018+    sp = SP;
     39019+#endif
     39020+
    3709639021     /*
    3709739022      * We should always check the screensize, just in case.
    3709839023      */
    3709939024-    _nc_get_screensize(SP, ptrLines(), ptrCols());
    37100 +    _nc_get_screensize(SP, ptrLines(SP), ptrCols(SP));
     39025+    TINFO_GET_SIZE(sp, termp, ptrLines(sp), ptrCols(sp));
    3710139026 
    3710239027     if (errret)
    3710339028        *errret = TGETENT_YES;
     39029 
     39030+#ifndef USE_TERM_DRIVER
     39031     if (generic_type) {
     39032        ret_error(TGETENT_NO, "'%s': I need something more specific.\n", tname);
     39033     }
     39034     if (hard_copy) {
     39035        ret_error(TGETENT_YES, "'%s': I can't handle hardcopy terminals.\n", tname);
     39036     }
     39037-    returnCode(OK);
     39038+#endif
     39039+    returnCode(code);
     39040 }
     39041 
     39042+#ifdef USE_TERM_DRIVER
     39043+/*
     39044+ * This entrypoint is called from tgetent() to allow a special case of reusing
     39045+ * the same TERMINAL data (see comment).
     39046+ */
     39047+NCURSES_EXPORT(int)
     39048+_nc_setupterm(NCURSES_CONST char *tname,
     39049+             int Filedes,
     39050+             int *errret,
     39051+             bool reuse)
     39052+{
     39053+    int res;
     39054+    TERMINAL *termp;
     39055+    res = TINFO_SETUP_TERM(&termp, tname, Filedes, errret, reuse);
     39056+    if (ERR != res)
     39057+       NCURSES_SP_NAME(set_curterm) (CURRENT_SCREEN_PRE, termp);
     39058+    return res;
     39059+}
     39060+#endif
     39061+
     39062 /*
     39063  *     setupterm(termname, Filedes, errret)
     39064  *
    3710439065diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_termcap.c ncurses-5.7/ncurses/tinfo/lib_termcap.c
    3710539066--- ncurses-5.7.orig/ncurses/tinfo/lib_termcap.c        2008-08-16 12:22:55.000000000 -0700
    37106 +++ ncurses-5.7/ncurses/tinfo/lib_termcap.c     2009-07-19 15:04:15.000000000 -0700
     39067+++ ncurses-5.7/ncurses/tinfo/lib_termcap.c     2009-09-12 08:52:09.000000000 -0700
    3710739068@@ -1,5 +1,5 @@
    3710839069 /****************************************************************************
     
    3712939090+#endif
    3713039091+
    37131 +MODULE_ID("$Id: lib_termcap.c,v 1.69 2009/07/11 18:14:21 tom Exp $")
     39092+MODULE_ID("$Id: lib_termcap.c,v 1.70 2009/08/30 17:16:00 tom Exp $")
    3713239093 
    3713339094 NCURSES_EXPORT_VAR(char *) UP = 0;
    3713439095 NCURSES_EXPORT_VAR(char *) BC = 0;
    37135 @@ -76,16 +81,28 @@
     39096@@ -76,16 +81,26 @@
    3713639097  ***************************************************************************/
    3713739098 
     
    3715139112     T((T_CALLED("tgetent()")));
    3715239113 
     39114-    _nc_setupterm((NCURSES_CONST char *) name, STDOUT_FILENO, &errcode, TRUE);
     39115+    TINFO_SETUP_TERM(&termp, (NCURSES_CONST char *) name,
     39116+                    STDOUT_FILENO, &errcode, TRUE);
     39117+
    3715339118+#ifdef USE_TERM_DRIVER
    37154 +    _nc_setupterm_ex(&termp, (NCURSES_CONST char *) name,
    37155 +                    STDOUT_FILENO, &errcode, TRUE);
    37156 +
    3715739119+    if (termp == 0 ||
    3715839120+       !((TERMINAL_CONTROL_BLOCK *) termp)->drv->isTerminfo)
    3715939121+       return (errcode);
    37160 +#else
    37161      _nc_setupterm((NCURSES_CONST char *) name, STDOUT_FILENO, &errcode, TRUE);
    3716239122+#endif
    3716339123 
    3716439124     /*
    3716539125      * In general we cannot tell if the fixed sgr0 is still used by the
    37166 @@ -109,9 +126,9 @@
     39126@@ -109,9 +124,9 @@
    3716739127            /*
    3716839128             * Also free the terminfo data that we loaded (much bigger leak).
     
    3717639136                    if (LAST_TRM == trm)
    3717739137                        LAST_TRM = 0;
    37178 @@ -131,7 +148,7 @@
     39138@@ -131,7 +146,7 @@
    3717939139        }
    3718039140        CacheInx = best;
     
    3718539145 
    3718639146     PC = 0;
    37187 @@ -153,7 +170,7 @@
     39147@@ -153,7 +168,7 @@
    3718839148        if (backspace_if_not_bs != NULL)
    3718939149            BC = backspace_if_not_bs;
     
    3719439154                if (FIX_SGR0 != exit_attribute_mode) {
    3719539155                    free(FIX_SGR0);
    37196 @@ -164,8 +181,8 @@
     39156@@ -164,8 +179,8 @@
    3719739157        LAST_BUF = bufp;
    3719839158        LAST_USE = TRUE;
     
    3720539165 /* LINT_PREPRO
    3720639166 #if 0*/
    37207 @@ -177,6 +194,25 @@
     39167@@ -177,6 +192,25 @@
    3720839168     returnCode(errcode);
    3720939169 }
     
    3723139191  *
    3723239192  * tgetflag(str)
    37233 @@ -187,23 +223,47 @@
     39193@@ -187,24 +221,48 @@
    3723439194  ***************************************************************************/
    3723539195 
     
    3727839238-    returnCode(0);             /* Solaris does this */
    3727939239+    returnCode(result);
    37280 +}
    37281 +
     39240 }
     39241 
    3728239242+#if NCURSES_SP_FUNCS
    3728339243+NCURSES_EXPORT(int)
     
    3728539245+{
    3728639246+    return NCURSES_SP_NAME(tgetflag) (CURRENT_SCREEN, id);
    37287  }
     39247+}
    3728839248+#endif
    37289  
     39249+
    3729039250 /***************************************************************************
    3729139251  *
    37292 @@ -215,25 +275,48 @@
     39252  * tgetnum(str)
     39253@@ -215,25 +273,48 @@
    3729339254  ***************************************************************************/
    3729439255 
     
    3735139312  *
    3735239313  * tgetstr(str, area)
    37353 @@ -244,40 +327,62 @@
     39314@@ -244,40 +325,62 @@
    3735439315  ***************************************************************************/
    3735539316 
     
    3743939400diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_termname.c ncurses-5.7/ncurses/tinfo/lib_termname.c
    3744039401--- ncurses-5.7.orig/ncurses/tinfo/lib_termname.c       2003-12-27 10:23:01.000000000 -0800
    37441 +++ ncurses-5.7/ncurses/tinfo/lib_termname.c    2009-07-19 15:02:22.000000000 -0700
     39402+++ ncurses-5.7/ncurses/tinfo/lib_termname.c    2009-09-12 08:51:17.000000000 -0700
    3744239403@@ -1,5 +1,5 @@
    3744339404 /****************************************************************************
     
    3748439445diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_ti.c ncurses-5.7/ncurses/tinfo/lib_ti.c
    3748539446--- ncurses-5.7.orig/ncurses/tinfo/lib_ti.c     2003-05-24 14:10:28.000000000 -0700
    37486 +++ ncurses-5.7/ncurses/tinfo/lib_ti.c  2009-07-19 15:04:15.000000000 -0700
     39447+++ ncurses-5.7/ncurses/tinfo/lib_ti.c  2009-09-12 08:51:57.000000000 -0700
    3748739448@@ -1,5 +1,5 @@
    3748839449 /****************************************************************************
     
    3750039461 
    3750139462 #include <curses.priv.h>
    37502 @@ -36,68 +37,150 @@
     39463@@ -36,68 +37,152 @@
    3750339464 #include <term_entry.h>
    3750439465 #include <tic.h>
    3750539466 
    3750639467-MODULE_ID("$Id: lib_ti.c,v 1.23 2003/05/24 21:10:28 tom Exp $")
    37507 +MODULE_ID("$Id: lib_ti.c,v 1.26 2009/07/11 18:14:21 tom Exp $")
     39468+MODULE_ID("$Id: lib_ti.c,v 1.27 2009/07/28 22:03:36 tom Exp $")
    3750839469+
    3750939470+#if 0
     
    3757039531-tigetnum(NCURSES_CONST char *str)
    3757139532+tigetflag(NCURSES_CONST char *str)
    37572 +{
     39533 {
     39534-    unsigned i;
    3757339535+    return NCURSES_SP_NAME(tigetflag) (CURRENT_SCREEN, str);
    3757439536+}
    3757539537+#endif
    37576 +
     39538 
     39539-    T((T_CALLED("tigetnum(%s)"), str));
    3757739540+NCURSES_EXPORT(int)
    3757839541+NCURSES_SP_NAME(tigetnum) (NCURSES_SP_DCLx NCURSES_CONST char *str)
    37579  {
    37580 -    unsigned i;
     39542+{
    3758139543+    int i, j;
    3758239544+    int result = CANCELLED_NUMERIC;    /* Solaris returns a -1 on error */
    37583  
    37584 -    T((T_CALLED("tigetnum(%s)"), str));
    37585 +    T((T_CALLED("tigetnum(%p, %s)"), SP_PARM, str));
    3758639545 
    3758739546-    if (cur_term != 0) {
     
    3759339552-                   returnCode(ABSENT_NUMERIC);
    3759439553-               returnCode(tp->Numbers[i]);
     39554+    T((T_CALLED("tigetnum(%p, %s)"), SP_PARM, str));
     39555+
    3759539556+    if (HasTInfoTerminal(SP_PARM)) {
    3759639557+       TERMTYPE *tp = &(TerminalOf(SP_PARM)->type);
     
    3761339574        }
    3761439575+#endif
    37615 +       if (j >= 0 && VALID_NUMERIC(tp->Numbers[j]))
    37616 +           result = tp->Numbers[j];
    37617 +       else
    37618 +           result = ABSENT_NUMERIC;
     39576+       if (j >= 0) {
     39577+           if (VALID_NUMERIC(tp->Numbers[j]))
     39578+               result = tp->Numbers[j];
     39579+           else
     39580+               result = ABSENT_NUMERIC;
     39581+       }
    3761939582     }
    3762039583 
     
    3768839651diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_tparm.c ncurses-5.7/ncurses/tinfo/lib_tparm.c
    3768939652--- ncurses-5.7.orig/ncurses/tinfo/lib_tparm.c  2008-08-16 12:22:55.000000000 -0700
    37690 +++ ncurses-5.7/ncurses/tinfo/lib_tparm.c       2009-07-19 15:02:22.000000000 -0700
     39653+++ ncurses-5.7/ncurses/tinfo/lib_tparm.c       2009-09-12 08:51:17.000000000 -0700
    3769139654@@ -40,10 +40,9 @@
    3769239655 #include <curses.priv.h>
     
    3770339666diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_tputs.c ncurses-5.7/ncurses/tinfo/lib_tputs.c
    3770439667--- ncurses-5.7.orig/ncurses/tinfo/lib_tputs.c  2008-06-28 06:12:15.000000000 -0700
    37705 +++ ncurses-5.7/ncurses/tinfo/lib_tputs.c       2009-07-19 15:04:07.000000000 -0700
     39668+++ ncurses-5.7/ncurses/tinfo/lib_tputs.c       2009-09-12 08:51:45.000000000 -0700
    3770639669@@ -1,5 +1,5 @@
    3770739670 /****************************************************************************
     
    3798439947diff -Naur ncurses-5.7.orig/ncurses/tinfo/lib_ttyflags.c ncurses-5.7/ncurses/tinfo/lib_ttyflags.c
    3798539948--- ncurses-5.7.orig/ncurses/tinfo/lib_ttyflags.c       2008-08-03 15:10:44.000000000 -0700
    37986 +++ ncurses-5.7/ncurses/tinfo/lib_ttyflags.c    2009-07-19 15:04:06.000000000 -0700
     39949+++ ncurses-5.7/ncurses/tinfo/lib_ttyflags.c    2009-09-12 08:51:43.000000000 -0700
    3798739950@@ -1,5 +1,5 @@
    3798839951 /****************************************************************************
     
    3832340286 }
    3832440287+#endif
     40288diff -Naur ncurses-5.7.orig/ncurses/tinfo/make_hash.c ncurses-5.7/ncurses/tinfo/make_hash.c
     40289--- ncurses-5.7.orig/ncurses/tinfo/make_hash.c  1969-12-31 16:00:00.000000000 -0800
     40290+++ ncurses-5.7/ncurses/tinfo/make_hash.c       2009-09-12 08:52:02.000000000 -0700
     40291@@ -0,0 +1,294 @@
     40292+/****************************************************************************
     40293+ * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.              *
     40294+ *                                                                          *
     40295+ * Permission is hereby granted, free of charge, to any person obtaining a  *
     40296+ * copy of this software and associated documentation files (the            *
     40297+ * "Software"), to deal in the Software without restriction, including      *
     40298+ * without limitation the rights to use, copy, modify, merge, publish,      *
     40299+ * distribute, distribute with modifications, sublicense, and/or sell       *
     40300+ * copies of the Software, and to permit persons to whom the Software is    *
     40301+ * furnished to do so, subject to the following conditions:                 *
     40302+ *                                                                          *
     40303+ * The above copyright notice and this permission notice shall be included  *
     40304+ * in all copies or substantial portions of the Software.                   *
     40305+ *                                                                          *
     40306+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
     40307+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
     40308+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
     40309+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
     40310+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
     40311+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
     40312+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
     40313+ *                                                                          *
     40314+ * Except as contained in this notice, the name(s) of the above copyright   *
     40315+ * holders shall not be used in advertising or otherwise to promote the     *
     40316+ * sale, use or other dealings in this Software without prior written       *
     40317+ * authorization.                                                           *
     40318+ ****************************************************************************/
     40319+
     40320+/****************************************************************************
     40321+ *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
     40322+ *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
     40323+ *     and: Thomas E. Dickey                        1996-on                 *
     40324+ ****************************************************************************/
     40325+
     40326+/*
     40327+ *     make_hash.c --- build-time program for constructing comp_captab.c
     40328+ *
     40329+ */
     40330+
     40331+#include <curses.priv.h>
     40332+
     40333+#include <tic.h>
     40334+#include <hashsize.h>
     40335+
     40336+#include <ctype.h>
     40337+
     40338+MODULE_ID("$Id: make_hash.c,v 1.2 2009/08/08 17:42:41 tom Exp $")
     40339+
     40340+/*
     40341+ *     _nc_make_hash_table()
     40342+ *
     40343+ *     Takes the entries in table[] and hashes them into hash_table[]
     40344+ *     by name.  There are CAPTABSIZE entries in table[] and HASHTABSIZE
     40345+ *     slots in hash_table[].
     40346+ *
     40347+ */
     40348+
     40349+#undef MODULE_ID
     40350+#define MODULE_ID(id)          /*nothing */
     40351+#include <tinfo/doalloc.c>
     40352+
     40353+/*
     40354+ *     int hash_function(string)
     40355+ *
     40356+ *     Computes the hashing function on the given string.
     40357+ *
     40358+ *     The current hash function is the sum of each consectutive pair
     40359+ *     of characters, taken as two-byte integers, mod HASHTABSIZE.
     40360+ *
     40361+ */
     40362+
     40363+static int
     40364+hash_function(const char *string)
     40365+{
     40366+    long sum = 0;
     40367+
     40368+    while (*string) {
     40369+       sum += (long) (*string + (*(string + 1) << 8));
     40370+       string++;
     40371+    }
     40372+
     40373+    return (int) (sum % HASHTABSIZE);
     40374+}
     40375+
     40376+static void
     40377+_nc_make_hash_table(struct name_table_entry *table,
     40378+                   HashValue * hash_table)
     40379+{
     40380+    short i;
     40381+    int hashvalue;
     40382+    int collisions = 0;
     40383+
     40384+    for (i = 0; i < HASHTABSIZE; i++) {
     40385+       hash_table[i] = -1;
     40386+    }
     40387+    for (i = 0; i < CAPTABSIZE; i++) {
     40388+       hashvalue = hash_function(table[i].nte_name);
     40389+
     40390+       if (hash_table[hashvalue] >= 0)
     40391+           collisions++;
     40392+
     40393+       if (hash_table[hashvalue] != 0)
     40394+           table[i].nte_link = hash_table[hashvalue];
     40395+       hash_table[hashvalue] = i;
     40396+    }
     40397+
     40398+    printf("/* %d collisions out of %d entries */\n", collisions, CAPTABSIZE);
     40399+}
     40400+
     40401+/*
     40402+ * This filter reads from standard input a list of tab-delimited columns,
     40403+ * (e.g., from Caps.filtered) computes the hash-value of a specified column and
     40404+ * writes the hashed tables to standard output.
     40405+ *
     40406+ * By compiling the hash table at build time, we're able to make the entire
     40407+ * set of terminfo and termcap tables readonly (and also provide some runtime
     40408+ * performance enhancement).
     40409+ */
     40410+
     40411+#define MAX_COLUMNS BUFSIZ     /* this _has_ to be worst-case */
     40412+
     40413+static char **
     40414+parse_columns(char *buffer)
     40415+{
     40416+    static char **list;
     40417+
     40418+    int col = 0;
     40419+
     40420+    if (list == 0 && (list = typeCalloc(char *, MAX_COLUMNS)) == 0)
     40421+         return (0);
     40422+
     40423+    if (*buffer != '#') {
     40424+       while (*buffer != '\0') {
     40425+           char *s;
     40426+           for (s = buffer; (*s != '\0') && !isspace(UChar(*s)); s++)
     40427+               /*EMPTY */ ;
     40428+           if (s != buffer) {
     40429+               char mark = *s;
     40430+               *s = '\0';
     40431+               if ((s - buffer) > 1
     40432+                   && (*buffer == '"')
     40433+                   && (s[-1] == '"')) {        /* strip the quotes */
     40434+                   assert(s > buffer + 1);
     40435+                   s[-1] = '\0';
     40436+                   buffer++;
     40437+               }
     40438+               list[col] = buffer;
     40439+               col++;
     40440+               if (mark == '\0')
     40441+                   break;
     40442+               while (*++s && isspace(UChar(*s)))
     40443+                   /*EMPTY */ ;
     40444+               buffer = s;
     40445+           } else
     40446+               break;
     40447+       }
     40448+    }
     40449+    return col ? list : 0;
     40450+}
     40451+
     40452+int
     40453+main(int argc, char **argv)
     40454+{
     40455+    struct name_table_entry *name_table = typeCalloc(struct
     40456+                                                    name_table_entry, CAPTABSIZE);
     40457+    HashValue *hash_table = typeCalloc(HashValue, HASHTABSIZE);
     40458+    const char *root_name = "";
     40459+    int column = 0;
     40460+    int bigstring = 0;
     40461+    int n;
     40462+    char buffer[BUFSIZ];
     40463+
     40464+    static const char *typenames[] =
     40465+    {"BOOLEAN", "NUMBER", "STRING"};
     40466+
     40467+    short BoolCount = 0;
     40468+    short NumCount = 0;
     40469+    short StrCount = 0;
     40470+
     40471+    /* The first argument is the column-number (starting with 0).
     40472+     * The second is the root name of the tables to generate.
     40473+     */
     40474+    if (argc <= 3
     40475+       || (column = atoi(argv[1])) <= 0
     40476+       || (column >= MAX_COLUMNS)
     40477+       || *(root_name = argv[2]) == 0
     40478+       || (bigstring = atoi(argv[3])) < 0
     40479+       || name_table == 0
     40480+       || hash_table == 0) {
     40481+       fprintf(stderr, "usage: make_hash column root_name bigstring\n");
     40482+       exit(EXIT_FAILURE);
     40483+    }
     40484+
     40485+    /*
     40486+     * Read the table into our arrays.
     40487+     */
     40488+    for (n = 0; (n < CAPTABSIZE) && fgets(buffer, BUFSIZ, stdin);) {
     40489+       char **list, *nlp = strchr(buffer, '\n');
     40490+       if (nlp)
     40491+           *nlp = '\0';
     40492+       list = parse_columns(buffer);
     40493+       if (list == 0)          /* blank or comment */
     40494+           continue;
     40495+       name_table[n].nte_link = -1;    /* end-of-hash */
     40496+       name_table[n].nte_name = strdup(list[column]);
     40497+       if (!strcmp(list[2], "bool")) {
     40498+           name_table[n].nte_type = BOOLEAN;
     40499+           name_table[n].nte_index = BoolCount++;
     40500+       } else if (!strcmp(list[2], "num")) {
     40501+           name_table[n].nte_type = NUMBER;
     40502+           name_table[n].nte_index = NumCount++;
     40503+       } else if (!strcmp(list[2], "str")) {
     40504+           name_table[n].nte_type = STRING;
     40505+           name_table[n].nte_index = StrCount++;
     40506+       } else {
     40507+           fprintf(stderr, "Unknown type: %s\n", list[2]);
     40508+           exit(EXIT_FAILURE);
     40509+       }
     40510+       n++;
     40511+    }
     40512+    _nc_make_hash_table(name_table, hash_table);
     40513+
     40514+    /*
     40515+     * Write the compiled tables to standard output
     40516+     */
     40517+    if (bigstring) {
     40518+       int len = 0;
     40519+       int nxt;
     40520+
     40521+       printf("static const char %s_names_text[] = \\\n", root_name);
     40522+       for (n = 0; n < CAPTABSIZE; n++) {
     40523+           nxt = (int) strlen(name_table[n].nte_name) + 5;
     40524+           if (nxt + len > 72) {
     40525+               printf("\\\n");
     40526+               len = 0;
     40527+           }
     40528+           printf("\"%s\\0\" ", name_table[n].nte_name);
     40529+           len += nxt;
     40530+       }
     40531+       printf(";\n\n");
     40532+
     40533+       len = 0;
     40534+       printf("static name_table_data const %s_names_data[] =\n",
     40535+              root_name);
     40536+       printf("{\n");
     40537+       for (n = 0; n < CAPTABSIZE; n++) {
     40538+           printf("\t{ %15d,\t%10s,\t%3d, %3d }%c\n",
     40539+                  len,
     40540+                  typenames[name_table[n].nte_type],
     40541+                  name_table[n].nte_index,
     40542+                  name_table[n].nte_link,
     40543+                  n < CAPTABSIZE - 1 ? ',' : ' ');
     40544+           len += (int) strlen(name_table[n].nte_name) + 1;
     40545+       }
     40546+       printf("};\n\n");
     40547+       printf("static struct name_table_entry *_nc_%s_table = 0;\n\n", root_name);
     40548+    } else {
     40549+
     40550+       printf("static struct name_table_entry %s _nc_%s_table[] =\n",
     40551+              bigstring ? "" : "const",
     40552+              root_name);
     40553+       printf("{\n");
     40554+       for (n = 0; n < CAPTABSIZE; n++) {
     40555+           sprintf(buffer, "\"%s\"",
     40556+                   name_table[n].nte_name);
     40557+           printf("\t{ %15s,\t%10s,\t%3d, %3d }%c\n",
     40558+                  buffer,
     40559+                  typenames[name_table[n].nte_type],
     40560+                  name_table[n].nte_index,
     40561+                  name_table[n].nte_link,
     40562+                  n < CAPTABSIZE - 1 ? ',' : ' ');
     40563+       }
     40564+       printf("};\n\n");
     40565+    }
     40566+
     40567+    printf("static const HashValue _nc_%s_hash_table[%d] =\n",
     40568+          root_name,
     40569+          HASHTABSIZE + 1);
     40570+    printf("{\n");
     40571+    for (n = 0; n < HASHTABSIZE; n++) {
     40572+       printf("\t%3d,\n", hash_table[n]);
     40573+    }
     40574+    printf("\t0\t/* base-of-table */\n");
     40575+    printf("};\n\n");
     40576+
     40577+    printf("#if (BOOLCOUNT!=%d)||(NUMCOUNT!=%d)||(STRCOUNT!=%d)\n",
     40578+          BoolCount, NumCount, StrCount);
     40579+    printf("#error\t--> term.h and comp_captab.c disagree about the <--\n");
     40580+    printf("#error\t--> numbers of booleans, numbers and/or strings <--\n");
     40581+    printf("#endif\n\n");
     40582+
     40583+    free(hash_table);
     40584+    return EXIT_SUCCESS;
     40585+}
    3832540586diff -Naur ncurses-5.7.orig/ncurses/tinfo/make_keys.c ncurses-5.7/ncurses/tinfo/make_keys.c
    3832640587--- ncurses-5.7.orig/ncurses/tinfo/make_keys.c  2008-08-03 14:57:22.000000000 -0700
    38327 +++ ncurses-5.7/ncurses/tinfo/make_keys.c       2009-07-19 15:02:22.000000000 -0700
     40588+++ ncurses-5.7/ncurses/tinfo/make_keys.c       2009-09-12 08:51:17.000000000 -0700
    3832840589@@ -39,16 +39,16 @@
    3832940590 #define USE_TERMLIB 1
     
    3836840629            fprintf(ofp, "\t{ %4d, %-*.*s },\t/* %s */\n",
    3836940630                    code,
     40631diff -Naur ncurses-5.7.orig/ncurses/tinfo/MKcaptab.sh ncurses-5.7/ncurses/tinfo/MKcaptab.sh
     40632--- ncurses-5.7.orig/ncurses/tinfo/MKcaptab.sh  2007-08-12 06:13:51.000000000 -0700
     40633+++ ncurses-5.7/ncurses/tinfo/MKcaptab.sh       2009-09-12 08:52:02.000000000 -0700
     40634@@ -1,6 +1,6 @@
     40635 #!/bin/sh
     40636 ##############################################################################
     40637-# Copyright (c) 2007 Free Software Foundation, Inc.                          #
     40638+# Copyright (c) 2007,2009 Free Software Foundation, Inc.                     #
     40639 #                                                                            #
     40640 # Permission is hereby granted, free of charge, to any person obtaining a    #
     40641 # copy of this software and associated documentation files (the "Software"), #
     40642@@ -26,12 +26,19 @@
     40643 # use or other dealings in this Software without prior written               #
     40644 # authorization.                                                             #
     40645 ##############################################################################
     40646-# $Id: MKcaptab.sh,v 1.8 2007/08/12 13:13:51 tom Exp $
     40647+# $Id: MKcaptab.sh,v 1.10 2009/08/08 17:19:25 tom Exp $
     40648 AWK=${1-awk}
     40649 OPT1=${2-0}
     40650 OPT2=${3-tinfo/MKcaptab.awk}
     40651 DATA=${4-../include/Caps}
     40652 
     40653+cat <<EOF
     40654+/*
     40655+ * generated by $0
     40656+ */
     40657+
     40658+EOF
     40659+
     40660 cat <<'EOF'
     40661 /*
     40662  *     comp_captab.c -- The names of the capabilities indexed via a hash
     40663@@ -58,7 +65,7 @@
     40664 static void
     40665 next_string(const char *strings, unsigned *offset)
     40666 {
     40667-       *offset += strlen(strings + *offset) + 1;
     40668+    *offset += strlen(strings + *offset) + 1;
     40669 }
     40670 
     40671 static const struct name_table_entry *
     40672@@ -66,21 +73,21 @@
     40673                const name_table_data *source,
     40674                const char *strings)
     40675 {
     40676-       if (*actual == 0) {
     40677-               *actual = typeCalloc(struct name_table_entry, CAPTABSIZE);
     40678-               if (*actual != 0) {
     40679-                       unsigned n;
     40680-                       unsigned len = 0;
     40681-                       for (n = 0; n < CAPTABSIZE; ++n) {
     40682-                               (*actual)[n].nte_name = strings + len;
     40683-                               (*actual)[n].nte_type = source[n].nte_type;
     40684-                               (*actual)[n].nte_index = source[n].nte_index;
     40685-                               (*actual)[n].nte_link = source[n].nte_link;
     40686-                               next_string(strings, &len);
     40687-                       }
     40688-               }
     40689+    if (*actual == 0) {
     40690+       *actual = typeCalloc(struct name_table_entry, CAPTABSIZE);
     40691+       if (*actual != 0) {
     40692+           unsigned n;
     40693+           unsigned len = 0;
     40694+           for (n = 0; n < CAPTABSIZE; ++n) {
     40695+               (*actual)[n].nte_name = strings + len;
     40696+               (*actual)[n].nte_type = source[n].nte_type;
     40697+               (*actual)[n].nte_index = source[n].nte_index;
     40698+               (*actual)[n].nte_link = source[n].nte_link;
     40699+               next_string(strings, &len);
     40700+           }
     40701        }
     40702-       return *actual;
     40703+    }
     40704+    return *actual;
     40705 }
     40706 
     40707 #define add_alias(field) \\
     40708@@ -94,18 +101,18 @@
     40709                const char *strings,
     40710                unsigned tablesize)
     40711 {
     40712-       if (*actual == 0) {
     40713-               *actual = typeCalloc(struct alias, tablesize + 1);
     40714-               if (*actual != 0) {
     40715-                       unsigned n;
     40716-                       for (n = 0; n < tablesize; ++n) {
     40717-                               add_alias(from);
     40718-                               add_alias(to);
     40719-                               add_alias(source);
     40720-                       }
     40721-               }
     40722+    if (*actual == 0) {
     40723+       *actual = typeCalloc(struct alias, tablesize + 1);
     40724+       if (*actual != 0) {
     40725+           unsigned n;
     40726+           for (n = 0; n < tablesize; ++n) {
     40727+               add_alias(from);
     40728+               add_alias(to);
     40729+               add_alias(source);
     40730+           }
     40731        }
     40732-       return *actual;
     40733+    }
     40734+    return *actual;
     40735 }
     40736 
     40737 #define build_names(root) _nc_build_names(&_nc_##root##_table, \\
     40738@@ -122,27 +129,65 @@
     40739 
     40740 NCURSES_EXPORT(const struct name_table_entry *) _nc_get_table (bool termcap)
     40741 {
     40742-       return termcap ? build_names(cap) : build_names(info) ;
     40743+    return termcap ? build_names(cap) : build_names(info) ;
     40744 }
     40745 
     40746-NCURSES_EXPORT(const short *) _nc_get_hash_table (bool termcap)
     40747+/* entrypoint used by tack (do not alter) */
     40748+NCURSES_EXPORT(const HashValue *) _nc_get_hash_table (bool termcap)
     40749 {
     40750-       return termcap ? _nc_cap_hash_table: _nc_info_hash_table ;
     40751+    return termcap ? _nc_cap_hash_table: _nc_info_hash_table ;
     40752 }
     40753 
     40754 NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool termcap)
     40755 {
     40756-       return termcap ? build_alias(cap) : build_alias(info) ;
     40757+    return termcap ? build_alias(cap) : build_alias(info) ;
     40758+}
     40759+
     40760+static HashValue
     40761+hash_function(const char *string)
     40762+{
     40763+    long sum = 0;
     40764+
     40765+    DEBUG(9, ("hashing %s", string));
     40766+    while (*string) {
     40767+       sum += (long) (*string + (*(string + 1) << 8));
     40768+       string++;
     40769+    }
     40770+
     40771+    DEBUG(9, ("sum is %ld", sum));
     40772+    return (HashValue) (sum % HASHTABSIZE);
     40773+}
     40774+
     40775+static int
     40776+compare_cap_names(const char *a, const char *b)
     40777+{
     40778+    return !strncmp(a, b, 2);
     40779+}
     40780+
     40781+static int
     40782+compare_info_names(const char *a, const char *b)
     40783+{
     40784+    return !strcmp(a, b);
     40785+}
     40786+
     40787+static const HashData hash_data[2] = {
     40788+    { HASHTABSIZE, _nc_info_hash_table, hash_function, compare_info_names },
     40789+    { HASHTABSIZE, _nc_cap_hash_table, hash_function, compare_cap_names }
     40790+};
     40791+
     40792+NCURSES_EXPORT(const HashData *) _nc_get_hash_info (bool termcap)
     40793+{
     40794+    return &hash_data[(termcap != FALSE)];
     40795 }
     40796 
     40797 #if NO_LEAKS
     40798 NCURSES_EXPORT(void) _nc_comp_captab_leaks(void)
     40799 {
     40800 #if $OPT1
     40801-       FreeIfNeeded(_nc_cap_table);
     40802-       FreeIfNeeded(_nc_info_table);
     40803-       FreeIfNeeded(_nc_capalias_table);
     40804-       FreeIfNeeded(_nc_infoalias_table);
     40805+    FreeIfNeeded(_nc_cap_table);
     40806+    FreeIfNeeded(_nc_info_table);
     40807+    FreeIfNeeded(_nc_capalias_table);
     40808+    FreeIfNeeded(_nc_infoalias_table);
     40809 #endif
     40810 }
     40811 #endif /* NO_LEAKS */
    3837040812diff -Naur ncurses-5.7.orig/ncurses/tinfo/MKcodes.awk ncurses-5.7/ncurses/tinfo/MKcodes.awk
    3837140813--- ncurses-5.7.orig/ncurses/tinfo/MKcodes.awk  2008-06-28 16:13:25.000000000 -0700
    38372 +++ ncurses-5.7/ncurses/tinfo/MKcodes.awk       2009-07-19 15:04:03.000000000 -0700
     40814+++ ncurses-5.7/ncurses/tinfo/MKcodes.awk       2009-09-12 08:51:40.000000000 -0700
    3837340815@@ -1,5 +1,5 @@
    3837440816 ##############################################################################
     
    3843240874diff -Naur ncurses-5.7.orig/ncurses/tinfo/MKfallback.sh ncurses-5.7/ncurses/tinfo/MKfallback.sh
    3843340875--- ncurses-5.7.orig/ncurses/tinfo/MKfallback.sh        2006-07-15 09:54:20.000000000 -0700
    38434 +++ ncurses-5.7/ncurses/tinfo/MKfallback.sh     2009-07-19 15:03:53.000000000 -0700
     40876+++ ncurses-5.7/ncurses/tinfo/MKfallback.sh     2009-09-12 08:51:30.000000000 -0700
    3843540877@@ -1,6 +1,6 @@
    3843640878 #!/bin/sh
     
    3846040902diff -Naur ncurses-5.7.orig/ncurses/tinfo/MKnames.awk ncurses-5.7/ncurses/tinfo/MKnames.awk
    3846140903--- ncurses-5.7.orig/ncurses/tinfo/MKnames.awk  2008-10-11 14:07:56.000000000 -0700
    38462 +++ ncurses-5.7/ncurses/tinfo/MKnames.awk       2009-07-19 15:03:45.000000000 -0700
     40904+++ ncurses-5.7/ncurses/tinfo/MKnames.awk       2009-09-12 08:51:23.000000000 -0700
    3846340905@@ -1,5 +1,5 @@
    3846440906 ##############################################################################
     
    3853140973diff -Naur ncurses-5.7.orig/ncurses/tinfo/name_match.c ncurses-5.7/ncurses/tinfo/name_match.c
    3853240974--- ncurses-5.7.orig/ncurses/tinfo/name_match.c 2008-08-03 12:49:33.000000000 -0700
    38533 +++ ncurses-5.7/ncurses/tinfo/name_match.c      2009-07-19 15:02:22.000000000 -0700
     40975+++ ncurses-5.7/ncurses/tinfo/name_match.c      2009-09-12 08:51:17.000000000 -0700
    3853440976@@ -31,10 +31,9 @@
    3853540977  ****************************************************************************/
     
    3854640988diff -Naur ncurses-5.7.orig/ncurses/tinfo/parse_entry.c ncurses-5.7/ncurses/tinfo/parse_entry.c
    3854740989--- ncurses-5.7.orig/ncurses/tinfo/parse_entry.c        2008-08-16 14:52:03.000000000 -0700
    38548 +++ ncurses-5.7/ncurses/tinfo/parse_entry.c     2009-07-19 15:04:15.000000000 -0700
     40990+++ ncurses-5.7/ncurses/tinfo/parse_entry.c     2009-09-12 08:51:52.000000000 -0700
    3854940991@@ -1,5 +1,5 @@
    3855040992 /****************************************************************************
     
    3866941111diff -Naur ncurses-5.7.orig/ncurses/tinfo/setbuf.c ncurses-5.7/ncurses/tinfo/setbuf.c
    3867041112--- ncurses-5.7.orig/ncurses/tinfo/setbuf.c     2007-05-12 12:04:02.000000000 -0700
    38671 +++ ncurses-5.7/ncurses/tinfo/setbuf.c  2009-07-19 15:03:59.000000000 -0700
     41113+++ ncurses-5.7/ncurses/tinfo/setbuf.c  2009-09-12 08:51:56.000000000 -0700
    3867241114@@ -1,5 +1,5 @@
    3867341115 /****************************************************************************
     
    3869141133 
    3869241134-MODULE_ID("$Id: setbuf.c,v 1.13 2007/05/12 19:04:02 tom Exp $")
    38693 +MODULE_ID("$Id: setbuf.c,v 1.14 2009/05/09 23:09:00 tom Exp $")
     41135+MODULE_ID("$Id: setbuf.c,v 1.15 2009/05/23 22:13:44 tom Exp $")
    3869441136 
    3869541137 /*
    3869641138  * If the output file descriptor is connected to a tty (the typical case) it
    38697 @@ -98,11 +100,11 @@
     41139@@ -98,11 +100,20 @@
    3869841140  * buffer.  So we disable this by default (there may yet be a workaround).
    3869941141  */
     
    3870241144+NCURSES_SP_NAME(_nc_set_buffer) (NCURSES_SP_DCLx FILE *ofp, bool buffered)
    3870341145 {
     41146+    int Cols;
     41147+    int Lines;
     41148+
     41149+    if (0 == SP_PARM)
     41150+       return;
     41151+
     41152+    Cols = *(ptrCols(SP_PARM));
     41153+    Lines = *(ptrLines(SP_PARM));
     41154+
    3870441155     /* optional optimization hack -- do before any output to ofp */
    3870541156 #if HAVE_SETVBUF || HAVE_SETBUFFER
     
    3870941160        char *buf_ptr;
    3871041161 
    38711 @@ -115,10 +117,10 @@
     41162@@ -114,11 +125,11 @@
     41163        setmode(ofp, O_BINARY);
    3871241164 #endif
    3871341165        if (buffered != 0) {
    38714             buf_len = min(LINES * (COLS + 6), 2800);
     41166-           buf_len = min(LINES * (COLS + 6), 2800);
    3871541167-           if ((buf_ptr = SP->_setbuf) == 0) {
     41168+           buf_len = min(Lines * (Cols + 6), 2800);
    3871641169+           if ((buf_ptr = SP_PARM->_setbuf) == 0) {
    3871741170                if ((buf_ptr = typeMalloc(char, buf_len)) == NULL)
     
    3872241175            }
    3872341176 #if !USE_SETBUF_0
    38724 @@ -144,7 +146,15 @@
     41177@@ -144,7 +155,15 @@
    3872541178        (void) setbuffer(ofp, buf_ptr, (int) buf_len);
    3872641179 #endif
     
    3873641189+_nc_set_buffer(FILE *ofp, bool buffered)
    3873741190+{
    38738 +    return NCURSES_SP_NAME(_nc_set_buffer) (CURRENT_SCREEN, ofp, buffered);
     41191+    NCURSES_SP_NAME(_nc_set_buffer) (CURRENT_SCREEN, ofp, buffered);
    3873941192+}
    3874041193+#endif
    3874141194diff -Naur ncurses-5.7.orig/ncurses/tinfo/tinfo_driver.c ncurses-5.7/ncurses/tinfo/tinfo_driver.c
    3874241195--- ncurses-5.7.orig/ncurses/tinfo/tinfo_driver.c       1969-12-31 16:00:00.000000000 -0800
    38743 +++ ncurses-5.7/ncurses/tinfo/tinfo_driver.c    2009-07-19 15:04:11.000000000 -0700
     41196+++ ncurses-5.7/ncurses/tinfo/tinfo_driver.c    2009-09-12 08:52:05.000000000 -0700
    3874441197@@ -0,0 +1,1389 @@
    3874541198+/****************************************************************************
     
    3878741240+#endif
    3878841241+
    38789 +MODULE_ID("$Id: tinfo_driver.c,v 1.1 2009/05/23 22:40:30 juergen Exp $")
     41242+MODULE_ID("$Id: tinfo_driver.c,v 1.2 2009/08/16 14:17:08 tom Exp $")
    3879041243+
    3879141244+/*
     
    3891841371+{
    3891941372+    AssertTCB();
    38920 +    return _nc_tinfo_doupdate(TCB->csp);
     41373+    return TINFO_DOUPDATE(TCB->csp);
    3892141374+}
    3892241375+
     
    3969042143+    SCREEN *sp = TCB->csp;
    3969142144+    AssertTCB();
    39692 +    return _nc_tinfo_mvcur(sp, yold, xold, ynew, xnew);
     42145+    return TINFO_MVCUR(sp, yold, xold, ynew, xnew);
    3969342146+}
    3969442147+
     
    4012842581+    AssertTCB();
    4012942582+    if (TCB->csp)
    40130 +       res = _nc_tinfo_has_key(TCB->csp, key) == 0 ? FALSE : TRUE;
     42583+       res = TINFO_HAS_KEY(TCB->csp, key) == 0 ? FALSE : TRUE;
    4013142584+
    4013242585+    return res;
     
    4013442587diff -Naur ncurses-5.7.orig/ncurses/tinfo/use_screen.c ncurses-5.7/ncurses/tinfo/use_screen.c
    4013542588--- ncurses-5.7.orig/ncurses/tinfo/use_screen.c 2008-06-07 12:16:56.000000000 -0700
    40136 +++ ncurses-5.7/ncurses/tinfo/use_screen.c      2009-07-19 15:02:22.000000000 -0700
     42589+++ ncurses-5.7/ncurses/tinfo/use_screen.c      2009-09-12 08:51:17.000000000 -0700
    4013742590@@ -32,7 +32,7 @@
    4013842591 
     
    4015542608diff -Naur ncurses-5.7.orig/ncurses/tinfo/write_entry.c ncurses-5.7/ncurses/tinfo/write_entry.c
    4015642609--- ncurses-5.7.orig/ncurses/tinfo/write_entry.c        2008-08-03 12:24:00.000000000 -0700
    40157 +++ ncurses-5.7/ncurses/tinfo/write_entry.c     2009-07-19 15:03:53.000000000 -0700
     42610+++ ncurses-5.7/ncurses/tinfo/write_entry.c     2009-09-12 08:51:30.000000000 -0700
    4015842611@@ -1,5 +1,5 @@
    4015942612 /****************************************************************************
     
    4029442747diff -Naur ncurses-5.7.orig/ncurses/trace/lib_traceatr.c ncurses-5.7/ncurses/trace/lib_traceatr.c
    4029542748--- ncurses-5.7.orig/ncurses/trace/lib_traceatr.c       2008-08-03 09:24:53.000000000 -0700
    40296 +++ ncurses-5.7/ncurses/trace/lib_traceatr.c    2009-07-19 15:03:59.000000000 -0700
     42749+++ ncurses-5.7/ncurses/trace/lib_traceatr.c    2009-09-12 08:51:37.000000000 -0700
    4029742750@@ -1,5 +1,5 @@
    4029842751 /****************************************************************************
     
    4038842841diff -Naur ncurses-5.7.orig/ncurses/trace/lib_tracebits.c ncurses-5.7/ncurses/trace/lib_tracebits.c
    4038942842--- ncurses-5.7.orig/ncurses/trace/lib_tracebits.c      2008-08-03 09:09:26.000000000 -0700
    40390 +++ ncurses-5.7/ncurses/trace/lib_tracebits.c   2009-07-19 15:02:22.000000000 -0700
     42843+++ ncurses-5.7/ncurses/trace/lib_tracebits.c   2009-09-12 08:51:17.000000000 -0700
    4039142844@@ -33,9 +33,8 @@
    4039242845  ****************************************************************************/
     
    4040242855diff -Naur ncurses-5.7.orig/ncurses/trace/lib_trace.c ncurses-5.7/ncurses/trace/lib_trace.c
    4040342856--- ncurses-5.7.orig/ncurses/trace/lib_trace.c  2008-08-23 11:04:29.000000000 -0700
    40404 +++ ncurses-5.7/ncurses/trace/lib_trace.c       2009-07-19 15:02:23.000000000 -0700
     42857+++ ncurses-5.7/ncurses/trace/lib_trace.c       2009-09-12 08:51:19.000000000 -0700
    4040542858@@ -1,5 +1,5 @@
    4040642859 /****************************************************************************
     
    4046242915diff -Naur ncurses-5.7.orig/ncurses/trace/lib_tracechr.c ncurses-5.7/ncurses/trace/lib_tracechr.c
    4046342916--- ncurses-5.7.orig/ncurses/trace/lib_tracechr.c       2008-08-03 08:39:29.000000000 -0700
    40464 +++ ncurses-5.7/ncurses/trace/lib_tracechr.c    2009-07-19 15:03:53.000000000 -0700
     42917+++ ncurses-5.7/ncurses/trace/lib_tracechr.c    2009-09-12 08:51:30.000000000 -0700
    4046542918@@ -1,5 +1,5 @@
    4046642919 /****************************************************************************
     
    4050842961diff -Naur ncurses-5.7.orig/ncurses/trace/lib_tracedmp.c ncurses-5.7/ncurses/trace/lib_tracedmp.c
    4050942962--- ncurses-5.7.orig/ncurses/trace/lib_tracedmp.c       2008-08-16 12:30:56.000000000 -0700
    40510 +++ ncurses-5.7/ncurses/trace/lib_tracedmp.c    2009-07-19 15:03:53.000000000 -0700
     42963+++ ncurses-5.7/ncurses/trace/lib_tracedmp.c    2009-09-12 08:51:30.000000000 -0700
    4051142964@@ -1,5 +1,5 @@
    4051242965 /****************************************************************************
     
    4056343016diff -Naur ncurses-5.7.orig/ncurses/trace/lib_tracemse.c ncurses-5.7/ncurses/trace/lib_tracemse.c
    4056443017--- ncurses-5.7.orig/ncurses/trace/lib_tracemse.c       2008-08-03 08:39:29.000000000 -0700
    40565 +++ ncurses-5.7/ncurses/trace/lib_tracemse.c    2009-07-19 15:02:22.000000000 -0700
     43018+++ ncurses-5.7/ncurses/trace/lib_tracemse.c    2009-09-12 08:51:17.000000000 -0700
    4056643019@@ -38,7 +38,7 @@
    4056743020 
     
    4058443037diff -Naur ncurses-5.7.orig/ncurses/trace/trace_tries.c ncurses-5.7/ncurses/trace/trace_tries.c
    4058543038--- ncurses-5.7.orig/ncurses/trace/trace_tries.c        2008-08-03 08:43:30.000000000 -0700
    40586 +++ ncurses-5.7/ncurses/trace/trace_tries.c     2009-07-19 15:03:48.000000000 -0700
     43039+++ ncurses-5.7/ncurses/trace/trace_tries.c     2009-09-12 08:51:25.000000000 -0700
    4058743040@@ -1,5 +1,5 @@
    4058843041 /****************************************************************************
     
    4061243065diff -Naur ncurses-5.7.orig/ncurses/trace/varargs.c ncurses-5.7/ncurses/trace/varargs.c
    4061343066--- ncurses-5.7.orig/ncurses/trace/varargs.c    2008-08-03 08:42:49.000000000 -0700
    40614 +++ ncurses-5.7/ncurses/trace/varargs.c 2009-07-19 15:02:22.000000000 -0700
     43067+++ ncurses-5.7/ncurses/trace/varargs.c 2009-09-12 08:51:17.000000000 -0700
    4061543068@@ -34,7 +34,7 @@
    4061643069 
     
    4063343086diff -Naur ncurses-5.7.orig/ncurses/trace/visbuf.c ncurses-5.7/ncurses/trace/visbuf.c
    4063443087--- ncurses-5.7.orig/ncurses/trace/visbuf.c     2008-08-04 16:07:39.000000000 -0700
    40635 +++ ncurses-5.7/ncurses/trace/visbuf.c  2009-07-19 15:04:15.000000000 -0700
     43088+++ ncurses-5.7/ncurses/trace/visbuf.c  2009-09-12 08:51:52.000000000 -0700
    4063643089@@ -1,5 +1,5 @@
    4063743090 /****************************************************************************
     
    4069343146diff -Naur ncurses-5.7.orig/ncurses/tty/hardscroll.c ncurses-5.7/ncurses/tty/hardscroll.c
    4069443147--- ncurses-5.7.orig/ncurses/tty/hardscroll.c   2008-08-03 16:49:30.000000000 -0700
    40695 +++ ncurses-5.7/ncurses/tty/hardscroll.c        2009-07-19 15:03:53.000000000 -0700
     43148+++ ncurses-5.7/ncurses/tty/hardscroll.c        2009-09-12 08:51:30.000000000 -0700
    4069643149@@ -1,5 +1,5 @@
    4069743150 /****************************************************************************
     
    4091243365diff -Naur ncurses-5.7.orig/ncurses/tty/hashmap.c ncurses-5.7/ncurses/tty/hashmap.c
    4091343366--- ncurses-5.7.orig/ncurses/tty/hashmap.c      2007-10-13 11:47:25.000000000 -0700
    40914 +++ ncurses-5.7/ncurses/tty/hashmap.c   2009-07-19 15:03:59.000000000 -0700
     43367+++ ncurses-5.7/ncurses/tty/hashmap.c   2009-09-12 08:51:37.000000000 -0700
    4091543368@@ -1,5 +1,5 @@
    4091643369 /****************************************************************************
     
    4137743830diff -Naur ncurses-5.7.orig/ncurses/tty/lib_mvcur.c ncurses-5.7/ncurses/tty/lib_mvcur.c
    4137843831--- ncurses-5.7.orig/ncurses/tty/lib_mvcur.c    2008-08-16 12:30:58.000000000 -0700
    41379 +++ ncurses-5.7/ncurses/tty/lib_mvcur.c 2009-07-19 15:03:59.000000000 -0700
     43832+++ ncurses-5.7/ncurses/tty/lib_mvcur.c 2009-09-12 08:52:09.000000000 -0700
    4138043833@@ -1,5 +1,5 @@
    4138143834 /****************************************************************************
     
    4140443857 
    4140543858 /****************************************************************************
    41406 @@ -152,13 +153,16 @@
     43859@@ -152,13 +153,21 @@
    4140743860  */
    4140843861 
     
    4141643869+#endif
    4141743870+
    41418 +MODULE_ID("$Id: lib_mvcur.c,v 1.120 2009/05/10 00:52:29 tom Exp $")
     43871+MODULE_ID("$Id: lib_mvcur.c,v 1.121 2009/08/30 16:52:00 tom Exp $")
     43872+
     43873+#define WANT_CHAR(sp, y, x) (sp)->_newscr->_line[y].text[x]    /* desired state */
    4141943874 
    4142043875-#define WANT_CHAR(y, x)        SP->_newscr->_line[y].text[x]   /* desired state */
    4142143876-#define BAUDRATE       cur_term->_baudrate     /* bits per second */
    41422 +#define WANT_CHAR(sp, y, x) (sp)->_newscr->_line[y].text[x]    /* desired state */
     43877+#if NCURSES_SP_FUNCS
     43878+#define BAUDRATE(sp)   sp->_term->_baudrate    /* bits per second */
     43879+#else
    4142343880+#define BAUDRATE(sp)   cur_term->_baudrate     /* bits per second */
     43881+#endif
    4142443882 
    4142543883 #if defined(MAIN) || defined(NCURSES_TEST)
    4142643884 #include <sys/time.h>
    41427 @@ -169,7 +173,7 @@
     43885@@ -169,7 +178,7 @@
    4142843886 
    4142943887 #define OPT_SIZE 512
     
    4143443892 /****************************************************************************
    4143543893  *
    41436 @@ -179,34 +183,34 @@
     43894@@ -179,34 +188,34 @@
    4143743895 
    4143843896 #ifdef TRACE
     
    4147843936 {
    4147943937     if (cap == 0)
    41480 @@ -230,45 +234,56 @@
     43938@@ -230,45 +239,59 @@
    4148143939                }
    4148243940 
     
    4153643994 /* what to do at initialization time and after each shellout */
    4153743995 {
     43996+    if (SP_PARM && !IsTermInfo(SP_PARM))
     43997+       return;
     43998+
    4153843999     /* initialize screen for cursor access */
    4153944000     if (enter_ca_mode) {
     
    4154644007 
    4154744008     /*
    41548 @@ -280,53 +295,63 @@
     44009@@ -280,53 +303,63 @@
    4154944010      * they know the screen size.  This is useful when you're running
    4155044011      * a vt100 emulation through xterm.
     
    4164044101 
    4164144102     /*
    41642 @@ -335,7 +360,7 @@
     44103@@ -335,7 +368,7 @@
    4164344104      * can treat it like absolute screen addressing.  This seems to be true
    4164444105      * for all cursor_mem_address terminal types in the terminfo database.
     
    4164944110     /*
    4165044111      * Parametrized local-motion strings.  This static cost computation
    41651 @@ -361,40 +386,43 @@
     44112@@ -361,40 +394,43 @@
    4165244113      * All these averages depend on the assumption that all parameter values
    4165344114      * are equally probable.
     
    4171744178     /*
    4171844179      * If save_cursor is used within enter_ca_mode, we should not use it for
    41719 @@ -411,30 +439,40 @@
     44180@@ -411,30 +447,42 @@
    4172044181     }
    4172144182 
     
    4172744188      * called by doupdate's return-from-shellout code.
    4172844189      */
     44190-    _nc_mvcur_resume();
    4172944191+    NCURSES_SP_NAME(_nc_mvcur_resume) (NCURSES_SP_ARG);
    41730 +}
    41731 +
     44192 }
     44193 
    4173244194+#if NCURSES_SP_FUNCS
    41733 +NCURSES_EXPORT(void)
     44195 NCURSES_EXPORT(void)
     44196-_nc_mvcur_wrap(void)
    4173444197+_nc_mvcur_init(void)
    4173544198+{
    4173644199+    NCURSES_SP_NAME(_nc_mvcur_init) (CURRENT_SCREEN);
    41737      _nc_mvcur_resume();
    41738  }
     44200+}
    4173944201+#endif
    41740  
    41741  NCURSES_EXPORT(void)
    41742 -_nc_mvcur_wrap(void)
     44202+
     44203+NCURSES_EXPORT(void)
    4174344204+NCURSES_SP_NAME(_nc_mvcur_wrap) (NCURSES_SP_DCL0)
    4174444205 /* wrap up cursor-addressing mode */
     
    4174644207     /* leave cursor at screen bottom */
    4174744208-    mvcur(-1, -1, screen_lines - 1, 0);
    41748 +    mvcur(-1, -1, screen_lines(CURRENT_SCREEN) - 1, 0);
     44209+    TINFO_MVCUR(NCURSES_SP_ARGx -1, -1, screen_lines(SP_PARM) - 1, 0);
     44210+
     44211+    if (SP_PARM && !IsTermInfo(SP_PARM))
     44212+       return;
    4174944213 
    4175044214     /* set cursor to normal mode */
     
    4176844232     /*
    4176944233      * Reset terminal's tab counter.  There's a long-time bug that
    41770 @@ -444,8 +482,16 @@
     44234@@ -444,9 +492,17 @@
    4177144235      * escape sequences that reset things as column positions.
    4177244236      * Utter a \r to reset this invisibly.
     
    4177444238-    _nc_outch('\r');
    4177544239+    NCURSES_SP_NAME(_nc_outch) (NCURSES_SP_ARGx '\r');
    41776 +}
    41777 +
     44240 }
     44241 
    4177844242+#if NCURSES_SP_FUNCS
    4177944243+NCURSES_EXPORT(void)
     
    4178144245+{
    4178244246+    NCURSES_SP_NAME(_nc_mvcur_wrap) (CURRENT_SCREEN);
    41783  }
     44247+}
    4178444248+#endif
    41785  
     44249+
    4178644250 /****************************************************************************
    4178744251  *
    41788 @@ -486,8 +532,13 @@
     44252  * Optimized cursor movement
     44253@@ -486,8 +542,13 @@
    4178944254 #define LASTTAB(fr)    ((fr > 0) ? ((fr - 1) / init_tabs) * init_tabs : -1)
    4179044255 
     
    4180244267 {
    4180344268     string_desc save;
    41804 @@ -500,38 +551,38 @@
     44269@@ -500,38 +561,38 @@
    4180544270 
    4180644271        if (row_address != 0
     
    4185144316        }
    4185244317 
    41853 @@ -550,17 +601,17 @@
     44318@@ -550,17 +611,17 @@
    4185444319        if (column_address
    4185544320            && _nc_safe_strcat(_nc_str_copy(target, &save),
     
    4187244337 
    4187344338            if (cursor_right) {
    41874 @@ -575,7 +626,7 @@
     44339@@ -575,7 +636,7 @@
    4187544340 
    4187644341                    for (fr = from_x; (nxt = NEXTTAB(fr)) <= to_x; fr = nxt) {
     
    4188144346                            break;
    4188244347                    }
    41883 @@ -599,7 +650,7 @@
     44348@@ -599,7 +660,7 @@
    4188444349                    && n < (int) check.s_size
    4188544350                    && vcost == 0
     
    4189044355                        ovw = FALSE;
    4189144356                }
    41892 @@ -616,8 +667,8 @@
     44357@@ -616,8 +677,8 @@
    4189344358                    int i;
    4189444359 
     
    4190144366                            || !Charable(ch)
    4190244367 #endif
    41903 @@ -631,13 +682,13 @@
     44368@@ -631,13 +692,13 @@
    4190444369                    int i;
    4190544370 
     
    4191844383                }
    4191944384 
    41920 @@ -650,10 +701,10 @@
     44385@@ -650,10 +711,10 @@
    4192144386            n = from_x - to_x;
    4192244387 
     
    4193144396 
    4193244397            if (cursor_left) {
    41933 @@ -667,7 +718,8 @@
     44398@@ -667,7 +728,8 @@
    4193444399 
    4193544400                    for (fr = from_x; (nxt = LASTTAB(fr)) >= to_x; fr = nxt) {
     
    4194144406                            break;
    4194244407                    }
    41943 @@ -676,7 +728,9 @@
     44408@@ -676,7 +738,9 @@
    4194444409                }
    4194544410 #endif /* USE_HARD_TABS */
     
    4195244417                if (lhcost < hcost
    4195344418                    && _nc_safe_strcat(_nc_str_copy(target, &save), str)) {
    41954 @@ -705,7 +759,7 @@
     44419@@ -705,7 +769,7 @@
    4195544420  */
    4195644421 
     
    4196144426 {
    4196244427     string_desc result;
    41963 @@ -723,9 +777,9 @@
     44428@@ -723,9 +787,9 @@
    4196444429 #define InitResult _nc_str_init(&result, buffer, sizeof(buffer))
    4196544430 
     
    4197344438 #if defined(TRACE) || defined(NCURSES_TEST)
    4197444439        if (!(_nc_optimize_enable & OPTIMIZE_MVCUR))
    41975 @@ -740,7 +794,7 @@
     44440@@ -740,7 +804,7 @@
    4197644441         * (like, say, local-movement \n getting mapped to some obscure
    4197744442         * character because A_ALTCHARSET is on).
     
    4198244447            if (!profiling) {
    4198344448                (void) fputs("nonlocal\n", stderr);
    41984 @@ -754,8 +808,10 @@
     44449@@ -754,8 +818,10 @@
    4198544450 #ifndef NO_OPTIMIZE
    4198644451     /* tactic #1: use local movement */
     
    4199544460        tactic = 1;
    4199644461        usecost = newcost;
    41997 @@ -763,42 +819,51 @@
     44462@@ -763,42 +829,51 @@
    4199844463 
    4199944464     /* tactic #2: use carriage-return + local movement */
     
    4206344528 
    4206444529     /*
    42065 @@ -808,26 +873,39 @@
     44530@@ -808,26 +883,39 @@
    4206644531        InitResult;
    4206744532     switch (tactic) {
     
    4210944574     }
    4211044575 #endif /* !NO_OPTIMIZE */
    42111 @@ -845,17 +923,19 @@
     44576@@ -845,25 +933,26 @@
    4211244577 
    4211344578     if (usecost != INFINITY) {
     
    4212544590 }
    4212644591 
    42127 -NCURSES_EXPORT(int)
     44592 NCURSES_EXPORT(int)
    4212844593-mvcur(int yold, int xold, int ynew, int xnew)
     44594+TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew)
    4212944595 /* optimized cursor move from (yold, xold) to (ynew, xnew) */
    42130 +NCURSES_EXPORT(int)
    42131 +NCURSES_SP_NAME(mvcur) (NCURSES_SP_DCLx
    42132 +                       int yold, int xold, int ynew, int xnew)
    4213344596 {
    4213444597     NCURSES_CH_T oldattr;
    4213544598     int code;
    42136 @@ -863,7 +943,7 @@
    42137      TR(TRACE_CALLS | TRACE_MOVE, (T_CALLED("mvcur(%d,%d,%d,%d)"),
    42138                                   yold, xold, ynew, xnew));
     44599 
     44600-    TR(TRACE_CALLS | TRACE_MOVE, (T_CALLED("mvcur(%d,%d,%d,%d)"),
     44601-                                 yold, xold, ynew, xnew));
     44602+    TR(TRACE_CALLS | TRACE_MOVE, (T_CALLED("_nc_tinfo_mvcur(%p,%d,%d,%d,%d)"),
     44603+                                 SP_PARM, yold, xold, ynew, xnew));
    4213944604 
    4214044605-    if (SP == 0) {
     
    4214344608     } else if (yold == ynew && xold == xnew) {
    4214444609        code = OK;
    42145 @@ -874,9 +954,9 @@
     44610@@ -874,9 +963,9 @@
    4214644611         * column position implied by wraparound or the lack thereof and
    4214744612         * rolling up the screen to get ynew on the screen.
     
    4215644621 
    4215744622        /*
    42158 @@ -884,38 +964,40 @@
     44623@@ -884,38 +973,40 @@
    4215944624         * character set -- these have a strong tendency to screw up the CR &
    4216044625         * LF used for local character motions!
     
    4221044675                    }
    4221144676                }
    42212 @@ -929,27 +1011,35 @@
     44677@@ -929,27 +1020,35 @@
    4221344678            }
    4221444679        }
     
    4224244707 }
    4224344708 
    42244 +#if NCURSES_SP_FUNCS
     44709+#if NCURSES_SP_FUNCS && !defined(USE_TERM_DRIVER)
    4224544710+NCURSES_EXPORT(int)
    4224644711+mvcur(int yold, int xold, int ynew, int xnew)
     
    4225344718 NCURSES_EXPORT_VAR(int) _nc_optimize_enable = OPTIMIZE_ALL;
    4225444719 #endif
    42255 @@ -1212,25 +1302,25 @@
     44720@@ -1212,25 +1311,25 @@
    4225644721                           speeds[i], overhead, totalest);
    4225744722            }
     
    4229844763diff -Naur ncurses-5.7.orig/ncurses/tty/lib_tstp.c ncurses-5.7/ncurses/tty/lib_tstp.c
    4229944764--- ncurses-5.7.orig/ncurses/tty/lib_tstp.c     2008-05-03 09:24:56.000000000 -0700
    42300 +++ ncurses-5.7/ncurses/tty/lib_tstp.c  2009-07-19 15:03:59.000000000 -0700
     44765+++ ncurses-5.7/ncurses/tty/lib_tstp.c  2009-09-12 08:51:37.000000000 -0700
    4230144766@@ -1,5 +1,5 @@
    4230244767 /****************************************************************************
     
    4244044905diff -Naur ncurses-5.7.orig/ncurses/tty/lib_twait.c ncurses-5.7/ncurses/tty/lib_twait.c
    4244144906--- ncurses-5.7.orig/ncurses/tty/lib_twait.c    2008-08-30 13:08:19.000000000 -0700
    42442 +++ ncurses-5.7/ncurses/tty/lib_twait.c 2009-07-19 15:03:53.000000000 -0700
     44907+++ ncurses-5.7/ncurses/tty/lib_twait.c 2009-09-12 08:51:30.000000000 -0700
    4244344908@@ -1,5 +1,5 @@
    4244444909 /****************************************************************************
     
    4264745112diff -Naur ncurses-5.7.orig/ncurses/tty/lib_vidattr.c ncurses-5.7/ncurses/tty/lib_vidattr.c
    4264845113--- ncurses-5.7.orig/ncurses/tty/lib_vidattr.c  2007-06-30 14:58:04.000000000 -0700
    42649 +++ ncurses-5.7/ncurses/tty/lib_vidattr.c       2009-07-19 15:04:09.000000000 -0700
     45114+++ ncurses-5.7/ncurses/tty/lib_vidattr.c       2009-09-12 08:52:04.000000000 -0700
    4265045115@@ -1,5 +1,5 @@
    4265145116 /****************************************************************************
     
    4267645141+#endif
    4267745142+
    42678 +MODULE_ID("$Id: lib_vidattr.c,v 1.57 2009/05/23 20:46:28 tom Exp $")
     45143+MODULE_ID("$Id: lib_vidattr.c,v 1.58 2009/08/15 22:12:01 tom Exp $")
    4267945144 
    4268045145-#define doPut(mode) TPUTS_TRACE(#mode); tputs(mode, 1, outc)
     
    4281045275        }
    4281145276 
    42812 @@ -282,27 +297,53 @@
     45277@@ -282,28 +297,53 @@
    4281345278     if (reverse)
    4281445279        newmode |= A_REVERSE;
     
    4286145326     chtype attrs = A_NORMAL;
    4286245327 
     45328-    T((T_CALLED("termattrs()")));
    4286345329+    T((T_CALLED("termattrs(%p)"), SP_PARM));
    4286445330+#ifdef USE_TERM_DRIVER
     
    4286745333+#else
    4286845334+
    42869      T((T_CALLED("termattrs()")));
    4287045335     if (enter_alt_charset_mode)
    4287145336        attrs |= A_ALTCHARSET;
    42872 @@ -331,8 +372,17 @@
     45337 
     45338@@ -331,8 +371,17 @@
    4287345339     if (enter_underline_mode)
    4287445340        attrs |= A_UNDERLINE;
     
    4289245358diff -Naur ncurses-5.7.orig/ncurses/tty/MKexpanded.sh ncurses-5.7/ncurses/tty/MKexpanded.sh
    4289345359--- ncurses-5.7.orig/ncurses/tty/MKexpanded.sh  2005-01-01 17:06:40.000000000 -0800
    42894 +++ ncurses-5.7/ncurses/tty/MKexpanded.sh       2009-07-19 15:04:13.000000000 -0700
     45360+++ ncurses-5.7/ncurses/tty/MKexpanded.sh       2009-09-12 08:51:50.000000000 -0700
    4289545361@@ -1,6 +1,6 @@
    4289645362 #! /bin/sh
     
    4299945465diff -Naur ncurses-5.7.orig/ncurses/tty/tty_update.c ncurses-5.7/ncurses/tty/tty_update.c
    4300045466--- ncurses-5.7.orig/ncurses/tty/tty_update.c   2008-08-30 13:08:19.000000000 -0700
    43001 +++ ncurses-5.7/ncurses/tty/tty_update.c        2009-07-19 15:04:11.000000000 -0700
     45467+++ ncurses-5.7/ncurses/tty/tty_update.c        2009-09-12 08:52:05.000000000 -0700
    4300245468@@ -1,5 +1,5 @@
    4300345469 /****************************************************************************
     
    4301545481 
    4301645482 /*-----------------------------------------------------------------
    43017 @@ -38,12 +39,17 @@
     45483@@ -38,12 +39,16 @@
    4301845484  *
    4301945485  *     The routine doupdate() and its dependents.
     
    4302445490  *-----------------------------------------------------------------*/
    4302545491 
    43026 +#define NEED_NCURSES_CH_T 1
    4302745492 #include <curses.priv.h>
    4302845493 
     
    4303445499 #undef __BEOS__
    4303545500 #endif
    43036 @@ -76,9 +82,8 @@
     45501@@ -76,9 +81,8 @@
    4303745502 #endif
    4303845503 
     
    4304145506 
    4304245507-MODULE_ID("$Id: tty_update.c,v 1.246 2008/08/30 20:08:19 tom Exp $")
    43043 +MODULE_ID("$Id: tty_update.c,v 1.258 2009/06/27 19:16:17 tom Exp $")
     45508+MODULE_ID("$Id: tty_update.c,v 1.258.1.2 2009/08/16 14:20:30 tom Exp tom $")
    4304445509 
    4304545510 /*
    4304645511  * This define controls the line-breakout optimization.  Every once in a
    43047 @@ -91,7 +96,7 @@
     45512@@ -91,7 +95,7 @@
    4304845513  */
    4304945514 #define CHECK_INTERVAL 5
     
    4305445519 static const NCURSES_CH_T blankchar = NewChar(BLANK_TEXT);
    4305545520 static NCURSES_CH_T normal = NewChar(BLANK_TEXT);
    43056 @@ -103,13 +108,23 @@
     45521@@ -103,13 +107,23 @@
    4305745522  */
    4305845523 /* #define POSITION_DEBUG */
     
    4307945544 #ifdef POSITION_DEBUG
    4308045545 /****************************************************************************
    43081 @@ -119,7 +134,7 @@
     45546@@ -119,7 +133,7 @@
    4308245547  ****************************************************************************/
    4308345548 
     
    4308845553 {
    4308945554     char buf[20];
    43090 @@ -129,10 +144,10 @@
     45555@@ -129,10 +143,10 @@
    4309145556     if (!_nc_tracing || (expected_y < 0 && expected_x < 0))
    4309245557        return;
     
    4310245567     do {
    4310345568        int ask = sizeof(buf) - 1 - (s - buf);
    43104 @@ -152,8 +167,12 @@
     45569@@ -152,8 +166,12 @@
    4310545570        if (expected_y < 0)
    4310645571            expected_y = y - 1;
     
    4311745582                    y - 1, x - 1, expected_y, expected_x, legend);
    4311845583        } else {
    43119 @@ -162,7 +181,7 @@
     45584@@ -162,7 +180,7 @@
    4312045585     }
    4312145586 }
     
    4312645591 
    4312745592 /****************************************************************************
    43128 @@ -172,19 +191,20 @@
     45593@@ -172,19 +190,22 @@
    4312945594  ****************************************************************************/
    4313045595 
     
    4314345608-    mvcur(SP->_cursrow, SP->_curscol, row, col);
    4314445609-    position_check(SP->_cursrow, SP->_curscol, "GoTo2");
    43145 +    NCURSES_SP_NAME(mvcur) (NCURSES_SP_ARGx SP_PARM->_cursrow,
    43146 +                           SP_PARM->_curscol, row, col);
     45610+    TINFO_MVCUR(NCURSES_SP_ARGx
     45611+               SP_PARM->_cursrow,
     45612+               SP_PARM->_curscol,
     45613+               row, col);
    4314745614+    position_check(SP_PARM, SP_PARM->_cursrow, SP_PARM->_curscol, "GoTo2");
    4314845615 }
     
    4315445621     int chlen = 1;
    4315545622     NCURSES_CH_T my_ch;
    43156 @@ -194,7 +214,7 @@
     45623@@ -194,7 +215,7 @@
    4315745624 
    4315845625     TR(TRACE_CHARPUT, ("PutAttrChar(%s) at (%d, %d)",
     
    4316345630     /*
    4316445631      * If this is not a valid character, there is nothing more to do.
    43165 @@ -224,12 +244,12 @@
     45632@@ -224,12 +245,12 @@
    4316645633         */
    4316745634        if (is8bits(CharOf(CHDEREF(ch)))
     
    4318045647            ;
    4318145648        } else {
    43182 @@ -241,7 +261,7 @@
     45649@@ -241,7 +262,7 @@
    4318345650 #endif
    4318445651 
     
    4318945656        my_ch = CHDEREF(ch);    /* work around const param */
    4319045657 #if USE_WIDEC_SUPPORT
    43191 @@ -251,8 +271,8 @@
     45658@@ -251,8 +272,8 @@
    4319245659         * character, and uses the wide-character mapping when we expect the
    4319345660         * normal one to be broken (by mis-design ;-).
     
    4320045667            my_ch = _nc_wacs[CharOf(my_ch)];
    4320145668        }
    43202 @@ -265,9 +285,9 @@
     45669@@ -265,9 +286,9 @@
    4320345670         */
    4320445671        if (AttrOf(attr) & A_ALTCHARSET) {
     
    4321245679                if (temp == 0)
    4321345680                    temp = ' ';
    43214 @@ -282,28 +302,28 @@
     45681@@ -282,28 +303,28 @@
    4321545682        ch = CHREF(tilde);
    4321645683     }
     
    4324845715 {
    4324945716     bool have_pending = FALSE;
    43250 @@ -313,13 +333,13 @@
     45717@@ -313,13 +334,13 @@
    4325145718      * have the refreshing slow down drastically (or stop) if there's an
    4325245719      * unread character available.
     
    4326545732        if (poll(fds, 1, 0) > 0) {
    4326645733            have_pending = TRUE;
    43267 @@ -347,43 +367,52 @@
     45734@@ -347,43 +368,52 @@
    4326845735            ktimeout.tv_usec = 0;
    4326945736 
     
    4333345800 }
    4333445801 
    43335 @@ -391,7 +420,7 @@
     45802@@ -391,7 +421,7 @@
    4333645803  * Wrap the cursor position, i.e., advance to the beginning of the next line.
    4333745804  */
     
    4334245809     if (eat_newline_glitch) {
    4334345810        /*
    43344 @@ -407,40 +436,45 @@
     45811@@ -407,40 +437,45 @@
    4334545812         * it's safe to just tell the code that the cursor is in hyperspace and
    4334645813         * let the next mvcur() call straighten things out.
     
    4340645873 
    4340745874 /*
    43408 @@ -450,19 +484,19 @@
     45875@@ -450,19 +485,19 @@
    4340945876  * or can be output by clearing (A_COLOR in case of bce-terminal) are excluded.
    4341045877  */
     
    4343145898                return FALSE;
    4343245899        }
    43433 @@ -488,7 +522,7 @@
     45900@@ -488,7 +523,7 @@
    4343445901  * This code is optimized using ech and rep.
    4343545902  */
     
    4344045907     int i;
    4344145908 
    43442 @@ -500,13 +534,13 @@
     45909@@ -500,13 +535,13 @@
    4344345910            NCURSES_CH_T ntext0;
    4344445911 
     
    4345645923            }
    4345745924            runcount = 2;
    43458 @@ -523,10 +557,11 @@
     45925@@ -523,10 +558,11 @@
    4345945926             * which it would be marginally advantageous.
    4346045927             */
     
    4347245939                /*
    4347345940                 * If this is the last part of the given interval,
    43474 @@ -534,27 +569,34 @@
     45941@@ -534,27 +570,34 @@
    4347545942                 * last update on the line.
    4347645943                 */
     
    4351645983            ntext += runcount;
    4351745984            num -= runcount;
    43518 @@ -563,7 +605,7 @@
     45985@@ -563,7 +606,7 @@
    4351945986     }
    4352045987 
     
    4352545992 }
    4352645993 
    43527 @@ -576,39 +618,40 @@
     45994@@ -576,39 +619,40 @@
    4352845995  * Returns: same as EmitRange
    4352945996  */
     
    4357546042 
    4357646043 /* leave unbracketed here so 'indent' works */
    43577 @@ -618,7 +661,7 @@
     46044@@ -618,7 +662,7 @@
    4357846045                if_USE_SCROLL_HINTS(win->_line[row].oldindex = row)
    4357946046 
    4358046047 NCURSES_EXPORT(int)
    4358146048-doupdate(void)
    43582 +NCURSES_SP_NAME(doupdate) (NCURSES_SP_DCL0)
     46049+TINFO_DOUPDATE(NCURSES_SP_DCL0)
    4358346050 {
    4358446051     int i;
    4358546052     int nonempty;
    43586 @@ -626,30 +669,49 @@
     46053@@ -626,30 +670,49 @@
    4358746054     struct tms before, after;
    4358846055 #endif /* USE_TRACE_TIMES */
     
    4364346110         * This is a transparent extension:  XSI does not address it,
    4364446111         * and applications need not know that ncurses can do it.
    43645 @@ -658,20 +720,20 @@
     46112@@ -658,20 +721,20 @@
    4364646113         * (this can happen in an xterm, for example), and resize the
    4364746114         * ncurses data structures accordingly.
     
    4367146138 #if USE_TRACE_TIMES
    4367246139     /* zero the metering machinery */
    43673 @@ -695,11 +757,11 @@
     46140@@ -695,11 +758,11 @@
    4367446141        int j, k;
    4367546142        attr_t rattr = A_NORMAL;
     
    4368746154 
    4368846155                /* is an attribute turned on here? */
    43689 @@ -717,8 +779,8 @@
     46156@@ -717,8 +780,8 @@
    4369046157                 * there's enough room to set the attribute before the first
    4369146158                 * non-blank in the run.
     
    4369846165                    continue;
    4369946166                }
    43700 @@ -727,14 +789,14 @@
     46167@@ -727,14 +790,14 @@
    4370146168                for (k = 1; k <= magic_cookie_glitch; k++) {
    4370246169                    if (j - k < 0
     
    4371546182                                          : ":unsafe")));
    4371646183                        break;
    43717 @@ -745,10 +807,11 @@
     46184@@ -745,10 +808,11 @@
    4371846185                    int m, n = j;
    4371946186 
     
    4373146198                                TR(TRACE_ATTRS,
    4373246199                                   ("Range attributed with %s ends at (%d, %d)",
    43733 @@ -764,7 +827,8 @@
     46200@@ -764,7 +828,8 @@
    4373446201                  foundit:;
    4373546202 
     
    4374146208                        /*
    4374246209                         * If there are safely-attributed blanks at the end of
    43743 @@ -773,15 +837,15 @@
     46210@@ -773,15 +838,15 @@
    4374446211                         */
    4374546212                        while (n >= 0
     
    4376046227                                TR(TRACE_ATTRS,
    4376146228                                   ("No room at end in %d,%d%s%s",
    43762 @@ -789,7 +853,7 @@
     46229@@ -789,7 +854,7 @@
    4376346230                                    (ISBLANK(lastline[n + k])
    4376446231                                     ? ""
     
    4376946236                                     : ":unsafe")));
    4377046237                                break;
    43771 @@ -806,12 +870,12 @@
     46238@@ -806,12 +871,12 @@
    4377246239                        _traceattr(turnon), i, j));
    4377346240 
     
    4378646253                        q = 0;
    4378746254                    }
    43788 @@ -837,7 +901,7 @@
     46255@@ -837,7 +902,7 @@
    4378946256        /* show altered highlights after magic-cookie check */
    4379046257        if (USE_TRACEF(TRACE_UPDATE)) {
     
    4379546262        }
    4379646263 #endif /* TRACE */
    43797 @@ -845,23 +909,23 @@
     46264@@ -845,23 +910,23 @@
    4379846265 #endif /* USE_XMC_SUPPORT */
    4379946266 
     
    4382846295        TR(TRACE_UPDATE, ("Transforming lines, nonempty %d", nonempty));
    4382946296        for (i = 0; i < nonempty; i++) {
    43830 @@ -869,7 +933,7 @@
     46297@@ -869,7 +934,7 @@
    4383146298             * Here is our line-breakout optimization.
    4383246299             */
     
    4383746304                changedlines = 0;
    4383846305            }
    43839 @@ -880,35 +944,35 @@
     46306@@ -880,35 +945,35 @@
    4384046307             * is normally set by _nc_scroll_window in the
    4384146308             * vertical-movement optimization code,
     
    4388846355 
    4388946356   cleanup:
    43890 @@ -921,10 +985,10 @@
     46357@@ -921,10 +986,10 @@
    4389146358 #if USE_XMC_SUPPORT
    4389246359     if (magic_cookie_glitch != 0)
     
    4390246369 #if USE_TRACE_TIMES
    4390346370     (void) times(&after);
    43904 @@ -940,6 +1004,14 @@
     46371@@ -940,6 +1005,14 @@
    4390546372     returnCode(OK);
    4390646373 }
    4390746374 
    43908 +#if NCURSES_SP_FUNCS
     46375+#if NCURSES_SP_FUNCS && !defined(USE_TERM_DRIVER)
    4390946376+NCURSES_EXPORT(int)
    4391046377+doupdate(void)
    4391146378+{
    43912 +    return NCURSES_SP_NAME(doupdate) (CURRENT_SCREEN);
     46379+    return TINFO_DOUPDATE(CURRENT_SCREEN);
    4391346380+}
    4391446381+#endif
     
    4391746384  *     ClrBlank(win)
    4391846385  *
    43919 @@ -951,14 +1023,14 @@
     46386@@ -951,14 +1024,14 @@
    4392046387  *     in the wbkgd() call.  Assume 'stdscr' for this case.
    4392146388  */
     
    4393546402 }
    4393646403 
    43937 @@ -970,23 +1042,24 @@
     46404@@ -970,23 +1043,24 @@
    4393846405 */
    4393946406 
     
    4397146438 }
    4397246439 
    43973 @@ -997,15 +1070,16 @@
     46440@@ -997,15 +1071,16 @@
    4397446441 */
    4397546442 
     
    4399346460                if (!CharEq(*cp, blank)) {
    4399446461                    *cp = blank;
    43995 @@ -1018,14 +1092,14 @@
     46462@@ -1018,14 +1093,14 @@
    4399646463     }
    4399746464 
     
    4401346480     }
    4401446481 }
    44015 @@ -1037,23 +1111,29 @@
     46482@@ -1037,23 +1112,29 @@
    4401646483 */
    4401746484 
     
    4405546522 }
    4405646523 
    44057 @@ -1065,26 +1145,26 @@
     46524@@ -1065,26 +1146,26 @@
    4405846525  *     screen, checking if each is blank, and one or more are changed.
    4405946526  */
     
    4408846555            if (!ok)
    4408946556                top = row;
    44090 @@ -1092,11 +1172,11 @@
     46557@@ -1092,11 +1173,11 @@
    4409146558 
    4409246559        /* don't use clr_eos for just one line if clr_eol available */
     
    4410546572        }
    4410646573     }
    44107 @@ -1105,15 +1185,15 @@
     46574@@ -1105,15 +1186,15 @@
    4410846575 
    4410946576 #if USE_XMC_SUPPORT
     
    4412746594 
    4412846595 /*
    44129 @@ -1135,19 +1215,19 @@
     46596@@ -1135,19 +1216,19 @@
    4413046597 */
    4413146598 
     
    4415346620     /*
    4415446621      * If we have colors, there is the possibility of having two color pairs
    44155 @@ -1155,19 +1235,20 @@
     46622@@ -1155,19 +1236,20 @@
    4415646623      * for this case, and update the old line with the new line's colors when
    4415746624      * they are equivalent.
     
    4417946646                    }
    4418046647                }
    44181 @@ -1177,7 +1258,7 @@
     46648@@ -1177,7 +1259,7 @@
    4418246649 
    4418346650     if (ceol_standout_glitch && clr_eol) {
     
    4418846655                attrchanged = TRUE;
    4418946656                break;
    44190 @@ -1189,9 +1270,13 @@
     46657@@ -1189,9 +1271,13 @@
    4419146658     firstChar = 0;
    4419246659 
     
    4420546672 
    4420646673        /*
    44207 @@ -1206,8 +1291,8 @@
     46674@@ -1206,8 +1292,8 @@
    4420846675         * following operation.
    4420946676         */
     
    4421646683 
    4421746684            /* check for turn-on:
    44218 @@ -1216,26 +1301,30 @@
     46685@@ -1216,26 +1302,30 @@
    4421946686             */
    4422046687            if (ISBLANK(newLine[n])
     
    4425546722            }
    4425646723 
    44257 @@ -1246,38 +1335,42 @@
     46724@@ -1246,38 +1336,42 @@
    4425846725 
    4425946726        /* it may be cheap to clear leading whitespace with clr_bol */
     
    4431146778 
    4431246779                    while (firstChar < nFirstChar)
    44313 @@ -1286,29 +1379,34 @@
     46780@@ -1286,29 +1380,34 @@
    4431446781            }
    4431546782        } else {
     
    4435346820                       newLine + firstChar,
    4435446821                       (nLastChar - firstChar + 1) * sizeof(NCURSES_CH_T));
    44355 @@ -1318,32 +1416,44 @@
     46822@@ -1318,32 +1417,44 @@
    4435646823        }
    4435746824 
     
    4441146878        } else {
    4441246879            int nLastNonblank = nLastChar;
    44413 @@ -1364,8 +1474,13 @@
     46880@@ -1364,8 +1475,13 @@
    4441446881 
    4441546882            n = min(oLastChar, nLastChar);
     
    4442746894 
    4442846895            if (oLastChar < nLastChar) {
    44429 @@ -1376,21 +1491,26 @@
     46896@@ -1376,21 +1492,26 @@
    4443046897                    --oLastChar;
    4443146898                }
     
    4446446931                    /*
    4446546932                     * The delete-char sequence will
    44466 @@ -1400,18 +1520,18 @@
     46933@@ -1400,18 +1521,18 @@
    4446746934                     * setting the video attributes from
    4446846935                     * the last character on the row.
     
    4448746954     return;
    4448846955 }
    44489 @@ -1424,7 +1544,7 @@
     46956@@ -1424,7 +1545,7 @@
    4449046957 */
    4449146958 
     
    4449646963     int i, j;
    4449746964     bool fast_clear = (clear_screen || clr_eos || clr_eol);
    44498 @@ -1432,9 +1552,13 @@
     46965@@ -1432,9 +1553,13 @@
    4449946966     TR(TRACE_UPDATE, ("ClearScreen() called"));
    4450046967 
     
    4451346980            fast_clear = FALSE;
    4451446981        }
    44515 @@ -1443,42 +1567,46 @@
     46982@@ -1443,42 +1568,46 @@
    4451646983 
    4451746984     if (fast_clear) {
     
    4458647053 
    4458747054     TR(TRACE_UPDATE, ("screen cleared"));
    44588 @@ -1492,49 +1620,52 @@
     47055@@ -1492,49 +1621,52 @@
    4458947056 */
    4459047057 
     
    4465147118 
    4465247119 /*
    44653 @@ -1545,22 +1676,25 @@
     47120@@ -1545,22 +1677,25 @@
    4465447121 */
    4465547122 
     
    4468447151     }
    4468547152 }
    44686 @@ -1599,54 +1733,66 @@
     47153@@ -1599,54 +1734,66 @@
    4468747154 
    4468847155 /* Try to scroll up assuming given csr (miny, maxy). Returns ERR on failure */
     
    4477447241     }
    4477547242 #endif
    44776 @@ -1656,55 +1802,66 @@
     47243@@ -1656,55 +1803,66 @@
    4477747244 /* Try to scroll down assuming given csr (miny, maxy). Returns ERR on failure */
    4477847245 /* n > 0 */
     
    4486447331     }
    4486547332 #endif
    44866 @@ -1714,40 +1871,46 @@
     47333@@ -1714,40 +1872,46 @@
    4486747334 /* scroll by using delete_line at del and insert_line at ins */
    4486847335 /* n > 0 */
     
    4492247389     }
    4492347390 
    44924 @@ -1763,15 +1926,24 @@
     47391@@ -1763,15 +1927,24 @@
    4492547392  * save/restore cursor capabilities if the terminal has them.
    4492647393  */
     
    4495047417 #if USE_XMC_SUPPORT
    4495147418     /*
    44952 @@ -1787,34 +1959,36 @@
     47419@@ -1787,34 +1960,36 @@
    4495347420         * Explicitly clear if stuff pushed off top of region might
    4495447421         * be saved by the terminal.
     
    4499847465        /*
    4499947466         * Clear the newly shifted-in text.
    45000 @@ -1823,44 +1997,49 @@
     47467@@ -1823,44 +1998,49 @@
    4500147468            && (non_dest_scroll_region || (memory_below && bot == maxy))) {
    4500247469            static const NCURSES_CH_T blank2 = NewChar(BLANK_TEXT);
     
    4506347530        /*
    4506447531         * Clear the newly shifted-in text.
    45065 @@ -1869,8 +2048,8 @@
     47532@@ -1869,8 +2049,8 @@
    4506647533            && (non_dest_scroll_region || (memory_above && top == 0))) {
    4506747534            static const NCURSES_CH_T blank2 = NewChar(BLANK_TEXT);
     
    4507447541        }
    4507547542     }
    45076 @@ -1878,99 +2057,159 @@
     47543@@ -1878,99 +2058,159 @@
    4507747544     if (res == ERR)
    4507847545        return (ERR);
     
    4521347680 
    4521447681-       mvcur(SP->_cursrow, SP->_curscol, screen_lines - 1, 0);
    45215 +       NCURSES_SP_NAME(mvcur) (NCURSES_SP_ARGx
    45216 +                               SP_PARM->_cursrow,
    45217 +                               SP_PARM->_curscol,
    45218 +                               screen_lines(SP_PARM) - 1,
    45219 +                               0);
     47682+       TINFO_MVCUR(NCURSES_SP_ARGx
     47683+                   SP_PARM->_cursrow,
     47684+                   SP_PARM->_curscol,
     47685+                   screen_lines(SP_PARM) - 1,
     47686+                   0);
    4522047687 
    4522147688-       ClrToEOL(blank, TRUE);
     
    4527847745diff -Naur ncurses-5.7.orig/ncurses/widechar/lib_add_wch.c ncurses-5.7/ncurses/widechar/lib_add_wch.c
    4527947746--- ncurses-5.7.orig/ncurses/widechar/lib_add_wch.c     2006-12-02 13:19:17.000000000 -0800
    45280 +++ ncurses-5.7/ncurses/widechar/lib_add_wch.c  2009-07-19 15:04:13.000000000 -0700
     47747+++ ncurses-5.7/ncurses/widechar/lib_add_wch.c  2009-09-12 08:51:56.000000000 -0700
    4528147748@@ -1,5 +1,5 @@
    4528247749 /****************************************************************************
     
    4528647753  * Permission is hereby granted, free of charge, to any person obtaining a  *
    4528747754  * copy of this software and associated documentation files (the            *
    45288 @@ -35,39 +35,389 @@
     47755@@ -35,39 +35,392 @@
    4528947756 
    4529047757 #include <curses.priv.h>
     
    4529747764-NCURSES_EXPORT(int)
    4529847765-wadd_wch(WINDOW *win, const cchar_t *wch)
    45299 +MODULE_ID("$Id: lib_add_wch.c,v 1.7 2009/07/04 21:59:25 tom Exp $")
     47766+MODULE_ID("$Id: lib_add_wch.c,v 1.8 2009/07/25 14:38:01 tom Exp $")
    4530047767+
    4530147768+/* clone/adapt lib_addch.c */
     
    4558548052+    wchar_t *s;
    4558648053+    int tabsize = 8;
     48054+#if USE_REENTRANT
     48055+    SCREEN *sp = _nc_screen_of(win);
     48056+#endif
    4558748057+
    4558848058+    /*
     
    4560548075+    case '\t':
    4560648076+#if USE_REENTRANT
    45607 +       tabsize = sp->_TABSIZE;
     48077+       tabsize = *ptrTabsize(sp);
    4560848078+#else
    4560948079+       tabsize = TABSIZE;
     
    4570048170 
    4570148171     TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_RETURN("%d"), code));
    45702 @@ -77,37 +427,18 @@
     48172@@ -77,37 +430,18 @@
    4570348173 NCURSES_EXPORT(int)
    4570448174 wecho_wchar(WINDOW *win, const cchar_t *wch)
     
    4574848218diff -Naur ncurses-5.7.orig/ncurses/widechar/lib_cchar.c ncurses-5.7/ncurses/widechar/lib_cchar.c
    4574948219--- ncurses-5.7.orig/ncurses/widechar/lib_cchar.c       2007-05-12 12:03:06.000000000 -0700
    45750 +++ ncurses-5.7/ncurses/widechar/lib_cchar.c    2009-07-19 15:04:17.000000000 -0700
     48220+++ ncurses-5.7/ncurses/widechar/lib_cchar.c    2009-09-12 08:51:54.000000000 -0700
    4575148221@@ -1,5 +1,5 @@
    4575248222 /****************************************************************************
     
    4579148261diff -Naur ncurses-5.7.orig/ncurses/widechar/lib_get_wch.c ncurses-5.7/ncurses/widechar/lib_get_wch.c
    4579248262--- ncurses-5.7.orig/ncurses/widechar/lib_get_wch.c     2008-08-16 12:22:55.000000000 -0700
    45793 +++ ncurses-5.7/ncurses/widechar/lib_get_wch.c  2009-07-19 15:03:53.000000000 -0700
     48263+++ ncurses-5.7/ncurses/widechar/lib_get_wch.c  2009-09-12 08:51:30.000000000 -0700
    4579448264@@ -1,5 +1,5 @@
    4579548265 /****************************************************************************
     
    4583448304diff -Naur ncurses-5.7.orig/ncurses/widechar/lib_get_wstr.c ncurses-5.7/ncurses/widechar/lib_get_wstr.c
    4583548305--- ncurses-5.7.orig/ncurses/widechar/lib_get_wstr.c    2008-08-16 12:25:33.000000000 -0700
    45836 +++ ncurses-5.7/ncurses/widechar/lib_get_wstr.c 2009-07-19 15:02:22.000000000 -0700
     48306+++ ncurses-5.7/ncurses/widechar/lib_get_wstr.c 2009-09-12 08:51:17.000000000 -0700
    4583748307@@ -38,9 +38,8 @@
    4583848308 */
     
    4584848318diff -Naur ncurses-5.7.orig/ncurses/widechar/lib_ins_wch.c ncurses-5.7/ncurses/widechar/lib_ins_wch.c
    4584948319--- ncurses-5.7.orig/ncurses/widechar/lib_ins_wch.c     2005-12-03 12:24:19.000000000 -0800
    45850 +++ ncurses-5.7/ncurses/widechar/lib_ins_wch.c  2009-07-19 15:04:04.000000000 -0700
     48320+++ ncurses-5.7/ncurses/widechar/lib_ins_wch.c  2009-09-12 08:51:42.000000000 -0700
    4585148321@@ -1,5 +1,5 @@
    4585248322 /****************************************************************************
     
    4588548355diff -Naur ncurses-5.7.orig/ncurses/widechar/lib_unget_wch.c ncurses-5.7/ncurses/widechar/lib_unget_wch.c
    4588648356--- ncurses-5.7.orig/ncurses/widechar/lib_unget_wch.c   2008-06-07 07:50:37.000000000 -0700
    45887 +++ ncurses-5.7/ncurses/widechar/lib_unget_wch.c        2009-07-19 15:03:53.000000000 -0700
     48357+++ ncurses-5.7/ncurses/widechar/lib_unget_wch.c        2009-09-12 08:51:30.000000000 -0700
    4588848358@@ -1,5 +1,5 @@
    4588948359 /****************************************************************************
     
    4594248412diff -Naur ncurses-5.7.orig/ncurses/widechar/lib_vid_attr.c ncurses-5.7/ncurses/widechar/lib_vid_attr.c
    4594348413--- ncurses-5.7.orig/ncurses/widechar/lib_vid_attr.c    2007-06-30 15:03:02.000000000 -0700
    45944 +++ ncurses-5.7/ncurses/widechar/lib_vid_attr.c 2009-07-19 15:04:00.000000000 -0700
     48414+++ ncurses-5.7/ncurses/widechar/lib_vid_attr.c 2009-09-12 08:51:37.000000000 -0700
    4594548415@@ -1,5 +1,5 @@
    4594648416 /****************************************************************************
     
    4617448644diff -Naur ncurses-5.7.orig/ncurses/widechar/lib_wacs.c ncurses-5.7/ncurses/widechar/lib_wacs.c
    4617548645--- ncurses-5.7.orig/ncurses/widechar/lib_wacs.c        2006-12-17 07:16:17.000000000 -0800
    46176 +++ ncurses-5.7/ncurses/widechar/lib_wacs.c     2009-07-19 15:02:22.000000000 -0700
     48646+++ ncurses-5.7/ncurses/widechar/lib_wacs.c     2009-09-12 08:51:17.000000000 -0700
    4617748647@@ -31,9 +31,8 @@
    4617848648  ****************************************************************************/
     
    4618848658diff -Naur ncurses-5.7.orig/ncurses/widechar/lib_wunctrl.c ncurses-5.7/ncurses/widechar/lib_wunctrl.c
    4618948659--- ncurses-5.7.orig/ncurses/widechar/lib_wunctrl.c     2007-06-12 13:22:32.000000000 -0700
    46190 +++ ncurses-5.7/ncurses/widechar/lib_wunctrl.c  2009-07-19 15:03:53.000000000 -0700
     48660+++ ncurses-5.7/ncurses/widechar/lib_wunctrl.c  2009-09-12 08:51:30.000000000 -0700
    4619148661@@ -1,5 +1,5 @@
    4619248662 /****************************************************************************
     
    4623748707diff -Naur ncurses-5.7.orig/ncurses/win32con/gettimeofday.c ncurses-5.7/ncurses/win32con/gettimeofday.c
    4623848708--- ncurses-5.7.orig/ncurses/win32con/gettimeofday.c    1969-12-31 16:00:00.000000000 -0800
    46239 +++ ncurses-5.7/ncurses/win32con/gettimeofday.c 2009-07-19 15:04:11.000000000 -0700
     48709+++ ncurses-5.7/ncurses/win32con/gettimeofday.c 2009-09-12 08:51:49.000000000 -0700
    4624048710@@ -0,0 +1,51 @@
    4624148711+/****************************************************************************
     
    4629248762diff -Naur ncurses-5.7.orig/ncurses/win32con/win_driver.c ncurses-5.7/ncurses/win32con/win_driver.c
    4629348763--- ncurses-5.7.orig/ncurses/win32con/win_driver.c      1969-12-31 16:00:00.000000000 -0800
    46294 +++ ncurses-5.7/ncurses/win32con/win_driver.c   2009-07-19 15:04:11.000000000 -0700
     48764+++ ncurses-5.7/ncurses/win32con/win_driver.c   2009-09-12 08:51:49.000000000 -0700
    4629548765@@ -0,0 +1,1085 @@
    4629648766+/****************************************************************************
     
    4738149851diff -Naur ncurses-5.7.orig/NEWS ncurses-5.7/NEWS
    4738249852--- ncurses-5.7.orig/NEWS       2008-11-01 17:56:22.000000000 -0700
    47383 +++ ncurses-5.7/NEWS    2009-07-19 15:04:17.000000000 -0700
     49853+++ ncurses-5.7/NEWS    2009-09-12 08:52:10.000000000 -0700
    4738449854@@ -1,5 +1,5 @@
    4738549855 -------------------------------------------------------------------------------
     
    4739449864 -------------------------------------------------------------------------------
    4739549865--- $Id: NEWS,v 1.1320 2008/11/02 00:56:22 tom Exp $
    47396 +-- $Id: NEWS,v 1.1409 2009/07/19 00:09:05 tom Exp $
     49866+-- $Id: NEWS,v 1.1430 2009/09/06 16:03:13 tom Exp $
    4739749867 -------------------------------------------------------------------------------
    4739849868 
    4739949869 This is a log of changes that ncurses has gone through since Zeyd started
    47400 @@ -45,6 +45,300 @@
     49870@@ -45,6 +45,362 @@
    4740149871 Changes through 1.9.9e did not credit all contributions;
    4740249872 it is not possible to add this information.
    4740349873 
     49874+20090906
     49875+       + fix typo s/is_timeout/is_notimeout/ which made "man is_notimeout" not
     49876+         work.
     49877+       + add null-pointer checks to other opaque-functions.
     49878+       + add is_pad() and is_subwin() functions for opaque access to WINDOW
     49879+         (discussion with Mark Dickinson).
     49880+       + correct merge to lib_newterm.c, which broke when sp-funcs was
     49881+         enabled.
     49882+
     49883+20090905
     49884+       + build-fix for building outside source-tree (report by Sven Joachim).
     49885+       + fix Debian lintian warning for man/tabs.1 by making section number
     49886+         agree with file-suffix (report by Sven Joachim).
     49887+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
     49888+
     49889+20090829
     49890+       + workaround for bug in g++ 4.1-4.4 warnings for wattrset() macro on
     49891+         amd64 (Debian #542031).
     49892+       + fix typo in curs_mouse.3x (Debian #429198).
     49893+
     49894+20090822
     49895+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
     49896+
     49897+20090815
     49898+       + correct use of terminfo capabilities for initializing soft-keys,
     49899+         broken in 20090509 merging.
     49900+       + modify wgetch() to ensure it checks SIGWINCH when it gets an error
     49901+         in non-blocking mode (patch by Clemens Ladisch).
     49902+       + use PATH_SEPARATOR symbol when substituting into run_tic.sh, to
     49903+         help with builds on non-Unix platforms such as OS/2 EMX.
     49904+       + modify scripting for misc/run_tic.sh to test configure script's
     49905+         $cross_compiling variable directly rather than comparing host/build
     49906+         compiler names (prompted by comment in GenToo #249363).
     49907+       + fix configure script option --with-database, which was coded as an
     49908+         enable-type switch.
     49909+       + build-fixes for --srcdir (report by Frederic L W Meunier).
     49910+
     49911+20090808
     49912+       + separate _nc_find_entry() and _nc_find_type_entry() from
     49913+         implementation details of hash function.
     49914+
     49915+20090803
     49916+       + add tabs.1 to man/man_db.renames
     49917+       + modify lib_addch.c to compensate for removal of wide-character test
     49918+         from unctrl() in 20090704 (Debian #539735).
     49919+
     49920+20090801
     49921+       + improve discussion in INSTALL for use of system's tic/infocmp for
     49922+         cross-compiling and building fallbacks.
     49923+       + modify test/demo_termcap.c to correspond better to options in
     49924+         test/demo_terminfo.c
     49925+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
     49926+       + fix logic for 'V' in test/ncurses.c tests f/F.
     49927+
     49928+20090728
     49929+       + correct logic in tigetnum(), which caused tput program to treat all
     49930+         string capabilities as numeric (report by Rajeev V Pillai,
     49931+         cf: 20090711).
     49932+
     49933+20090725
     49934+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
     49935+
    4740449936+20090718
    4740549937+       + fix a null-pointer check in _nc_format_slks() in lib_slk.c, from
     
    4770150233diff -Naur ncurses-5.7.orig/panel/Makefile.in ncurses-5.7/panel/Makefile.in
    4770250234--- ncurses-5.7.orig/panel/Makefile.in  2007-04-28 07:56:11.000000000 -0700
    47703 +++ ncurses-5.7/panel/Makefile.in       2009-07-19 15:03:48.000000000 -0700
     50235+++ ncurses-5.7/panel/Makefile.in       2009-09-12 08:51:25.000000000 -0700
    4770450236@@ -1,6 +1,6 @@
    4770550237-# $Id: Makefile.in,v 1.52 2007/04/28 14:56:11 tom Exp $
     
    4773050262diff -Naur ncurses-5.7.orig/panel/p_above.c ncurses-5.7/panel/p_above.c
    4773150263--- ncurses-5.7.orig/panel/p_above.c    2005-02-19 08:44:57.000000000 -0800
    47732 +++ ncurses-5.7/panel/p_above.c 2009-07-19 15:03:51.000000000 -0700
     50264+++ ncurses-5.7/panel/p_above.c 2009-09-12 08:51:28.000000000 -0700
    4773350265@@ -1,5 +1,5 @@
    4773450266 /****************************************************************************
     
    4780250334diff -Naur ncurses-5.7.orig/panel/panel.c ncurses-5.7/panel/panel.c
    4780350335--- ncurses-5.7.orig/panel/panel.c      2005-02-19 10:04:31.000000000 -0800
    47804 +++ ncurses-5.7/panel/panel.c   2009-07-19 15:03:51.000000000 -0700
     50336+++ ncurses-5.7/panel/panel.c   2009-09-12 08:51:28.000000000 -0700
    4780550337@@ -1,5 +1,5 @@
    4780650338 /****************************************************************************
     
    4783750369diff -Naur ncurses-5.7.orig/panel/panel.h ncurses-5.7/panel/panel.h
    4783850370--- ncurses-5.7.orig/panel/panel.h      2006-05-27 12:49:40.000000000 -0700
    47839 +++ ncurses-5.7/panel/panel.h   2009-07-19 15:03:51.000000000 -0700
     50371+++ ncurses-5.7/panel/panel.h   2009-09-12 08:51:28.000000000 -0700
    4784050372@@ -1,5 +1,5 @@
    4784150373 /****************************************************************************
     
    4787350405diff -Naur ncurses-5.7.orig/panel/panel.priv.h ncurses-5.7/panel/panel.priv.h
    4787450406--- ncurses-5.7.orig/panel/panel.priv.h 2008-09-27 15:36:11.000000000 -0700
    47875 +++ ncurses-5.7/panel/panel.priv.h      2009-07-19 15:03:51.000000000 -0700
     50407+++ ncurses-5.7/panel/panel.priv.h      2009-09-12 08:51:28.000000000 -0700
    4787650408@@ -1,5 +1,5 @@
    4787750409 /****************************************************************************
     
    4798650518diff -Naur ncurses-5.7.orig/panel/p_below.c ncurses-5.7/panel/p_below.c
    4798750519--- ncurses-5.7.orig/panel/p_below.c    2005-02-19 08:45:10.000000000 -0800
    47988 +++ ncurses-5.7/panel/p_below.c 2009-07-19 15:03:51.000000000 -0700
     50520+++ ncurses-5.7/panel/p_below.c 2009-09-12 08:51:28.000000000 -0700
    4798950521@@ -1,5 +1,5 @@
    4799050522 /****************************************************************************
     
    4805950591diff -Naur ncurses-5.7.orig/panel/p_bottom.c ncurses-5.7/panel/p_bottom.c
    4806050592--- ncurses-5.7.orig/panel/p_bottom.c   2005-02-19 08:38:16.000000000 -0800
    48061 +++ ncurses-5.7/panel/p_bottom.c        2009-07-19 15:03:51.000000000 -0700
     50593+++ ncurses-5.7/panel/p_bottom.c        2009-09-12 08:51:28.000000000 -0700
    4806250594@@ -1,5 +1,5 @@
    4806350595 /****************************************************************************
     
    4809450626diff -Naur ncurses-5.7.orig/panel/p_delete.c ncurses-5.7/panel/p_delete.c
    4809550627--- ncurses-5.7.orig/panel/p_delete.c   2005-02-19 08:38:45.000000000 -0800
    48096 +++ ncurses-5.7/panel/p_delete.c        2009-07-19 15:03:51.000000000 -0700
     50628+++ ncurses-5.7/panel/p_delete.c        2009-09-12 08:51:28.000000000 -0700
    4809750629@@ -1,5 +1,5 @@
    4809850630 /****************************************************************************
     
    4813550667diff -Naur ncurses-5.7.orig/panel/p_hidden.c ncurses-5.7/panel/p_hidden.c
    4813650668--- ncurses-5.7.orig/panel/p_hidden.c   2005-02-19 08:39:17.000000000 -0800
    48137 +++ ncurses-5.7/panel/p_hidden.c        2009-07-19 15:03:51.000000000 -0700
     50669+++ ncurses-5.7/panel/p_hidden.c        2009-09-12 08:51:28.000000000 -0700
    4813850670@@ -1,5 +1,5 @@
    4813950671 /****************************************************************************
     
    4817650708diff -Naur ncurses-5.7.orig/panel/p_hide.c ncurses-5.7/panel/p_hide.c
    4817750709--- ncurses-5.7.orig/panel/p_hide.c     2005-02-19 08:39:41.000000000 -0800
    48178 +++ ncurses-5.7/panel/p_hide.c  2009-07-19 15:03:51.000000000 -0700
     50710+++ ncurses-5.7/panel/p_hide.c  2009-09-12 08:51:28.000000000 -0700
    4817950711@@ -36,23 +36,27 @@
    4818050712  */
     
    4821550747diff -Naur ncurses-5.7.orig/panel/p_move.c ncurses-5.7/panel/p_move.c
    4821650748--- ncurses-5.7.orig/panel/p_move.c     2005-02-19 08:46:49.000000000 -0800
    48217 +++ ncurses-5.7/panel/p_move.c  2009-07-19 15:03:51.000000000 -0700
     50749+++ ncurses-5.7/panel/p_move.c  2009-09-12 08:51:28.000000000 -0700
    4821850750@@ -1,5 +1,5 @@
    4821950751 /****************************************************************************
     
    4826750799diff -Naur ncurses-5.7.orig/panel/p_new.c ncurses-5.7/panel/p_new.c
    4826850800--- ncurses-5.7.orig/panel/p_new.c      2008-08-04 11:25:48.000000000 -0700
    48269 +++ ncurses-5.7/panel/p_new.c   2009-07-19 15:03:51.000000000 -0700
     50801+++ ncurses-5.7/panel/p_new.c   2009-09-12 08:51:28.000000000 -0700
    4827050802@@ -1,5 +1,5 @@
    4827150803 /****************************************************************************
     
    4833550867diff -Naur ncurses-5.7.orig/panel/p_replace.c ncurses-5.7/panel/p_replace.c
    4833650868--- ncurses-5.7.orig/panel/p_replace.c  2005-02-19 08:41:31.000000000 -0800
    48337 +++ ncurses-5.7/panel/p_replace.c       2009-07-19 15:03:51.000000000 -0700
     50869+++ ncurses-5.7/panel/p_replace.c       2009-09-12 08:51:28.000000000 -0700
    4833850870@@ -36,23 +36,25 @@
    4833950871  */
     
    4837550907diff -Naur ncurses-5.7.orig/panel/p_show.c ncurses-5.7/panel/p_show.c
    4837650908--- ncurses-5.7.orig/panel/p_show.c     2005-02-19 08:42:02.000000000 -0800
    48377 +++ ncurses-5.7/panel/p_show.c  2009-07-19 15:03:51.000000000 -0700
     50909+++ ncurses-5.7/panel/p_show.c  2009-09-12 08:51:28.000000000 -0700
    4837850910@@ -36,34 +36,37 @@
    4837950911  */
     
    4843250964diff -Naur ncurses-5.7.orig/panel/p_update.c ncurses-5.7/panel/p_update.c
    4843350965--- ncurses-5.7.orig/panel/p_update.c   2005-02-19 08:49:47.000000000 -0800
    48434 +++ ncurses-5.7/panel/p_update.c        2009-07-19 15:03:51.000000000 -0700
     50966+++ ncurses-5.7/panel/p_update.c        2009-09-12 08:51:28.000000000 -0700
    4843550967@@ -1,5 +1,5 @@
    4843650968 /****************************************************************************
     
    4850651038diff -Naur ncurses-5.7.orig/progs/Makefile.in ncurses-5.7/progs/Makefile.in
    4850751039--- ncurses-5.7.orig/progs/Makefile.in  2008-09-07 06:58:55.000000000 -0700
    48508 +++ ncurses-5.7/progs/Makefile.in       2009-07-19 15:03:48.000000000 -0700
     51040+++ ncurses-5.7/progs/Makefile.in       2009-09-12 08:51:25.000000000 -0700
    4850951041@@ -1,6 +1,6 @@
    4851051042-# $Id: Makefile.in,v 1.79 2008/09/07 13:58:55 tom Exp $
     
    4861751149diff -Naur ncurses-5.7.orig/progs/modules ncurses-5.7/progs/modules
    4861851150--- ncurses-5.7.orig/progs/modules      2006-12-23 16:53:21.000000000 -0800
    48619 +++ ncurses-5.7/progs/modules   2009-07-19 15:03:43.000000000 -0700
     51151+++ ncurses-5.7/progs/modules   2009-09-12 08:51:21.000000000 -0700
    4862051152@@ -1,7 +1,7 @@
    4862151153-# $Id: modules,v 1.13 2006/12/24 00:53:21 tom Exp $
     
    4864051172diff -Naur ncurses-5.7.orig/progs/tabs.c ncurses-5.7/progs/tabs.c
    4864151173--- ncurses-5.7.orig/progs/tabs.c       1969-12-31 16:00:00.000000000 -0800
    48642 +++ ncurses-5.7/progs/tabs.c    2009-07-19 15:01:57.000000000 -0700
     51174+++ ncurses-5.7/progs/tabs.c    2009-09-12 08:50:52.000000000 -0700
    4864351175@@ -0,0 +1,506 @@
    4864451176+/****************************************************************************
     
    4915051682diff -Naur ncurses-5.7.orig/progs/tic.c ncurses-5.7/progs/tic.c
    4915151683--- ncurses-5.7.orig/progs/tic.c        2008-09-13 09:59:24.000000000 -0700
    49152 +++ ncurses-5.7/progs/tic.c     2009-07-19 15:03:43.000000000 -0700
     51684+++ ncurses-5.7/progs/tic.c     2009-09-12 08:51:21.000000000 -0700
    4915351685@@ -1,5 +1,5 @@
    4915451686 /****************************************************************************
     
    4918351715diff -Naur ncurses-5.7.orig/progs/tput.c ncurses-5.7/progs/tput.c
    4918451716--- ncurses-5.7.orig/progs/tput.c       2008-07-13 04:05:12.000000000 -0700
    49185 +++ ncurses-5.7/progs/tput.c    2009-07-19 15:03:43.000000000 -0700
     51717+++ ncurses-5.7/progs/tput.c    2009-09-12 08:51:21.000000000 -0700
    4918651718@@ -1,5 +1,5 @@
    4918751719 /****************************************************************************
     
    4921351745diff -Naur ncurses-5.7.orig/progs/transform.c ncurses-5.7/progs/transform.c
    4921451746--- ncurses-5.7.orig/progs/transform.c  1969-12-31 16:00:00.000000000 -0800
    49215 +++ ncurses-5.7/progs/transform.c       2009-07-19 15:03:43.000000000 -0700
     51747+++ ncurses-5.7/progs/transform.c       2009-09-12 08:51:21.000000000 -0700
    4921651748@@ -0,0 +1,79 @@
    4921751749+/****************************************************************************
     
    4929651828diff -Naur ncurses-5.7.orig/progs/tset.c ncurses-5.7/progs/tset.c
    4929751829--- ncurses-5.7.orig/progs/tset.c       2008-10-11 12:26:19.000000000 -0700
    49298 +++ ncurses-5.7/progs/tset.c    2009-07-19 15:03:43.000000000 -0700
     51830+++ ncurses-5.7/progs/tset.c    2009-09-12 08:51:21.000000000 -0700
    4929951831@@ -1,5 +1,5 @@
    4930051832 /****************************************************************************
     
    4932451856diff -Naur ncurses-5.7.orig/README.MinGW ncurses-5.7/README.MinGW
    4932551857--- ncurses-5.7.orig/README.MinGW       1969-12-31 16:00:00.000000000 -0800
    49326 +++ ncurses-5.7/README.MinGW    2009-07-19 15:04:11.000000000 -0700
     51858+++ ncurses-5.7/README.MinGW    2009-09-12 08:51:49.000000000 -0700
    4932751859@@ -0,0 +1,79 @@
    4932851860+-------------------------------------------------------------------------------
     
    4940751939diff -Naur ncurses-5.7.orig/test/aclocal.m4 ncurses-5.7/test/aclocal.m4
    4940851940--- ncurses-5.7.orig/test/aclocal.m4    2008-02-09 10:22:17.000000000 -0800
    49409 +++ ncurses-5.7/test/aclocal.m4 2009-07-19 15:04:17.000000000 -0700
     51941+++ ncurses-5.7/test/aclocal.m4 2009-09-12 08:51:54.000000000 -0700
    4941051942@@ -1,5 +1,5 @@
    4941151943 dnl***************************************************************************
     
    5031152843+#endif
    5031252844+])
     52845diff -Naur ncurses-5.7.orig/test/blue.c ncurses-5.7/test/blue.c
     52846--- ncurses-5.7.orig/test/blue.c        2008-08-03 11:20:27.000000000 -0700
     52847+++ ncurses-5.7/test/blue.c     2009-09-12 08:52:07.000000000 -0700
     52848@@ -1,5 +1,5 @@
     52849 /****************************************************************************
     52850- * Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.              *
     52851+ * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.              *
     52852  *                                                                          *
     52853  * Permission is hereby granted, free of charge, to any person obtaining a  *
     52854  * copy of this software and associated documentation files (the            *
     52855@@ -40,7 +40,7 @@
     52856  * results, use the ncurses(3) library.  On non-Intel machines, SVr4 curses is
     52857  * just as good.
     52858  *
     52859- * $Id: blue.c,v 1.30 2008/08/03 18:20:27 tom Exp $
     52860+ * $Id: blue.c,v 1.31 2009/08/29 19:02:25 tom Exp $
     52861  */
     52862 
     52863 #include <test.priv.h>
     52864@@ -353,9 +353,9 @@
     52865     }
     52866 
     52867     move(PROMPTROW, 0);
     52868-    standout();
     52869+    (void) standout();
     52870     (void) printw("Finished deal %d - type any character to continue...", deal_number);
     52871-    standend();
     52872+    (void) standend();
     52873     (void) getch();
     52874 }
     52875 
     52876@@ -386,7 +386,7 @@
     52877 {
     52878     clear();
     52879     (void) printw("You finished the game in %d deals. This is ", deal);
     52880-    standout();
     52881+    (void) standout();
     52882     if (deal < 2)
     52883        (void) addstr("excellent");
     52884     else if (deal < 4)
     52885@@ -395,7 +395,7 @@
     52886        (void) addstr("average");
     52887     else
     52888        (void) addstr("poor");
     52889-    standend();
     52890+    (void) standend();
     52891     (void) addstr(".         ");
     52892     refresh();
     52893 }
     52894diff -Naur ncurses-5.7.orig/test/bs.c ncurses-5.7/test/bs.c
     52895--- ncurses-5.7.orig/test/bs.c  2008-08-03 11:30:28.000000000 -0700
     52896+++ ncurses-5.7/test/bs.c       2009-09-12 08:52:07.000000000 -0700
     52897@@ -1,5 +1,5 @@
     52898 /****************************************************************************
     52899- * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              *
     52900+ * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.              *
     52901  *                                                                          *
     52902  * Permission is hereby granted, free of charge, to any person obtaining a  *
     52903  * copy of this software and associated documentation files (the            *
     52904@@ -34,7 +34,7 @@
     52905  * v2.0 featuring strict ANSI/POSIX conformance, November 1993.
     52906  * v2.1 with ncurses mouse support, September 1995
     52907  *
     52908- * $Id: bs.c,v 1.47 2008/08/03 18:30:28 tom Exp $
     52909+ * $Id: bs.c,v 1.48 2009/08/29 19:02:25 tom Exp $
     52910  */
     52911 
     52912 #include <test.priv.h>
     52913@@ -374,7 +374,7 @@
     52914        for (j = 0; j < BWIDTH; j++)
     52915            (void) addstr(" . ");
     52916 #ifdef A_COLOR
     52917-       attrset(0);
     52918+       (void) attrset(0);
     52919 #endif /* A_COLOR */
     52920        (void) addch(' ');
     52921        (void) addch((chtype) (i + 'A'));
     52922@@ -392,7 +392,7 @@
     52923        for (j = 0; j < BWIDTH; j++)
     52924            (void) addstr(" . ");
     52925 #ifdef A_COLOR
     52926-       attrset(0);
     52927+       (void) attrset(0);
     52928 #endif /* A_COLOR */
     52929        (void) addch(' ');
     52930        (void) addch((chtype) (i + 'A'));
     52931@@ -773,7 +773,7 @@
     52932 #endif /* A_COLOR */
     52933                                    (void) addch(MARK_MISS);
     52934 #ifdef A_COLOR
     52935-                                   attrset(0);
     52936+                                   (void) attrset(0);
     52937 #endif /* A_COLOR */
     52938                                } else {
     52939                                    pgoto(y1, x1);
     52940@@ -799,7 +799,7 @@
     52941 #endif /* A_COLOR */
     52942                        (void) addch(SHOWHIT);
     52943 #ifdef A_COLOR
     52944-                       attrset(0);
     52945+                       (void) attrset(0);
     52946 #endif /* A_COLOR */
     52947                    }
     52948                }
     52949@@ -841,7 +841,7 @@
     52950 #endif /* A_COLOR */
     52951     (void) addch((chtype) hits[PLAYER][curx][cury]);
     52952 #ifdef A_COLOR
     52953-    attrset(0);
     52954+    (void) attrset(0);
     52955 #endif /* A_COLOR */
     52956 
     52957     prompt(1, "You %s.", hit ? "scored a hit" : "missed");
     52958@@ -971,7 +971,7 @@
     52959 #endif /* A_COLOR */
     52960     (void) addch((chtype) (hit ? SHOWHIT : SHOWSPLASH));
     52961 #ifdef A_COLOR
     52962-    attrset(0);
     52963+    (void) attrset(0);
     52964 #endif /* A_COLOR */
     52965 
     52966     return hit ? (sunk ? S_SUNK : S_HIT) : S_MISS;
    5031352967diff -Naur ncurses-5.7.orig/test/chgat.c ncurses-5.7/test/chgat.c
    5031452968--- ncurses-5.7.orig/test/chgat.c       2008-02-09 15:19:13.000000000 -0800
    50315 +++ ncurses-5.7/test/chgat.c    2009-07-19 15:04:17.000000000 -0700
     52969+++ ncurses-5.7/test/chgat.c    2009-09-12 08:51:54.000000000 -0700
    5031652970@@ -1,5 +1,5 @@
    5031752971 /****************************************************************************
     
    5035053004diff -Naur ncurses-5.7.orig/test/clip_printw.c ncurses-5.7/test/clip_printw.c
    5035153005--- ncurses-5.7.orig/test/clip_printw.c 1969-12-31 16:00:00.000000000 -0800
    50352 +++ ncurses-5.7/test/clip_printw.c      2009-07-19 15:04:17.000000000 -0700
    50353 @@ -0,0 +1,377 @@
     53006+++ ncurses-5.7/test/clip_printw.c      2009-09-12 08:52:07.000000000 -0700
     53007@@ -0,0 +1,378 @@
    5035453008+/****************************************************************************
    5035553009+ * Copyright (c) 2008,2009 Free Software Foundation, Inc.                   *
     
    5038053034+ ****************************************************************************/
    5038153035+/*
    50382 + * $Id: clip_printw.c,v 1.3 2009/07/17 09:28:52 tom Exp $
     53036+ * $Id: clip_printw.c,v 1.4 2009/08/29 19:00:44 tom Exp $
    5038353037+ *
    5038453038+ * demonstrate how to use printw without wrapping.
     
    5068153335+       switch (st.ch) {
    5068253336+       case '.':               /* change from current position */
    50683 +           wattrset(win, st.attr | COLOR_PAIR(st.pair));
     53337+           (void) wattrset(win, st.attr | COLOR_PAIR(st.pair));
    5068453338+           if (st.count > 0) {
    5068553339+               need = st.count + 1;
     
    5072153375+    ExitProgram(EXIT_SUCCESS);
    5072253376+}
     53377+
    5072353378+#else
    5072453379+int
     
    5073153386diff -Naur ncurses-5.7.orig/test/configure ncurses-5.7/test/configure
    5073253387--- ncurses-5.7.orig/test/configure     2008-09-06 15:11:48.000000000 -0700
    50733 +++ ncurses-5.7/test/configure  2009-07-19 15:04:17.000000000 -0700
     53388+++ ncurses-5.7/test/configure  2009-09-12 08:51:54.000000000 -0700
    5073453389@@ -194,6 +194,7 @@
    5073553390   --with-Xaw3d            link with Xaw 3d library
     
    5924861903diff -Naur ncurses-5.7.orig/test/configure.in ncurses-5.7/test/configure.in
    5924961904--- ncurses-5.7.orig/test/configure.in  2008-09-06 15:10:23.000000000 -0700
    59250 +++ ncurses-5.7/test/configure.in       2009-07-19 15:04:17.000000000 -0700
     61905+++ ncurses-5.7/test/configure.in       2009-09-12 08:51:54.000000000 -0700
    5925161906@@ -1,5 +1,5 @@
    5925261907 dnl***************************************************************************
     
    5932761982diff -Naur ncurses-5.7.orig/test/demo_forms.c ncurses-5.7/test/demo_forms.c
    5932861983--- ncurses-5.7.orig/test/demo_forms.c  2008-10-18 13:38:20.000000000 -0700
    59329 +++ ncurses-5.7/test/demo_forms.c       2009-07-19 15:04:04.000000000 -0700
     61984+++ ncurses-5.7/test/demo_forms.c       2009-09-12 08:52:07.000000000 -0700
    5933061985@@ -1,5 +1,5 @@
    5933161986 /****************************************************************************
     
    5934061995 /*
    5934161996- * $Id: demo_forms.c,v 1.30 2008/10/18 20:38:20 tom Exp $
    59342 + * $Id: demo_forms.c,v 1.32 2009/05/30 16:52:42 tom Exp $
     61997+ * $Id: demo_forms.c,v 1.33 2009/08/29 18:47:26 tom Exp $
    5934361998  *
    5934461999  * Demonstrate a variety of functions from the form library.
     
    5936762022            set_field_buffer(f, 0, t_value);
    5936862023     }
     62024@@ -300,13 +307,13 @@
     62025        }
     62026 
     62027        waddch(win, ' ');
     62028-       wattrset(win, field_fore(field));
     62029+       (void) wattrset(win, field_fore(field));
     62030        waddstr(win, "fore");
     62031        wattroff(win, field_fore(field));
     62032 
     62033        waddch(win, '/');
     62034 
     62035-       wattrset(win, field_back(field));
     62036+       (void) wattrset(win, field_back(field));
     62037        waddstr(win, "back");
     62038        wattroff(win, field_back(field));
     62039 
     62040@@ -317,7 +324,7 @@
     62041        for (nbuf = 0; nbuf <= 2; ++nbuf) {
     62042            if ((buffer = field_buffer(field, nbuf)) != 0) {
     62043                wprintw(win, "buffer %d:", nbuf);
     62044-               wattrset(win, A_REVERSE);
     62045+               (void) wattrset(win, A_REVERSE);
     62046                waddstr(win, buffer);
     62047                wattroff(win, A_REVERSE);
     62048                waddstr(win, "\n");
    5936962049@@ -444,8 +451,11 @@
    5937062050 
     
    5938062060     nl();
    5938162061 
     62062diff -Naur ncurses-5.7.orig/test/demo_termcap.c ncurses-5.7/test/demo_termcap.c
     62063--- ncurses-5.7.orig/test/demo_termcap.c        2008-02-09 10:08:36.000000000 -0800
     62064+++ ncurses-5.7/test/demo_termcap.c     2009-09-12 08:51:59.000000000 -0700
     62065@@ -1,5 +1,5 @@
     62066 /****************************************************************************
     62067- * Copyright (c) 2005-2007,2008 Free Software Foundation, Inc.              *
     62068+ * Copyright (c) 2005-2008,2009 Free Software Foundation, Inc.              *
     62069  *                                                                          *
     62070  * Permission is hereby granted, free of charge, to any person obtaining a  *
     62071  * copy of this software and associated documentation files (the            *
     62072@@ -29,7 +29,7 @@
     62073 /*
     62074  * Author: Thomas E. Dickey
     62075  *
     62076- * $Id: demo_termcap.c,v 1.7 2008/02/09 18:08:36 tom Exp $
     62077+ * $Id: demo_termcap.c,v 1.11 2009/08/02 00:02:53 tom Exp $
     62078  *
     62079  * A simple demo of the termcap interface.
     62080  */
     62081@@ -38,10 +38,25 @@
     62082 
     62083 #if HAVE_TGETENT
     62084 
     62085+#if defined(HAVE_CURSES_DATA_BOOLNAMES) || defined(DECL_CURSES_DATA_BOOLNAMES)
     62086+#define USE_CODE_LISTS 1
     62087+#else
     62088+#define USE_CODE_LISTS 0
     62089+#endif
     62090+
     62091+#define FCOLS 8
     62092+#define FNAME(type) "%s %-*s = ", #type, FCOLS
     62093+
     62094+#if USE_CODE_LISTS
     62095+static bool b_opt = FALSE;
     62096+static bool n_opt = FALSE;
     62097+static bool s_opt = FALSE;
     62098+#endif
     62099+
     62100 #define isCapName(c) (isgraph(c) && strchr("^#=:\\", c) == 0)
     62101 
     62102 static void
     62103-dumpit(char *cap)
     62104+dumpit(NCURSES_CONST char *cap)
     62105 {
     62106     /*
     62107      * One of the limitations of the termcap interface is that the library
     62108@@ -59,7 +74,7 @@
     62109         * Note that the strings returned are mostly terminfo format, since
     62110         * ncurses does not convert except for a handful of special cases.
     62111         */
     62112-       printf("str %s = ", cap);
     62113+       printf(FNAME(str), cap);
     62114        while (*str != 0) {
     62115            int ch = UChar(*str++);
     62116            switch (ch) {
     62117@@ -108,15 +123,17 @@
     62118        }
     62119        printf("\n");
     62120     } else if ((num = tgetnum(cap)) >= 0) {
     62121-       printf("num %s = %d\n", cap, num);
     62122+       printf(FNAME(num), cap);
     62123+       printf(" %d\n", num);
     62124     } else if ((num = tgetflag(cap)) > 0) {
     62125-       printf("flg %s\n", cap);
     62126+       printf(FNAME(flg), cap);
     62127+       printf("%s\n", "true");
     62128     }
     62129     fflush(stdout);
     62130 }
     62131 
     62132 static void
     62133-demo_termcap(char *name)
     62134+brute_force(const char *name)
     62135 {
     62136     char buffer[1024];
     62137 
     62138@@ -140,23 +157,142 @@
     62139     }
     62140 }
     62141 
     62142+#if USE_CODE_LISTS
     62143+static void
     62144+demo_terminfo(NCURSES_CONST char *name)
     62145+{
     62146+    unsigned n;
     62147+    NCURSES_CONST char *cap;
     62148+
     62149+    printf("Terminal type \"%s\"\n", name);
     62150+    setupterm(name, 1, (int *) 0);
     62151+
     62152+    if (b_opt) {
     62153+       for (n = 0;; ++n) {
     62154+           cap = boolcodes[n];
     62155+           if (cap == 0)
     62156+               break;
     62157+           dumpit(cap);
     62158+       }
     62159+    }
     62160+
     62161+    if (n_opt) {
     62162+       for (n = 0;; ++n) {
     62163+           cap = numcodes[n];
     62164+           if (cap == 0)
     62165+               break;
     62166+           dumpit(cap);
     62167+       }
     62168+    }
     62169+
     62170+    if (s_opt) {
     62171+       for (n = 0;; ++n) {
     62172+           cap = strcodes[n];
     62173+           if (cap == 0)
     62174+               break;
     62175+           dumpit(cap);
     62176+       }
     62177+    }
     62178+}
     62179+
     62180+static void
     62181+usage(void)
     62182+{
     62183+    static const char *msg[] =
     62184+    {
     62185+       "Usage: demo_terminfo [options] [terminal]",
     62186+       "",
     62187+       "If no options are given, print all (boolean, numeric, string)",
     62188+       "capabilities for the given terminal, using short names.",
     62189+       "",
     62190+       "Options:",
     62191+       " -a       try all names, print capabilities found",
     62192+       " -b       print boolean-capabilities",
     62193+       " -n       print numeric-capabilities",
     62194+       " -r COUNT repeat for given count",
     62195+       " -s       print string-capabilities",
     62196+    };
     62197+    unsigned n;
     62198+    for (n = 0; n < SIZEOF(msg); ++n) {
     62199+       fprintf(stderr, "%s\n", msg[n]);
     62200+    }
     62201+    ExitProgram(EXIT_FAILURE);
     62202+}
     62203+#endif
     62204+
     62205 int
     62206 main(int argc, char *argv[])
     62207 {
     62208     int n;
     62209     char *name;
     62210+    bool a_opt = FALSE;
     62211 
     62212-    if (argc > 1) {
     62213-       for (n = 1; n < argc; ++n) {
     62214-           demo_termcap(argv[n]);
     62215-       }
     62216-    } else if ((name = getenv("TERM")) != 0) {
     62217-       demo_termcap(name);
     62218-    } else {
     62219-       static char dumb[] = "dumb";
     62220-       demo_termcap(dumb);
     62221+#if USE_CODE_LISTS
     62222+    int repeat;
     62223+    int r_opt = 1;
     62224+
     62225+    while ((n = getopt(argc, argv, "abnr:s")) != -1) {
     62226+       switch (n) {
     62227+       case 'a':
     62228+           a_opt = TRUE;
     62229+           break;
     62230+       case 'b':
     62231+           b_opt = TRUE;
     62232+           break;
     62233+       case 'n':
     62234+           n_opt = TRUE;
     62235+           break;
     62236+       case 'r':
     62237+           if ((r_opt = atoi(optarg)) <= 0)
     62238+               usage();
     62239+           break;
     62240+       case 's':
     62241+           s_opt = TRUE;
     62242+           break;
     62243+       default:
     62244+           usage();
     62245+           break;
     62246+       }
     62247     }
     62248 
     62249+    if (!(b_opt || n_opt || s_opt)) {
     62250+       b_opt = TRUE;
     62251+       n_opt = TRUE;
     62252+       s_opt = TRUE;
     62253+    }
     62254+#else
     62255+    a_opt = TRUE;
     62256+#endif
     62257+
     62258+    if (a_opt) {
     62259+       if (optind < argc) {
     62260+           for (n = optind; n < argc; ++n) {
     62261+               brute_force(argv[n]);
     62262+           }
     62263+       } else if ((name = getenv("TERM")) != 0) {
     62264+           brute_force(name);
     62265+       } else {
     62266+           static char dumb[] = "dumb";
     62267+           brute_force(dumb);
     62268+       }
     62269+    }
     62270+#if USE_CODE_LISTS
     62271+    else {
     62272+       for (repeat = 0; repeat < r_opt; ++repeat) {
     62273+           if (optind < argc) {
     62274+               for (n = optind; n < argc; ++n) {
     62275+                   demo_terminfo(argv[n]);
     62276+               }
     62277+           } else if ((name = getenv("TERM")) != 0) {
     62278+               demo_terminfo(name);
     62279+           } else {
     62280+               static char dumb[] = "dumb";
     62281+               demo_terminfo(dumb);
     62282+           }
     62283+       }
     62284+    }
     62285+#endif
     62286+
     62287     ExitProgram(EXIT_SUCCESS);
     62288 }
     62289 
    5938262290diff -Naur ncurses-5.7.orig/test/demo_terminfo.c ncurses-5.7/test/demo_terminfo.c
    5938362291--- ncurses-5.7.orig/test/demo_terminfo.c       1969-12-31 16:00:00.000000000 -0800
    59384 +++ ncurses-5.7/test/demo_terminfo.c    2009-07-19 15:04:17.000000000 -0700
     62292+++ ncurses-5.7/test/demo_terminfo.c    2009-09-12 08:51:54.000000000 -0700
    5938562293@@ -0,0 +1,304 @@
    5938662294+/****************************************************************************
     
    5969062598diff -Naur ncurses-5.7.orig/test/ditto.c ncurses-5.7/test/ditto.c
    5969162599--- ncurses-5.7.orig/test/ditto.c       2008-08-04 06:21:41.000000000 -0700
    59692 +++ ncurses-5.7/test/ditto.c    2009-07-19 15:04:17.000000000 -0700
     62600+++ ncurses-5.7/test/ditto.c    2009-09-12 08:51:54.000000000 -0700
    5969362601@@ -29,7 +29,7 @@
    5969462602 /*
     
    5978562693diff -Naur ncurses-5.7.orig/test/edit_field.c ncurses-5.7/test/edit_field.c
    5978662694--- ncurses-5.7.orig/test/edit_field.c  2008-10-18 13:40:20.000000000 -0700
    59787 +++ ncurses-5.7/test/edit_field.c       2009-07-19 15:02:04.000000000 -0700
     62695+++ ncurses-5.7/test/edit_field.c       2009-09-12 08:50:59.000000000 -0700
    5978862696@@ -26,7 +26,7 @@
    5978962697  * authorization.                                                           *
     
    5980862716diff -Naur ncurses-5.7.orig/test/edit_field.h ncurses-5.7/test/edit_field.h
    5980962717--- ncurses-5.7.orig/test/edit_field.h  2006-06-03 09:38:57.000000000 -0700
    59810 +++ ncurses-5.7/test/edit_field.h       2009-07-19 15:02:04.000000000 -0700
     62718+++ ncurses-5.7/test/edit_field.h       2009-09-12 08:50:59.000000000 -0700
    5981162719@@ -1,5 +1,5 @@
    5981262720 /****************************************************************************
     
    5983862746diff -Naur ncurses-5.7.orig/test/filter.c ncurses-5.7/test/filter.c
    5983962747--- ncurses-5.7.orig/test/filter.c      2006-12-09 08:53:47.000000000 -0800
    59840 +++ ncurses-5.7/test/filter.c   2009-07-19 15:02:00.000000000 -0700
     62748+++ ncurses-5.7/test/filter.c   2009-09-12 08:50:55.000000000 -0700
    5984162749@@ -1,5 +1,5 @@
    5984262750 /****************************************************************************
     
    5990862816     keypad(stdscr, TRUE);
    5990962817 
     62818diff -Naur ncurses-5.7.orig/test/firework.c ncurses-5.7/test/firework.c
     62819--- ncurses-5.7.orig/test/firework.c    2006-05-20 08:36:08.000000000 -0700
     62820+++ ncurses-5.7/test/firework.c 2009-09-12 08:52:07.000000000 -0700
     62821@@ -1,5 +1,5 @@
     62822 /****************************************************************************
     62823- * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
     62824+ * Copyright (c) 1998-2006,2009 Free Software Foundation, Inc.              *
     62825  *                                                                          *
     62826  * Permission is hereby granted, free of charge, to any person obtaining a  *
     62827  * copy of this software and associated documentation files (the            *
     62828@@ -26,7 +26,7 @@
     62829  * authorization.                                                           *
     62830  ****************************************************************************/
     62831 /*
     62832- * $Id: firework.c,v 1.24 2006/05/20 15:36:08 tom Exp $
     62833+ * $Id: firework.c,v 1.25 2009/08/29 19:02:25 tom Exp $
     62834  */
     62835 #include <test.priv.h>
     62836 
     62837@@ -94,14 +94,14 @@
     62838     showit();
     62839 
     62840     init_pair(1, get_colour(&bold), my_bg);
     62841-    attrset(COLOR_PAIR(1) | bold);
     62842+    (void) attrset(COLOR_PAIR(1) | bold);
     62843     mvprintw(row - 1, col - 1, " - ");
     62844     mvprintw(row + 0, col - 1, "-+-");
     62845     mvprintw(row + 1, col - 1, " - ");
     62846     showit();
     62847 
     62848     init_pair(1, get_colour(&bold), my_bg);
     62849-    attrset(COLOR_PAIR(1) | bold);
     62850+    (void) attrset(COLOR_PAIR(1) | bold);
     62851     mvprintw(row - 2, col - 2, " --- ");
     62852     mvprintw(row - 1, col - 2, "-+++-");
     62853     mvprintw(row + 0, col - 2, "-+#+-");
     62854@@ -110,7 +110,7 @@
     62855     showit();
     62856 
     62857     init_pair(1, get_colour(&bold), my_bg);
     62858-    attrset(COLOR_PAIR(1) | bold);
     62859+    (void) attrset(COLOR_PAIR(1) | bold);
     62860     mvprintw(row - 2, col - 2, " +++ ");
     62861     mvprintw(row - 1, col - 2, "++#++");
     62862     mvprintw(row + 0, col - 2, "+# #+");
     62863@@ -119,7 +119,7 @@
     62864     showit();
     62865 
     62866     init_pair(1, get_colour(&bold), my_bg);
     62867-    attrset(COLOR_PAIR(1) | bold);
     62868+    (void) attrset(COLOR_PAIR(1) | bold);
     62869     mvprintw(row - 2, col - 2, "  #  ");
     62870     mvprintw(row - 1, col - 2, "## ##");
     62871     mvprintw(row + 0, col - 2, "#   #");
     62872@@ -128,7 +128,7 @@
     62873     showit();
     62874 
     62875     init_pair(1, get_colour(&bold), my_bg);
     62876-    attrset(COLOR_PAIR(1) | bold);
     62877+    (void) attrset(COLOR_PAIR(1) | bold);
     62878     mvprintw(row - 2, col - 2, " # # ");
     62879     mvprintw(row - 1, col - 2, "#   #");
     62880     mvprintw(row + 0, col - 2, "     ");
     62881@@ -173,7 +173,7 @@
     62882            direction = (start > end) ? -1 : 1;
     62883            diff = abs(start - end);
     62884        } while (diff < 2 || diff >= LINES - 2);
     62885-       attrset(A_NORMAL);
     62886+       (void) attrset(A_NORMAL);
     62887        for (row = 0; row < diff; row++) {
     62888            mvprintw(LINES - row, start + (row * direction),
     62889                     (direction < 0) ? "\\" : "/");
    5991062890diff -Naur ncurses-5.7.orig/test/firstlast.c ncurses-5.7/test/firstlast.c
    5991162891--- ncurses-5.7.orig/test/firstlast.c   2006-04-01 11:03:18.000000000 -0800
    59912 +++ ncurses-5.7/test/firstlast.c        2009-07-19 15:04:17.000000000 -0700
     62892+++ ncurses-5.7/test/firstlast.c        2009-09-12 08:51:54.000000000 -0700
    5991362893@@ -1,5 +1,5 @@
    5991462894 /****************************************************************************
     
    5994862928     }
    5994962929 }
     62930diff -Naur ncurses-5.7.orig/test/gdc.c ncurses-5.7/test/gdc.c
     62931--- ncurses-5.7.orig/test/gdc.c 2008-08-03 16:58:42.000000000 -0700
     62932+++ ncurses-5.7/test/gdc.c      2009-09-12 08:52:07.000000000 -0700
     62933@@ -1,5 +1,5 @@
     62934 /****************************************************************************
     62935- * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              *
     62936+ * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.              *
     62937  *                                                                          *
     62938  * Permission is hereby granted, free of charge, to any person obtaining a  *
     62939  * copy of this software and associated documentation files (the            *
     62940@@ -33,7 +33,7 @@
     62941  * modified 10-18-89 for curses (jrl)
     62942  * 10-18-89 added signal handling
     62943  *
     62944- * $Id: gdc.c,v 1.31 2008/08/03 23:58:42 tom Exp $
     62945+ * $Id: gdc.c,v 1.32 2009/08/29 19:02:25 tom Exp $
     62946  */
     62947 
     62948 #include <test.priv.h>
     62949@@ -78,7 +78,7 @@
     62950     int n;
     62951 
     62952     if (hascolor)
     62953-       attrset(COLOR_PAIR(PAIR_FRAMES));
     62954+       (void) attrset(COLOR_PAIR(PAIR_FRAMES));
     62955 
     62956     mvaddch(YBASE - 1, XBASE - 1, ACS_ULCORNER);
     62957     hline(ACS_HLINE, XLENGTH);
     62958@@ -102,7 +102,7 @@
     62959     vline(ACS_VLINE, YDEPTH);
     62960 
     62961     if (hascolor)
     62962-       attrset(COLOR_PAIR(PAIR_OTHERS));
     62963+       (void) attrset(COLOR_PAIR(PAIR_OTHERS));
     62964 }
     62965 
     62966 static void
     62967@@ -220,7 +220,7 @@
     62968        init_pair(PAIR_DIGITS, COLOR_BLACK, COLOR_RED);
     62969        init_pair(PAIR_OTHERS, COLOR_RED, bg);
     62970        init_pair(PAIR_FRAMES, COLOR_WHITE, bg);
     62971-       attrset(COLOR_PAIR(PAIR_OTHERS));
     62972+       (void) attrset(COLOR_PAIR(PAIR_OTHERS));
     62973     }
     62974 
     62975   restart:
     62976@@ -335,7 +335,7 @@
     62977            goto restart;
     62978        case ERR:
     62979            if (sigtermed) {
     62980-               standend();
     62981+               (void) standend();
     62982                endwin();
     62983                fprintf(stderr, "gdc terminated by signal %d\n", sigtermed);
     62984                ExitProgram(EXIT_FAILURE);
     62985@@ -345,7 +345,7 @@
     62986            continue;
     62987        }
     62988     } while (--count);
     62989-    standend();
     62990+    (void) standend();
     62991     endwin();
     62992     ExitProgram(EXIT_SUCCESS);
     62993 }
     62994diff -Naur ncurses-5.7.orig/test/hanoi.c ncurses-5.7/test/hanoi.c
     62995--- ncurses-5.7.orig/test/hanoi.c       2008-08-04 03:57:59.000000000 -0700
     62996+++ ncurses-5.7/test/hanoi.c    2009-09-12 08:52:07.000000000 -0700
     62997@@ -1,5 +1,5 @@
     62998 /****************************************************************************
     62999- * Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.              *
     63000+ * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.              *
     63001  *                                                                          *
     63002  * Permission is hereby granted, free of charge, to any person obtaining a  *
     63003  * copy of this software and associated documentation files (the            *
     63004@@ -41,7 +41,7 @@
     63005  *
     63006  *     Date: 05.Nov.90
     63007  *
     63008- * $Id: hanoi.c,v 1.27 2008/08/04 10:57:59 tom Exp $
     63009+ * $Id: hanoi.c,v 1.28 2009/08/29 19:02:25 tom Exp $
     63010  */
     63011 
     63012 #include <test.priv.h>
     63013@@ -229,7 +229,7 @@
     63014     mvaddstr(1, 24, "T O W E R S   O F   H A N O I");
     63015     mvaddstr(3, 34, "SJR 1990");
     63016     mvprintw(19, 5, "Moves : %d", NMoves);
     63017-    attrset(A_REVERSE);
     63018+    (void) attrset(A_REVERSE);
     63019     mvaddstr(BASELINE, 8,
     63020             "                                                               ");
     63021 
     63022@@ -241,7 +241,7 @@
     63023     mvaddch(BASELINE, LEFTPEG, '1');
     63024     mvaddch(BASELINE, MIDPEG, '2');
     63025     mvaddch(BASELINE, RIGHTPEG, '3');
     63026-    attrset(A_NORMAL);
     63027+    (void) attrset(A_NORMAL);
     63028 
     63029     /* Draw tiles */
     63030     for (peg = 0; peg < NPEGS; peg++) {
     63031@@ -251,16 +251,16 @@
     63032                memset(TileBuf, ' ', len);
     63033                TileBuf[len] = '\0';
     63034                if (has_colors())
     63035-                   attrset(COLOR_PAIR(LENTOIND(len)));
     63036+                   (void) attrset(COLOR_PAIR(LENTOIND(len)));
     63037                else
     63038-                   attrset(A_REVERSE);
     63039+                   (void) attrset(A_REVERSE);
     63040                mvaddstr(BASELINE - (SlotNo + 1),
     63041                         (int) (PegPos[peg] - len / 2),
     63042                         TileBuf);
     63043            }
     63044        }
     63045     }
     63046-    attrset(A_NORMAL);
     63047+    (void) attrset(A_NORMAL);
     63048     refresh();
     63049 }
     63050 
    5995063051diff -Naur ncurses-5.7.orig/test/insdelln.c ncurses-5.7/test/insdelln.c
    5995163052--- ncurses-5.7.orig/test/insdelln.c    1969-12-31 16:00:00.000000000 -0800
    59952 +++ ncurses-5.7/test/insdelln.c 2009-07-19 15:04:17.000000000 -0700
     63053+++ ncurses-5.7/test/insdelln.c 2009-09-12 08:52:07.000000000 -0700
    5995363054@@ -0,0 +1,387 @@
    5995463055+/****************************************************************************
     
    5998063081+ ****************************************************************************/
    5998163082+/*
    59982 + * $Id: insdelln.c,v 1.2 2009/07/15 23:21:04 tom Exp $
     63083+ * $Id: insdelln.c,v 1.3 2009/08/29 18:47:26 tom Exp $
    5998363084+ *
    5998463085+ * test-driver for deleteln, wdeleteln, insdelln, winsdelln, insertln, winsertln
     
    6025463355+
    6025563356+    do {
    60256 +       wattrset(win, st.attr | COLOR_PAIR(st.pair));
     63357+       (void) wattrset(win, st.attr | COLOR_PAIR(st.pair));
    6025763358+       switch (st.ch) {
    6025863359+       case 'i':
     
    6029563396+
    6029663397+    do {
    60297 +       attrset(st.attr | COLOR_PAIR(st.pair));
     63398+       (void) attrset(st.attr | COLOR_PAIR(st.pair));
    6029863399+       switch (st.ch) {
    6029963400+       case 'i':
     
    6034163442diff -Naur ncurses-5.7.orig/test/modules ncurses-5.7/test/modules
    6034263443--- ncurses-5.7.orig/test/modules       2007-08-18 10:57:08.000000000 -0700
    60343 +++ ncurses-5.7/test/modules    2009-07-19 15:04:15.000000000 -0700
     63444+++ ncurses-5.7/test/modules    2009-09-12 08:51:52.000000000 -0700
    6034463445@@ -1,6 +1,6 @@
    6034563446-# $Id: modules,v 1.36 2007/08/18 17:57:08 tom Exp $
     
    6037763478diff -Naur ncurses-5.7.orig/test/ncurses.c ncurses-5.7/test/ncurses.c
    6037863479--- ncurses-5.7.orig/test/ncurses.c     2008-09-27 07:34:58.000000000 -0700
    60379 +++ ncurses-5.7/test/ncurses.c  2009-07-19 15:04:17.000000000 -0700
     63480+++ ncurses-5.7/test/ncurses.c  2009-09-12 08:52:07.000000000 -0700
    6038063481@@ -1,5 +1,5 @@
    6038163482 /****************************************************************************
     
    6039063491 
    6039163492-$Id: ncurses.c,v 1.329 2008/09/27 14:34:58 tom Exp $
    60392 +$Id: ncurses.c,v 1.342 2009/07/18 11:48:42 tom Exp $
     63493+$Id: ncurses.c,v 1.345 2009/08/29 20:24:57 tom Exp $
    6039363494 
    6039463495 ***************************************************************************/
    6039563496 
     63497@@ -232,7 +232,7 @@
     63498 
     63499     echo();
     63500     getyx(win, y0, x0);
     63501-    wattrset(win, A_REVERSE);
     63502+    (void) wattrset(win, A_REVERSE);
     63503 
     63504     x = (int) strlen(buffer);
     63505     while (!done) {
    6039663506@@ -318,6 +318,7 @@
    6039763507     *target = 0;
     
    6041063520 static int
    6041163521 wGet_wchar(WINDOW *win, wint_t *result)
     63522@@ -363,7 +365,7 @@
     63523 
     63524     echo();
     63525     getyx(win, y0, x0);
     63526-    wattrset(win, A_REVERSE);
     63527+    (void) wattrset(win, A_REVERSE);
     63528 
     63529     x = (int) wcslen(buffer);
     63530     while (!done) {
    6041263531@@ -483,7 +485,11 @@
    6041363532        addstr("Shelling out...");
     
    6045463573     static const char *help[] =
    6045563574     {
     63575@@ -610,12 +629,12 @@
     63576        int flg = ((strstr(help[n], "toggle") != 0)
     63577                   && (flags[UChar(*help[n])] != FALSE));
     63578        if (flg)
     63579-           standout();
     63580+           (void) standout();
     63581        mvprintw(row, col, "%s", help[n]);
     63582        if (col == 0)
     63583            clrtoeol();
     63584        if (flg)
     63585-           standend();
     63586+           (void) standend();
     63587     }
     63588     wrefresh(stdscr);
     63589     wmove(win, y, x);
    6045663590@@ -657,7 +676,7 @@
    6045763591 {
     
    6057763711 #endif
    6057863712 
     63713@@ -1331,7 +1358,7 @@
     63714            addch(ch | attr);
     63715        }
     63716     } else {
     63717-       attrset(attr);
     63718+       (void) attrset(attr);
     63719        addstr(attr_test_string);
     63720        attroff(attr);
     63721     }
    6057963722@@ -1840,6 +1867,8 @@
    6058063723            width = 4;
     
    6065863801                init_pair(pair, fg, bg);
    6065963802                attron((attr_t) COLOR_PAIR(pair));
    60660 @@ -1960,6 +2002,8 @@
     63803@@ -1960,16 +2002,18 @@
    6066163804                    attron((attr_t) A_ALTCHARSET);
    6066263805                if (opt_bold)
     
    6066763810                if (opt_nums) {
    6066863811                    sprintf(numbered, "{%02X}", i);
    60669 @@ -1968,8 +2012,8 @@
     63812                    hello = numbered;
     63813                }
    6067063814                printw("%-*.*s", width, width, hello);
    60671                 attrset(A_NORMAL);
     63815-               attrset(A_NORMAL);
     63816+               (void) attrset(A_NORMAL);
    6067263817 
    6067363818-               if ((i % per_row) == 0 && (i % COLORS) == 0) {
     
    6079363938            done = TRUE;
    6079463939            continue;
     63940@@ -2324,9 +2395,9 @@
     63941                     (i == current ? '>' : ' '),
     63942                     (i < (int) SIZEOF(the_color_names)
     63943                      ? the_color_names[i] : numeric));
     63944-           attrset(COLOR_PAIR(i));
     63945+           (void) attrset(COLOR_PAIR(i));
     63946            addstr("        ");
     63947-           attrset(A_NORMAL);
     63948+           (void) attrset(A_NORMAL);
     63949 
     63950            color_content((short) i, &red, &green, &blue);
     63951            addstr("   R = ");
     63952@@ -2334,20 +2405,20 @@
     63953                attron(A_STANDOUT);
     63954            printw("%04d", red);
     63955            if (current == i && field == 0)
     63956-               attrset(A_NORMAL);
     63957+               (void) attrset(A_NORMAL);
     63958            addstr(", G = ");
     63959            if (current == i && field == 1)
     63960                attron(A_STANDOUT);
     63961            printw("%04d", green);
     63962            if (current == i && field == 1)
     63963-               attrset(A_NORMAL);
     63964+               (void) attrset(A_NORMAL);
     63965            addstr(", B = ");
     63966            if (current == i && field == 2)
     63967                attron(A_STANDOUT);
     63968            printw("%04d", blue);
     63969            if (current == i && field == 2)
     63970-               attrset(A_NORMAL);
     63971-           attrset(A_NORMAL);
     63972+               (void) attrset(A_NORMAL);
     63973+           (void) attrset(A_NORMAL);
     63974            printw(" ( %3d %3d %3d )",
     63975                   scaled_rgb(red),
     63976                   scaled_rgb(green),
    6079563977@@ -2802,6 +2873,7 @@
    6079663978 } attrs_to_cycle[] = {
     
    6080163983     { A_UNDERLINE,     "underline" },
    6080263984 };
     63985@@ -2818,7 +2890,7 @@
     63986            *at_code = 0;
     63987        break;
     63988     case 'V':
     63989-       if (*at_code == 1)
     63990+       if (*at_code == 0)
     63991            *at_code = SIZEOF(attrs_to_cycle) - 1;
     63992        else
     63993            *at_code -= 1;
    6080363994@@ -2902,7 +2974,7 @@
    6080463995        do {
     
    6095964150 
    6096064151 }
     64152@@ -4954,7 +5037,7 @@
     64153        wbkgd(subWin, COLOR_PAIR(2) | ' ');
     64154     }
     64155 #endif
     64156-    wattrset(subWin, A_BOLD);
     64157+    (void) wattrset(subWin, A_BOLD);
     64158     box(subWin, ACS_VLINE, ACS_HLINE);
     64159     mvwaddstr(subWin, 2, 1, "This is a subwindow");
     64160     wrefresh(win);
     64161@@ -5774,18 +5857,18 @@
     64162 
     64163     switch (flavor) {
     64164     case 0:
     64165-       wattrset(win, A_NORMAL);
     64166+       (void) wattrset(win, A_NORMAL);
     64167        break;
     64168     case 1:
     64169-       wattrset(win, A_BOLD);
     64170+       (void) wattrset(win, A_BOLD);
     64171        break;
     64172     case 2:
     64173        init_pair(cpair, COLOR_BLUE, COLOR_WHITE);
     64174-       wattrset(win, COLOR_PAIR(cpair) | A_NORMAL);
     64175+       (void) wattrset(win, COLOR_PAIR(cpair) | A_NORMAL);
     64176        break;
     64177     case 3:
     64178        init_pair(cpair, COLOR_WHITE, COLOR_BLUE);
     64179-       wattrset(win, COLOR_PAIR(cpair) | A_BOLD);
     64180+       (void) wattrset(win, COLOR_PAIR(cpair) | A_BOLD);
     64181        break;
     64182     }
     64183 }
    6096164184@@ -5804,7 +5887,7 @@
    6096264185        break;
     
    6096864191     case 3:
    6096964192        wbkgdset(win, ' ' | A_NORMAL);
     64193@@ -5890,7 +5973,7 @@
     64194            break;
     64195        }
     64196        overlap_helpitem(state, item, msg);
     64197-       wattrset(stdscr, A_NORMAL);
     64198+       (void) wattrset(stdscr, A_NORMAL);
     64199        wbkgdset(stdscr, ' ' | A_NORMAL);
     64200     }
     64201     move(LINES - 1, 0);
     64202@@ -5915,7 +5998,7 @@
     64203 {
     64204     overlap_test_1_attr(a, flavor, col);
     64205     fillwin(a, fill);
     64206-    wattrset(a, A_NORMAL);
     64207+    (void) wattrset(a, A_NORMAL);
     64208 }
     64209 
     64210 static void
     64211@@ -6497,7 +6580,7 @@
     64212            min_colors = -1;
     64213        }
     64214 #if NCURSES_VERSION_PATCH >= 20000708
     64215-       else if (assumed_colors)
     64216+       if (assumed_colors)
     64217            assume_default_colors(default_fg, default_bg);
     64218 #endif
     64219 #endif
     64220diff -Naur ncurses-5.7.orig/test/newdemo.c ncurses-5.7/test/newdemo.c
     64221--- ncurses-5.7.orig/test/newdemo.c     2008-08-03 13:19:38.000000000 -0700
     64222+++ ncurses-5.7/test/newdemo.c  2009-09-12 08:52:07.000000000 -0700
     64223@@ -2,7 +2,7 @@
     64224  *  newdemo.c  -       A demo program using PDCurses. The program illustrate
     64225  *                     the use of colours for text output.
     64226  *
     64227- * $Id: newdemo.c,v 1.31 2008/08/03 20:19:38 tom Exp $
     64228+ * $Id: newdemo.c,v 1.32 2009/08/29 18:47:26 tom Exp $
     64229  */
     64230 
     64231 #include <test.priv.h>
     64232@@ -84,7 +84,7 @@
     64233        if (pair > COLOR_PAIRS)
     64234            pair = COLOR_PAIRS;
     64235        init_pair(pair, foreground, background);
     64236-       wattrset(win, COLOR_PAIR(pair));
     64237+       (void) wattrset(win, COLOR_PAIR(pair));
     64238     }
     64239 }
     64240 
     64241@@ -96,7 +96,7 @@
     64242            pair = COLOR_PAIRS;
     64243        attrs |= COLOR_PAIR(pair);
     64244     }
     64245-    wattrset(win, attrs);
     64246+    (void) wattrset(win, attrs);
     64247     return attrs;
     64248 }
     64249 
    6097064250diff -Naur ncurses-5.7.orig/test/programs ncurses-5.7/test/programs
    6097164251--- ncurses-5.7.orig/test/programs      2008-08-16 14:47:39.000000000 -0700
    60972 +++ ncurses-5.7/test/programs   2009-07-19 15:04:15.000000000 -0700
     64252+++ ncurses-5.7/test/programs   2009-09-12 08:51:52.000000000 -0700
    6097364253@@ -1,6 +1,6 @@
    6097464254-# $Id: programs,v 1.14 2008/08/16 21:47:39 tom Exp $
     
    6100664286diff -Naur ncurses-5.7.orig/test/railroad.c ncurses-5.7/test/railroad.c
    6100764287--- ncurses-5.7.orig/test/railroad.c    2008-02-09 10:08:43.000000000 -0800
    61008 +++ ncurses-5.7/test/railroad.c 2009-07-19 15:02:23.000000000 -0700
     64288+++ ncurses-5.7/test/railroad.c 2009-09-12 08:51:19.000000000 -0700
    6100964289@@ -29,7 +29,7 @@
    6101064290 /*
     
    6105164331 }
    6105264332 
     64333diff -Naur ncurses-5.7.orig/test/rain.c ncurses-5.7/test/rain.c
     64334--- ncurses-5.7.orig/test/rain.c        2008-05-24 16:34:34.000000000 -0700
     64335+++ ncurses-5.7/test/rain.c     2009-09-12 08:52:07.000000000 -0700
     64336@@ -1,5 +1,5 @@
     64337 /****************************************************************************
     64338- * Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.              *
     64339+ * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.              *
     64340  *                                                                          *
     64341  * Permission is hereby granted, free of charge, to any person obtaining a  *
     64342  * copy of this software and associated documentation files (the            *
     64343@@ -26,7 +26,7 @@
     64344  * authorization.                                                           *
     64345  ****************************************************************************/
     64346 /*
     64347- * $Id: rain.c,v 1.34 2008/05/24 23:34:34 tom Exp $
     64348+ * $Id: rain.c,v 1.35 2009/08/29 19:02:25 tom Exp $
     64349  */
     64350 #include <test.priv.h>
     64351 
     64352@@ -105,7 +105,7 @@
     64353        chtype color = COLOR_PAIR(z);
     64354        if (z)
     64355            color |= A_BOLD;
     64356-       attrset(color);
     64357+       (void) attrset(color);
     64358     }
     64359     return j;
     64360 }
    6105364361diff -Naur ncurses-5.7.orig/test/README ncurses-5.7/test/README
    6105464362--- ncurses-5.7.orig/test/README        2008-10-18 14:02:45.000000000 -0700
    61055 +++ ncurses-5.7/test/README     2009-07-19 15:04:15.000000000 -0700
     64363+++ ncurses-5.7/test/README     2009-09-12 08:51:52.000000000 -0700
    6105664364@@ -25,7 +25,7 @@
    6105764365 -- sale, use or other dealings in this Software without prior written        --
     
    6139364701 wscanw                         test: testcurs
    6139464702 wscrl                          test: ncurses testcurs
     64703diff -Naur ncurses-5.7.orig/test/tclock.c ncurses-5.7/test/tclock.c
     64704--- ncurses-5.7.orig/test/tclock.c      2005-04-16 09:39:27.000000000 -0700
     64705+++ ncurses-5.7/test/tclock.c   2009-09-12 08:52:07.000000000 -0700
     64706@@ -1,4 +1,4 @@
     64707-/* $Id: tclock.c,v 1.25 2005/04/16 16:39:27 tom Exp $ */
     64708+/* $Id: tclock.c,v 1.26 2009/08/29 18:47:26 tom Exp $ */
     64709 
     64710 #include <test.priv.h>
     64711 
     64712@@ -67,7 +67,7 @@
     64713     int d;
     64714 
     64715     if (has_colors())
     64716-       attrset(COLOR_PAIR(pair));
     64717+       (void) attrset(COLOR_PAIR(pair));
     64718 
     64719     dx = x2 - from_x;
     64720     dy = y2 - from_y;
     64721@@ -209,17 +209,17 @@
     64722 
     64723        dline(3, cx, cy, cx + mdx, cy - mdy, '#');
     64724 
     64725-       attrset(A_REVERSE);
     64726+       (void) attrset(A_REVERSE);
     64727        dline(2, cx, cy, cx + hdx, cy - hdy, '.');
     64728        attroff(A_REVERSE);
     64729 
     64730        if (has_colors())
     64731-           attrset(COLOR_PAIR(1));
     64732+           (void) attrset(COLOR_PAIR(1));
     64733 
     64734        dline(1, cx, cy, cx + sdx, cy - sdy, 'O');
     64735 
     64736        if (has_colors())
     64737-           attrset(COLOR_PAIR(0));
     64738+           (void) attrset(COLOR_PAIR(0));
     64739 
     64740        text = ctime(&tim);
     64741        mvprintw(2, 0, "%.*s", (int) (strlen(text) - 1), text);
     64742diff -Naur ncurses-5.7.orig/test/testaddch.c ncurses-5.7/test/testaddch.c
     64743--- ncurses-5.7.orig/test/testaddch.c   2006-04-01 11:08:03.000000000 -0800
     64744+++ ncurses-5.7/test/testaddch.c        2009-09-12 08:52:07.000000000 -0700
     64745@@ -1,5 +1,5 @@
     64746 /****************************************************************************
     64747- * Copyright (c) 1998-2002,2006 Free Software Foundation, Inc.              *
     64748+ * Copyright (c) 1998-2006,2009 Free Software Foundation, Inc.              *
     64749  *                                                                          *
     64750  * Permission is hereby granted, free of charge, to any person obtaining a  *
     64751  * copy of this software and associated documentation files (the            *
     64752@@ -29,7 +29,7 @@
     64753  * This is an example written by Alexander V. Lukyanov <lav@yars.free.net>,
     64754  * to demonstrate an inconsistency between ncurses and SVr4 curses.
     64755  *
     64756- * $Id: testaddch.c,v 1.6 2006/04/01 19:08:03 tom Exp $
     64757+ * $Id: testaddch.c,v 1.7 2009/08/29 19:02:25 tom Exp $
     64758  */
     64759 #include <test.priv.h>
     64760 
     64761@@ -66,7 +66,7 @@
     64762        attr = (i & 4) ? COLOR_PAIR(4) : 0;
     64763 
     64764        bkgdset(back);
     64765-       attrset(set);
     64766+       (void) attrset(set);
     64767 
     64768        attr_addstr("Test string with spaces ->   <-\n", attr);
     64769     }
     64770@@ -77,7 +77,7 @@
     64771        attr = (i & 4) ? COLOR_PAIR(4) : 0;
     64772 
     64773        bkgdset(back);
     64774-       attrset(set);
     64775+       (void) attrset(set);
     64776 
     64777        attr_addstr("Test string with spaces ->   <-\n", attr);
     64778     }
    6139564779diff -Naur ncurses-5.7.orig/test/test_arrays.c ncurses-5.7/test/test_arrays.c
    6139664780--- ncurses-5.7.orig/test/test_arrays.c 2008-02-09 10:09:43.000000000 -0800
    61397 +++ ncurses-5.7/test/test_arrays.c      2009-07-19 15:04:17.000000000 -0700
     64781+++ ncurses-5.7/test/test_arrays.c      2009-09-12 08:51:54.000000000 -0700
    6139864782@@ -26,7 +26,7 @@
    6139964783  * authorization.                                                           *
     
    6141464798 #define DUMP(name) dump_array(#name, name)
    6141564799 
     64800diff -Naur ncurses-5.7.orig/test/testcurs.c ncurses-5.7/test/testcurs.c
     64801--- ncurses-5.7.orig/test/testcurs.c    2008-08-03 10:58:09.000000000 -0700
     64802+++ ncurses-5.7/test/testcurs.c 2009-09-12 08:52:07.000000000 -0700
     64803@@ -7,7 +7,7 @@
     64804  *  wrs(5/28/93) -- modified to be consistent (perform identically) with either
     64805  *                  PDCurses or under Unix System V, R4
     64806  *
     64807- * $Id: testcurs.c,v 1.39 2008/08/03 17:58:09 tom Exp $
     64808+ * $Id: testcurs.c,v 1.40 2009/08/29 18:47:26 tom Exp $
     64809  */
     64810 
     64811 #include <test.priv.h>
     64812@@ -682,7 +682,7 @@
     64813     if ((pad = newpad(50, 100)) != 0) {
     64814        wattron(pad, A_REVERSE);
     64815        mvwaddstr(pad, 5, 2, "This is a new pad");
     64816-       wattrset(pad, A_NORMAL);
     64817+       (void) wattrset(pad, A_NORMAL);
     64818        mvwaddstr(pad, 8, 0,
     64819                  "The end of this line should be truncated here:except  now");
     64820        mvwaddstr(pad, 11, 1, "This line should not appear.It will now");
     64821@@ -720,7 +720,7 @@
     64822 
     64823     assert((new_option >= 0) && (new_option < MAX_OPTIONS));
     64824 
     64825-    attrset(A_NORMAL);
     64826+    (void) attrset(A_NORMAL);
     64827     mvaddstr(3, 20, "PDCurses Test Program");
     64828 
     64829     for (i = 0; i < (int) MAX_OPTIONS; i++)
     64830@@ -729,9 +729,9 @@
     64831     if ((old_option >= 0) && (old_option < MAX_OPTIONS))
     64832        mvaddstr(5 + old_option, 25, command[old_option].text);
     64833 
     64834-    attrset(A_REVERSE);
     64835+    (void) attrset(A_REVERSE);
     64836     mvaddstr(5 + new_option, 25, command[new_option].text);
     64837-    attrset(A_NORMAL);
     64838+    (void) attrset(A_NORMAL);
     64839     mvaddstr(13, 3,
     64840             "Use Up and Down Arrows to select - Enter to run - Q to quit");
     64841     refresh();
     64842diff -Naur ncurses-5.7.orig/test/test_getstr.c ncurses-5.7/test/test_getstr.c
     64843--- ncurses-5.7.orig/test/test_getstr.c 2008-02-09 10:09:35.000000000 -0800
     64844+++ ncurses-5.7/test/test_getstr.c      2009-09-12 08:52:07.000000000 -0700
     64845@@ -1,5 +1,5 @@
     64846 /****************************************************************************
     64847- * Copyright (c) 2007,2008 Free Software Foundation, Inc.                   *
     64848+ * Copyright (c) 2007-2008,2009 Free Software Foundation, Inc.              *
     64849  *                                                                          *
     64850  * Permission is hereby granted, free of charge, to any person obtaining a  *
     64851  * copy of this software and associated documentation files (the            *
     64852@@ -26,7 +26,7 @@
     64853  * authorization.                                                           *
     64854  ****************************************************************************/
     64855 /*
     64856- * $Id: test_getstr.c,v 1.8 2008/02/09 18:09:35 tom Exp $
     64857+ * $Id: test_getstr.c,v 1.9 2009/08/29 19:02:25 tom Exp $
     64858  *
     64859  * Author: Thomas E Dickey
     64860  *
     64861@@ -271,7 +271,7 @@
     64862            *buffer = '\0';
     64863            rc = ERR;
     64864            echo();
     64865-           wattrset(txtwin, A_REVERSE);
     64866+           (void) wattrset(txtwin, A_REVERSE);
     64867            switch (flavor) {
     64868            case eGetStr:
     64869                if (txtwin != stdscr) {
     64870@@ -309,7 +309,7 @@
     64871                break;
     64872            }
     64873            noecho();
     64874-           wattrset(txtwin, A_NORMAL);
     64875+           (void) wattrset(txtwin, A_NORMAL);
     64876            wprintw(strwin, "%d:%s", rc, buffer);
     64877            wnoutrefresh(strwin);
     64878            break;
     64879diff -Naur ncurses-5.7.orig/test/test_get_wstr.c ncurses-5.7/test/test_get_wstr.c
     64880--- ncurses-5.7.orig/test/test_get_wstr.c       2007-08-11 10:01:43.000000000 -0700
     64881+++ ncurses-5.7/test/test_get_wstr.c    2009-09-12 08:52:07.000000000 -0700
     64882@@ -1,5 +1,5 @@
     64883 /****************************************************************************
     64884- * Copyright (c) 2007 Free Software Foundation, Inc.                        *
     64885+ * Copyright (c) 2007,2009 Free Software Foundation, Inc.                   *
     64886  *                                                                          *
     64887  * Permission is hereby granted, free of charge, to any person obtaining a  *
     64888  * copy of this software and associated documentation files (the            *
     64889@@ -26,7 +26,7 @@
     64890  * authorization.                                                           *
     64891  ****************************************************************************/
     64892 /*
     64893- * $Id: test_get_wstr.c,v 1.5 2007/08/11 17:01:43 tom Exp $
     64894+ * $Id: test_get_wstr.c,v 1.6 2009/08/29 19:02:25 tom Exp $
     64895  *
     64896  * Author: Thomas E Dickey
     64897  *
     64898@@ -269,7 +269,7 @@
     64899            *buffer = '\0';
     64900            rc = ERR;
     64901            echo();
     64902-           wattrset(txtwin, A_REVERSE);
     64903+           (void) wattrset(txtwin, A_REVERSE);
     64904            switch (flavor) {
     64905            case eGetStr:
     64906                if (txtwin != stdscr) {
     64907@@ -307,9 +307,9 @@
     64908                break;
     64909            }
     64910            noecho();
     64911-           wattrset(txtwin, A_NORMAL);
     64912+           (void) wattrset(txtwin, A_NORMAL);
     64913            wprintw(strwin, "%d", rc);
     64914-           waddwstr(strwin, (wchar_t *) buffer);
     64915+           (void) waddwstr(strwin, (wchar_t *) buffer);
     64916            wnoutrefresh(strwin);
     64917            break;
     64918        default:
     64919diff -Naur ncurses-5.7.orig/test/test_opaque.c ncurses-5.7/test/test_opaque.c
     64920--- ncurses-5.7.orig/test/test_opaque.c 2008-07-05 16:18:40.000000000 -0700
     64921+++ ncurses-5.7/test/test_opaque.c      2009-09-12 08:52:07.000000000 -0700
     64922@@ -1,5 +1,5 @@
     64923 /****************************************************************************
     64924- * Copyright (c) 2007,2008 Free Software Foundation, Inc.                   *
     64925+ * Copyright (c) 2007-2008,2009 Free Software Foundation, Inc.              *
     64926  *                                                                          *
     64927  * Permission is hereby granted, free of charge, to any person obtaining a  *
     64928  * copy of this software and associated documentation files (the            *
     64929@@ -26,7 +26,7 @@
     64930  * authorization.                                                           *
     64931  ****************************************************************************/
     64932 /*
     64933- * $Id: test_opaque.c,v 1.7 2008/07/05 23:18:40 tom Exp $
     64934+ * $Id: test_opaque.c,v 1.8 2009/08/29 19:02:25 tom Exp $
     64935  *
     64936  * Author: Thomas E Dickey
     64937  *
     64938@@ -185,10 +185,10 @@
     64939 {
     64940     to_keyword(stswin, cell);
     64941     if (active == cell)
     64942-       wstandout(stswin);
     64943+       (void) wstandout(stswin);
     64944     wprintw(stswin, "%s:", name);
     64945     if (active == cell)
     64946-       wstandend(stswin);
     64947+       (void) wstandend(stswin);
     64948 }
     64949 /* *INDENT-OFF* */
     64950 static struct {
    6141664951diff -Naur ncurses-5.7.orig/test/test.priv.h ncurses-5.7/test/test.priv.h
    6141764952--- ncurses-5.7.orig/test/test.priv.h   2008-10-04 14:53:41.000000000 -0700
    61418 +++ ncurses-5.7/test/test.priv.h        2009-07-19 15:04:17.000000000 -0700
     64953+++ ncurses-5.7/test/test.priv.h        2009-09-12 08:51:54.000000000 -0700
    6141964954@@ -1,5 +1,5 @@
    6142064955 /****************************************************************************
     
    6157765112diff -Naur ncurses-5.7.orig/test/view.c ncurses-5.7/test/view.c
    6157865113--- ncurses-5.7.orig/test/view.c        2008-09-06 15:10:50.000000000 -0700
    61579 +++ ncurses-5.7/test/view.c     2009-07-19 15:04:17.000000000 -0700
     65114+++ ncurses-5.7/test/view.c     2009-09-12 08:51:54.000000000 -0700
    6158065115@@ -1,5 +1,5 @@
    6158165116 /****************************************************************************
     
    6163865173diff -Naur ncurses-5.7.orig/test/worm.c ncurses-5.7/test/worm.c
    6163965174--- ncurses-5.7.orig/test/worm.c        2008-10-04 14:54:09.000000000 -0700
    61640 +++ ncurses-5.7/test/worm.c     2009-07-19 15:03:58.000000000 -0700
     65175+++ ncurses-5.7/test/worm.c     2009-09-12 08:51:35.000000000 -0700
    6164165176@@ -61,7 +61,7 @@
    6164265177   traces will be dumped.  The program stops and waits for one character of
     
    6167565210     }
    6167665211 #endif
     65212diff -Naur ncurses-5.7.orig/test/xmas.c ncurses-5.7/test/xmas.c
     65213--- ncurses-5.7.orig/test/xmas.c        2008-08-03 04:08:59.000000000 -0700
     65214+++ ncurses-5.7/test/xmas.c     2009-09-12 08:52:07.000000000 -0700
     65215@@ -92,7 +92,7 @@
     65216 /******************************************************************************/
     65217 
     65218 /*
     65219- * $Id: xmas.c,v 1.24 2008/08/03 11:08:59 tom Exp $
     65220+ * $Id: xmas.c,v 1.25 2009/08/29 18:47:26 tom Exp $
     65221  */
     65222 #include <test.priv.h>
     65223 
     65224@@ -170,7 +170,7 @@
     65225 unset_color(WINDOW *win)
     65226 {
     65227     if (has_colors())
     65228-       wattrset(win, COLOR_PAIR(0));
     65229+       (void) wattrset(win, COLOR_PAIR(0));
     65230 }
     65231 
     65232 static void
     65233@@ -533,9 +533,9 @@
     65234        mvwaddch(treescrn4, 12, 23, ' ');
     65235 
     65236        /*star */
     65237-       wstandout(treescrn4);
     65238+       (void) wstandout(treescrn4);
     65239        mvwaddch(treescrn4, 0, 12, '*');
     65240-       wstandend(treescrn4);
     65241+       (void) wstandend(treescrn4);
     65242 
     65243        /*strng1 */
     65244        mvwaddch(treescrn4, 3, 13, ' ');
     65245@@ -597,9 +597,9 @@
     65246        mvwaddch(treescrn6, 11, 23, ' ');
     65247 
     65248        /*star */
     65249-       wstandout(treescrn6);
     65250+       (void) wstandout(treescrn6);
     65251        mvwaddch(treescrn6, 0, 12, '*');
     65252-       wstandend(treescrn6);
     65253+       (void) wstandend(treescrn6);
     65254 
     65255        /*strng1 */
     65256 
     65257@@ -816,11 +816,11 @@
     65258 static int
     65259 star(void)
     65260 {
     65261-    wattrset(treescrn2, A_BOLD | A_BLINK);
     65262+    (void) wattrset(treescrn2, A_BOLD | A_BLINK);
     65263     set_color(treescrn2, COLOR_YELLOW);
     65264 
     65265     mvwaddch(treescrn2, 0, 12, (chtype) '*');
     65266-    wstandend(treescrn2);
     65267+    (void) wstandend(treescrn2);
     65268 
     65269     unset_color(treescrn2);
     65270     wrefresh(treescrn2);
     65271@@ -831,7 +831,7 @@
     65272 static int
     65273 strng1(void)
     65274 {
     65275-    wattrset(treescrn2, A_BOLD | A_BLINK);
     65276+    (void) wattrset(treescrn2, A_BOLD | A_BLINK);
     65277     set_color(treescrn2, COLOR_WHITE);
     65278 
     65279     mvwaddch(treescrn2, 3, 13, (chtype) '\'');
     65280@@ -849,7 +849,7 @@
     65281 static int
     65282 strng2(void)
     65283 {
     65284-    wattrset(treescrn2, A_BOLD | A_BLINK);
     65285+    (void) wattrset(treescrn2, A_BOLD | A_BLINK);
     65286     set_color(treescrn2, COLOR_WHITE);
     65287 
     65288     mvwaddch(treescrn2, 5, 14, (chtype) '\'');
     65289@@ -870,7 +870,7 @@
     65290 static int
     65291 strng3(void)
     65292 {
     65293-    wattrset(treescrn2, A_BOLD | A_BLINK);
     65294+    (void) wattrset(treescrn2, A_BOLD | A_BLINK);
     65295     set_color(treescrn2, COLOR_WHITE);
     65296 
     65297     mvwaddch(treescrn2, 7, 16, (chtype) '\'');
     65298@@ -893,7 +893,7 @@
     65299 static int
     65300 strng4(void)
     65301 {
     65302-    wattrset(treescrn2, A_BOLD | A_BLINK);
     65303+    (void) wattrset(treescrn2, A_BOLD | A_BLINK);
     65304     set_color(treescrn2, COLOR_WHITE);
     65305 
     65306     mvwaddch(treescrn2, 9, 17, (chtype) '\'');
     65307@@ -921,7 +921,7 @@
     65308 static int
     65309 strng5(void)
     65310 {
     65311-    wattrset(treescrn2, A_BOLD | A_BLINK);
     65312+    (void) wattrset(treescrn2, A_BOLD | A_BLINK);
     65313     set_color(treescrn2, COLOR_WHITE);
     65314 
     65315     mvwaddch(treescrn2, 11, 19, (chtype) '\'');
    6167765316diff -Naur ncurses-5.7.orig/TO-DO ncurses-5.7/TO-DO
    6167865317--- ncurses-5.7.orig/TO-DO      2008-10-11 12:22:27.000000000 -0700
    61679 +++ ncurses-5.7/TO-DO   2009-07-19 15:01:59.000000000 -0700
     65318+++ ncurses-5.7/TO-DO   2009-09-12 08:50:54.000000000 -0700
    6168065319@@ -25,7 +25,7 @@
    6168165320 -- sale, use or other dealings in this Software without prior written        --
Note: See TracChangeset for help on using the changeset viewer.