]> ncurses.scripts.mit.edu Git - ncurses.git/commitdiff
ncurses 6.0 - patch 20161119
authorThomas E. Dickey <dickey@invisible-island.net>
Sun, 20 Nov 2016 02:06:40 +0000 (02:06 +0000)
committerThomas E. Dickey <dickey@invisible-island.net>
Sun, 20 Nov 2016 02:06:40 +0000 (02:06 +0000)
+ add check in tic for some syntax errors of delays, as well as use of
  proportional delays for non-line capabilities.
+ document history of the clear program and the E3 extension, prompted
  by various discussions including
  http://unix.stackexchange.com/questions/87469/clearing-the-old-scrollback-buffer

28 files changed:
NEWS
VERSION
dist.mk
doc/html/man/adacurses6-config.1.html
doc/html/man/captoinfo.1m.html
doc/html/man/clear.1.html
doc/html/man/form.3x.html
doc/html/man/form_page.3x.html
doc/html/man/infocmp.1m.html
doc/html/man/infotocap.1m.html
doc/html/man/menu.3x.html
doc/html/man/ncurses.3x.html
doc/html/man/ncurses6-config.1.html
doc/html/man/panel.3x.html
doc/html/man/tabs.1.html
doc/html/man/terminfo.5.html
doc/html/man/tic.1m.html
doc/html/man/toe.1m.html
doc/html/man/tput.1.html
doc/html/man/tset.1.html
man/clear.1
package/debian-mingw/changelog
package/debian-mingw64/changelog
package/debian/changelog
package/mingw-ncurses.nsi
package/mingw-ncurses.spec
package/ncurses.spec
progs/tic.c

diff --git a/NEWS b/NEWS
index 77f82602145bcc902d40cca43871ff9d3b46483d..f55a70d4ac952ac8fd193b454754597cbd29ec25 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -25,7 +25,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: NEWS,v 1.2695 2016/11/13 00:10:13 tom Exp $
+-- $Id: NEWS,v 1.2698 2016/11/20 00:36:25 tom Exp $
 -------------------------------------------------------------------------------
 
 This is a log of changes that ncurses has gone through since Zeyd started
@@ -45,6 +45,13 @@ See the AUTHORS file for the corresponding full names.
 Changes through 1.9.9e did not credit all contributions;
 it is not possible to add this information.
 
+20161119
+       + add check in tic for some syntax errors of delays, as well as use of
+         proportional delays for non-line capabilities.
+       + document history of the clear program and the E3 extension, prompted
+         by various discussions including
+         http://unix.stackexchange.com/questions/87469/clearing-the-old-scrollback-buffer
+
 20161112
        + improve -W option in tic/infocmp:
          + correct order of size-adjustments in wrapped lines
diff --git a/VERSION b/VERSION
index 6cb025d90429a3d38edd733e3fb87669ffdc6630..b2a81045c8647599e2d22d59bc4226f1fda4f951 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-5:0:9  6.0     20161112
+5:0:9  6.0     20161119
diff --git a/dist.mk b/dist.mk
index 4d86405fc7a6dd63ec0dcdda0a2b2c5b9bc8084c..5bcb13aa1019716048407eef2bb806509bf95fa1 100644 (file)
--- a/dist.mk
+++ b/dist.mk
@@ -25,7 +25,7 @@
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
-# $Id: dist.mk,v 1.1132 2016/11/12 15:46:51 tom Exp $
+# $Id: dist.mk,v 1.1133 2016/11/19 18:20:25 tom Exp $
 # Makefile for creating ncurses distributions.
 #
 # This only needs to be used directly as a makefile by developers, but
@@ -37,7 +37,7 @@ SHELL = /bin/sh
 # These define the major/minor/patch versions of ncurses.
 NCURSES_MAJOR = 6
 NCURSES_MINOR = 0
-NCURSES_PATCH = 20161112
+NCURSES_PATCH = 20161119
 
 # We don't append the patch to the version, since this only applies to releases
 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
