Changeset 18eabd2 for patches


Ignore:
Timestamp:
Sep 12, 2009, 8:55:54 AM (13 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)