From: Thomas E. Dickey Date: Sun, 20 Nov 2016 02:06:40 +0000 (+0000) Subject: ncurses 6.0 - patch 20161119 X-Git-Tag: v6.1~62 X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=commitdiff_plain;h=5606eb48618dde18a593793e2e5dafadf18d345b ncurses 6.0 - patch 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 --- diff --git a/NEWS b/NEWS index 77f82602..f55a70d4 100644 --- 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 6cb025d9..b2a81045 100644 --- 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 4d86405f..5bcb13aa 100644 --- 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) diff --git a/doc/html/man/adacurses6-config.1.html b/doc/html/man/adacurses6-config.1.html index 1778d7be..c65cb7c9 100644 --- a/doc/html/man/adacurses6-config.1.html +++ b/doc/html/man/adacurses6-config.1.html @@ -1,6 +1,6 @@ @@ -46,11 +46,11 @@

NAME

-       adacurses-config - helper script for AdaCurses libraries
+       adacurses6-config - helper script for AdaCurses libraries
 
 
 

SYNOPSIS

-       adacurses-config [options]
+       adacurses6-config [options]
 
 
 

DESCRIPTION

@@ -71,10 +71,10 @@
               echos  the release+patchdate version of the ncurses
               libraries used to configure and build AdaCurses.
 
-       --help prints a  list  of  the  adacurses-config  script's
+       --help prints a list  of  the  adacurses6-config  script's
               options.
 
-       If  no options are given, adacurses-config prints the com-
+       If no options are given, adacurses6-config prints the com-
        bination of --cflags and --libs that gnatmake expects (see
        example).
 
@@ -131,7 +131,7 @@
 

SEE ALSO

        curses(3x)
 
-       This describes ncurses version 6.0 (patch 20161022).
+       This describes ncurses version 6.0 (patch 20161119).
 
 
 
diff --git a/doc/html/man/captoinfo.1m.html b/doc/html/man/captoinfo.1m.html
index aa86b59d..4f49b21a 100644
--- a/doc/html/man/captoinfo.1m.html
+++ b/doc/html/man/captoinfo.1m.html
@@ -198,7 +198,7 @@
 

SEE ALSO

        infocmp(1m), curses(3x), terminfo(5)
 
-       This describes ncurses version 6.0 (patch 20161022).
+       This describes ncurses version 6.0 (patch 20161119).
 
 
 

AUTHOR

diff --git a/doc/html/man/clear.1.html b/doc/html/man/clear.1.html
index e1a9e3b3..1af92704 100644
--- a/doc/html/man/clear.1.html
+++ b/doc/html/man/clear.1.html
@@ -1,6 +1,6 @@
 
 
 
@@ -64,10 +66,76 @@
        present.
 
 
+

HISTORY

+       A clear command appeared in  2.79BSD  dated  February  24,
+       1979.  Later that was provided in Unix 8th edition (1985).
+
+       AT&T  adapted a different BSD program (tset) to make a new
+       command (tput), and used this to replace the clear command
+       with a shell script which calls tput clear, e.g.,
+           /usr/bin/tput ${1:+-T$1} clear 2> /dev/null
+           exit
+
+       In 1989, when Keith Bostic revised the BSD tput command to
+       make it similar to the AT&T tput, he added a shell  script
+       for the clear command:
+           exec tput clear
+
+       The  remainder  of  the script in each case is a copyright
+       notice.
+
+       The ncurses clear command began in 1995  by  adapting  the
+       original BSD clear command (with terminfo, of course).
+
+       The E3 extension came later:
+
+       o   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 scrollback using
+               printf '\033[3J'
+
+           This is documented in XTerm  Control  Sequences  as  a
+           feature originating with xterm.
+
+       o   A  few  other terminal developers adopted the feature,
+           e.g., PuTTY in 2006.
+
+       o   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.
+
+       o   Again,  a  few  other  terminal developers adopted the
+           feature.  But the next relevant step was a  change  to
+           the  clear  program in 2013 to incorporate this exten-
+           sion.
+
+       o   In 2013, the E3 extension was overlooked in tput  with
+           the  "clear" parameter.  That was addressed in 2016 by
+           reorganizing tput to share its logic  with  clear  and
+           tset.
+
+
+