index 1778d7be8b886dca45e072f7d96acb652d531d04..c65cb7c98e4a2bbc858dc0315f98429a46c9dc65 100644 (file)
@@ -1,6 +1,6 @@
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2010-2011,2014 Free Software Foundation, Inc.              *
+  * Copyright (c) 2010-2014,2016 Free Software Foundation, Inc.              *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
@@ -26,7 +26,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: MKada_config.in,v 1.8 2014/06/07 19:32:52 tom Exp @
+  * @Id: MKada_config.in,v 1.10 2016/11/05 21:08:21 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       adacurses-config - helper script for AdaCurses libraries
+       adacurses6-config - helper script for AdaCurses libraries
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       <STRONG>adacurses-config</STRONG> [<EM>options</EM>]
+       <STRONG>adacurses6-config</STRONG> [<EM>options</EM>]
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
               echos  the release+patchdate version of the ncurses
               libraries used to configure and build AdaCurses.
 
-       <STRONG>--help</STRONG> prints a  list  of  the  <STRONG>adacurses-config</STRONG>  script's
+       <STRONG>--help</STRONG> prints a list  of  the  <STRONG>adacurses6-config</STRONG>  script's
               options.
 
-       If  no options are given, <STRONG>adacurses-config</STRONG> prints the com-
+       If no options are given, <STRONG>adacurses6-config</STRONG> prints the com-
        bination of <STRONG>--cflags</STRONG> and <STRONG>--libs</STRONG> that <STRONG>gnatmake</STRONG> expects (see
        example).
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161022).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161119).
 
 
 
index aa86b59dab642648b3f590342084fa3699f5b716..4f49b21a9dd5684580f7252f3b2d3be25c83cc2f 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161022).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161119).
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
index e1a9e3b301e2189f39c7713c770d07f27308044f..1af927041d0cf6febb20816fd7f4a1f039e25414 100644 (file)
@@ -1,6 +1,6 @@
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2013,2016 Free Software Foundation, Inc.              *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
@@ -26,7 +26,9 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: clear.1,v 1.10 2013/06/22 22:22:11 tom Exp @
+  * @Id: clear.1,v 1.14 2016/11/19 21:30:46 tom Exp @
+  * these would be fallbacks for DS/DE,
+  * but groff changed the meaning of the macros.
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
        present.
 
 
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+       A <STRONG>clear</STRONG> command appeared in  2.79BSD  dated  February  24,
+       1979.  Later that was provided in Unix 8th edition (1985).
+
+       AT&amp;T  adapted a different BSD program (<STRONG>tset</STRONG>) to make a new
+       command (<STRONG>tput</STRONG>), and used this to replace the <STRONG>clear</STRONG> command
+       with a shell script which calls <STRONG>tput</STRONG> <STRONG>clear</STRONG>, e.g.,
+           /usr/bin/tput ${1:+-T$1} clear 2&gt; /dev/null
+           exit
+
+       In 1989, when Keith Bostic revised the BSD <STRONG>tput</STRONG> command to
+       make it similar to the AT&amp;T <STRONG>tput</STRONG>, he added a shell  script
+       for the <STRONG>clear</STRONG> command:
+           exec tput clear
+
+       The  remainder  of  the script in each case is a copyright
+       notice.
+
+       The ncurses <STRONG>clear</STRONG> command began in 1995  by  adapting  the
+       original BSD <STRONG>clear</STRONG> command (with terminfo, of course).
+
+       The <STRONG>E3</STRONG> extension came later:
+
+       <STRONG>o</STRONG>   In June 1999, xterm provided an extension to the stan-
+           dard control sequence for clearing the screen.  Rather
+           than  clearing  just  the  visible  part of the screen
+           using
+               printf '\033[2J'
+
+           one could clear the <EM>scrollback</EM> using
+               printf '\033[<STRONG>3</STRONG>J'
+
+           This is documented in <EM>XTerm</EM>  <EM>Control</EM>  <EM>Sequences</EM>  as  a
+           feature originating with xterm.
+
+       <STRONG>o</STRONG>   A  few  other terminal developers adopted the feature,
+           e.g., PuTTY in 2006.
+
+       <STRONG>o</STRONG>   In April 2011, a Red Hat developer submitted  a  patch
+           to  the  Linux kernel, modifying its console driver to
+           do the same thing.  The Linux change, part of the  3.0
+           release,  did not mention xterm, although it was cited
+           in the Red Hat bug report (#683733) which led  to  the
+           change.
+
+       <STRONG>o</STRONG>   Again,  a  few  other  terminal developers adopted the
+           feature.  But the next relevant step was a  change  to
+           the  <STRONG>clear</STRONG>  program in 2013 to incorporate this exten-
+           sion.
+
+       <STRONG>o</STRONG>   In 2013, the <STRONG>E3</STRONG> extension was overlooked in <STRONG>tput</STRONG>  with
+           the  "clear" parameter.  That was addressed in 2016 by
+           reorganizing <STRONG>tput</STRONG> to share its logic  with  <STRONG>clear</STRONG>  and
+           <STRONG>tset</STRONG>.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       Neither  IEEE Std 1003.1/The Open  Group  Base  Specifica-
+       tions  Issue  7 (POSIX.1-2008) nor X/Open Curses  Issue  7
+       documents tset or reset.
+
+       The  latter documents <STRONG>tput</STRONG>, which could be used to replace
+       this utility either via a shell  script  or  by  an  alias
+       (such as a symbolic link) to run <STRONG>tput</STRONG> as <STRONG>clear</STRONG>.
+
+
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161022).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161119).
 
 
 
 <li><a href="#h2-NAME">NAME</a></li>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index 9725802c6e8f9790e2014a20a1d144bdddfffb5a..134f2dc8c8a0ee726188de5be3b25a6492aae139 100644 (file)
@@ -1,7 +1,7 @@
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2014,2015 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2015,2016 Free Software Foundation, Inc.              *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
@@ -27,7 +27,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form.3x,v 1.26 2015/08/02 18:14:50 tom Exp @
+  * @Id: form.3x,v 1.28 2016/10/29 22:26:35 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
        The  following  table lists each <STRONG>form</STRONG> routine and the name
        of the manual page on which it is described.
 
-       <STRONG>curses</STRONG> Routine Name    Manual Page Name
-       -------------------------------------------------
-       current_field          <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
-       data_ahead             <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>
-       data_behind            <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>
-       dup_field              <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
-       dynamic_field_info     <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>
-       field_arg              <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
-       field_back             <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
-       field_buffer           <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
-       field_count            <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
-       field_fore             <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
-       field_index            <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
-       field_info             <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>
-       field_init             <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
-       field_just             <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>
-       field_opts             <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
-       field_opts_off         <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
-       field_opts_on          <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
-       field_pad              <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
-       field_status           <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
-       field_term             <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
-       field_type             <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
-
-       field_userptr          <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
-       form_driver            <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>
-       form_driver_w          <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>*
-       form_fields            <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
-       form_init              <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
-       form_opts              <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
-       form_opts_off          <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
-       form_opts_on           <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
-       form_page              <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
-       form_request_by_name   <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>
-       form_request_name      <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>
-       form_sub               <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
-       form_term              <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
-       form_userptr           <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>
-       form_win               <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
-       free_field             <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
-       free_fieldtype         <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
-       free_form              <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>
-       link_field             <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
-       link_fieldtype         <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
-       move_field             <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
-       new_field              <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
-       new_fieldtype          <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
-       new_form               <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>
-       new_page               <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>
-       pos_form_cursor        <STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG>
-       post_form              <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>
-       scale_form             <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
-       set_current_field      <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
-       set_field_back         <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
-       set_field_buffer       <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
-       set_field_fore         <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
-       set_field_init         <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
-       set_field_just         <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>
-       set_field_opts         <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
-       set_field_pad          <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
-       set_field_status       <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
-       set_field_term         <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
-       set_field_type         <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
-       set_field_userptr      <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
-       set_fieldtype_arg      <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
-       set_fieldtype_choice   <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
-       set_form_fields        <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
-       set_form_init          <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
-       set_form_opts          <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
-       set_form_page          <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
-       set_form_sub           <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
-       set_form_term          <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
-       set_form_userptr       <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>
-       set_form_win           <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
-       set_max_field          <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
-       set_new_page           <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>
-       unpost_form            <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>
+       <STRONG>curses</STRONG> Routine Name     Manual Page Name
+       --------------------------------------------------
+       current_field           <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
+       data_ahead              <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>
+       data_behind             <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>
+       dup_field               <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
+       dynamic_field_info      <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>
+       field_arg               <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
+       field_back              <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
+       field_buffer            <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
+       field_count             <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
+       field_fore              <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
+       field_index             <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
+       field_info              <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>
+       field_init              <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
+       field_just              <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>
+       field_opts              <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
+       field_opts_off          <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
+       field_opts_on           <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
+       field_pad               <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
+       field_status            <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
+       field_term              <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
+       field_type              <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
+
+       field_userptr           <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
+       form_driver             <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>
+       form_driver_w           <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>*
+       form_fields             <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
+       form_init               <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
+       form_opts               <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
+       form_opts_off           <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
+       form_opts_on            <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
+       form_page               <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
+       form_request_by_name    <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>
+       form_request_name       <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>
+       form_sub                <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
+       form_term               <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
+       form_userptr            <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>
+       form_win                <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
+       free_field              <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
+       free_fieldtype          <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
+       free_form               <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>
+       link_field              <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
+       link_fieldtype          <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
+       move_field              <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
+       new_field               <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
+       new_fieldtype           <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
+       new_form                <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>
+       new_page                <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>
+       pos_form_cursor         <STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG>
+       post_form               <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>
+       scale_form              <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
+       set_current_field       <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
+       set_field_back          <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
+       set_field_buffer        <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
+       set_field_fore          <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
+       set_field_init          <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
+       set_field_just          <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>
+       set_field_opts          <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
+       set_field_pad           <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
+       set_field_status        <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
+       set_field_term          <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
+       set_field_type          <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
+       set_field_userptr       <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
+       set_fieldtype_arg       <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
+       set_fieldtype_choice    <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
+       set_form_fields         <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
+       set_form_init           <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
+       set_form_opts           <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
+       set_form_page           <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
+       set_form_sub            <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
+       set_form_term           <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
+       set_form_userptr        <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>
+       set_form_win            <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
+       set_max_field           <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
+       set_new_page            <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>
+       unfocus_current_field   <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
+       unpost_form             <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        These  routines  emulate the System V forms library.  They
        were not supported on Version 7 or BSD versions.
 