PORTABILITY

+       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 tput, which could be used to replace
+       this utility either via a shell  script  or  by  an  alias
+       (such as a symbolic link) to run tput as clear.
+
+
 

SEE ALSO

        tput(1), terminfo(5)
 
-       This describes ncurses version 6.0 (patch 20161022).
+       This describes ncurses version 6.0 (patch 20161119).
 
 
 
@@ -78,6 +146,8 @@
 
  • NAME
  • SYNOPSIS
  • DESCRIPTION
  • +
  • HISTORY
  • +
  • PORTABILITY
  • SEE ALSO
  • diff --git a/doc/html/man/form.3x.html b/doc/html/man/form.3x.html index 9725802c..134f2dc8 100644 --- a/doc/html/man/form.3x.html +++ b/doc/html/man/form.3x.html @@ -1,7 +1,7 @@ @@ -88,83 +88,84 @@ The following table lists each form routine and the name of the manual page on which it is described. - curses Routine Name Manual Page Name - ------------------------------------------------- - current_field form_page(3x) - data_ahead form_data(3x) - data_behind form_data(3x) - dup_field form_field_new(3x) - dynamic_field_info form_field_info(3x) - field_arg form_field_validation(3x) - field_back form_field_attributes(3x) - field_buffer form_field_buffer(3x) - field_count form_field(3x) - field_fore form_field_attributes(3x) - field_index form_page(3x) - field_info form_field_info(3x) - field_init form_hook(3x) - field_just form_field_just(3x) - field_opts form_field_opts(3x) - field_opts_off form_field_opts(3x) - field_opts_on form_field_opts(3x) - field_pad form_field_attributes(3x) - field_status form_field_buffer(3x) - field_term form_hook(3x) - field_type form_field_validation(3x) - - field_userptr form_field_userptr(3x) - form_driver form_driver(3x) - form_driver_w form_driver(3x)* - form_fields form_field(3x) - form_init form_hook(3x) - form_opts form_opts(3x) - form_opts_off form_opts(3x) - form_opts_on form_opts(3x) - form_page form_page(3x) - form_request_by_name form_requestname(3x) - form_request_name form_requestname(3x) - form_sub form_win(3x) - form_term form_hook(3x) - form_userptr form_userptr(3x) - form_win form_win(3x) - free_field form_field_new(3x) - free_fieldtype form_fieldtype(3x) - free_form form_new(3x) - link_field form_field_new(3x) - link_fieldtype form_fieldtype(3x) - move_field form_field(3x) - new_field form_field_new(3x) - new_fieldtype form_fieldtype(3x) - new_form form_new(3x) - new_page form_new_page(3x) - pos_form_cursor form_cursor(3x) - post_form form_post(3x) - scale_form form_win(3x) - set_current_field form_page(3x) - set_field_back form_field_attributes(3x) - set_field_buffer form_field_buffer(3x) - set_field_fore form_field_attributes(3x) - set_field_init form_hook(3x) - set_field_just form_field_just(3x) - set_field_opts form_field_opts(3x) - set_field_pad form_field_attributes(3x) - set_field_status form_field_buffer(3x) - set_field_term form_hook(3x) - set_field_type form_field_validation(3x) - set_field_userptr form_field_userptr(3x) - set_fieldtype_arg form_fieldtype(3x) - set_fieldtype_choice form_fieldtype(3x) - set_form_fields form_field(3x) - set_form_init form_hook(3x) - set_form_opts form_field_opts(3x) - set_form_page form_page(3x) - set_form_sub form_win(3x) - set_form_term form_hook(3x) - set_form_userptr form_userptr(3x) - set_form_win form_win(3x) - set_max_field form_field_buffer(3x) - set_new_page form_new_page(3x) - unpost_form form_post(3x) + curses Routine Name Manual Page Name + -------------------------------------------------- + current_field form_page(3x) + data_ahead form_data(3x) + data_behind form_data(3x) + dup_field form_field_new(3x) + dynamic_field_info form_field_info(3x) + field_arg form_field_validation(3x) + field_back form_field_attributes(3x) + field_buffer form_field_buffer(3x) + field_count form_field(3x) + field_fore form_field_attributes(3x) + field_index form_page(3x) + field_info form_field_info(3x) + field_init form_hook(3x) + field_just form_field_just(3x) + field_opts form_field_opts(3x) + field_opts_off form_field_opts(3x) + field_opts_on form_field_opts(3x) + field_pad form_field_attributes(3x) + field_status form_field_buffer(3x) + field_term form_hook(3x) + field_type form_field_validation(3x) + + field_userptr form_field_userptr(3x) + form_driver form_driver(3x) + form_driver_w form_driver(3x)* + form_fields form_field(3x) + form_init form_hook(3x) + form_opts form_opts(3x) + form_opts_off form_opts(3x) + form_opts_on form_opts(3x) + form_page form_page(3x) + form_request_by_name form_requestname(3x) + form_request_name form_requestname(3x) + form_sub form_win(3x) + form_term form_hook(3x) + form_userptr form_userptr(3x) + form_win form_win(3x) + free_field form_field_new(3x) + free_fieldtype form_fieldtype(3x) + free_form form_new(3x) + link_field form_field_new(3x) + link_fieldtype form_fieldtype(3x) + move_field form_field(3x) + new_field form_field_new(3x) + new_fieldtype form_fieldtype(3x) + new_form form_new(3x) + new_page form_new_page(3x) + pos_form_cursor form_cursor(3x) + post_form form_post(3x) + scale_form form_win(3x) + set_current_field form_page(3x) + set_field_back form_field_attributes(3x) + set_field_buffer form_field_buffer(3x) + set_field_fore form_field_attributes(3x) + set_field_init form_hook(3x) + set_field_just form_field_just(3x) + set_field_opts form_field_opts(3x) + set_field_pad form_field_attributes(3x) + set_field_status form_field_buffer(3x) + set_field_term form_hook(3x) + set_field_type form_field_validation(3x) + set_field_userptr form_field_userptr(3x) + set_fieldtype_arg form_fieldtype(3x) + set_fieldtype_choice form_fieldtype(3x) + set_form_fields form_field(3x) + set_form_init form_hook(3x) + set_form_opts form_field_opts(3x) + set_form_page form_page(3x) + set_form_sub form_win(3x) + set_form_term form_hook(3x) + set_form_userptr form_userptr(3x) + set_form_win form_win(3x) + set_max_field form_field_buffer(3x) + set_new_page form_new_page(3x) + unfocus_current_field form_page(3x) + unpost_form form_post(3x)

    RETURN VALUE

    @@ -225,9 +226,12 @@
            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.,
    +       form_driver_w, unfocus_current_field.
    +
     
     

    AUTHORS

    -       Juergen Pfeifer.  Manual pages and adaptation for  ncurses
    +       Juergen  Pfeifer.  Manual pages and adaptation for ncurses
            by Eric S. Raymond.
     
     
    @@ -235,7 +239,7 @@
            curses(3x) and related pages whose names begin "form_" for
            detailed descriptions of the entry points.
     
    -       This describes ncurses version 6.0 (patch 20161022).
    +       This describes ncurses version 6.0 (patch 20161119).
     
     
     
    diff --git a/doc/html/man/form_page.3x.html b/doc/html/man/form_page.3x.html
    index dafa3f02..2c9a3167 100644
    --- a/doc/html/man/form_page.3x.html
    +++ b/doc/html/man/form_page.3x.html
    @@ -1,7 +1,7 @@
     
     
     
    @@ -54,16 +54,21 @@
            #include <form.h>
            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);
     
     
     

    DESCRIPTION

    -       The  function  set_current field sets the current field of
    +       The  function  set_current_field sets the current field of
            the given form; current_field returns the current field of
            the given form.
     
    +       The  function unfocus_current_field removes the focus from
    +       the current field of the form. In  such  state,  inquiries
    +       via current_field shall return a NULL pointer.
    +
            The  function  set_form_page  sets  the form's page number
            (goes to page n of the form).
     
    @@ -113,9 +118,12 @@
            These routines emulate the System V forms  library.   They
            were not supported on Version 7 or BSD versions.
     
    +       The  unfocus_current_field  function  is an ncurses exten-
    +       sion.
    +
     
     

    AUTHORS

    -       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
    +       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
            curses by Eric S. Raymond.
     
     
    diff --git a/doc/html/man/infocmp.1m.html b/doc/html/man/infocmp.1m.html
    index 4a621eeb..e99f3203 100644
    --- a/doc/html/man/infocmp.1m.html
    +++ b/doc/html/man/infocmp.1m.html
    @@ -478,7 +478,7 @@
     
            http://invisible-island.net/ncurses/tctest.html
     
    -       This describes ncurses version 6.0 (patch 20161022).
    +       This describes ncurses version 6.0 (patch 20161119).
     
     
     

    AUTHOR

    diff --git a/doc/html/man/infotocap.1m.html b/doc/html/man/infotocap.1m.html
    index 5d06638b..54b2f1ad 100644
    --- a/doc/html/man/infotocap.1m.html
    +++ b/doc/html/man/infotocap.1m.html
    @@ -88,7 +88,7 @@
     

    SEE ALSO

            curses(3x), tic(1m), infocmp(1m), terminfo(5)
     
    -       This describes ncurses version 6.0 (patch 20161022).
    +       This describes ncurses version 6.0 (patch 20161119).
     
     
     

    AUTHOR

    diff --git a/doc/html/man/menu.3x.html b/doc/html/man/menu.3x.html
    index adad98b0..bad4c5d3 100644
    --- a/doc/html/man/menu.3x.html
    +++ b/doc/html/man/menu.3x.html
    @@ -217,7 +217,7 @@
            curses(3x) and related pages whose names begin "menu_" for
            detailed descriptions of the entry points.
     
    -       This describes ncurses version 6.0 (patch 20161022).
    +       This describes ncurses version 6.0 (patch 20161119).
     
     
     
    diff --git a/doc/html/man/ncurses.3x.html b/doc/html/man/ncurses.3x.html
    index e38cd843..b10d2017 100644
    --- a/doc/html/man/ncurses.3x.html
    +++ b/doc/html/man/ncurses.3x.html
    @@ -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
    -       ncurses version 6.0 (patch 20161022).
    +       ncurses version 6.0 (patch 20161119).
     
            The ncurses library emulates the curses library of  System
            V  Release  4  UNIX,  and  XPG4 (X/Open Portability Guide)
    diff --git a/doc/html/man/ncurses6-config.1.html b/doc/html/man/ncurses6-config.1.html
    index 769ef12c..28fc6821 100644
    --- a/doc/html/man/ncurses6-config.1.html
    +++ b/doc/html/man/ncurses6-config.1.html
    @@ -114,7 +114,7 @@
     

    SEE ALSO

            curses(3x)
     
    -       This describes ncurses version 6.0 (patch 20161022).
    +       This describes ncurses version 6.0 (patch 20161119).
     
     
     
    diff --git a/doc/html/man/panel.3x.html b/doc/html/man/panel.3x.html
    index 4a0df4aa..10741b46 100644
    --- a/doc/html/man/panel.3x.html
    +++ b/doc/html/man/panel.3x.html
    @@ -208,7 +208,7 @@
     

    SEE ALSO

            curses(3x), curs_variables(3x),
     
    -       This describes ncurses version 6.0 (patch 20161022).
    +       This describes ncurses version 6.0 (patch 20161119).
     
     
     

    AUTHOR

    diff --git a/doc/html/man/tabs.1.html b/doc/html/man/tabs.1.html
    index 18729d83..290f9978 100644
    --- a/doc/html/man/tabs.1.html
    +++ b/doc/html/man/tabs.1.html
    @@ -164,7 +164,7 @@
     

    SEE ALSO

            tset(1), infocmp(1m), curses(3x), terminfo(5).
     
    -       This describes ncurses version 6.0 (patch 20161022).
    +       This describes ncurses version 6.0 (patch 20161119).
     
     
     
    diff --git a/doc/html/man/terminfo.5.html b/doc/html/man/terminfo.5.html
    index 43269fe9..3ab6070b 100644
    --- a/doc/html/man/terminfo.5.html
    +++ b/doc/html/man/terminfo.5.html
    @@ -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 ncurses version 6.0 (patch 20161022).
    +       This describes ncurses version 6.0 (patch 20161119).
     
            Entries in terminfo consist of a sequence of `,' separated
            fields (embedded commas may be escaped with a backslash or
    @@ -1559,7 +1559,7 @@
            late  destructive  scrolling; their documentation cautions
            you not to define csr unless this is  true.   This  curses
            implementation is more liberal and will do explicit erases
    -       after scrolling if ndstr is defined.
    +       after scrolling if ndsrc is defined.
     
            If the terminal has the ability to define a window as part
            of  memory,  which all commands affect, it should be given
    diff --git a/doc/html/man/tic.1m.html b/doc/html/man/tic.1m.html
    index 6ee32a3c..cd14ee64 100644
    --- a/doc/html/man/tic.1m.html
    +++ b/doc/html/man/tic.1m.html
    @@ -401,7 +401,7 @@
            infocmp(1m),   captoinfo(1m),   infotocap(1m),    toe(1m),
            curses(3x), term(5).  terminfo(5).
     
    -       This describes ncurses version 6.0 (patch 20161022).
    +       This describes ncurses version 6.0 (patch 20161119).
     
     
     

    AUTHOR

    diff --git a/doc/html/man/toe.1m.html b/doc/html/man/toe.1m.html
    index c7cfbd73..b67450cd 100644
    --- a/doc/html/man/toe.1m.html
    +++ b/doc/html/man/toe.1m.html
    @@ -117,7 +117,7 @@
            tic(1m),   infocmp(1m),   captoinfo(1m),    infotocap(1m),
            curses(3x), terminfo(5).
     
    -       This describes ncurses version 6.0 (patch 20161022).
    +       This describes ncurses version 6.0 (patch 20161119).
     
     
     
    diff --git a/doc/html/man/tput.1.html b/doc/html/man/tput.1.html
    index 000d45a9..bbc22a4e 100644
    --- a/doc/html/man/tput.1.html
    +++ b/doc/html/man/tput.1.html
    @@ -441,7 +441,7 @@
            clear(1),   stty(1),   tabs(1),   tset(1),    terminfo(5),
            curs_termcap(3x).
     
    -       This describes ncurses version 6.0 (patch 20161022).
    +       This describes ncurses version 6.0 (patch 20161119).
     
     
     
    diff --git a/doc/html/man/tset.1.html b/doc/html/man/tset.1.html
    index cd112fbb..964cee63 100644
    --- a/doc/html/man/tset.1.html
    +++ b/doc/html/man/tset.1.html
    @@ -387,7 +387,7 @@
            csh(1),   sh(1),   stty(1),   curs_terminfo(3x),   tty(4),
            terminfo(5), ttys(5), environ(7)
     
    -       This describes ncurses version 6.0 (patch 20161022).
    +       This describes ncurses version 6.0 (patch 20161119).
     
     
     
    diff --git a/man/clear.1 b/man/clear.1
    index d8e24e5b..feb46859 100644
    --- a/man/clear.1
    +++ b/man/clear.1
    @@ -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            *
    @@ -26,8 +26,28 @@
     .\" 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
    @@ -36,11 +56,76 @@
     .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
    diff --git a/package/debian-mingw/changelog b/package/debian-mingw/changelog
    index fe4cc9e0..68690de8 100644
    --- a/package/debian-mingw/changelog
    +++ b/package/debian-mingw/changelog
    @@ -1,8 +1,8 @@
    -ncurses6 (6.0+20161112) unstable; urgency=low
    +ncurses6 (6.0+20161119) unstable; urgency=low
     
       * latest weekly patch
     
    - -- Thomas E. Dickey   Sat, 12 Nov 2016 10:46:51 -0500
    + -- Thomas E. Dickey   Sat, 19 Nov 2016 13:20:25 -0500
     
     ncurses6 (5.9-20131005) unstable; urgency=low
     
    diff --git a/package/debian-mingw64/changelog b/package/debian-mingw64/changelog
    index fe4cc9e0..68690de8 100644
    --- a/package/debian-mingw64/changelog
    +++ b/package/debian-mingw64/changelog
    @@ -1,8 +1,8 @@
    -ncurses6 (6.0+20161112) unstable; urgency=low
    +ncurses6 (6.0+20161119) unstable; urgency=low
     
       * latest weekly patch
     
    - -- Thomas E. Dickey   Sat, 12 Nov 2016 10:46:51 -0500
    + -- Thomas E. Dickey   Sat, 19 Nov 2016 13:20:25 -0500
     
     ncurses6 (5.9-20131005) unstable; urgency=low
     
    diff --git a/package/debian/changelog b/package/debian/changelog
    index 7e59d10f..8b8a5a64 100644
    --- a/package/debian/changelog
    +++ b/package/debian/changelog
    @@ -1,8 +1,8 @@
    -ncurses6 (6.0+20161112) unstable; urgency=low
    +ncurses6 (6.0+20161119) unstable; urgency=low
     
       * latest weekly patch
     
    - -- Thomas E. Dickey   Sat, 12 Nov 2016 10:46:51 -0500
    + -- Thomas E. Dickey   Sat, 19 Nov 2016 13:20:25 -0500
     
     ncurses6 (5.9-20120608) unstable; urgency=low
     
    diff --git a/package/mingw-ncurses.nsi b/package/mingw-ncurses.nsi
    index fe7c070e..d7352351 100644
    --- a/package/mingw-ncurses.nsi
    +++ b/package/mingw-ncurses.nsi
    @@ -1,4 +1,4 @@
    -; $Id: mingw-ncurses.nsi,v 1.184 2016/11/12 15:46:51 tom Exp $
    +; $Id: mingw-ncurses.nsi,v 1.185 2016/11/19 18:20:25 tom Exp $
     
     ; TODO add examples
     ; TODO bump ABI to 6
    @@ -10,7 +10,7 @@
     !define VERSION_MAJOR "6"
     !define VERSION_MINOR "0"
     !define VERSION_YYYY  "2016"
    -!define VERSION_MMDD  "1112"
    +!define VERSION_MMDD  "1119"
     !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
     
     !define MY_ABI   "5"
    diff --git a/package/mingw-ncurses.spec b/package/mingw-ncurses.spec
    index 797f2246..89c6bb1f 100644
    --- a/package/mingw-ncurses.spec
    +++ b/package/mingw-ncurses.spec
    @@ -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
    diff --git a/package/ncurses.spec b/package/ncurses.spec
    index 321415f8..f545574e 100644
    --- a/package/ncurses.spec
    +++ b/package/ncurses.spec
    @@ -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
    diff --git a/progs/tic.c b/progs/tic.c
    index e559d1b3..c315c276 100644
    --- a/progs/tic.c
    +++ b/progs/tic.c
    @@ -48,7 +48,7 @@
     #include 
     #include 
     
    -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 ""
     
    @@ -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);
     	    }