+       A few functions are extensions added  for  ncurses,  e.g.,
+       <STRONG>form_driver_w</STRONG>, <STRONG>unfocus_current_field</STRONG>.
+
 
 </PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
-       Juergen Pfeifer.  Manual pages and adaptation for  ncurses
+       Juergen  Pfeifer.  Manual pages and adaptation for ncurses
        by Eric S. Raymond.
 
 
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for
        detailed descriptions of the entry points.
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161022).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161119).
 
 
 
index dafa3f02005cd3ca4bb9f6bef257fb2be287e21c..2c9a3167007e4b8f3d17ad5ba208de92fbf622b1 100644 (file)
@@ -1,7 +1,7 @@
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2016 Free Software Foundation, Inc.              *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
@@ -27,7 +27,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_page.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
+  * @Id: form_page.3x,v 1.14 2016/10/29 22:27:24 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        int set_current_field(FORM *form, FIELD *field);
        FIELD *current_field(const FORM *);
+       int unfocus_current_field(FORM *form);
        int set_form_page(FORM *form, int n);
        int form_page(const FORM *form);
        int field_index(const FIELD *field);
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       The  function  <STRONG>set_current</STRONG> <STRONG>field</STRONG> sets the current field of
+       The  function  <STRONG>set_current_field</STRONG> sets the current field of
        the given form; <STRONG>current_field</STRONG> returns the current field of
        the given form.
 
+       The  function <STRONG>unfocus_current_field</STRONG> removes the focus from
+       the current field of the form. In  such  state,  inquiries
+       via <STRONG>current_field</STRONG> shall return a NULL pointer.
+
        The  function  <STRONG>set_form_page</STRONG>  sets  the form's page number
        (goes to page <EM>n</EM> of the form).
 
        These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
+       The  <STRONG>unfocus_current_field</STRONG>  function  is an ncurses exten-
+       sion.
+
 
 </PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
 
index 4a621eeb885b842b144c572cdd424fb26547bf51..e99f32037582c41cbbe3ca77829fbe52e8cef81f 100644 (file)
 
        http://invisible-island.net/ncurses/tctest.html
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161022).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161119).
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
index 5d06638b3b6e6d445d1f71f6ce0210272bdeae2e..54b2f1adb5e0836cc9bb8fe67cf6d19f967afade 100644 (file)
@@ -88,7 +88,7 @@
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161022).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161119).
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
index adad98b07228c377a273ad12315fafa6e98d969a..bad4c5d382df9a4b190c4bef4e7ece9f113a9ccf 100644 (file)
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "menu_" for
        detailed descriptions of the entry points.
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161022).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161119).
 
 
 
index e38cd843d5512352769bda4aaf64797f484e5eed..b10d2017d8bac139ba4985fb8c5cb6065feb09fc 100644 (file)
@@ -60,7 +60,7 @@
        sonable optimization.  This implementation is "new curses"
        (ncurses) and is the approved replacement for 4.4BSD clas-
        sic  curses,  which has been discontinued.  This describes
-       <STRONG>ncurses</STRONG> version 6.0 (patch 20161022).
+       <STRONG>ncurses</STRONG> version 6.0 (patch 20161119).
 
        The <STRONG>ncurses</STRONG> library emulates the curses library of  System
        V  Release  4  UNIX,  and  XPG4 (X/Open Portability Guide)
index 769ef12cecbc9a55f84a6f72c1089e7d86e62e9d..28fc6821402daa702954dc332f70d3f4a5aad5a4 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161022).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161119).
 
 
 
index 4a0df4aa4d67c478ca567d4a39434a4cf00ac5fa..10741b467f787571af534f8d0dd838d9b4d7c8ee 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161022).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161119).
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
index 18729d835596c817cb22e62a339871c375b5a195..290f9978358e666cb370d40f378471736a624539 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161022).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161119).
 
 
 
index 43269fe96496c0636a3c362db356865cc4bb4c1d..3ab6070bb64fe6c1d2e7f019d3356f41b4ff257f 100644 (file)
@@ -33,7 +33,7 @@
   ****************************************************************************
   * @Id: terminfo.head,v 1.22 2016/10/15 17:02:31 tom Exp @
   * Head of terminfo man page ends here
-  * @Id: terminfo.tail,v 1.73 2016/10/22 19:56:17 tom Exp @
+  * @Id: terminfo.tail,v 1.74 2016/11/05 21:15:43 Alain.Williams Exp @
   * Beginning of terminfo.tail file
   * This file is part of ncurses.
   * See "terminfo.head" for copyright.
@@ -75,7 +75,7 @@
        nals by giving a set of capabilities which they  have,  by
        specifying how to perform screen operations, and by speci-
        fying padding requirements and  initialization  sequences.
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161022).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161119).
 
        Entries in <EM>terminfo</EM> consist of a sequence of `,' separated
        fields (embedded commas may be escaped with a backslash or
        late  destructive  scrolling; their documentation cautions
        you not to define <STRONG>csr</STRONG> unless this is  true.   This  <STRONG>curses</STRONG>
        implementation is more liberal and will do explicit erases
-       after scrolling if <STRONG>ndstr</STRONG> is defined.
+       after scrolling if <STRONG>ndsrc</STRONG> is defined.
 
        If the terminal has the ability to define a window as part
        of  memory,  which all commands affect, it should be given
index 6ee32a3ce6dce48a12cdb3b928f71148b1003d28..cd14ee6454a6188356561467bd05042817be64ac 100644 (file)
        <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>,   <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>,   <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>,    <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>,
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="term.5.html">term(5)</A></STRONG>.  <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161022).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161119).
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
index c7cfbd731cfa1a1e1598e0389b3b2744e9e09698..b67450cd4e8dd60cff856b117384f748d4539be2 100644 (file)
        <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>,   <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>,   <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>,    <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>,
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161022).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161119).
 
 
 
index 000d45a94ced11d6ed3e5db56c59dd268054b6d4..bbc22a4eeed642b453410eeb6c2c370ad3f71e57 100644 (file)
        <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>,   <STRONG>stty(1)</STRONG>,   <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>,   <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>,    <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>,
        <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>.
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161022).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161119).
 
 
 
index cd112fbbb4bb413cfb4dffa1512512c70ed2c6e4..964cee63d9f64adeece90e9cd8531efa1ad2bfbf 100644 (file)
        <STRONG>csh(1)</STRONG>,   <STRONG>sh(1)</STRONG>,   <STRONG>stty(1)</STRONG>,   <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>,   <STRONG>tty(4)</STRONG>,
        <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG>ttys(5)</STRONG>, <STRONG>environ(7)</STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161022).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161119).
 
 
 
index d8e24e5bb9261ddb7448ba51f5fcd2a7e9404ceb..feb46859b197e674d210dfb10d8585e07f9bdb92 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998-2010,2013 Free Software Foundation, Inc.              *
+.\" Copyright (c) 1998-2013,2016 Free Software Foundation, Inc.              *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: clear.1,v 1.10 2013/06/22 22:22:11 tom Exp $
+.\" $Id: clear.1,v 1.14 2016/11/19 21:30:46 tom Exp $
 .TH @CLEAR@ 1 ""
+.\" these would be fallbacks for DS/DE,
+.\" but groff changed the meaning of the macros.
+.de NS
+.sp .5
+.in +4
+.nf
+.ft C                  \" Courier
+..
+.de NE
+.fi
+.ft R
+.in -4
+..
+.ie \n(.g .ds `` \(lq
+.el       .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el       .ds '' ''
+.de bP
+.IP \(bu 4
+..
 .ds n 5
 .SH NAME
 \fB@CLEAR@\fR \- clear the terminal screen
 .br
 .SH DESCRIPTION
 \fB@CLEAR@\fR clears your screen if this is possible,
-including its scrollback buffer (if the extended "E3" capability is defined).
+including its scrollback buffer (if the extended \*(``E3\*('' capability is defined).
 \fB@CLEAR@\fR looks in the environment for the terminal type and then in the
 \fBterminfo\fR database to determine how to clear the screen.
 .PP
 \fB@CLEAR@\fR ignores any command-line parameters that may be present.
+.SH HISTORY
+A \fBclear\fP command appeared in 2.79BSD dated February 24, 1979.
+Later that was provided in Unix 8th edition (1985).
+.PP
+AT&T adapted a different BSD program (\fBtset\fP) to make
+a new command (\fBtput\fP),
+and used this to replace the \fBclear\fP command with a shell script
+which calls \fBtput clear\fP, e.g.,
+.NS
+/usr/bin/tput ${1:+-T$1} clear 2> /dev/null
+exit
+.NE
+.PP
+In 1989, when Keith Bostic revised the BSD \fBtput\fP command
+to make it similar to the AT&T \fBtput\fP,
+he added a shell script for the \fBclear\fP command:
+.NS
+exec tput clear
+.NE
+.PP
+The remainder of the script in each case is a copyright notice.
+.PP
+The ncurses \fBclear\fP command began in 1995 by adapting the original
+BSD \fBclear\fP command (with terminfo, of course).
+.PP
+The \fBE3\fP extension came later:
+.bP
+In June 1999, xterm provided an extension to the standard control
+sequence for clearing the screen.
+Rather than clearing just the visible part of the screen using
+.NS
+printf '\\033[2J'
+.NE
+.IP
+one could clear the \fIscrollback\fP using
+.NS
+printf '\\033[\fB3\fPJ'
+.NE
+.IP
+This is documented in \fIXTerm Control Sequences\fP as a feature originating
+with xterm.
+.bP
+A few other terminal developers adopted the feature, e.g., PuTTY in 2006.
+.bP
+In April 2011, a Red Hat developer submitted a patch to the Linux
+kernel, modifying its console driver to do the same thing.
+The Linux change, part of the 3.0 release, did not mention xterm,
+although it was cited in the Red Hat bug report (#683733)
+which led to the change.
+.bP
+Again, a few other terminal developers adopted the feature.  But the
+next relevant step was a change to the \fBclear\fP program in 2013
+to incorporate this extension.
+.bP
+In 2013, the \fBE3\fP extension was overlooked in \fB@TPUT@\fP with
+the \*(``clear\*('' parameter.
+That was addressed in 2016 by reorganizing \fB@TPUT@\fP to share
+its logic with \fB@CLEAR@\fP and \fB@TSET@\fP.
+.SH PORTABILITY
+Neither IEEE Std 1003.1/The Open  Group  Base  Specifications  Issue  7
+(POSIX.1-2008) nor X/Open Curses Issue 7 documents @TSET@ or @RESET@.
+.PP
+The latter documents \fBtput\fP, which could be used to replace this utility
+either via a shell script or by an alias (such as a symbolic link) to
+run \fB@TPUT@\fP as \fB@CLEAR@\fP.
 .SH SEE ALSO
 \fB@TPUT@\fR(1), \fBterminfo\fR(\*n)
 .PP
index fe4cc9e0c3805fb791cbe85509b17435e182b7cc..68690de88096987948da2dcea731736914c30b94 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.0+20161112) unstable; urgency=low
+ncurses6 (6.0+20161119) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 12 Nov 2016 10:46:51 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 19 Nov 2016 13:20:25 -0500
 
 ncurses6 (5.9-20131005) unstable; urgency=low
 
index fe4cc9e0c3805fb791cbe85509b17435e182b7cc..68690de88096987948da2dcea731736914c30b94 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.0+20161112) unstable; urgency=low
+ncurses6 (6.0+20161119) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 12 Nov 2016 10:46:51 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 19 Nov 2016 13:20:25 -0500
 
 ncurses6 (5.9-20131005) unstable; urgency=low
 
index 7e59d10f3e2143677a9b23ccd315aac4ec9eaa8b..8b8a5a64f976735f9373d50d1d9bed5db66554a7 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.0+20161112) unstable; urgency=low
+ncurses6 (6.0+20161119) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 12 Nov 2016 10:46:51 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 19 Nov 2016 13:20:25 -0500
 
 ncurses6 (5.9-20120608) unstable; urgency=low
 
index fe7c070e8cd49ec3625d121df30c0b2317793c9c..d73523515de6a36366ae380e7cb68bfcfb45ab3b 100644 (file)
@@ -1,4 +1,4 @@
-; $Id: mingw-ncurses.nsi,v 1.184 2016/11/12 15:46:51 tom Exp $\r
+; $Id: mingw-ncurses.nsi,v 1.185 2016/11/19 18:20:25 tom Exp $\r
 \r
 ; TODO add examples\r
 ; TODO bump ABI to 6\r
@@ -10,7 +10,7 @@
 !define VERSION_MAJOR "6"\r
 !define VERSION_MINOR "0"\r
 !define VERSION_YYYY  "2016"\r
-!define VERSION_MMDD  "1112"\r
+!define VERSION_MMDD  "1119"\r
 !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}\r
 \r
 !define MY_ABI   "5"\r
index 797f22461cef3bf826b77107df736039a256808e..89c6bb1f48acbf05524bcdbf162df2e292f1e440 100644 (file)
@@ -3,7 +3,7 @@
 Summary: shared libraries for terminal handling
 Name: mingw32-ncurses6
 Version: 6.0
-Release: 20161112
+Release: 20161119
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
index 321415f841d52ea17ab6d716170d989b97b59b47..f545574e0a9f505de8db8c9f9b6e71fc0b6b748f 100644 (file)
@@ -1,7 +1,7 @@
 Summary: shared libraries for terminal handling
 Name: ncurses6
 Version: 6.0
-Release: 20161112
+Release: 20161119
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
index e559d1b35c283d61c3b6c0010764b4b13caf987a..c315c276b62b073799c0666b52344fb18d3ff130 100644 (file)
@@ -48,7 +48,7 @@
 #include <parametrized.h>
 #include <transform.h>
 
-MODULE_ID("$Id: tic.c,v 1.224 2016/10/01 12:46:54 tom Exp $")
+MODULE_ID("$Id: tic.c,v 1.225 2016/11/20 00:34:58 tom Exp $")
 
 #define STDIN_NAME "<stdin>"
 
@@ -1769,6 +1769,104 @@ check_params(TERMTYPE *tp, const char *name, char *value)
     }
 }
 
+static bool
+line_capability(const char *name)
+{
+    bool result = FALSE;
+    static const char *table[] =
+    {
+       "csr",                  /* change_scroll_region          */
+       "clear",                /* clear_screen                  */
+       "ed",                   /* clr_eos                       */
+       "cwin",                 /* create_window                 */
+       "cup",                  /* cursor_address                */
+       "cud1",                 /* cursor_down                   */
+       "home",                 /* cursor_home                   */
+       "mrcup",                /* cursor_mem_address            */
+       "ll",                   /* cursor_to_ll                  */
+       "cuu1",                 /* cursor_up                     */
+       "dl1",                  /* delete_line                   */
+       "hd",                   /* down_half_line                */
+       "flash",                /* flash_screen                  */
+       "ff",                   /* form_feed                     */
+       "il1",                  /* insert_line                   */
+       "nel",                  /* newline                       */
+       "dl",                   /* parm_delete_line              */
+       "cud",                  /* parm_down_cursor              */
+       "indn",                 /* parm_index                    */
+       "il",                   /* parm_insert_line              */
+       "rin",                  /* parm_rindex                   */
+       "cuu",                  /* parm_up_cursor                */
+       "mc0",                  /* print_screen                  */
+       "vpa",                  /* row_address                   */
+       "ind",                  /* scroll_forward                */
+       "ri",                   /* scroll_reverse                */
+       "hu",                   /* up_half_line                  */
+    };
+    size_t n;
+    for (n = 0; n < SIZEOF(table); ++n) {
+       if (!strcmp(name, table[n])) {
+           result = TRUE;
+           break;
+       }
+    }
+    return result;
+}
+
+static void
+check_delays(const char *name, const char *value)
+{
+    const char *p, *q;
+    const char *mark = 0;
+
+    for (p = value; *p != '\0'; ++p) {
+       if (p[0] == '$' && p[1] == '<') {
+           const char *base = p + 2;
+           bool maybe = TRUE;
+           bool mixed = FALSE;
+           int proportional = 0;
+           int mandatory = 0;
+
+           for (q = base; *q != '\0'; ++q) {
+               if (*q == '>') {
+                   if (mark == 0)
+                       mark = q;
+                   break;
+               } else if (*q == '*' || *q == '/') {
+                   if (*q == '*')
+                       ++proportional;
+                   if (*q == '/')
+                       ++mandatory;
+                   if (mark == 0)
+                       mark = q;
+               } else if (!(isalnum(UChar(*q)) || strchr("+-.", *q) != 0)) {
+                   maybe = FALSE;
+                   break;
+               } else if (proportional || mandatory) {
+                   mixed = TRUE;
+               }
+           }
+           if (*q == '\0') {
+               maybe = FALSE;  /* just an isolated "$<" */
+           } else if (maybe) {
+               float check_f;
+               char check_c;
+               int rc = sscanf(base, "%f%c", &check_f, &check_c);
+               if ((rc != 2) || (check_c != *mark) || mixed) {
+                   _nc_warning("syntax error in %s delay '%.*s'", name,
+                               (int) (q - base), base);
+               } else if (*name == 'k') {
+                   _nc_warning("function-key %s has delay", name);
+               } else if (proportional && !line_capability(name)) {
+                   _nc_warning("non-line capability using proportional delay: %s", name);
+               }
+           } else {
+               p = q - 1;      /* restart scan */
+           }
+       }
+    }
+}
+
 static char *
 check_1_infotocap(const char *name, NCURSES_CONST char *value, int count)
 {
@@ -2388,6 +2486,7 @@ check_termtype(TERMTYPE *tp, bool literal)
        char *a = tp->Strings[j];
        if (VALID_STRING(a)) {
            check_params(tp, ExtStrname(tp, (int) j, strnames), a);
+           check_delays(ExtStrname(tp, (int) j, strnames), a);
            if (capdump) {
                check_infotocap(tp, (int) j, a);
            }