From 5925150381bb42a4d8c7116d62c348a7b84309f3 Mon Sep 17 00:00:00 2001 From: "Thomas E. Dickey" Date: Sun, 13 Dec 2020 01:01:12 +0000 Subject: [PATCH] ncurses 6.2 - patch 20201212 + improve manual pages for form field-types. --- NEWS | 5 +- VERSION | 2 +- dist.mk | 4 +- doc/html/man/adacurses6-config.1.html | 2 +- doc/html/man/captoinfo.1m.html | 9 +- doc/html/man/clear.1.html | 2 +- doc/html/man/form.3x.html | 33 +-- doc/html/man/form_field_validation.3x.html | 134 ++++++--- doc/html/man/form_fieldtype.3x.html | 99 ++++--- doc/html/man/form_requestname.3x.html | 15 +- doc/html/man/form_variables.3x.html | 9 +- doc/html/man/infocmp.1m.html | 5 +- doc/html/man/infotocap.1m.html | 5 +- doc/html/man/menu.3x.html | 2 +- doc/html/man/ncurses.3x.html | 98 +++---- doc/html/man/ncurses6-config.1.html | 4 +- doc/html/man/panel.3x.html | 2 +- doc/html/man/tabs.1.html | 2 +- doc/html/man/term.5.html | 184 ++++++------ doc/html/man/term.7.html | 85 +++--- doc/html/man/terminfo.5.html | 13 +- doc/html/man/tic.1m.html | 279 +++++++++--------- doc/html/man/toe.1m.html | 4 +- doc/html/man/tput.1.html | 4 +- doc/html/man/tset.1.html | 4 +- form/fld_arg.c | 4 +- form/fld_attr.c | 12 +- form/fld_info.c | 6 +- form/fld_just.c | 8 +- form/fld_link.c | 6 +- form/fld_move.c | 8 +- form/fld_opts.c | 4 +- form/fld_pad.c | 4 +- form/fld_page.c | 6 +- form/fld_stat.c | 6 +- form/fld_type.c | 4 +- form/fld_user.c | 6 +- form/form.priv.h | 4 +- form/frm_data.c | 4 +- form/frm_def.c | 68 ++--- form/frm_driver.c | 50 ++-- form/frm_opts.c | 10 +- form/frm_user.c | 6 +- form/fty_alnum.c | 10 +- form/fty_alpha.c | 10 +- form/fty_enum.c | 9 +- form/fty_generic.c | 13 +- form/fty_int.c | 13 +- form/fty_ipv4.c | 6 +- form/fty_num.c | 13 +- form/fty_regex.c | 6 +- man/form.3x | 10 +- man/form_field_validation.3x | 86 ++++-- man/form_fieldtype.3x | 80 ++++-- man/form_requestname.3x | 7 +- man/form_variables.3x | 5 +- man/manhtml.aliases | 3 +- menu/m_cursor.c | 12 +- menu/m_driver.c | 6 +- menu/m_format.c | 6 +- menu/m_global.c | 44 +-- menu/m_item_cur.c | 10 +- menu/m_item_nam.c | 6 +- menu/m_item_new.c | 13 +- menu/m_item_opt.c | 10 +- menu/m_item_top.c | 8 +- menu/m_item_use.c | 6 +- menu/m_item_val.c | 6 +- menu/m_item_vis.c | 4 +- menu/m_items.c | 10 +- menu/m_new.c | 10 +- menu/m_opts.c | 12 +- menu/m_pad.c | 8 +- menu/m_pattern.c | 6 +- menu/m_post.c | 14 +- menu/m_scale.c | 4 +- menu/m_spacing.c | 6 +- menu/m_sub.c | 6 +- menu/m_trace.c | 8 +- menu/m_userptr.c | 6 +- menu/m_win.c | 6 +- menu/menu.h | 319 ++++++++++----------- ncurses/tinfo/tinfo_driver.c | 6 +- package/debian-mingw/changelog | 4 +- package/debian-mingw64/changelog | 4 +- package/debian/changelog | 4 +- package/mingw-ncurses.nsi | 4 +- package/mingw-ncurses.spec | 2 +- package/ncurses.spec | 2 +- package/ncursest.spec | 2 +- 90 files changed, 1120 insertions(+), 946 deletions(-) diff --git a/NEWS b/NEWS index 50690bfe..599e9354 100644 --- a/NEWS +++ b/NEWS @@ -26,7 +26,7 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- --- $Id: NEWS,v 1.3603 2020/12/05 21:40:07 tom Exp $ +-- $Id: NEWS,v 1.3605 2020/12/12 20:00:21 tom Exp $ ------------------------------------------------------------------------------- This is a log of changes that ncurses has gone through since Zeyd started @@ -46,6 +46,9 @@ 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. +20201212 + + improve manual pages for form field-types. + 20201205 + amend build-fixes for gnat 10 to work with certain systems lacking gprbuild (cf: 20200627). diff --git a/VERSION b/VERSION index 77502fd2..e9f053ae 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -5:0:10 6.2 20201205 +5:0:10 6.2 20201212 diff --git a/dist.mk b/dist.mk index 778d6dc4..ff87add3 100644 --- a/dist.mk +++ b/dist.mk @@ -26,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: dist.mk,v 1.1388 2020/12/05 12:53:06 tom Exp $ +# $Id: dist.mk,v 1.1389 2020/12/12 11:43:33 tom Exp $ # Makefile for creating ncurses distributions. # # This only needs to be used directly as a makefile by developers, but @@ -38,7 +38,7 @@ SHELL = /bin/sh # These define the major/minor/patch versions of ncurses. NCURSES_MAJOR = 6 NCURSES_MINOR = 2 -NCURSES_PATCH = 20201205 +NCURSES_PATCH = 20201212 # 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 5aea7147..946f00c4 100644 --- a/doc/html/man/adacurses6-config.1.html +++ b/doc/html/man/adacurses6-config.1.html @@ -126,7 +126,7 @@

SEE ALSO

        curses(3x)
 
-       This describes ncurses version 6.2 (patch 20201205).
+       This describes ncurses version 6.2 (patch 20201212).
 
 
 
diff --git a/doc/html/man/captoinfo.1m.html b/doc/html/man/captoinfo.1m.html
index 874a5fb2..f5b9b1b1 100644
--- a/doc/html/man/captoinfo.1m.html
+++ b/doc/html/man/captoinfo.1m.html
@@ -65,7 +65,7 @@
        the  filename  or entry.  If TERMCAP is a full pathname to a file, only
        the terminal whose name is specified in the environment  variable  TERM
        is  extracted  from  that file.  If the environment variable TERMCAP is
-       not set, then the file /usr/share/terminfo is read.
+       not set, then the file /usr/local/ncurses/lib/terminfo is read.
 
        -v   print out tracing information on standard  error  as  the  program
             runs.
@@ -81,7 +81,8 @@
 
 
 

FILES

-       /usr/share/terminfo Compiled terminal description database.
+       /usr/local/ncurses/lib/terminfo
+                           Compiled terminal description database.
 
 
 

TRANSLATIONS FROM NONSTANDARD CAPABILITIES

@@ -111,8 +112,8 @@
        PD       kN     XENIX   key_npage
        PN       po     XENIX   prtr_off
        PS       pf     XENIX   prtr_on
-       PU       kP     XENIX   key_ppage
 
+       PU       kP     XENIX   key_ppage
        RT       @8     XENIX   kent
        UP       ku     XENIX   kcuu1
        KA       k;     Tek     key_f10
@@ -199,7 +200,7 @@
 

SEE ALSO

        infocmp(1m), curses(3x), terminfo(5)
 
-       This describes ncurses version 6.2 (patch 20201205).
+       This describes ncurses version 6.2 (patch 20201212).
 
 
 

AUTHOR

diff --git a/doc/html/man/clear.1.html b/doc/html/man/clear.1.html
index b94abd8b..5b4bfd35 100644
--- a/doc/html/man/clear.1.html
+++ b/doc/html/man/clear.1.html
@@ -149,7 +149,7 @@
 

SEE ALSO

        tput(1), terminfo(5)
 
-       This describes ncurses version 6.2 (patch 20201205).
+       This describes ncurses version 6.2 (patch 20201212).
 
 
 
diff --git a/doc/html/man/form.3x.html b/doc/html/man/form.3x.html
index ea12a711..320b4d73 100644
--- a/doc/html/man/form.3x.html
+++ b/doc/html/man/form.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form.3x,v 1.35 2020/03/28 19:06:28 tom Exp @
+  * @Id: form.3x,v 1.36 2020/12/12 16:34:33 tom Exp @
 -->
 
 
@@ -85,7 +85,8 @@
 
 

Routine Name Index

        The  following table lists each form routine and the name of the manual
-       page on which it is described.
+       page on which it is described.  Routines flagged with "*" are  ncurses-
+       specific, not present in SVr4.
 
        curses Routine Name     Manual Page Name
        --------------------------------------------------
@@ -111,8 +112,8 @@
        field_term              form_hook(3x)
        field_type              form_field_validation(3x)
        field_userptr           form_field_userptr(3x)
-       form_driver             form_driver(3x)
 
+       form_driver             form_driver(3x)
        form_driver_w           form_driver(3x)*
        form_fields             form_field(3x)
        form_init               form_hook(3x)
@@ -120,8 +121,8 @@
        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_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)
@@ -163,13 +164,13 @@
        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)
+       unfocus_current_field   form_page(3x)*
        unpost_form             form_post(3x)
 
 
 

RETURN VALUE

-       Routines that return pointers return NULL on error, and  set  errno  to
-       the  corresponding  error-code returned by functions returning an inte-
+       Routines  that  return  pointers return NULL on error, and set errno to
+       the corresponding error-code returned by functions returning  an  inte-
        ger.  Routines that return an integer return one of the following error
        codes:
 
@@ -210,19 +211,19 @@
 
 
 

NOTES

-       The  header  file  <form.h>  automatically  includes  the  header files
+       The header  file  <form.h>  automatically  includes  the  header  files
        <curses.h> and <eti.h>.
 
        In your library list, libform.a should be before libncurses.a; that is,
-       you  want  to  say  "-lform -lncurses", not the other way around (which
+       you want to say "-lform -lncurses", not the  other  way  around  (which
        would give you a link error when using static libraries).
 
 
 

PORTABILITY

-       These routines emulate the System V forms library.  They were not  sup-
+       These  routines emulate the System V forms library.  They were not sup-
        ported on Version 7 or BSD versions.
 
-       The  menu facility was documented in SVr4.2 in Character User Interface
+       The menu facility was documented in SVr4.2 in Character User  Interface
        Programming (UNIX SVR4.2).
 
        It is not part of X/Open Curses.
@@ -233,21 +234,21 @@
 
        o   NetBSD curses.
 
-       A few  functions  in  this  implementation  are  extensions  added  for
+       A  few  functions  in  this  implementation  are  extensions  added for
        ncurses,   but   not   provided   by   other   implementations,   e.g.,
        form_driver_w, unfocus_current_field.
 
 
 

AUTHORS

-       Juergen Pfeifer.  Manual pages and adaptation for ncurses  by  Eric  S.
+       Juergen  Pfeifer.   Manual  pages and adaptation for ncurses by Eric S.
        Raymond.
 
 
 

SEE ALSO

-       curses(3x)  and  related  pages  whose names begin "form_" for detailed
+       curses(3x) and related pages whose names  begin  "form_"  for  detailed
        descriptions of the entry points.
 
-       This describes ncurses version 6.2 (patch 20201205).
+       This describes ncurses version 6.2 (patch 20201212).
 
 
 
diff --git a/doc/html/man/form_field_validation.3x.html b/doc/html/man/form_field_validation.3x.html
index 8150c2c1..759878a2 100644
--- a/doc/html/man/form_field_validation.3x.html
+++ b/doc/html/man/form_field_validation.3x.html
@@ -27,7 +27,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_validation.3x,v 1.27 2020/10/18 00:07:45 tom Exp @
+  * @Id: form_field_validation.3x,v 1.33 2020/12/12 19:57:55 tom Exp @
 -->
 
 
@@ -53,10 +53,11 @@
 

SYNOPSIS

        #include <form.h>
 
-       int set_field_type(FIELD *field, FIELDTYPE *type, ...);
-       FIELDTYPE *field_type(const FIELD *field);
        void *field_arg(const FIELD *field);
+       FIELDTYPE *field_type(const FIELD *field);
+       int set_field_type(FIELD *field, FIELDTYPE *type, ...);
 
+       /* predefined field types */
        FIELDTYPE *TYPE_ALNUM;
        FIELDTYPE *TYPE_ALPHA;
        FIELDTYPE *TYPE_ENUM;
@@ -67,73 +68,107 @@
 
 
 

DESCRIPTION

-       The  function  set_field_type  declares  a  data  type for a given form
-       field.  This is the type checked by validation functions.   The  prede-
-       fined types are as follows:
+       By  default, no validation is done on form fields.  You can associate a
+       form with with a field type, making the form library validate input.
+
+
+

field_arg

+       Returns a pointer to the field's argument block.  The argument block is
+       an  opaque  structure  containing a copy of the arguments provided in a
+       set_field_type call.
+
+
+

field_type

+       Returns a pointer to the field type associated  with  the  form  field,
+       i.e., by calling set_field_type.
+
+
+

set_field_type

+       The  function  set_field_type associates a field type with a given form
+       field.  This is the type checked by validation functions.   Most  field
+       types  are  configurable,  via arguments which the caller provides when
+       calling set_field_type.
+
+       Several field types are predefined by the form library.
+
+
+

Predefined types

+       It is possible to set up new  programmer-defined  field  types.   Field
+       types  are implemented via the FIELDTYPE data structure, which contains
+       several pointers to functions.
+
+       See the form_fieldtype(3x) manual page, which describes functions which
+       can be used to construct a field-type dynamically.
+
+       The predefined types are as follows:
 
        TYPE_ALNUM
-            Alphanumeric data.  Requires a third int argument, a minimum field
-            width.
+            Alphanumeric data.  Required parameter:
+
+            o   a third int argument, a minimum field width.
 
        TYPE_ALPHA
-            Character data.  Requires a third int argument,  a  minimum  field
-            width.
+            Character data.  Required parameter:
+
+            o   a third int argument, a minimum field width.
 
        TYPE_ENUM
-            Accept  one  of  a  specified set of strings.  Requires additional
-            parameters:
+            Accept one of a specified set of strings.  Required parameters:
 
             o   a third (char **) argument pointing to a string list;
 
             o   a fourth int flag argument to enable case-sensitivity;
 
-            o   and a fifth int flag argument  specifying  whether  a  partial
-                match  must  be  a  unique one.  If this flag is off, a prefix
-                matches the first of any set of more than  one  list  elements
-                with that prefix.
+            o   a  fifth  int flag argument specifying whether a partial match
+                must be a unique one.  If this flag is off, a  prefix  matches
+                the  first of any set of more than one list elements with that
+                prefix.
 
-                The library copies the string list, so you may use a list that
-                lives in automatic variables on the stack.
+            The library copies the string list, so you may  use  a  list  that
+            lives in automatic variables on the stack.
 
        TYPE_INTEGER
-            Integer data, parsable to an integer by atoi(3).   Requires  addi-
-            tional parameters:
+            Integer data, parsable to an integer by atoi(3).  Required parame-
+            ters:
 
             o   a third int argument controlling the precision,
 
             o   a fourth long argument constraining minimum value,
 
-            o   and  a  fifth long constraining maximum value.  If the maximum
-                value is less than or equal to the minimum value, the range is
-                simply  ignored.   On  return,  the  field buffer is formatted
-                according to the printf format specification ".*ld", where the
-                "*" is replaced by the precision argument.
+            o   a fifth long constraining maximum value.  If the maximum value
+                is  less than or equal to the minimum value, the range is sim-
+                ply ignored.
+
+            On return, the field buffer is formatted according to  the  printf
+            format specification ".*ld", where the "*" is replaced by the pre-
+            cision argument.
 
-                For details of the precision handling see printf(3).
+            For details of the precision handling see printf(3).
 
        TYPE_NUMERIC
-            Numeric data (may have a decimal-point part).  This requires addi-
-            tional parameters:
+            Numeric data (may have a decimal-point  part).   Required  parame-
+            ters:
 
             o   a third int argument controlling the precision,
 
             o   a fourth double argument constraining minimum value,
 
             o   and a fifth double constraining maximum value.  If your system
-                supports  locales, the decimal point character must be the one
-                specified by your locale.  If the maximum value is  less  than
+                supports locales, the decimal point character must be the  one
+                specified  by  your locale.  If the maximum value is less than
                 or equal to the minimum value, the range is simply ignored.
 
-                On  return,  the  field  buffer  is formatted according to the
-                printf format specification ".*f", where the "*"  is  replaced
-                by the precision argument.
+            On return, the field buffer is formatted according to  the  printf
+            format  specification ".*f", where the "*" is replaced by the pre-
+            cision argument.
 
-                For details of the precision handling see printf(3).
+            For details of the precision handling see printf(3).
 
        TYPE_REGEXP
-            Regular  expression  data.  Requires a regular expression (char *)
-            third argument.  The data  is  valid  if  the  regular  expression
-            matches it.
+            Regular expression data.  Required parameter:
+
+            o   a third argument, a regular expression (char *)  string.   The
+                data is valid if the regular expression matches it.
 
             Regular expressions are in the format of regcomp and regexec.
 
@@ -146,18 +181,18 @@
             trailing spaces around the digits.
 
        TYPE_IPV4
-            An  Internet  Protocol  Version 4 address.  This requires no addi-
-            tional argument.  The library checks whether or not the buffer has
-            the form a.b.c.d, where a,b,c and d are numbers between 0 and 255.
-            Trailing blanks in the buffer are ignored.  The address itself  is
+            An Internet Protocol Version 4 address.  Required parameter:
+
+            o   none
+
+            The  form  library  checks  whether or not the buffer has the form
+            a.b.c.d, where a, b, c, and d are numbers in the range 0  to  255.
+            Trailing  blanks in the buffer are ignored.  The address itself is
             not validated.
 
             This is an ncurses extension; this field type may not be available
             in other curses implementations.
 
-       It is possible to set up new programmer-defined field types.   See  the
-       form_fieldtype(3x) manual page.
-
 
 

RETURN VALUE

        The functions field_type and field_arg return NULL on error.  The func-
@@ -170,7 +205,7 @@
 
 
 

SEE ALSO

-       curses(3x), form(3x), form_variables(3x).
+       curses(3x), form(3x), form_fieldtype(3x), form_variables(3x).
 
 
 

NOTES

@@ -195,7 +230,14 @@
 

DESCRIPTION

+
+

new_fieldtype

        The  function  new_fieldtype  creates  a new field type usable for data
-       validation.  You supply it with field_check, a predicate to  check  the
-       validity  of an entered data string whenever the user attempts to leave
-       a field.  The (FIELD *) argument is passed in so the validation  predi-
-       cate can see the field's buffer, sizes and other attributes; the second
-       argument is an argument-block structure, about which more below.
+       validation.  Its parameters are function pointers:
+
+       field_check
+            This function checks the validity of an entered data string  when-
+            ever the user attempts to leave a field.  It has two arguments:
+
+            o   The  (FIELD  *) argument is passed in so the validation predi-
+                cate can see the field's buffer, sizes and other attributes.
+
+            o   The second argument  is  an  argument-block  structure,  about
+                which more below.
+
+       char_check
+            This function validates input characters as they are entered.  The
+            form library passes it the character to be checked and  a  pointer
+            to an argument-block structure.
 
-       You also supply new_fieldtype with char_check, a function  to  validate
-       input  characters  as they are entered; it will be passed the character
-       to be checked and a pointer to an argument-block structure.
 
-       The function free_fieldtype frees the space allocated for a given vali-
-       dation type.
+

free_fieldtype

+       The free_fieldtype function frees the space allocated for a given vali-
+       dation type by new_fieldtype.
 
+
+

set_fieldtype_arg

        The  function  set_fieldtype_arg  associates  three  storage-management
-       functions with a field type.  The make_arg  function  is  automatically
-       applied to the list of arguments you give set_field_type when attaching
-       validation to a field; its job is to bundle  these  into  an  allocated
-       argument-block  object  which  can later be passed to validation predi-
-       cated.  The other two hook arguments should  copy  and  free  argument-
-       block  structures.   They  will  be used by the forms-driver code.  You
-       must supply the make_arg function, the other two are optional, you  may
-       supply  NULL  for  them.  In this case it is assumed that make_arg does
-       not allocate memory but simply loads the argument into a single  scalar
-       value.
+       functions with a field type:
+
+       make_arg
+            This  function  is  automatically applied to the list of arguments
+            you give set_field_type when attaching validation to a field.   It
+            stores  the  arguments in an allocated argument-block object which
+            is used when validating input.
+
+       copy_arg
+            This function may be used by applications to copy argument-blocks.
+
+       free_arg
+            Frees an argument-block structure.
 
+       You must supply the make_arg function.  The other two are optional: you
+       may  supply NULL for them.  In this case, the form library assumes that
+       make_arg does not allocate memory but simply loads the argument into  a
+       single scalar value.
+
+
+

set_fieldtype_choice

+       The  form  driver  requests  REQ_NEXT_CHOICE and REQ_PREV_CHOICE assume
+       that the possible values of a field form an ordered  set,  and  provide
+       the forms user with a way to move through the set.
+
+       The  set_fieldtype_choice  function  allows forms programmers to define
+       successor and predecessor functions for the field  type.   These  func-
+       tions  take  the field pointer and an argument-block structure as argu-
+       ments.
+
+
+

link_fieldtype

        The function link_fieldtype creates a new field type from the two given
        types.  They are connected by an logical 'OR'.
 
-       The form driver requests  REQ_NEXT_CHOICE  and  REQ_PREV_CHOICE  assume
-       that  the  possible  values of a field form an ordered set, and provide
-       the forms user with a way to move  through  the  set.   The  set_field-
-       type_choice  function  allows forms programmers to define successor and
-       predecessor functions for the field type.   These  functions  take  the
-       field pointer and an argument-block structure as arguments.
-
 
 

RETURN VALUE

        The  pointer-valued  routines  return  NULL  on  error.  They set errno
@@ -141,17 +168,13 @@
 
 
 

SEE ALSO

-       curses(3x), form(3x).
+       curses(3x), form(3x), form_field_validation(3x).
 
 
 

NOTES

        The  header  file  <form.h>  automatically  includes  the  header  file
        <curses.h>.
 
-       All  of  the  (char  *) arguments of these functions should actually be
-       (void *).  The type has been left uncorrected for strict  compatibility
-       with System V.
-
 
 

PORTABILITY

        These  routines emulate the System V forms library.  They were not sup-
@@ -170,7 +193,15 @@
 

DESCRIPTION

+
+

form_request_name

        The function form_request_name returns the printable  name  of  a  form
        request code.
+
+
+

form_request_name_by_name

        The  function  form_request_by_name  searches  in  the name-table for a
        request with the given name and returns its  request  code.   Otherwise
        E_NO_MATCH is returned.
@@ -70,6 +75,7 @@
 

RETURN VALUE

        form_request_name  returns  NULL on error and sets errno to E_BAD_ARGU-
        MENT.
+
        form_request_by_name returns E_NO_MATCH on  error.   It  does  not  set
        errno.
 
@@ -101,7 +107,12 @@
 

DESCRIPTION

        These are building blocks for the form library,  defining  fields  that
-       can  be  created  using set_fieldtype(3x).  Each provides functions for
-       field- and character-validation, according to the given datatype.
+       can  be  created using the form_fieldtype(3x) functions.  Each provides
+       functions for field- and character-validation, according to  the  given
+       datatype.
 
 
 

TYPE_ALNUM

@@ -98,7 +99,7 @@
 
 
 

PORTABILITY

-       The TYPE_IPV4 variable is an extension not provided by older  implemen-
+       The  TYPE_IPV4 variable is an extension not provided by older implemen-
        tations of the form library.
 
 
diff --git a/doc/html/man/infocmp.1m.html b/doc/html/man/infocmp.1m.html
index c0298b6f..a1934e35 100644
--- a/doc/html/man/infocmp.1m.html
+++ b/doc/html/man/infocmp.1m.html
@@ -454,7 +454,8 @@
 
 
 

FILES

-       /usr/share/terminfo Compiled terminal description database.
+       /usr/local/ncurses/lib/terminfo
+                           Compiled terminal description database.
 
 
 

HISTORY

@@ -512,7 +513,7 @@
 
        https://invisible-island.net/ncurses/tctest.html
 
-       This describes ncurses version 6.2 (patch 20201205).
+       This describes ncurses version 6.2 (patch 20201212).
 
 
 

AUTHOR

diff --git a/doc/html/man/infotocap.1m.html b/doc/html/man/infotocap.1m.html
index 5dce091e..d67f6489 100644
--- a/doc/html/man/infotocap.1m.html
+++ b/doc/html/man/infotocap.1m.html
@@ -75,7 +75,8 @@
 
 
 

FILES

-       /usr/share/terminfo Compiled terminal description database.
+       /usr/local/ncurses/lib/terminfo
+                           Compiled terminal description database.
 
 
 

NOTES

@@ -91,7 +92,7 @@
 

SEE ALSO

        curses(3x), tic(1m), infocmp(1m), terminfo(5)
 
-       This describes ncurses version 6.2 (patch 20201205).
+       This describes ncurses version 6.2 (patch 20201212).
 
 
 

AUTHOR

diff --git a/doc/html/man/menu.3x.html b/doc/html/man/menu.3x.html
index 9fe00d91..97bfb8f9 100644
--- a/doc/html/man/menu.3x.html
+++ b/doc/html/man/menu.3x.html
@@ -222,7 +222,7 @@
        curses(3x)  and  related  pages  whose names begin "menu_" for detailed
        descriptions of the entry points.
 
-       This describes ncurses version 6.2 (patch 20201205).
+       This describes ncurses version 6.2 (patch 20201212).
 
 
 
diff --git a/doc/html/man/ncurses.3x.html b/doc/html/man/ncurses.3x.html
index f811158a..692ea2a9 100644
--- a/doc/html/man/ncurses.3x.html
+++ b/doc/html/man/ncurses.3x.html
@@ -60,7 +60,7 @@
        method of updating  character  screens  with  reasonable  optimization.
        This  implementation  is  "new  curses"  (ncurses)  and is the approved
        replacement for 4.4BSD classic curses,  which  has  been  discontinued.
-       This describes ncurses version 6.2 (patch 20201205).
+       This describes ncurses version 6.2 (patch 20201212).
 
        The  ncurses  library emulates the curses library of System V Release 4
        UNIX, and XPG4 (X/Open Portability Guide) curses  (also  known  as  XSI
@@ -176,7 +176,7 @@
        standard  place.  For example, if TERM is set to att4424, then the com-
        piled terminal definition is found in
 
-           /usr/share/terminfo/a/att4424.
+           /usr/local/ncurses/lib/terminfo/a/att4424.
 
        (The a is copied from the first letter of att4424 to avoid creation  of
        huge  directories.)   However,  if  TERMINFO  is  set to $HOME/myterms,
@@ -186,10 +186,10 @@
 
        and if that fails, it then checks
 
-           /usr/share/terminfo/a/att4424.
+           /usr/local/ncurses/lib/terminfo/a/att4424.
 
        This is useful for developing experimental definitions  or  when  write
-       permission in /usr/share/terminfo is not available.
+       permission in /usr/local/ncurses/lib/terminfo is not available.
 
        The integer variables LINES and COLS are defined in <curses.h> and will
        be filled in by initscr with the size of  the  screen.   The  constants
@@ -1108,13 +1108,14 @@
              o   /usr/local/ncurses/share/terminfo:/usr/share/terminfo (corre-
                  sponding to the TERMINFO_DIRS variable)
 
-             o   /usr/share/terminfo (corresponding to the TERMINFO variable)
+             o   /usr/local/ncurses/lib/terminfo (corresponding  to  the  TER-
+                 MINFO variable)
 
 
 

TERMINFO_DIRS

-       Specifies a list of locations  to  search  for  terminal  descriptions.
-       Each  location  in  the list is a terminal database as described in the
-       section on the TERMINFO variable.  The  list  is  separated  by  colons
+       Specifies  a  list  of  locations  to search for terminal descriptions.
+       Each location in the list is a terminal database as  described  in  the
+       section  on  the  TERMINFO  variable.   The list is separated by colons
        (i.e., ":") on Unix, semicolons on OS/2 EMX.
 
        There is no corresponding feature in System V terminfo; it is an exten-
@@ -1122,11 +1123,11 @@
 
 
 

TERMPATH

-       If TERMCAP does not hold a file name then ncurses checks  the  TERMPATH
-       environment  variable.  This is a list of filenames separated by spaces
+       If  TERMCAP  does not hold a file name then ncurses checks the TERMPATH
+       environment variable.  This is a list of filenames separated by  spaces
        or colons (i.e., ":") on Unix, semicolons on OS/2 EMX.
 
-       If the TERMPATH environment variable is not set, ncurses looks  in  the
+       If  the  TERMPATH environment variable is not set, ncurses looks in the
        files
 
            /etc/termcap, /usr/share/misc/termcap and $HOME/.termcap,
@@ -1134,7 +1135,7 @@
        in that order.
 
        The library may be configured to disregard the following variables when
-       the current user is the superuser (root), or if  the  application  uses
+       the  current  user  is the superuser (root), or if the application uses
        setuid or setgid permissions:
 
            $TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME.
@@ -1142,8 +1143,8 @@
 
 

ALTERNATE CONFIGURATIONS

        Several different configurations are possible, depending on the config-
-       ure script options used when building ncurses.  There are  a  few  main
-       options  whose  effects are visible to the applications developer using
+       ure  script  options  used when building ncurses.  There are a few main
+       options whose effects are visible to the applications  developer  using
        ncurses:
 
        --disable-overwrite
@@ -1151,19 +1152,19 @@
 
                 #include <curses.h>
 
-            This option is used to avoid filename conflicts  when  ncurses  is
+            This  option  is  used to avoid filename conflicts when ncurses is
             not the main implementation of curses of the computer.  If ncurses
-            is installed disabling overwrite, it puts its headers in a  subdi-
+            is  installed disabling overwrite, it puts its headers in a subdi-
             rectory, e.g.,
 
                 #include <ncurses/curses.h>
 
-            It  also  omits  a  symbolic  link  which  would  allow you to use
+            It also omits a  symbolic  link  which  would  allow  you  to  use
             -lcurses to build executables.
 
        --enable-widec
-            The configure script  renames  the  library  and  (if  the  --dis-
-            able-overwrite  option is used) puts the header files in a differ-
+            The  configure  script  renames  the  library  and  (if the --dis-
+            able-overwrite option is used) puts the header files in a  differ-
             ent subdirectory.  All of the library names have a "w" appended to
             them, i.e., instead of
 
@@ -1173,45 +1174,45 @@
 
                 -lncursesw
 
-            You  must  also  enable  the wide-character features in the header
-            file when compiling for the  wide-character  library  to  use  the
-            extended  (wide-character)  functions.   The  symbol which enables
+            You must also enable the wide-character  features  in  the  header
+            file  when  compiling  for  the  wide-character library to use the
+            extended (wide-character) functions.   The  symbol  which  enables
             these features has changed since XSI Curses, Issue 4:
 
-            o   Originally, the wide-character  feature  required  the  symbol
+            o   Originally,  the  wide-character  feature  required the symbol
                 _XOPEN_SOURCE_EXTENDED  but  that  was  only  valid  for  XPG4
                 (1996).
 
-            o   Later, that was deemed conflicting with _XOPEN_SOURCE  defined
+            o   Later,  that was deemed conflicting with _XOPEN_SOURCE defined
                 to 500.
 
-            o   As  of  mid-2018,  none of the features in this implementation
-                require a _XOPEN_SOURCE feature greater  than  600.   However,
+            o   As of mid-2018, none of the features  in  this  implementation
+                require  a  _XOPEN_SOURCE  feature greater than 600.  However,
                 X/Open Curses, Issue 7 (2009) recommends defining it to 700.
 
-            o   Alternatively,   you   can  enable  the  feature  by  defining
-                NCURSES_WIDECHAR with the caveat that some other  header  file
-                than  curses.h  may require a specific value for _XOPEN_SOURCE
+            o   Alternatively,  you  can  enable  the  feature   by   defining
+                NCURSES_WIDECHAR  with  the caveat that some other header file
+                than curses.h may require a specific value  for  _XOPEN_SOURCE
                 (or a system-specific symbol).
 
-            The curses.h  file  which  is  installed  for  the  wide-character
-            library  is  designed  to  be compatible with the normal library's
-            header.  Only the size of the WINDOW structure differs,  and  very
+            The  curses.h  file  which  is  installed  for  the wide-character
+            library is designed to be compatible  with  the  normal  library's
+            header.   Only  the size of the WINDOW structure differs, and very
             few applications require more than a pointer to WINDOWs.
 
-            If  the headers are installed allowing overwrite, the wide-charac-
-            ter library's headers should be installed last, to allow  applica-
-            tions  to be built using either library from the same set of head-
+            If the headers are installed allowing overwrite, the  wide-charac-
+            ter  library's headers should be installed last, to allow applica-
+            tions to be built using either library from the same set of  head-
             ers.
 
        --with-pthread
-            The configure script renames the  library.   All  of  the  library
-            names  have  a  "t"  appended  to  them  (before  any "w" added by
+            The  configure  script  renames  the  library.  All of the library
+            names have a "t"  appended  to  them  (before  any  "w"  added  by
             --enable-widec).
 
             The global variables such as LINES are replaced by macros to allow
             read-only access.  At the same time, setter-functions are provided
-            to set these values.  Some applications  (very  few)  may  require
+            to  set  these  values.   Some applications (very few) may require
             changes to work with this convention.
 
        --with-shared
@@ -1221,17 +1222,17 @@
        --with-debug
 
        --with-profile
-            The  shared and normal (static) library names differ by their suf-
-            fixes, e.g., libncurses.so and libncurses.a.  The debug  and  pro-
-            filing  libraries  add a "_g" and a "_p" to the root names respec-
+            The shared and normal (static) library names differ by their  suf-
+            fixes,  e.g.,  libncurses.so and libncurses.a.  The debug and pro-
+            filing libraries add a "_g" and a "_p" to the root  names  respec-
             tively, e.g., libncurses_g.a and libncurses_p.a.
 
        --with-termlib
-            Low-level functions which do not depend upon whether  the  library
+            Low-level  functions  which do not depend upon whether the library
             supports wide-characters, are provided in the tinfo library.
 
-            By  doing  this, it is possible to share the tinfo library between
-            wide/normal configurations as well  as  reduce  the  size  of  the
+            By doing this, it is possible to share the tinfo  library  between
+            wide/normal  configurations  as  well  as  reduce  the size of the
             library when only low-level functions are needed.
 
             Those functions are described in these pages:
@@ -1251,16 +1252,17 @@
             o   curs_util(3x) - miscellaneous curses utility routines
 
        --with-trace
-            The  trace  function normally resides in the debug library, but it
+            The trace function normally resides in the debug library,  but  it
             is sometimes useful to configure this in the shared library.  Con-
-            figure  scripts  should  check for the function's existence rather
+            figure scripts should check for the  function's  existence  rather
             than assuming it is always in the debug library.
 
 
 

FILES

        /usr/share/tabset
-            directory containing initialization files for the  terminal  capa-
-            bility database /usr/share/terminfo terminal capability database
+            directory  containing  initialization files for the terminal capa-
+            bility database /usr/local/ncurses/lib/terminfo terminal  capabil-
+            ity database
 
 
 

SEE ALSO

diff --git a/doc/html/man/ncurses6-config.1.html b/doc/html/man/ncurses6-config.1.html
index 085f3d53..8db75851 100644
--- a/doc/html/man/ncurses6-config.1.html
+++ b/doc/html/man/ncurses6-config.1.html
@@ -97,7 +97,7 @@
 
        --terminfo
               echos the $TERMINFO terminfo database path, e.g.,
-              /usr/share/terminfo
+              /usr/local/ncurses/lib/terminfo
 
        --terminfo-dirs
               echos the $TERMINFO_DIRS directory list, e.g.,
@@ -113,7 +113,7 @@
 

SEE ALSO

        curses(3x)
 
-       This describes ncurses version 6.2 (patch 20201205).
+       This describes ncurses version 6.2 (patch 20201212).
 
 
 
diff --git a/doc/html/man/panel.3x.html b/doc/html/man/panel.3x.html
index 8d029f75..1ea51a03 100644
--- a/doc/html/man/panel.3x.html
+++ b/doc/html/man/panel.3x.html
@@ -281,7 +281,7 @@
 

SEE ALSO

        curses(3x), curs_variables(3x),
 
-       This describes ncurses version 6.2 (patch 20201205).
+       This describes ncurses version 6.2 (patch 20201212).
 
 
 

AUTHOR

diff --git a/doc/html/man/tabs.1.html b/doc/html/man/tabs.1.html
index 63e453ee..eef9befc 100644
--- a/doc/html/man/tabs.1.html
+++ b/doc/html/man/tabs.1.html
@@ -206,7 +206,7 @@
 

SEE ALSO

        tset(1), infocmp(1m), curses(3x), terminfo(5).
 
-       This describes ncurses version 6.2 (patch 20201205).
+       This describes ncurses version 6.2 (patch 20201212).
 
 
 
diff --git a/doc/html/man/term.5.html b/doc/html/man/term.5.html
index 60a9d223..eaa8b4a2 100644
--- a/doc/html/man/term.5.html
+++ b/doc/html/man/term.5.html
@@ -58,37 +58,38 @@
 
 

STORAGE LOCATION

        Compiled   terminfo   descriptions   are  placed  under  the  directory
-       /usr/share/terminfo.  Two configurations are supported  (when  building
-       the ncurses libraries):
+       /usr/local/ncurses/lib/terminfo.   Two  configurations  are   supported
+       (when building the ncurses libraries):
 
        directory tree
             A two-level scheme is used to avoid a linear search of a huge UNIX
-            system directory: /usr/share/terminfo/c/name  where  name  is  the
-            name of the terminal, and c is the first character of name.  Thus,
-            act4 can be found in the  file  /usr/share/terminfo/a/act4.   Syn-
-            onyms  for  the same terminal are implemented by multiple links to
-            the same compiled file.
+            system  directory:  /usr/local/ncurses/lib/terminfo/c/name   where
+            name  is the name of the terminal, and c is the first character of
+            name.     Thus,    act4    can    be    found    in    the    file
+            /usr/local/ncurses/lib/terminfo/a/act4.   Synonyms  for  the  same
+            terminal are implemented by multiple links to  the  same  compiled
+            file.
 
        hashed database
             Using Berkeley database, two types of records are stored: the ter-
-            minfo  data  in the same format as stored in a directory tree with
-            the terminfo's primary name as a key, and records containing  only
+            minfo data in the same format as stored in a directory  tree  with
+            the  terminfo's primary name as a key, and records containing only
             aliases pointing to the primary name.
 
-            If  built  to  write hashed databases, ncurses can still read ter-
-            minfo databases organized as a directory tree,  but  cannot  write
-            entries  into  the  directory  tree.   It  can  write (or rewrite)
+            If built to write hashed databases, ncurses can  still  read  ter-
+            minfo  databases  organized  as a directory tree, but cannot write
+            entries into the  directory  tree.   It  can  write  (or  rewrite)
             entries in the hashed database.
 
-            ncurses distinguishes the two  cases  in  the  TERMINFO  and  TER-
-            MINFO_DIRS  environment  variable by assuming a directory tree for
+            ncurses  distinguishes  the  two  cases  in  the TERMINFO and TER-
+            MINFO_DIRS environment variable by assuming a directory  tree  for
             entries that correspond to an existing directory, and hashed data-
             base otherwise.
 
 
 

LEGACY STORAGE FORMAT

        The format has been chosen so that it will be the same on all hardware.
-       An 8 or more bit byte is assumed, but no assumptions about byte  order-
+       An  8 or more bit byte is assumed, but no assumptions about byte order-
        ing or sign extension are made.
 
        The compiled file is created with the tic program, and read by the rou-
@@ -106,7 +107,7 @@
 
             f) string table.
 
-       The header section begins the file.  This section  contains  six  short
+       The  header  section  begins the file.  This section contains six short
        integers in the format described below.  These integers are
 
             (1) the magic number (octal 0432);
@@ -121,32 +122,32 @@
 
             (6) the size, in bytes, of the string table.
 
-       The  capabilities  in  the boolean flags, numbers, and strings sections
+       The capabilities in the boolean flags, numbers,  and  strings  sections
        are in the same order as the file <term.h>.
 
-       Short integers are signed, in the range  -32768  to  32767.   They  are
-       stored  as two 8-bit bytes.  The first byte contains the least signifi-
+       Short  integers  are  signed,  in  the range -32768 to 32767.  They are
+       stored as two 8-bit bytes.  The first byte contains the least  signifi-
        cant 8 bits of the value, and the second byte contains the most signif-
        icant 8 bits.  (Thus, the value represented is 256*second+first.)  This
        format corresponds to the hardware of the VAX and PDP-11 (that is, lit-
-       tle-endian  machines).   Machines where this does not correspond to the
-       hardware must read the integers as two bytes and  compute  the  little-
+       tle-endian machines).  Machines where this does not correspond  to  the
+       hardware  must  read  the integers as two bytes and compute the little-
        endian value.
 
        Numbers in a terminal description, whether they are entries in the num-
-       bers or strings  table,  are  positive  integers.   Boolean  flags  are
-       treated  as  positive  one-byte integers.  In each case, those positive
-       integers represent a terminal capability.  The  terminal  compiler  tic
-       uses  negative  integers  to handle the cases where a capability is not
+       bers  or  strings  table,  are  positive  integers.   Boolean flags are
+       treated as positive one-byte integers.  In each  case,  those  positive
+       integers  represent  a  terminal capability.  The terminal compiler tic
+       uses negative integers to handle the cases where a  capability  is  not
        available:
 
-       o   If a capability is absent from this terminal, tic stores  a  -1  in
+       o   If  a  capability  is absent from this terminal, tic stores a -1 in
            the corresponding table.
 
            The integer value -1 is represented by two bytes 0377, 0377.
            Absent boolean values are represented by the byte 0 (false).
 
-       o   If  a capability has been canceled from this terminal, tic stores a
+       o   If a capability has been canceled from this terminal, tic stores  a
            -2 in the corresponding table.
 
            The integer value -2 is represented by two bytes 0377, 0376.
@@ -154,49 +155,49 @@
 
        o   Other negative values are illegal.
 
-       The terminal names section comes after the  header.   It  contains  the
-       first  line  of the terminfo description, listing the various names for
-       the terminal, separated by the "|" character.  The terminal names  sec-
+       The  terminal  names  section  comes after the header.  It contains the
+       first line of the terminfo description, listing the various  names  for
+       the  terminal, separated by the "|" character.  The terminal names sec-
        tion is terminated with an ASCII NUL character.
 
        The boolean flags section has one byte for each flag.  Boolean capabil-
        ities are either 1 or 0 (true or false) according to whether the termi-
        nal supports the given capability or not.
 
-       Between  the  boolean flags section and the number section, a null byte
-       will be inserted, if necessary,  to  ensure  that  the  number  section
-       begins  on  an even byte This is a relic of the PDP-11's word-addressed
-       architecture, originally designed to avoid traps induced by  addressing
-       a  word  on  an odd byte boundary.  All short integers are aligned on a
+       Between the boolean flags section and the number section, a  null  byte
+       will  be  inserted,  if  necessary,  to  ensure that the number section
+       begins on an even byte This is a relic of the  PDP-11's  word-addressed
+       architecture,  originally designed to avoid traps induced by addressing
+       a word on an odd byte boundary.  All short integers are  aligned  on  a
        short word boundary.
 
-       The numbers section is similar to  the  boolean  flags  section.   Each
-       capability  takes  up two bytes, and is stored as a little-endian short
+       The  numbers  section  is  similar  to the boolean flags section.  Each
+       capability takes up two bytes, and is stored as a  little-endian  short
        integer.
 
-       The strings section is also similar.  Each capability is  stored  as  a
+       The  strings  section  is also similar.  Each capability is stored as a
        short integer.  The capability value is an index into the string table.
 
        The string table is the last section.  It contains all of the values of
-       string capabilities referenced in the strings section.  Each string  is
+       string  capabilities referenced in the strings section.  Each string is
        null-terminated.  Special characters in ^X or \c notation are stored in
-       their interpreted  form,  not  the  printing  representation.   Padding
-       information  $<nn>  and  parameter  information %x are stored intact in
+       their  interpreted  form,  not  the  printing  representation.  Padding
+       information $<nn> and parameter information %x  are  stored  intact  in
        uninterpreted form.
 
 
 

EXTENDED STORAGE FORMAT

        The previous section describes the conventional terminfo binary format.
-       With  some  minor variations of the offsets (see PORTABILITY), the same
-       binary format is used in all modern UNIX systems.  Each system  uses  a
+       With some minor variations of the offsets (see PORTABILITY),  the  same
+       binary  format  is used in all modern UNIX systems.  Each system uses a
        predefined set of boolean, number or string capabilities.
 
        The ncurses libraries and applications support extended terminfo binary
-       format, allowing users to define capabilities which are loaded at  run-
+       format,  allowing users to define capabilities which are loaded at run-
        time.  This extension is made possible by using the fact that the other
-       implementations stop reading the terminfo data when they  have  reached
-       the  end of the size given in the header.  ncurses checks the size, and
-       if it exceeds that due to  the  predefined  data,  continues  to  parse
+       implementations  stop  reading the terminfo data when they have reached
+       the end of the size given in the header.  ncurses checks the size,  and
+       if  it  exceeds  that  due  to  the predefined data, continues to parse
        according to its own scheme.
 
        First, it reads the extended header (5 short integers):
@@ -211,96 +212,96 @@
 
             (5)  size of the extended string table in bytes
 
-       The  count-  and  size-values for the extended string table include the
+       The count- and size-values for the extended string  table  include  the
        extended capability names as well as extended capability values.
 
        Using the counts and sizes, ncurses allocates arrays and reads data for
        the extended capabilities in the same order as the header information.
 
-       The  extended  string  table  contains  values for string capabilities.
-       After the end of these values, it contains the names for  each  of  the
-       extended  capabilities  in  order,  e.g.,  booleans,  then  numbers and
+       The extended string table  contains  values  for  string  capabilities.
+       After  the  end  of these values, it contains the names for each of the
+       extended capabilities  in  order,  e.g.,  booleans,  then  numbers  and
        finally strings.
 
-       Applications which manipulate terminal data  can  use  the  definitions
-       described  in  term_variables(3x)  which  associate the long capability
+       Applications  which  manipulate  terminal  data can use the definitions
+       described in term_variables(3x) which  associate  the  long  capability
        names with members of a TERMTYPE structure.
 
 
 

EXTENDED NUMBER FORMAT

        On occasion, 16-bit signed integers are not large enough.  With ncurses
-       6.1,  a new format was introduced by making a few changes to the legacy
+       6.1, a new format was introduced by making a few changes to the  legacy
        format:
 
        o   a different magic number (octal 01036)
 
-       o   changing the type for the number array from signed 16-bit  integers
+       o   changing  the type for the number array from signed 16-bit integers
            to signed 32-bit integers.
 
-       To  maintain  compatibility,  the library presents the same data struc-
+       To maintain compatibility, the library presents the  same  data  struc-
        tures to direct users of the TERMTYPE structure as in previous formats.
-       However,  that  cannot  provide callers with the extended numbers.  The
-       library uses a similar but hidden data structure TERMTYPE2  to  provide
+       However, that cannot provide callers with the  extended  numbers.   The
+       library  uses  a similar but hidden data structure TERMTYPE2 to provide
        data for the terminfo functions.
 
 
 

PORTABILITY

 
 

setupterm

-       Note  that  it  is  possible for setupterm to expect a different set of
-       capabilities than are actually present in the file.  Either  the  data-
+       Note that it is possible for setupterm to expect  a  different  set  of
+       capabilities  than  are actually present in the file.  Either the data-
        base may have been updated since setupterm has been recompiled (result-
-       ing in extra unrecognized entries in the file) or the program may  have
-       been  recompiled more recently than the database was updated (resulting
-       in missing entries).  The routine setupterm must be prepared  for  both
-       possibilities  - this is why the numbers and sizes are included.  Also,
-       new capabilities must always be added at the end of the lists of  bool-
+       ing  in extra unrecognized entries in the file) or the program may have
+       been recompiled more recently than the database was updated  (resulting
+       in  missing  entries).  The routine setupterm must be prepared for both
+       possibilities - this is why the numbers and sizes are included.   Also,
+       new  capabilities must always be added at the end of the lists of bool-
        ean, number, and string capabilities.
 
 
 

Binary format

-       X/Open  Curses  does  not  specify  a format for the terminfo database.
-       UNIX System V curses used a directory-tree of  binary  files,  one  per
+       X/Open Curses does not specify a  format  for  the  terminfo  database.
+       UNIX  System  V  curses  used a directory-tree of binary files, one per
        terminal description.
 
-       Despite  the consistent use of little-endian for numbers and the other-
-       wise self-describing format, it is not wise to count on portability  of
-       binary  terminfo entries between commercial UNIX versions.  The problem
-       is that there are at least three versions  of  terminfo  (under  HP-UX,
-       AIX,  and  OSF/1) which diverged from System V terminfo after SVr1, and
-       have added extension capabilities to the  string  table  that  (in  the
-       binary  format)  collide  with System V and XSI Curses extensions.  See
-       terminfo(5) for detailed discussion of  terminfo  source  compatibility
+       Despite the consistent use of little-endian for numbers and the  other-
+       wise  self-describing format, it is not wise to count on portability of
+       binary terminfo entries between commercial UNIX versions.  The  problem
+       is  that  there  are  at least three versions of terminfo (under HP-UX,
+       AIX, and OSF/1) which diverged from System V terminfo after  SVr1,  and
+       have  added  extension  capabilities  to  the string table that (in the
+       binary format) collide with System V and XSI  Curses  extensions.   See
+       terminfo(5)  for  detailed  discussion of terminfo source compatibility
        issues.
 
-       This  implementation  is by default compatible with the binary terminfo
-       format used by Solaris curses, except in a few less-used details  where
-       it  was  found that the latter did not match X/Open Curses.  The format
+       This implementation is by default compatible with the  binary  terminfo
+       format  used by Solaris curses, except in a few less-used details where
+       it was found that the latter did not match X/Open Curses.   The  format
        used by the other Unix versions can be matched by building ncurses with
        different configuration options.
 
 
 

Magic codes

-       The  magic  number  in a binary terminfo file is the first 16-bits (two
-       bytes).  Besides making it more reliable for the library to check  that
-       a  file  is terminfo, utilities such as file also use that to tell what
-       the file-format is.  System V defined more than one magic number,  with
+       The magic number in a binary terminfo file is the  first  16-bits  (two
+       bytes).   Besides making it more reliable for the library to check that
+       a file is terminfo, utilities such as file also use that to  tell  what
+       the  file-format is.  System V defined more than one magic number, with
        0433, 0435 as screen-dumps (see scr_dump(5)).  This implementation uses
-       01036 as a continuation of that sequence, but with  a  different  high-
+       01036  as  a  continuation of that sequence, but with a different high-
        order byte to avoid confusion.
 
 
 

The TERMTYPE structure

        Direct access to the TERMTYPE structure is provided for legacy applica-
-       tions.  Portable applications should  use  the  tigetflag  and  related
+       tions.   Portable  applications  should  use  the tigetflag and related
        functions described in curs_terminfo(3x) for reading terminal capabili-
        ties.
 
 
 

Mixed-case terminal names

-       A small number of terminal descriptions  use  uppercase  characters  in
-       their  names.   If  the  underlying  filesystem  ignores the difference
-       between uppercase and lowercase, ncurses represents the "first  charac-
+       A  small  number  of  terminal descriptions use uppercase characters in
+       their names.  If  the  underlying  filesystem  ignores  the  difference
+       between  uppercase and lowercase, ncurses represents the "first charac-
        ter" of the terminal name used as the intermediate level of a directory
        tree in (two-character) hexadecimal form.
 
@@ -347,22 +348,23 @@
 

LIMITS

        Some limitations:
 
-       o   total  compiled entries cannot exceed 4096 bytes in the legacy for-
+       o   total compiled entries cannot exceed 4096 bytes in the legacy  for-
            mat.
 
-       o   total compiled entries cannot exceed 32768 bytes  in  the  extended
+       o   total  compiled  entries  cannot exceed 32768 bytes in the extended
            format.
 
        o   the name field cannot exceed 128 bytes.
 
-       Compiled  entries  are  limited to 32768 bytes because offsets into the
+       Compiled entries are limited to 32768 bytes because  offsets  into  the
        strings table use two-byte integers.  The legacy format could have sup-
        ported 32768-byte entries, but was limited a virtual memory page's 4096
        bytes.
 
 
 

FILES

-       /usr/share/terminfo/*/*  compiled terminal capability data base
+       /usr/local/ncurses/lib/terminfo/*/*     compiled   terminal  capability
+       data base
 
 
 

SEE ALSO

diff --git a/doc/html/man/term.7.html b/doc/html/man/term.7.html
index a9671416..25653c5d 100644
--- a/doc/html/man/term.7.html
+++ b/doc/html/man/term.7.html
@@ -85,8 +85,8 @@
        line.
 
        Terminal type descriptions are  stored  as  files  of  capability  data
-       underneath /usr/share/terminfo.  To browse a list of all terminal names
-       recognized by the system, do
+       underneath  /usr/local/ncurses/lib/terminfo.   To  browse a list of all
+       terminal names recognized by the system, do
 
             toe | more
 
@@ -98,61 +98,62 @@
             infocmp entry_name
 
        where  entry_name  is the name of the type you wish to examine (and the
-       name of its capability file  the  subdirectory  of  /usr/share/terminfo
-       named  for  its first letter).  This command dumps a capability file in
-       the text format described by terminfo(5).
+       name    of    its    capability    file     the     subdirectory     of
+       /usr/local/ncurses/lib/terminfo named for its first letter).  This com-
+       mand dumps a capability file in  the  text  format  described  by  ter-
+       minfo(5).
 
-       The first line of a terminfo(5) description gives the  names  by  which
-       terminfo  knows a terminal, separated by "|" (pipe-bar) characters with
+       The  first  line  of a terminfo(5) description gives the names by which
+       terminfo knows a terminal, separated by "|" (pipe-bar) characters  with
        the last name field terminated by a comma.  The first name field is the
        type's primary name, and is the one to use when setting TERM.  The last
-       name field (if distinct from the first) is actually  a  description  of
-       the  terminal  type  (it  may contain blanks; the others must be single
-       words).  Name fields between  the  first  and  last  (if  present)  are
+       name  field  (if  distinct from the first) is actually a description of
+       the terminal type (it may contain blanks; the  others  must  be  single
+       words).   Name  fields  between  the  first  and  last (if present) are
        aliases for the terminal, usually historical names retained for compat-
        ibility.
 
-       There are some conventions for how to  choose  terminal  primary  names
-       that  help  keep  them  informative and unique.  Here is a step-by-step
+       There  are  some  conventions  for how to choose terminal primary names
+       that help keep them informative and unique.   Here  is  a  step-by-step
        guide to naming terminals that also explains how to parse them:
 
-       First, choose a root name.  The root will consist of a lower-case  let-
-       ter  followed by up to seven lower-case letters or digits.  You need to
+       First,  choose a root name.  The root will consist of a lower-case let-
+       ter followed by up to seven lower-case letters or digits.  You need  to
        avoid using punctuation characters in root names, because they are used
-       and  interpreted  as filenames and shell meta-characters (such as !, $,
+       and interpreted as filenames and shell meta-characters (such as  !,  $,
        *, ?, etc.) embedded in them may cause odd and unhelpful behavior.  The
-       slash  (/),  or any other character that may be interpreted by anyone's
-       file system (\, $, [, ]), is especially dangerous  (terminfo  is  plat-
-       form-independent,  and  choosing  names  with  special characters could
-       someday make life difficult for users of a future port).  The  dot  (.)
-       character  is  relatively safe as long as there is at most one per root
+       slash (/), or any other character that may be interpreted  by  anyone's
+       file  system  (\,  $, [, ]), is especially dangerous (terminfo is plat-
+       form-independent, and choosing  names  with  special  characters  could
+       someday  make  life difficult for users of a future port).  The dot (.)
+       character is relatively safe as long as there is at most one  per  root
        name; some historical terminfo names use it.
 
-       The root name for a terminal or workstation console type should  almost
-       always  begin  with a vendor prefix (such as hp for Hewlett-Packard, wy
-       for Wyse, or att for AT&T terminals), or a common name of the  terminal
-       line  (vt  for  the  VT  series  of  terminals from DEC, or sun for Sun
-       Microsystems workstation  consoles,  or  regent  for  the  ADDS  Regent
-       series.   You  can  list  the  terminfo  tree  to see what prefixes are
-       already in common use.  The root name prefix should  be  followed  when
+       The  root name for a terminal or workstation console type should almost
+       always begin with a vendor prefix (such as hp for  Hewlett-Packard,  wy
+       for  Wyse, or att for AT&T terminals), or a common name of the terminal
+       line (vt for the VT series of  terminals  from  DEC,  or  sun  for  Sun
+       Microsystems  workstation  consoles,  or  regent  for  the  ADDS Regent
+       series.  You can list the  terminfo  tree  to  see  what  prefixes  are
+       already  in  common  use.  The root name prefix should be followed when
        appropriate by a model number; thus vt100, hp2621, wy50.
 
-       The  root  name for a PC-Unix console type should be the OS name, i.e.,
-       linux, bsdos, freebsd, netbsd.  It should not be console or  any  other
+       The root name for a PC-Unix console type should be the OS  name,  i.e.,
+       linux,  bsdos,  freebsd, netbsd.  It should not be console or any other
        generic that might cause confusion in a multi-platform environment!  If
-       a model number follows, it should indicate either the OS release  level
+       a  model number follows, it should indicate either the OS release level
        or the console driver release level.
 
-       The  root name for a terminal emulator (assuming it does not fit one of
+       The root name for a terminal emulator (assuming it does not fit one  of
        the standard ANSI or vt100 types) should be the program name or a read-
        ily recognizable abbreviation of it (i.e., versaterm, ctrm).
 
-       Following  the  root name, you may add any reasonable number of hyphen-
+       Following the root name, you may add any reasonable number  of  hyphen-
        separated feature suffixes.
 
        2p   Has two pages of memory.  Likewise 4p, 8p, etc.
 
-       mc   Magic-cookie.  Some terminals (notably older Wyses) can only  sup-
+       mc   Magic-cookie.   Some terminals (notably older Wyses) can only sup-
             port one attribute without magic-cookie lossage.  Their base entry
             is usually paired with another that has this suffix and uses magic
             cookies to support multiple attributes.
@@ -161,7 +162,7 @@
 
        -m   Mono mode - suppress color support.
 
-       -na  No  arrow  keys  -  termcap  ignores arrow keys which are actually
+       -na  No arrow keys - termcap ignores  arrow  keys  which  are  actually
             there on the terminal, so the user can use the arrow keys locally.
 
        -nam No auto-margin - suppress am capability.
@@ -180,18 +181,18 @@
 
        -w   Wide; terminal is in 132-column mode.
 
-       Conventionally, if your terminal type is a variant intended to  specify
-       a  line  height,  that  suffix should go first.  So, for a hypothetical
-       FuBarCo model 2317 terminal in 30-line mode with  reverse  video,  best
+       Conventionally,  if your terminal type is a variant intended to specify
+       a line height, that suffix should go first.   So,  for  a  hypothetical
+       FuBarCo  model  2317  terminal in 30-line mode with reverse video, best
        form would be fubar-30-rv (rather than, say, "fubar-rv-30").
 
-       Terminal  types  that are written not as standalone entries, but rather
-       as components to be plugged into other entries  via  use  capabilities,
+       Terminal types that are written not as standalone entries,  but  rather
+       as  components  to  be plugged into other entries via use capabilities,
        are distinguished by using embedded plus signs rather than dashes.
 
        Commands which use a terminal type to control display often accept a -T
-       option that accepts a terminal name  argument.   Such  programs  should
-       fall  back on the TERM environment variable when no -T option is speci-
+       option  that  accepts  a  terminal name argument.  Such programs should
+       fall back on the TERM environment variable when no -T option is  speci-
        fied.
 
 
@@ -201,7 +202,7 @@
 
 
 

FILES

-       /usr/share/terminfo/?/*
+       /usr/local/ncurses/lib/terminfo/?/*
             compiled terminal capability data base
 
        /etc/inittab
diff --git a/doc/html/man/terminfo.5.html b/doc/html/man/terminfo.5.html
index 21945f26..26169c13 100644
--- a/doc/html/man/terminfo.5.html
+++ b/doc/html/man/terminfo.5.html
@@ -91,7 +91,7 @@
 
 
 

SYNOPSIS

-       /usr/share/terminfo/*/*
+       /usr/local/ncurses/lib/terminfo/*/*
 
 
 

DESCRIPTION

@@ -105,7 +105,7 @@
        have, by specifying how to perform screen operations, and by specifying
        padding requirements and initialization sequences.
 
-       This manual describes ncurses version 6.2 (patch 20201205).
+       This manual describes ncurses version 6.2 (patch 20201212).
 
 
 

Terminfo Entry Syntax

@@ -1317,15 +1317,15 @@
 
            An empty directory name (i.e., if the variable begins or ends  with
            a  colon, or contains adjacent colons) is interpreted as the system
-           location /usr/share/terminfo.
+           location /usr/local/ncurses/lib/terminfo.
 
        o   Finally, ncurses searches these compiled-in locations:
 
            o   a   list    of    directories    (/usr/local/ncurses/share/ter-
                minfo:/usr/share/terminfo), and
 
-           o   the  system  terminfo  directory, /usr/share/terminfo (the com-
-               piled-in default).
+           o   the  system terminfo directory, /usr/local/ncurses/lib/terminfo
+               (the compiled-in default).
 
 
 

Preparing Descriptions

@@ -2487,7 +2487,8 @@
 
 
 

FILES

-       /usr/share/terminfo/?/*  files containing terminal descriptions
+       /usr/local/ncurses/lib/terminfo/?/*
+                                files containing terminal descriptions
 
 
 

SEE ALSO

diff --git a/doc/html/man/tic.1m.html b/doc/html/man/tic.1m.html
index 19b8818c..b36c5e0e 100644
--- a/doc/html/man/tic.1m.html
+++ b/doc/html/man/tic.1m.html
@@ -80,19 +80,20 @@
        minfo" leaf, versus a "terminfo.db" file.
 
        The  results  are  normally  placed  in  the  system  terminfo database
-       /usr/share/terminfo.  The compiled terminal description can  be  placed
-       in a different terminfo database.  There are two ways to achieve this:
+       /usr/local/ncurses/lib/terminfo.  The compiled terminal description can
+       be  placed  in  a  different  terminfo database.  There are two ways to
+       achieve this:
 
-       o   First,  you  may override the system default either by using the -o
-           option, or by setting the variable TERMINFO in your shell  environ-
+       o   First, you may override the system default either by using  the  -o
+           option,  or by setting the variable TERMINFO in your shell environ-
            ment to a valid database location.
 
-       o   Secondly,  if  tic cannot write in /usr/share/terminfo or the loca-
-           tion specified using your  TERMINFO  variable,  it  looks  for  the
-           directory  $HOME/.terminfo (or hashed database $HOME/.terminfo.db);
-           if that location exists, the entry is placed there.
+       o   Secondly, if tic cannot write in /usr/local/ncurses/lib/terminfo or
+           the  location  specified using your TERMINFO variable, it looks for
+           the  directory  $HOME/.terminfo  (or  hashed  database  $HOME/.ter-
+           minfo.db); if that location exists, the entry is placed there.
 
-       Libraries that read terminfo entries are expected to check  in  succes-
+       Libraries  that  read terminfo entries are expected to check in succes-
        sion
 
        o   a location specified with the TERMINFO environment variable,
@@ -101,14 +102,14 @@
 
        o   directories listed in the TERMINFO_DIRS environment variable,
 
-       o   a  compiled-in  list  of directories (/usr/local/ncurses/share/ter-
+       o   a compiled-in list  of  directories  (/usr/local/ncurses/share/ter-
            minfo:/usr/share/terminfo), and
 
-       o   the system terminfo database (/usr/share/terminfo).
+       o   the system terminfo database (/usr/local/ncurses/lib/terminfo).
 
 
 

ALIASES

-       This is the same program as infotocap and captoinfo; usually those  are
+       This  is the same program as infotocap and captoinfo; usually those are
        linked to, or copied from this program:
 
        o   When invoked as infotocap, tic sets the -I option.
@@ -121,41 +122,41 @@
 
        -1     restricts the output to a single column
 
-       -a     tells  tic to retain commented-out capabilities rather than dis-
+       -a     tells tic to retain commented-out capabilities rather than  dis-
               carding them.  Capabilities are commented by prefixing them with
-              a  period.   This sets the -x option, because it treats the com-
-              mented-out entries as user-defined  names.   If  the  source  is
-              termcap,  accept  the  2-character  names required by version 6.
+              a period.  This sets the -x option, because it treats  the  com-
+              mented-out  entries  as  user-defined  names.   If the source is
+              termcap, accept the 2-character names  required  by  version  6.
               Otherwise these are ignored.
 
-       -C     Force source translation to termcap format.  Note: this  differs
-              from  the  -C  option  of infocmp(1m) in that it does not merely
+       -C     Force  source translation to termcap format.  Note: this differs
+              from the -C option of infocmp(1m) in that  it  does  not  merely
               translate capability names, but also translates terminfo strings
-              to  termcap  format.  Capabilities that are not translatable are
-              left in the entry under their terminfo names but  commented  out
-              with  two  preceding  dots.  The actual format used incorporates
-              some improvements for escaped characters from  terminfo  format.
+              to termcap format.  Capabilities that are not  translatable  are
+              left  in  the entry under their terminfo names but commented out
+              with two preceding dots.  The actual  format  used  incorporates
+              some  improvements  for escaped characters from terminfo format.
               For a stricter BSD-compatible translation, add the -K option.
 
-              If  this  is  combined  with  -c, tic makes additional checks to
-              report cases where the terminfo values  do  not  have  an  exact
+              If this is combined with -c,  tic  makes  additional  checks  to
+              report  cases  where  the  terminfo  values do not have an exact
               equivalent in termcap form.  For example:
 
-              o   sgr  usually  will  not  convert,  because termcap lacks the
-                  ability to work with more than two parameters,  and  because
-                  termcap  lacks many of the arithmetic/logical operators used
+              o   sgr usually will not  convert,  because  termcap  lacks  the
+                  ability  to  work with more than two parameters, and because
+                  termcap lacks many of the arithmetic/logical operators  used
                   in terminfo.
 
-              o   capabilities with more than one delay or with delays  before
+              o   capabilities  with more than one delay or with delays before
                   the end of the string will not convert completely.
 
-       -c     tells  tic to only check file for errors, including syntax prob-
-              lems and bad use-links.   If  you  specify  -C  (-I)  with  this
-              option,  the code will print warnings about entries which, after
-              use resolution, are more than 1023 (4096) bytes long.  Due to  a
+       -c     tells tic to only check file for errors, including syntax  prob-
+              lems  and  bad  use-links.   If  you  specify  -C (-I) with this
+              option, the code will print warnings about entries which,  after
+              use  resolution, are more than 1023 (4096) bytes long.  Due to a
               fixed buffer length in older termcap libraries, as well as buggy
-              checking for the buffer length (and a documented limit  in  ter-
-              minfo),  these entries may cause core dumps with other implemen-
+              checking  for  the buffer length (and a documented limit in ter-
+              minfo), these entries may cause core dumps with other  implemen-
               tations.
 
               tic checks string capabilities to ensure that those with parame-
@@ -163,29 +164,29 @@
               predefined string capabilities; those which are defined with the
               -x option are ignored.
 
-       -D     tells  tic  to print the database locations that it knows about,
+       -D     tells tic to print the database locations that it  knows  about,
               and exit.  The first location shown is the one to which it would
-              write  compiled  terminal  descriptions.   If tic is not able to
-              find a writable database location according to the rules  summa-
-              rized  above,  it will print a diagnostic and exit with an error
+              write compiled terminal descriptions.  If tic  is  not  able  to
+              find  a writable database location according to the rules summa-
+              rized above, it will print a diagnostic and exit with  an  error
               rather than printing a list of database locations.
 
        -e names
-              Limit writes and translations to the  following  comma-separated
-              list  of  terminals.  If any name or alias of a terminal matches
-              one of the names in the list,  the  entry  will  be  written  or
+              Limit  writes  and translations to the following comma-separated
+              list of terminals.  If any name or alias of a  terminal  matches
+              one  of  the  names  in  the  list, the entry will be written or
               translated as normal.  Otherwise no output will be generated for
-              it.  The option value is interpreted as a  file  containing  the
+              it.   The  option  value is interpreted as a file containing the
               list if it contains a '/'.  (Note: depending on how tic was com-
               piled, this option may require -I or -C.)
 
-       -f     Display    complex    terminfo     strings     which     contain
+       -f     Display     complex     terminfo     strings    which    contain
               if/then/else/endif expressions indented for readability.
 
-       -G     Display  constant  literals  in  decimal  form rather than their
+       -G     Display constant literals in  decimal  form  rather  than  their
               character equivalents.
 
-       -g     Display constant character literals in quoted form  rather  than
+       -g     Display  constant  character literals in quoted form rather than
               their decimal equivalents.
 
        -I     Force source translation to terminfo format.
@@ -193,24 +194,24 @@
        -K     Suppress some longstanding ncurses extensions to termcap format,
               e.g., "\s" for space.
 
-       -L     Force source translation to terminfo format  using  the  long  C
+       -L     Force  source  translation  to  terminfo format using the long C
               variable names listed in <term.h>
 
        -N     Disable smart defaults.  Normally, when translating from termcap
-              to terminfo, the compiler makes a number  of  assumptions  about
-              the   defaults   of   string  capabilities  reset1_string,  car-
+              to  terminfo,  the  compiler makes a number of assumptions about
+              the  defaults  of  string   capabilities   reset1_string,   car-
               riage_return,  cursor_left,  cursor_down,  scroll_forward,  tab,
               newline, key_backspace, key_left, and key_down, then attempts to
-              use obsolete termcap capabilities to deduce correct values.   It
+              use  obsolete termcap capabilities to deduce correct values.  It
               also normally suppresses output of obsolete termcap capabilities
-              such as bs.  This option forces a more literal translation  that
+              such  as bs.  This option forces a more literal translation that
               also preserves the obsolete capabilities.
 
-       -odir  Write  compiled  entries  to given database location.  Overrides
+       -odir  Write compiled entries to given  database  location.   Overrides
               the TERMINFO environment variable.
 
-       -Qn    Rather than show source in terminfo  (text)  format,  print  the
-              compiled  (binary) format in hexadecimal or base64 form, depend-
+       -Qn    Rather  than  show  source  in terminfo (text) format, print the
+              compiled (binary) format in hexadecimal or base64 form,  depend-
               ing on the option's value:
 
                1  hexadecimal
@@ -223,35 +224,35 @@
               source.
 
        -Rsubset
-              Restrict  output to a given subset.  This option is for use with
-              archaic versions of terminfo like  those  on  SVr1,  Ultrix,  or
-              HP/UX  that  do not support the full set of SVR4/XSI Curses ter-
-              minfo; and outright broken ports like AIX 3.x  that  have  their
-              own  extensions  incompatible  with SVr4/XSI.  Available subsets
+              Restrict output to a given subset.  This option is for use  with
+              archaic  versions  of  terminfo  like  those on SVr1, Ultrix, or
+              HP/UX that do not support the full set of SVR4/XSI  Curses  ter-
+              minfo;  and  outright  broken ports like AIX 3.x that have their
+              own extensions incompatible with  SVr4/XSI.   Available  subsets
               are "SVr1", "Ultrix", "HP", "BSD" and "AIX"; see terminfo(5) for
               details.
 
-       -r     Force  entry  resolution (so there are no remaining tc capabili-
-              ties) even when doing translation to termcap format.   This  may
-              be  needed  if  you  are  preparing a termcap file for a termcap
-              library (such as GNU termcap through version 1.3 or BSD  termcap
-              through  4.3BSD)  that  does not handle multiple tc capabilities
+       -r     Force entry resolution (so there are no remaining  tc  capabili-
+              ties)  even  when doing translation to termcap format.  This may
+              be needed if you are preparing a  termcap  file  for  a  termcap
+              library  (such as GNU termcap through version 1.3 or BSD termcap
+              through 4.3BSD) that does not handle  multiple  tc  capabilities
               per entry.
 
-       -s     Summarize the compile by  showing  the  database  location  into
-              which  entries  are written, and the number of entries which are
+       -s     Summarize  the  compile  by  showing  the database location into
+              which entries are written, and the number of entries  which  are
               compiled.
 
-       -T     eliminates size-restrictions on the  generated  text.   This  is
-              mainly  useful  for  testing  and  analysis,  since the compiled
-              descriptions are limited (e.g., 1023 for termcap, 4096 for  ter-
+       -T     eliminates  size-restrictions  on  the  generated text.  This is
+              mainly useful for  testing  and  analysis,  since  the  compiled
+              descriptions  are limited (e.g., 1023 for termcap, 4096 for ter-
               minfo).
 
-       -t     tells  tic to discard commented-out capabilities.  Normally when
-              translating from terminfo to termcap,  untranslatable  capabili-
+       -t     tells tic to discard commented-out capabilities.  Normally  when
+              translating  from  terminfo to termcap, untranslatable capabili-
               ties are commented-out.
 
-       -U   tells  tic  to  not post-process the data after parsing the source
+       -U   tells tic to not post-process the data after  parsing  the  source
             file.  Normally, it infers data which is commonly missing in older
             terminfo data, or in termcaps.
 
@@ -261,9 +262,9 @@
        -vn  specifies that (verbose) output be written to standard error trace
             information showing tic's progress.
 
-            The  optional  parameter  n  is  a number from 1 to 10, inclusive,
+            The optional parameter n is a number  from  1  to  10,  inclusive,
             indicating the desired level of detail of information.  If ncurses
-            is  built  without  tracing  support,  the  optional  parameter is
+            is built  without  tracing  support,  the  optional  parameter  is
             ignored.  If n is omitted, the default level is 1.  If n is speci-
             fied and greater than 1, the level of detail is increased.
 
@@ -285,90 +286,90 @@
 
             If the debug level n is not given, it is taken to be one.
 
-       -W   By  itself,  the  -w  option  will  not  force  long strings to be
+       -W   By itself, the -w  option  will  not  force  long  strings  to  be
             wrapped.  Use the -W option to do this.
 
-            If you specify both -f and -W options, the latter is ignored  when
+            If  you specify both -f and -W options, the latter is ignored when
             -f has already split the line.
 
        -wn  specifies the width of the output.  The parameter is optional.  If
             it is omitted, it defaults to 60.
 
-       -x   Treat unknown capabilities  as  user-defined  (see  user_caps(5)).
+       -x   Treat  unknown  capabilities  as  user-defined (see user_caps(5)).
             That is, if you supply a capability name which tic does not recog-
-            nize, it will infer its type (boolean, number or string) from  the
-            syntax  and  make  an extended table entry for that.  User-defined
+            nize,  it will infer its type (boolean, number or string) from the
+            syntax and make an extended table entry  for  that.   User-defined
             capability strings whose name begins with "k" are treated as func-
             tion keys.
 
 
 

PARAMETERS

-       file   contains  one  or  more terminfo terminal descriptions in source
-              format  [see  terminfo(5)].   Each  description  in   the   file
+       file   contains one or more terminfo terminal  descriptions  in  source
+              format   [see   terminfo(5)].   Each  description  in  the  file
               describes the capabilities of a particular terminal.
 
-              If  file  is "-", then the data is read from the standard input.
+              If file is "-", then the data is read from the  standard  input.
               The file parameter may also be the path of a character-device.
 
 
 

PROCESSING

-       All but one of the capabilities recognized by  tic  are  documented  in
+       All  but  one  of  the capabilities recognized by tic are documented in
        terminfo(5).  The exception is the use capability.
 
        When a use=entry-name field is discovered in a terminal entry currently
-       being compiled, tic reads in the  binary  from  /usr/share/terminfo  to
-       complete  the  entry.   (Entries  created from file will be used first.
-       tic duplicates the capabilities in entry-name for  the  current  entry,
-       with the exception of those capabilities that explicitly are defined in
-       the current entry.
-
-       When an entry, e.g., entry_name_1, contains a  use=entry_name_2  field,
-       any   canceled   capabilities  in  entry_name_2  must  also  appear  in
-       entry_name_1 before use= for  these  capabilities  to  be  canceled  in
+       being     compiled,     tic     reads     in     the     binary    from
+       /usr/local/ncurses/lib/terminfo to complete the entry.   (Entries  cre-
+       ated  from file will be used first.  tic duplicates the capabilities in
+       entry-name for the current entry, with the exception of those capabili-
+       ties that explicitly are defined in the current entry.
+
+       When  an  entry, e.g., entry_name_1, contains a use=entry_name_2 field,
+       any  canceled  capabilities  in  entry_name_2  must  also   appear   in
+       entry_name_1  before  use=  for  these  capabilities  to be canceled in
        entry_name_1.
 
        Total compiled entries cannot exceed 4096 bytes.  The name field cannot
-       exceed 512 bytes.  Terminal names exceeding the  maximum  alias  length
+       exceed  512  bytes.   Terminal names exceeding the maximum alias length
        (32 characters on systems with long filenames, 14 characters otherwise)
-       will be truncated to the maximum alias length  and  a  warning  message
+       will  be  truncated  to  the maximum alias length and a warning message
        will be printed.
 
 
 

HISTORY

-       System  V  Release  2  provided  a  tic  utility.  It accepted a single
-       option: -v (optionally  followed  by  a  number).   According  to  Ross
+       System V Release 2 provided  a  tic  utility.   It  accepted  a  single
+       option:  -v  (optionally  followed  by  a  number).   According to Ross
        Ridge's comment in mytinfo, this version of tic was unable to represent
        cancelled capabilities.
 
-       System V Release 3 provided a different tic utility, written  by  Pavel
-       Curtis,  (originally named "compile" in pcurses).  This added an option
-       -c to check the file for errors, with the caveat that errors in  "use="
+       System  V  Release 3 provided a different tic utility, written by Pavel
+       Curtis, (originally named "compile" in pcurses).  This added an  option
+       -c  to check the file for errors, with the caveat that errors in "use="
        links would not be reported.  System V Release 3 documented a few warn-
        ing messages which did not appear in pcurses.  While the program itself
-       was  changed  little  as development continued with System V Release 4,
+       was changed little as development continued with System  V  Release  4,
        the table of capabilities grew from 180 (pcurses) to 464 (Solaris).
 
-       In early development of ncurses (1993), Zeyd Ben-Halim used  the  table
-       from  mytinfo  to  extend  the  pcurses  table to 469 capabilities (456
-       matched SVr4, 8 were only in SVr4, 13 were not in SVr4).  Of those  13,
-       11  were  ultimately  discarded  (perhaps  to match the draft of X/Open
-       Curses).  The exceptions were memory_lock_above and memory_unlock  (see
+       In  early  development of ncurses (1993), Zeyd Ben-Halim used the table
+       from mytinfo to extend the  pcurses  table  to  469  capabilities  (456
+       matched  SVr4, 8 were only in SVr4, 13 were not in SVr4).  Of those 13,
+       11 were ultimately discarded (perhaps to  match  the  draft  of  X/Open
+       Curses).   The exceptions were memory_lock_above and memory_unlock (see
        user_caps(5)).
 
-       Eric  Raymond  incorporated  parts of mytinfo into ncurses to implement
-       the termcap-to-terminfo source conversion, and extended that  to  begin
+       Eric Raymond incorporated parts of mytinfo into  ncurses  to  implement
+       the  termcap-to-terminfo  source conversion, and extended that to begin
        development of the corresponding terminfo-to-termcap source conversion,
-       Thomas Dickey completed that development over  the  course  of  several
+       Thomas  Dickey  completed  that  development over the course of several
        years.
 
-       In  1999,  Thomas  Dickey  added  the -x option to support user-defined
+       In 1999, Thomas Dickey added the  -x  option  to  support  user-defined
        capabilities.
 
-       In 2010, Roy Marples provided a tic program and  terminfo  library  for
-       NetBSD.   That  implementation  adapts  several  features from ncurses,
+       In  2010,  Roy  Marples provided a tic program and terminfo library for
+       NetBSD.  That implementation  adapts  several  features  from  ncurses,
        including tic's -x option.
 
-       The -c option tells tic to check for problems in  the  terminfo  source
+       The  -c  option  tells tic to check for problems in the terminfo source
        file.  Continued development provides additional checks:
 
        o   pcurses had 8 warnings
@@ -383,54 +384,54 @@
 
        The checking done in ncurses' tic helps with the conversion to termcap,
        as well as pointing out errors and inconsistencies.  It is also used to
-       ensure  consistency  with the user-defined capabilities.  There are 527
-       distinct capabilities in ncurses' terminal database; 128 of  those  are
+       ensure consistency with the user-defined capabilities.  There  are  527
+       distinct  capabilities  in ncurses' terminal database; 128 of those are
        user-defined.
 
 
 

PORTABILITY

-       X/Open  Curses, Issue 7 (2009) provides a brief description of tic.  It
-       lists one option: -c.  The omission of -v is  unexpected.   The  change
-       history  states  that  the  description  is  derived  from True64 UNIX.
-       According to its manual  pages,  that  system  also  supported  the  -v
+       X/Open Curses, Issue 7 (2009) provides a brief description of tic.   It
+       lists  one  option:  -c.  The omission of -v is unexpected.  The change
+       history states that  the  description  is  derived  from  True64  UNIX.
+       According  to  its  manual  pages,  that  system  also supported the -v
        option.
 
-       Shortly  after  Issue  7  was  released, Tru64 was discontinued.  As of
-       2019, the surviving implementations of tic are  SVr4  (AIX,  HP-UX  and
+       Shortly after Issue 7 was released,  Tru64  was  discontinued.   As  of
+       2019,  the  surviving  implementations  of tic are SVr4 (AIX, HP-UX and
        Solaris), ncurses and NetBSD curses.  The SVr4 tic programs all support
-       the -v option.  The NetBSD tic program follows X/Open's  documentation,
+       the  -v option.  The NetBSD tic program follows X/Open's documentation,
        omitting the -v option.
 
-       The  X/Open rationale states that some implementations of tic read ter-
-       minal descriptions from the standard input if  the  file  parameter  is
-       omitted.   None of these implementations do that.  Further, it comments
+       The X/Open rationale states that some implementations of tic read  ter-
+       minal  descriptions  from  the  standard input if the file parameter is
+       omitted.  None of these implementations do that.  Further, it  comments
        that some may choose to read from "./terminfo.src" but that is obsoles-
-       cent  behavior from SVr2, and is not (for example) a documented feature
+       cent behavior from SVr2, and is not (for example) a documented  feature
        of SVr3.
 
 
 

COMPATIBILITY

-       There is  some  evidence  that  historic  tic  implementations  treated
-       description  fields with no whitespace in them as additional aliases or
+       There  is  some  evidence  that  historic  tic  implementations treated
+       description fields with no whitespace in them as additional aliases  or
        short names.  This tic does not do that, but it does warn when descrip-
-       tion  fields may be treated that way and check them for dangerous char-
+       tion fields may be treated that way and check them for dangerous  char-
        acters.
 
 
 

EXTENSIONS

-       Unlike the SVr4 tic command, this implementation can  actually  compile
-       termcap  sources.   In fact, entries in terminfo and termcap syntax can
-       be mixed in a single source file.  See  terminfo(5)  for  the  list  of
+       Unlike  the  SVr4 tic command, this implementation can actually compile
+       termcap sources.  In fact, entries in terminfo and termcap  syntax  can
+       be  mixed  in  a  single  source file.  See terminfo(5) for the list of
        termcap names taken to be equivalent to terminfo names.
 
-       The  SVr4  manual  pages  are not clear on the resolution rules for use
-       capabilities.  This implementation of tic will find  use  targets  any-
-       where  in  the source file, or anywhere in the file tree rooted at TER-
-       MINFO (if TERMINFO is defined), or in the user's $HOME/.terminfo  data-
+       The SVr4 manual pages are not clear on the  resolution  rules  for  use
+       capabilities.   This  implementation  of tic will find use targets any-
+       where in the source file, or anywhere in the file tree rooted  at  TER-
+       MINFO  (if TERMINFO is defined), or in the user's $HOME/.terminfo data-
        base (if it exists), or (finally) anywhere in the system's file tree of
        compiled entries.
 
-       The error messages from this tic have the same format as  GNU  C  error
+       The  error  messages  from this tic have the same format as GNU C error
        messages, and can be parsed by GNU Emacs's compile facility.
 
        Aside from -c and -v, options are not portable:
@@ -443,17 +444,17 @@
 
            -a -o -x
 
-           and  adds  -S  (a feature which does the same thing as infocmp's -e
+           and adds -S (a feature which does the same thing  as  infocmp's  -e
            and -E options).
 
        The SVr4 -c mode does not report bad "use=" links.
 
-       System V does  not  compile  entries  to  or  read  entries  from  your
+       System  V  does  not  compile  entries  to  or  read  entries from your
        $HOME/.terminfo database unless TERMINFO is explicitly set to it.
 
 
 

FILES

-       /usr/share/terminfo/?/*
+       /usr/local/ncurses/lib/terminfo/?/*
             Compiled terminal description database.
 
 
@@ -461,7 +462,7 @@
        infocmp(1m),   captoinfo(1m),   infotocap(1m),   toe(1m),   curses(3x),
        term(5).  terminfo(5).  user_caps(5).
 
-       This describes ncurses version 6.2 (patch 20201205).
+       This describes ncurses version 6.2 (patch 20201212).
 
 
 

AUTHOR

diff --git a/doc/html/man/toe.1m.html b/doc/html/man/toe.1m.html
index 12dffdd2..30454d6f 100644
--- a/doc/html/man/toe.1m.html
+++ b/doc/html/man/toe.1m.html
@@ -144,7 +144,7 @@
 
 
 

FILES

-       /usr/share/terminfo/?/*
+       /usr/local/ncurses/lib/terminfo/?/*
             Compiled terminal description database.
 
 
@@ -171,7 +171,7 @@
        tic(1m), infocmp(1m), captoinfo(1m),  infotocap(1m),  curses(3x),  ter-
        minfo(5).
 
-       This describes ncurses version 6.2 (patch 20201205).
+       This describes ncurses version 6.2 (patch 20201212).
 
 
 
diff --git a/doc/html/man/tput.1.html b/doc/html/man/tput.1.html
index 931913c4..92ec516d 100644
--- a/doc/html/man/tput.1.html
+++ b/doc/html/man/tput.1.html
@@ -326,7 +326,7 @@
 
 
 

FILES

-       /usr/share/terminfo
+       /usr/local/ncurses/lib/terminfo
               compiled terminal description database
 
        /usr/share/tabset/*
@@ -523,7 +523,7 @@
 

SEE ALSO

        clear(1), stty(1), tabs(1), tset(1), terminfo(5), curs_termcap(3x).
 
-       This describes ncurses version 6.2 (patch 20201205).
+       This describes ncurses version 6.2 (patch 20201212).
 
 
 
diff --git a/doc/html/man/tset.1.html b/doc/html/man/tset.1.html
index 1698bd12..f60f0a22 100644
--- a/doc/html/man/tset.1.html
+++ b/doc/html/man/tset.1.html
@@ -382,7 +382,7 @@
             system  port  name to terminal type mapping database (BSD versions
             only).
 
-       /usr/share/terminfo
+       /usr/local/ncurses/lib/terminfo
             terminal capability database
 
 
@@ -390,7 +390,7 @@
        csh(1),  sh(1),  stty(1),   curs_terminfo(3x),   tty(4),   terminfo(5),
        ttys(5), environ(7)
 
-       This describes ncurses version 6.2 (patch 20201205).
+       This describes ncurses version 6.2 (patch 20201212).
 
 
 
diff --git a/form/fld_arg.c b/form/fld_arg.c
index b9248487..2f6c4771 100644
--- a/form/fld_arg.c
+++ b/form/fld_arg.c
@@ -33,7 +33,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_arg.c,v 1.17 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fld_arg.c,v 1.18 2020/12/11 22:05:24 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform
@@ -90,7 +90,7 @@ set_fieldtype_arg(FIELDTYPE *typ,
 |   Facility      :  libnform
 |   Function      :  void *field_arg(const FIELD *field)
 |
-|   Description   :  Retrieve pointer to the fields argument structure.
+|   Description   :  Retrieve pointer to the field's argument structure.
 |
 |   Return Values :  Pointer to structure or NULL if none is defined.
 +--------------------------------------------------------------------------*/
diff --git a/form/fld_attr.c b/form/fld_attr.c
index bcfc918e..4ce6b1c5 100644
--- a/form/fld_attr.c
+++ b/form/fld_attr.c
@@ -33,12 +33,12 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_attr.c,v 1.14 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fld_attr.c,v 1.15 2020/12/11 22:05:24 tom Exp $")
 
 /*----------------------------------------------------------------------------
   Field-Attribute manipulation routines
   --------------------------------------------------------------------------*/
-/* "Template" macro to generate a function to set a fields attribute */
+/* "Template" macro to generate a function to set a field's attribute */
 #define GEN_FIELD_ATTR_SET_FCT( name ) \
 FORM_IMPEXP int NCURSES_API set_field_ ## name (FIELD * field, chtype attr)\
 {\
@@ -63,7 +63,7 @@ FORM_IMPEXP int NCURSES_API set_field_ ## name (FIELD * field, chtype attr)\
    RETURN(res);\
 }
 
-/* "Template" macro to generate a function to get a fields attribute */
+/* "Template" macro to generate a function to get a field's attribute */
 #define GEN_FIELD_ATTR_GET_FCT( name ) \
 FORM_IMPEXP chtype NCURSES_API field_ ## name (const FIELD * field)\
 {\
@@ -88,7 +88,7 @@ GEN_FIELD_ATTR_SET_FCT(fore)
 |   Facility      :  libnform
 |   Function      :  chtype field_fore(const FIELD *)
 |
-|   Description   :  Retrieve fields foreground attribute
+|   Description   :  Retrieve field's foreground attribute
 |
 |   Return Values :  The foreground attribute
 +--------------------------------------------------------------------------*/
@@ -99,7 +99,7 @@ GEN_FIELD_ATTR_GET_FCT(fore)
 |   Function      :  int set_field_back(FIELD *field, chtype attr)
 |
 |   Description   :  Sets the background of the field used to display the
-|                    fields extend.
+|                    field's extend.
 |
 |   Return Values :  E_OK             - success
 |                    E_BAD_ARGUMENT   - invalid attributes
@@ -111,7 +111,7 @@ GEN_FIELD_ATTR_SET_FCT(back)
 |   Facility      :  libnform
 |   Function      :  chtype field_back(const
 |
-|   Description   :  Retrieve fields background attribute
+|   Description   :  Retrieve field's background attribute
 |
 |   Return Values :  The background attribute
 +--------------------------------------------------------------------------*/
diff --git a/form/fld_info.c b/form/fld_info.c
index ae5a961d..188a3156 100644
--- a/form/fld_info.c
+++ b/form/fld_info.c
@@ -33,7 +33,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_info.c,v 1.13 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fld_info.c,v 1.15 2020/12/12 01:05:42 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -42,7 +42,7 @@ MODULE_ID("$Id: fld_info.c,v 1.13 2020/05/24 01:40:20 anonymous.maarten Exp $")
 |                                   int *frow, int *fcol,
 |                                   int *nrow, int *nbuf)
 |   
-|   Description   :  Retrieve infos about the fields creation parameters.
+|   Description   :  Retrieve information about the field's creation parameters.
 |
 |   Return Values :  E_OK           - success
 |                    E_BAD_ARGUMENT - invalid field pointer
@@ -83,7 +83,7 @@ field_info(const FIELD *field,
 |                                           int *drows, int *dcols,
 |                                           int *maxgrow)
 |   
-|   Description   :  Retrieve informations about a dynamic fields current
+|   Description   :  Retrieve information about a dynamic field's current
 |                    dynamic parameters.
 |
 |   Return Values :  E_OK           - success
diff --git a/form/fld_just.c b/form/fld_just.c
index 98e4649d..050e66f5 100644
--- a/form/fld_just.c
+++ b/form/fld_just.c
@@ -33,13 +33,13 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_just.c,v 1.15 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fld_just.c,v 1.16 2020/12/11 23:16:37 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
 |   Function      :  int set_field_just(FIELD *field, int just)
 |   
-|   Description   :  Set the fields type of justification.
+|   Description   :  Set the field's type of justification.
 |
 |   Return Values :  E_OK            - success
 |                    E_BAD_ARGUMENT  - one of the arguments was incorrect
@@ -60,7 +60,7 @@ set_field_just(FIELD *field, int just)
       Normalize_Field(field);
       if (field->just != just)
 	{
-	  field->just = (short) just;
+	  field->just = (short)just;
 	  res = _nc_Synchronize_Attributes(field);
 	}
       else
@@ -73,7 +73,7 @@ set_field_just(FIELD *field, int just)
 |   Facility      :  libnform  
 |   Function      :  int field_just( const FIELD *field )
 |   
-|   Description   :  Retrieve the fields type of justification
+|   Description   :  Retrieve the field's type of justification
 |
 |   Return Values :  The justification type.
 +--------------------------------------------------------------------------*/
diff --git a/form/fld_link.c b/form/fld_link.c
index 5d5cd251..dda6c97e 100644
--- a/form/fld_link.c
+++ b/form/fld_link.c
@@ -33,7 +33,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_link.c,v 1.15 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fld_link.c,v 1.16 2020/12/11 23:20:32 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -62,8 +62,8 @@ link_field(FIELD *field, int frow, int fcol)
     {
       T((T_CREATE("field %p"), (void *)New_Field));
       *New_Field = *_nc_Default_Field;
-      New_Field->frow = (short) frow;
-      New_Field->fcol = (short) fcol;
+      New_Field->frow = (short)frow;
+      New_Field->fcol = (short)fcol;
 
       New_Field->link = field->link;
       field->link = New_Field;
diff --git a/form/fld_move.c b/form/fld_move.c
index af90e2b9..c4b83136 100644
--- a/form/fld_move.c
+++ b/form/fld_move.c
@@ -33,14 +33,14 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_move.c,v 1.13 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fld_move.c,v 1.15 2020/12/11 23:48:05 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
 |   Function      :  int move_field(FIELD *field,int frow, int fcol)
 |   
 |   Description   :  Moves the disconnected field to the new location in
-|                    the forms subwindow.
+|                    the form's subwindow.
 |
 |   Return Values :  E_OK            - success
 |                    E_BAD_ARGUMENT  - invalid argument passed
@@ -57,8 +57,8 @@ move_field(FIELD *field, int frow, int fcol)
   if (field->form)
     RETURN(E_CONNECTED);
 
-  field->frow = (short) frow;
-  field->fcol = (short) fcol;
+  field->frow = (short)frow;
+  field->fcol = (short)fcol;
   RETURN(E_OK);
 }
 
diff --git a/form/fld_opts.c b/form/fld_opts.c
index 3b07e215..a0bbbf41 100644
--- a/form/fld_opts.c
+++ b/form/fld_opts.c
@@ -33,7 +33,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_opts.c,v 1.14 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fld_opts.c,v 1.15 2020/12/11 22:05:24 tom Exp $")
 
 /*----------------------------------------------------------------------------
   Field-Options manipulation routines
@@ -68,7 +68,7 @@ set_field_opts(FIELD *field, Field_Options opts)
 |   Facility      :  libnform  
 |   Function      :  Field_Options field_opts(const FIELD *field)
 |   
-|   Description   :  Retrieve the fields options.
+|   Description   :  Retrieve the field's options.
 |
 |   Return Values :  The options.
 +--------------------------------------------------------------------------*/
diff --git a/form/fld_pad.c b/form/fld_pad.c
index f6292f24..962958f5 100644
--- a/form/fld_pad.c
+++ b/form/fld_pad.c
@@ -33,7 +33,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_pad.c,v 1.12 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fld_pad.c,v 1.13 2020/12/11 22:05:24 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -71,7 +71,7 @@ set_field_pad(FIELD *field, int ch)
 |   Facility      :  libnform  
 |   Function      :  int field_pad(const FIELD *field)
 |   
-|   Description   :  Retrieve the fields pad character.
+|   Description   :  Retrieve the field's pad character.
 |
 |   Return Values :  The pad character.
 +--------------------------------------------------------------------------*/
diff --git a/form/fld_page.c b/form/fld_page.c
index cffbdaef..9029768c 100644
--- a/form/fld_page.c
+++ b/form/fld_page.c
@@ -33,7 +33,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_page.c,v 1.14 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fld_page.c,v 1.15 2020/12/11 23:15:26 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -66,8 +66,8 @@ set_new_page(FIELD *field, bool new_page_flag)
 |   Facility      :  libnform  
 |   Function      :  bool new_page(const FIELD *field)
 |   
-|   Description   :  Retrieve the info whether or not the field starts a
-|                    new page on the form.
+|   Description   :  Retrieve the information whether or not the field starts
+|                    a new page on the form.
 |
 |   Return Values :  TRUE  - field starts a new page
 |                    FALSE - field doesn't start a new page
diff --git a/form/fld_stat.c b/form/fld_stat.c
index 43e71b55..7b504bf4 100644
--- a/form/fld_stat.c
+++ b/form/fld_stat.c
@@ -33,14 +33,14 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_stat.c,v 1.16 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fld_stat.c,v 1.17 2020/12/11 22:05:24 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
 |   Function      :  int set_field_status(FIELD *field, bool status)
 |   
 |   Description   :  Set or clear the 'changed' indication flag for that
-|                    fields primary buffer.
+|                    field's primary buffer.
 |
 |   Return Values :  E_OK            - success
 +--------------------------------------------------------------------------*/
@@ -64,7 +64,7 @@ set_field_status(FIELD *field, bool status)
 |   Function      :  bool field_status(const FIELD *field)
 |   
 |   Description   :  Retrieve the value of the 'changed' indication flag
-|                    for that fields primary buffer. 
+|                    for that field's primary buffer. 
 |
 |   Return Values :  TRUE  - buffer has been changed
 |                    FALSE - buffer has not been changed
diff --git a/form/fld_type.c b/form/fld_type.c
index e9547ea5..12c92cf6 100644
--- a/form/fld_type.c
+++ b/form/fld_type.c
@@ -33,7 +33,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_type.c,v 1.18 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fld_type.c,v 1.19 2020/12/11 23:20:37 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -47,7 +47,7 @@ MODULE_ID("$Id: fld_type.c,v 1.18 2020/05/24 01:40:20 anonymous.maarten Exp $")
 |                    E_SYSTEM_ERROR - system error
 +--------------------------------------------------------------------------*/
 FORM_EXPORT(int)
-set_field_type(FIELD *field, FIELDTYPE *type,...)
+set_field_type(FIELD *field, FIELDTYPE *type, ...)
 {
   va_list ap;
   int res = E_SYSTEM_ERROR;
diff --git a/form/fld_user.c b/form/fld_user.c
index 307451cc..2f51fa67 100644
--- a/form/fld_user.c
+++ b/form/fld_user.c
@@ -33,14 +33,14 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_user.c,v 1.18 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fld_user.c,v 1.19 2020/12/12 01:05:34 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
 |   Function      :  int set_field_userptr(FIELD *field, void *usrptr)
 |   
 |   Description   :  Set the pointer that is reserved in any field to store
-|                    application relevant informations
+|                    application relevant information.
 |
 |   Return Values :  E_OK         - on success
 +--------------------------------------------------------------------------*/
@@ -58,7 +58,7 @@ set_field_userptr(FIELD *field, void *usrptr)
 |   Function      :  void *field_userptr(const FIELD *field)
 |   
 |   Description   :  Return the pointer that is reserved in any field to
-|                    store application relevant informations.
+|                    store application relevant information.
 |
 |   Return Values :  Value of pointer. If no such pointer has been set,
 |                    NULL is returned
diff --git a/form/form.priv.h b/form/form.priv.h
index 482e928c..048d9f84 100644
--- a/form/form.priv.h
+++ b/form/form.priv.h
@@ -31,7 +31,7 @@
  *   Author:  Juergen Pfeifer, 1995,1997                                    *
  ****************************************************************************/
 
-/* $Id: form.priv.h,v 0.46 2020/05/24 01:40:20 anonymous.maarten Exp $ */
+/* $Id: form.priv.h,v 0.47 2020/12/11 23:20:11 tom Exp $ */
 
 #ifndef FORM_PRIV_H
 #define FORM_PRIV_H 1
@@ -110,7 +110,7 @@ extern FORM_EXPORT_VAR(FIELDTYPE *) _nc_Default_FieldType;
 #define Get_Form_Screen(form) CURRENT_SCREEN
 #endif
 
-/* Retrieve forms window */
+/* Retrieve form's window */
 #define Get_Form_Window(form) \
   ((form)->sub \
    ? (form)->sub \
diff --git a/form/frm_data.c b/form/frm_data.c
index 61ee30bb..0856afb8 100644
--- a/form/frm_data.c
+++ b/form/frm_data.c
@@ -33,7 +33,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_data.c,v 1.18 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: frm_data.c,v 1.19 2020/12/11 23:20:37 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -104,7 +104,7 @@ Only_Padding(WINDOW *w, int len, int pad)
 		}
 	    }
 #else
-	  cell = (FIELD_CELL) winch(w);
+	  cell = (FIELD_CELL)winch(w);
 	  if (ChCharOf(cell) != ChCharOf(pad))
 	    {
 	      result = FALSE;
diff --git a/form/frm_def.c b/form/frm_def.c
index 8661c074..89ae4ec3 100644
--- a/form/frm_def.c
+++ b/form/frm_def.c
@@ -33,7 +33,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_def.c,v 1.28 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: frm_def.c,v 1.29 2020/12/11 23:47:16 tom Exp $")
 
 /* this can't be readonly */
 static FORM default_form =
@@ -63,13 +63,13 @@ static FORM default_form =
 };
 
 FORM_EXPORT_VAR(FORM *) _nc_Default_Form = &default_form;
-
+
 /*---------------------------------------------------------------------------
-|   Facility      :  libnform  
+|   Facility      :  libnform
 |   Function      :  static FIELD *Insert_Field_By_Position(
-|                                     FIELD *new_field, 
+|                                     FIELD *new_field,
 |                                     FIELD *head )
-|   
+|
 |   Description   :  Insert new_field into sorted fieldlist with head "head"
 |                    and return new head of sorted fieldlist. Sorting
 |                    criteria is (row,column). This is a circular list.
@@ -113,9 +113,9 @@ Insert_Field_By_Position(FIELD *newfield, FIELD *head)
 }
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnform  
+|   Facility      :  libnform
 |   Function      :  static void Disconnect_Fields(FORM *form)
-|   
+|
 |   Description   :  Break association between form and array of fields.
 |
 |   Return Values :  -
@@ -143,9 +143,9 @@ Disconnect_Fields(FORM *form)
 }
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnform  
+|   Facility      :  libnform
 |   Function      :  static int Connect_Fields(FORM *form, FIELD **fields)
-|   
+|
 |   Description   :  Set association between form and array of fields.
 |
 |   Return Values :  E_OK            - no error
@@ -200,14 +200,14 @@ Connect_Fields(FORM *form, FIELD **fields)
   for (j = 0; j < field_cnt; j++)
     {
       if (j == 0)
-	pg->pmin = (short) j;
+	pg->pmin = (short)j;
       else
 	{
 	  if (fields[j]->status & _NEWPAGE)
 	    {
-	      pg->pmax = (short) (j - 1);
+	      pg->pmax = (short)(j - 1);
 	      pg++;
-	      pg->pmin = (short) j;
+	      pg->pmin = (short)j;
 	    }
 	}
 
@@ -215,14 +215,14 @@ Connect_Fields(FORM *form, FIELD **fields)
       maximum_col_in_field = fields[j]->fcol + fields[j]->cols;
 
       if (form->rows < maximum_row_in_field)
-	form->rows = (short) maximum_row_in_field;
+	form->rows = (short)maximum_row_in_field;
       if (form->cols < maximum_col_in_field)
-	form->cols = (short) maximum_col_in_field;
+	form->cols = (short)maximum_col_in_field;
     }
 
-  pg->pmax = (short) (field_cnt - 1);
-  form->maxfield = (short) field_cnt;
-  form->maxpage = (short) page_nr;
+  pg->pmax = (short)(field_cnt - 1);
+  form->maxfield = (short)field_cnt;
+  form->maxpage = (short)page_nr;
 
   /* Sort fields on form pages */
   for (page_nr = 0; page_nr < form->maxpage; page_nr++)
@@ -231,8 +231,8 @@ Connect_Fields(FORM *form, FIELD **fields)
 
       for (j = form->page[page_nr].pmin; j <= form->page[page_nr].pmax; j++)
 	{
-	  fields[j]->index = (short) j;
-	  fields[j]->page = (short) page_nr;
+	  fields[j]->index = (short)j;
+	  fields[j]->page = (short)page_nr;
 	  fld = Insert_Field_By_Position(fields[j], fld);
 	}
       if (fld)
@@ -250,10 +250,10 @@ Connect_Fields(FORM *form, FIELD **fields)
 }
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnform  
+|   Facility      :  libnform
 |   Function      :  static int Associate_Fields(FORM *form, FIELD **fields)
-|   
-|   Description   :  Set association between form and array of fields. 
+|
+|   Description   :  Set association between form and array of fields.
 |                    If there are fields, position to first active field.
 |
 |   Return Values :  E_OK            - success
@@ -283,9 +283,9 @@ Associate_Fields(FORM *form, FIELD **fields)
 }
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnform  
+|   Facility      :  libnform
 |   Function      :  FORM *new_form_sp(SCREEN* sp, FIELD** fields )
-|   
+|
 |   Description   :  Create new form with given array of fields.
 |
 |   Return Values :  Pointer to form. NULL if error occurred.
@@ -331,9 +331,9 @@ NCURSES_SP_NAME(new_form) (NCURSES_SP_DCLx FIELD **fields)
 }
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnform  
+|   Facility      :  libnform
 |   Function      :  FORM* new_form(FIELD** fields )
-|   
+|
 |   Description   :  Create new form with given array of fields.
 |
 |   Return Values :  Pointer to form. NULL if error occurred.
@@ -352,9 +352,9 @@ new_form(FIELD **fields)
 #endif
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnform  
+|   Facility      :  libnform
 |   Function      :  int free_form( FORM *form )
-|   
+|
 |   Description   :  Release internal memory associated with form.
 |
 |   Return Values :  E_OK           - no error
@@ -381,9 +381,9 @@ free_form(FORM *form)
 }
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnform  
+|   Facility      :  libnform
 |   Function      :  int set_form_fields( FORM *form, FIELD **fields )
-|   
+|
 |   Description   :  Set a new association of an array of fields to a form
 |
 |   Return Values :  E_OK            - no error
@@ -416,9 +416,9 @@ set_form_fields(FORM *form, FIELD **fields)
 }
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnform  
+|   Facility      :  libnform
 |   Function      :  FIELD **form_fields( const FORM *form )
-|   
+|
 |   Description   :  Retrieve array of fields
 |
 |   Return Values :  Pointer to field array
@@ -431,9 +431,9 @@ form_fields(const FORM *form)
 }
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnform  
+|   Facility      :  libnform
 |   Function      :  int field_count( const FORM *form )
-|   
+|
 |   Description   :  Retrieve number of fields
 |
 |   Return Values :  Number of fields, -1 if none are defined
diff --git a/form/frm_driver.c b/form/frm_driver.c
index 90770861..ad82643e 100644
--- a/form/frm_driver.c
+++ b/form/frm_driver.c
@@ -33,7 +33,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_driver.c,v 1.130 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: frm_driver.c,v 1.133 2020/12/12 00:36:42 tom Exp $")
 
 /*----------------------------------------------------------------------------
   This is the core module of the form library. It contains the majority
@@ -131,34 +131,34 @@ static int FE_Delete_Previous(FORM *);
 /* Calculate the position of a single row in a field buffer */
 #define Position_Of_Row_In_Buffer(field,row) ((row)*(field)->dcols)
 
-/* Calculate start address for the fields buffer# N */
+/* Calculate start address for the field's buffer# N */
 #define Address_Of_Nth_Buffer(field,N) \
   ((field)->buf + (N)*(1+Buffer_Length(field)))
 
-/* Calculate the start address of the row in the fields specified buffer# N */
+/* Calculate the start address of the row in the field's specified buffer# N */
 #define Address_Of_Row_In_Nth_Buffer(field,N,row) \
   (Address_Of_Nth_Buffer(field,N) + Position_Of_Row_In_Buffer(field,row))
 
-/* Calculate the start address of the row in the fields primary buffer */
+/* Calculate the start address of the row in the field's primary buffer */
 #define Address_Of_Row_In_Buffer(field,row) \
   Address_Of_Row_In_Nth_Buffer(field,0,row)
 
-/* Calculate the start address of the row in the forms current field
+/* Calculate the start address of the row in the form's current field
    buffer# N */
 #define Address_Of_Current_Row_In_Nth_Buffer(form,N) \
    Address_Of_Row_In_Nth_Buffer((form)->current,N,(form)->currow)
 
-/* Calculate the start address of the row in the forms current field
+/* Calculate the start address of the row in the form's current field
    primary buffer */
 #define Address_Of_Current_Row_In_Buffer(form) \
    Address_Of_Current_Row_In_Nth_Buffer(form,0)
 
-/* Calculate the address of the cursor in the forms current field
+/* Calculate the address of the cursor in the form's current field
    primary buffer */
 #define Address_Of_Current_Position_In_Nth_Buffer(form,N) \
    (Address_Of_Current_Row_In_Nth_Buffer(form,N) + (form)->curcol)
 
-/* Calculate the address of the cursor in the forms current field
+/* Calculate the address of the cursor in the form's current field
    buffer# N */
 #define Address_Of_Current_Position_In_Buffer(form) \
   Address_Of_Current_Position_In_Nth_Buffer(form,0)
@@ -187,7 +187,7 @@ static int FE_Delete_Previous(FORM *);
 /* Logic to determine whether or not a dynamic field may still grow */
 #define Growable(field) ((field)->status & _MAY_GROW)
 
-/* Macro to set the attributes for a fields window */
+/* Macro to set the attributes for a field's window */
 #define Set_Field_Window_Attributes(field,win) \
 (  wbkgdset((win),(chtype)((chtype)((field)->pad) | (field)->back)), \
    (void) wattrset((win), (int)(field)->fore) )
@@ -860,7 +860,7 @@ _nc_Position_Form_Cursor(FORM *form)
 |   Facility      :  libnform
 |   Function      :  int _nc_Refresh_Current_Field(FORM * form)
 |
-|   Description   :  Propagate the changes in the fields window to the
+|   Description   :  Propagate the changes in the field's window to the
 |                    window of the form.
 |
 |   Return Values :  E_OK              - on success
@@ -1263,7 +1263,7 @@ Synchronize_Linked_Fields(FIELD *field)
 |   Facility      :  libnform
 |   Function      :  int _nc_Synchronize_Attributes(FIELD * field)
 |
-|   Description   :  If a fields visual attributes have changed, this
+|   Description   :  If a field's visual attributes have changed, this
 |                    routine is called to propagate those changes to the
 |                    screen.
 |
@@ -1329,7 +1329,7 @@ _nc_Synchronize_Attributes(FIELD *field)
 |   Function      :  int _nc_Synchronize_Options(FIELD * field,
 |                                                Field_Options newopts)
 |
-|   Description   :  If a fields options have changed, this routine is
+|   Description   :  If a field's options have changed, this routine is
 |                    called to propagate these changes to the screen and
 |                    to really change the behavior of the field.
 |
@@ -3284,7 +3284,7 @@ FV_Validation(FORM *form)
 |
 |   Description   :  Get the next field after the given field on the current
 |                    page. The order of fields is the one defined by the
-|                    fields array. Only visible and active fields are
+|                    field's array. Only visible and active fields are
 |                    counted.
 |
 |   Return Values :  Pointer to the next field.
@@ -3367,7 +3367,7 @@ _nc_First_Active_Field(FORM *form)
 |
 |   Description   :  Get the previous field before the given field on the
 |                    current page. The order of fields is the one defined by
-|                    the fields array. Only visible and active fields are
+|                    the field's array. Only visible and active fields are
 |                    counted.
 |
 |   Return Values :  Pointer to the previous field.
@@ -3501,10 +3501,10 @@ Right_Neighbor_Field(FIELD *field)
 |   Function      :  static FIELD *Upper_Neighbor_Field(FIELD * field)
 |
 |   Description   :  Because of the row-major nature of sorting the fields,
-|                    it is more difficult to define whats the upper neighbor
+|                    it is more difficult to define what the upper neighbor
 |                    field really means. We define that it must be on a
 |                    'previous' line (cyclic order!) and is the rightmost
-|                    field laying on the left side of the given field. If
+|                    field lying on the left side of the given field. If
 |                    this set is empty, we take the first field on the line.
 |
 |   Return Values :  Pointer to the upper neighbor field.
@@ -3551,7 +3551,7 @@ Upper_Neighbor_Field(FIELD *field)
 |   Function      :  static FIELD *Down_Neighbor_Field(FIELD * field)
 |
 |   Description   :  Because of the row-major nature of sorting the fields,
-|                    its more difficult to define whats the down neighbor
+|                    it's more difficult to define what the down neighbor
 |                    field really means. We define that it must be on a
 |                    'next' line (cyclic order!) and is the leftmost
 |                    field laying on the right side of the given field. If
@@ -3952,7 +3952,7 @@ Previous_Page_Number(const FORM *form)
 |                    that the field is left and a new field is entered.
 |                    So the field must be validated and the field init/term
 |                    hooks must be called. Because also the page is changed,
-|                    the forms init/term hooks must be called also.
+|                    the form's init/term hooks must be called also.
 |
 |   Return Values :  E_OK                - success
 |                    E_INVALID_FIELD     - field is invalid
@@ -4357,7 +4357,7 @@ static const Binding_Info bindings[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] =
 FORM_EXPORT(int)
 form_driver(FORM *form, int c)
 {
-  const Binding_Info *BI = (Binding_Info *) 0;
+  const Binding_Info *BI = (Binding_Info *)0;
   int res = E_UNKNOWN_COMMAND;
 
   move_after_insert = TRUE;
@@ -4412,7 +4412,7 @@ form_driver(FORM *form, int c)
 	NULL			/* Choice Request is generic           */
       };
       size_t nMethods = (sizeof(Generic_Methods) / sizeof(Generic_Methods[0]));
-      size_t method = (size_t) ((BI->keycode >> ID_Shft) & 0xffff);	/* see ID_Mask */
+      size_t method = (size_t)((BI->keycode >> ID_Shft) & 0xffff);	/* see ID_Mask */
 
       if ((method >= nMethods) || !(BI->cmd))
 	res = E_SYSTEM_ERROR;
@@ -4564,7 +4564,7 @@ form_driver(FORM *form, int c)
 FORM_EXPORT(int)
 form_driver_w(FORM *form, int type, wchar_t c)
 {
-  const Binding_Info *BI = (Binding_Info *) 0;
+  const Binding_Info *BI = (Binding_Info *)0;
   int res = E_UNKNOWN_COMMAND;
 
   T((T_CALLED("form_driver(%p,%d)"), (void *)form, (int)c));
@@ -4618,7 +4618,7 @@ form_driver_w(FORM *form, int type, wchar_t c)
 	NULL			/* Choice Request is generic           */
       };
       size_t nMethods = (sizeof(Generic_Methods) / sizeof(Generic_Methods[0]));
-      size_t method = (size_t) (BI->keycode >> ID_Shft) & 0xffff;	/* see ID_Mask */
+      size_t method = (size_t)(BI->keycode >> ID_Shft) & 0xffff;	/* see ID_Mask */
 
       if ((method >= nMethods) || !(BI->cmd))
 	res = E_SYSTEM_ERROR;
@@ -4736,8 +4736,8 @@ form_driver_w(FORM *form, int type, wchar_t c)
 |                    For dynamic fields this may grow the fieldbuffers if
 |                    the length of the value exceeds the current buffer
 |                    length. For buffer 0 only printable values are allowed.
-|                    For static fields, the value needs not to be zero ter-
-|                    minated. It is copied up to the length of the buffer.
+|                    For static fields, the value must not be zero terminated.
+|                    It is copied up to the length of the buffer.
 |
 |   Return Values :  E_OK            - success
 |                    E_BAD_ARGUMENT  - invalid argument
@@ -4972,7 +4972,7 @@ _nc_Widen_String(char *source, int *lengthp)
 		{
 		  result[need] = wch;
 		}
-	      passed += (size_t) status;
+	      passed += (size_t)status;
 	      ++need;
 	    }
 	  else
diff --git a/form/frm_opts.c b/form/frm_opts.c
index a0e8b1c7..cab04459 100644
--- a/form/frm_opts.c
+++ b/form/frm_opts.c
@@ -33,7 +33,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_opts.c,v 1.19 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: frm_opts.c,v 1.20 2020/12/12 00:37:00 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -50,7 +50,7 @@ set_form_opts(FORM *form, Form_Options opts)
 {
   T((T_CALLED("set_form_opts(%p,%d)"), (void *)form, opts));
 
-  opts &= (Form_Options) ALL_FORM_OPTS;
+  opts &= (Form_Options)ALL_FORM_OPTS;
   if ((unsigned)opts & ~ALL_FORM_OPTS)
     RETURN(E_BAD_ARGUMENT);
   else
@@ -72,7 +72,7 @@ FORM_EXPORT(Form_Options)
 form_opts(const FORM *form)
 {
   T((T_CALLED("form_opts(%p)"), (const void *)form));
-  returnCode((Form_Options) ((unsigned)Normalize_Form(form)->opts & ALL_FORM_OPTS));
+  returnCode((Form_Options)((unsigned)Normalize_Form(form)->opts & ALL_FORM_OPTS));
 }
 
 /*---------------------------------------------------------------------------
@@ -90,7 +90,7 @@ form_opts_on(FORM *form, Form_Options opts)
 {
   T((T_CALLED("form_opts_on(%p,%d)"), (void *)form, opts));
 
-  opts &= (Form_Options) ALL_FORM_OPTS;
+  opts &= (Form_Options)ALL_FORM_OPTS;
   if ((unsigned)opts & ~ALL_FORM_OPTS)
     RETURN(E_BAD_ARGUMENT);
   else
@@ -115,7 +115,7 @@ form_opts_off(FORM *form, Form_Options opts)
 {
   T((T_CALLED("form_opts_off(%p,%d)"), (void *)form, opts));
 
-  opts &= (Form_Options) ALL_FORM_OPTS;
+  opts &= (Form_Options)ALL_FORM_OPTS;
   if ((unsigned)opts & ~ALL_FORM_OPTS)
     RETURN(E_BAD_ARGUMENT);
   else
diff --git a/form/frm_user.c b/form/frm_user.c
index 78ac01c2..e4f86bb6 100644
--- a/form/frm_user.c
+++ b/form/frm_user.c
@@ -33,14 +33,14 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_user.c,v 1.17 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: frm_user.c,v 1.18 2020/12/12 01:05:20 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
 |   Function      :  int set_form_userptr(FORM *form, void *usrptr)
 |   
 |   Description   :  Set the pointer that is reserved in any form to store
-|                    application relevant informations
+|                    application relevant information.
 |
 |   Return Values :  E_OK         - on success
 +--------------------------------------------------------------------------*/
@@ -58,7 +58,7 @@ set_form_userptr(FORM *form, void *usrptr)
 |   Function      :  void *form_userptr(const FORM *form)
 |   
 |   Description   :  Return the pointer that is reserved in any form to
-|                    store application relevant informations.
+|                    store application relevant information.
 |
 |   Return Values :  Value of pointer. If no such pointer has been set,
 |                    NULL is returned
diff --git a/form/fty_alnum.c b/form/fty_alnum.c
index e02105b1..854dc33e 100644
--- a/form/fty_alnum.c
+++ b/form/fty_alnum.c
@@ -35,7 +35,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_alnum.c,v 1.26 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fty_alnum.c,v 1.29 2020/12/12 01:15:37 tom Exp $")
 
 #define thisARG alnumARG
 
@@ -56,7 +56,7 @@ thisARG;
 static void *
 Generic_This_Type(void *arg)
 {
-  thisARG *argp = (thisARG *) 0;
+  thisARG *argp = (thisARG *)0;
 
   if (arg)
     {
@@ -140,7 +140,7 @@ static bool
 Check_This_Character(int c, const void *argp GCC_UNUSED)
 {
 #if USE_WIDEC_SUPPORT
-  if (iswalnum((wint_t) c))
+  if (iswalnum((wint_t)c))
     return TRUE;
 #endif
   return (isalnum(UChar(c)) ? TRUE : FALSE);
@@ -186,11 +186,11 @@ static FIELDTYPE typeTHIS =
 #endif
 };
 
-FORM_EXPORT_VAR(FIELDTYPE*) TYPE_ALNUM = &typeTHIS;
+FORM_EXPORT_VAR(FIELDTYPE *) TYPE_ALNUM = &typeTHIS;
 
 #if NCURSES_INTEROP_FUNCS
 /* The next routines are to simplify the use of ncurses from
-   programming languages with restictions on interop with C level
+   programming languages with restrictions on interop with C level
    constructs (e.g. variable access or va_list + ellipsis constructs)
 */
 FORM_EXPORT(FIELDTYPE *)
diff --git a/form/fty_alpha.c b/form/fty_alpha.c
index 2de39bb5..a37459a6 100644
--- a/form/fty_alpha.c
+++ b/form/fty_alpha.c
@@ -35,7 +35,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_alpha.c,v 1.28 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fty_alpha.c,v 1.31 2020/12/12 01:15:37 tom Exp $")
 
 #define thisARG alphaARG
 
@@ -56,7 +56,7 @@ thisARG;
 static void *
 Generic_This_Type(void *arg)
 {
-  thisARG *argp = (thisARG *) 0;
+  thisARG *argp = (thisARG *)0;
 
   if (arg)
     {
@@ -140,7 +140,7 @@ static bool
 Check_This_Character(int c, const void *argp GCC_UNUSED)
 {
 #if USE_WIDEC_SUPPORT
-  if (iswalpha((wint_t) c))
+  if (iswalpha((wint_t)c))
     return TRUE;
 #endif
   return (isalpha(UChar(c)) ? TRUE : FALSE);
@@ -186,11 +186,11 @@ static FIELDTYPE typeTHIS =
 #endif
 };
 
-FORM_EXPORT_VAR(FIELDTYPE*) TYPE_ALPHA = &typeTHIS;
+FORM_EXPORT_VAR(FIELDTYPE *) TYPE_ALPHA = &typeTHIS;
 
 #if NCURSES_INTEROP_FUNCS
 /* The next routines are to simplify the use of ncurses from
-   programming languages with restictions on interop with C level
+   programming languages with restrictions on interop with C level
    constructs (e.g. variable access or va_list + ellipsis constructs)
 */
 FORM_EXPORT(FIELDTYPE *)
diff --git a/form/fty_enum.c b/form/fty_enum.c
index 4b953dfa..62242b56 100644
--- a/form/fty_enum.c
+++ b/form/fty_enum.c
@@ -35,7 +35,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_enum.c,v 1.28 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fty_enum.c,v 1.31 2020/12/12 01:15:37 tom Exp $")
 
 typedef struct
   {
@@ -66,7 +66,7 @@ static void *
 Generic_Enum_Type(void *arg)
 {
   enumARG *argp = (enumARG *)0;
-  enumParams *params = (enumParams *) arg;
+  enumParams *params = (enumParams *)arg;
 
   if (params)
     {
@@ -425,12 +425,11 @@ static FIELDTYPE typeENUM =
 #endif
 };
 
-FORM_EXPORT_VAR(FIELDTYPE *)
-TYPE_ENUM = &typeENUM;
+FORM_EXPORT_VAR(FIELDTYPE *) TYPE_ENUM = &typeENUM;
 
 #if NCURSES_INTEROP_FUNCS
 /* The next routines are to simplify the use of ncurses from
-   programming languages with restictions on interop with C level
+   programming languages with restrictions on interop with C level
    constructs (e.g. variable access or va_list + ellipsis constructs)
 */
 FORM_EXPORT(FIELDTYPE *)
diff --git a/form/fty_generic.c b/form/fty_generic.c
index a3277901..3672d658 100644
--- a/form/fty_generic.c
+++ b/form/fty_generic.c
@@ -35,27 +35,28 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_generic.c,v 1.11 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fty_generic.c,v 1.14 2020/12/12 17:27:44 tom Exp $")
 
 /*
  * This is not a full implementation of a field type, but adds some
  * support for higher level languages with some restrictions to interop
- * with C language. Especially the collection of arguments for the
+ * with C language. In particular, the collection of arguments for the
  * various fieldtypes is not based on the vararg C mechanism, but on a
- * iterator based callback mechanism that allowes the high level language
+ * iterator based callback mechanism that allows the high level language
  * to provide the arguments as a structure. Most languages have mechanisms
  * to layout structures so that they can be passed to C.
+ *
  * The languages can register a new generic fieldtype dynamically and store
  * a handle (key) to the calling object as an argument. Together with that
  * it can register a freearg callback, so that the high level language
  * remains in control of the memory management of the arguments they pass.
  * The design idea is, that the high-level language - typically a OO
- * language like C# or Java, uses it's own dispatching mechanisms
+ * language like C# or Java, uses its own dispatching mechanisms
  * (polymorphism) to call the proper check routines responsible for the
  * argument type. So these language implement typically only one generic
  * fieldtype they register with the forms library using this call.
  *
- * For that purpose we have extended the fieldtype struc by a new element
+ * For that purpose we have extended the fieldtype structure by a new element
  * that gets the arguments from a single struct passed by the caller.
  *
  */
@@ -273,7 +274,7 @@ _nc_set_generic_fieldtype(FIELD *field,
 |   Description   :  Get the current position of the form cursor position
 |                    We also return the field window
 |
-|   Return Values :  The fields Window or NULL on error
+|   Return Values :  The field's Window or NULL on error
 +--------------------------------------------------------------------------*/
 FORM_EXPORT(WINDOW *)
 _nc_form_cursor(const FORM *form, int *pRow, int *pCol)
diff --git a/form/fty_int.c b/form/fty_int.c
index bca3e1cd..d06ab8b6 100644
--- a/form/fty_int.c
+++ b/form/fty_int.c
@@ -35,7 +35,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_int.c,v 1.28 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fty_int.c,v 1.31 2020/12/12 01:15:37 tom Exp $")
 
 #if USE_WIDEC_SUPPORT
 #define isDigit(c) (iswdigit((wint_t)(c)) || isdigit(UChar(c)))
@@ -72,8 +72,8 @@ integerPARM;
 static void *
 Generic_This_Type(void *arg)
 {
-  thisARG *argp = (thisARG *) 0;
-  thisARG *param = (thisARG *) arg;
+  thisARG *argp = (thisARG *)0;
+  thisARG *param = (thisARG *)arg;
 
   if (param)
     {
@@ -120,11 +120,12 @@ static void *
 Copy_This_Type(const void *argp)
 {
   const thisARG *ap = (const thisARG *)argp;
-  thisARG *result = (thisARG *) 0;
+  thisARG *result = (thisARG *)0;
 
   if (argp)
     {
       result = typeMalloc(thisARG, 1);
+
       if (result)
 	{
 	  T((T_CREATE("thisARG %p"), (void *)result));
@@ -278,11 +279,11 @@ static FIELDTYPE typeTHIS =
 #endif
 };
 
-FORM_EXPORT_VAR(FIELDTYPE*) TYPE_INTEGER = &typeTHIS;
+FORM_EXPORT_VAR(FIELDTYPE *) TYPE_INTEGER = &typeTHIS;
 
 #if NCURSES_INTEROP_FUNCS
 /* The next routines are to simplify the use of ncurses from
-   programming languages with restictions on interop with C level
+   programming languages with restrictions on interop with C level
    constructs (e.g. variable access or va_list + ellipsis constructs)
 */
 FORM_EXPORT(FIELDTYPE *)
diff --git a/form/fty_ipv4.c b/form/fty_ipv4.c
index 9a9a185a..d79683de 100644
--- a/form/fty_ipv4.c
+++ b/form/fty_ipv4.c
@@ -35,7 +35,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_ipv4.c,v 1.12 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fty_ipv4.c,v 1.14 2020/12/12 01:15:37 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -104,11 +104,11 @@ static FIELDTYPE typeIPV4 =
 #endif
 };
 
-FORM_EXPORT_VAR(FIELDTYPE*) TYPE_IPV4 = &typeIPV4;
+FORM_EXPORT_VAR(FIELDTYPE *) TYPE_IPV4 = &typeIPV4;
 
 #if NCURSES_INTEROP_FUNCS
 /* The next routines are to simplify the use of ncurses from
-   programming languages with restictions on interop with C level
+   programming languages with restrictions on interop with C level
    constructs (e.g. variable access or va_list + ellipsis constructs)
 */
 FORM_EXPORT(FIELDTYPE *)
diff --git a/form/fty_num.c b/form/fty_num.c
index 021adf66..9eafaecb 100644
--- a/form/fty_num.c
+++ b/form/fty_num.c
@@ -35,7 +35,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_num.c,v 1.33 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fty_num.c,v 1.36 2020/12/12 01:15:37 tom Exp $")
 
 #if HAVE_LOCALE_H
 #include 
@@ -83,8 +83,8 @@ thisPARM;
 static void *
 Generic_This_Type(void *arg)
 {
-  thisARG *argn = (thisARG *) 0;
-  thisPARM *args = (thisPARM *) arg;
+  thisARG *argn = (thisARG *)0;
+  thisPARM *args = (thisPARM *)arg;
 
   if (args)
     {
@@ -139,11 +139,12 @@ static void *
 Copy_This_Type(const void *argp)
 {
   const thisARG *ap = (const thisARG *)argp;
-  thisARG *result = (thisARG *) 0;
+  thisARG *result = (thisARG *)0;
 
   if (argp)
     {
       result = typeMalloc(thisARG, 1);
+
       if (result)
 	{
 	  T((T_CREATE("thisARG %p"), (void *)result));
@@ -324,11 +325,11 @@ static FIELDTYPE typeTHIS =
 #endif
 };
 
-FORM_EXPORT_VAR(FIELDTYPE*) TYPE_NUMERIC = &typeTHIS;
+FORM_EXPORT_VAR(FIELDTYPE *) TYPE_NUMERIC = &typeTHIS;
 
 #if NCURSES_INTEROP_FUNCS
 /* The next routines are to simplify the use of ncurses from
-   programming languages with restictions on interop with C level
+   programming languages with restrictions on interop with C level
    constructs (e.g. variable access or va_list + ellipsis constructs)
 */
 FORM_EXPORT(FIELDTYPE *)
diff --git a/form/fty_regex.c b/form/fty_regex.c
index 3a8b4047..616b383a 100644
--- a/form/fty_regex.c
+++ b/form/fty_regex.c
@@ -35,7 +35,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_regex.c,v 1.30 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: fty_regex.c,v 1.32 2020/12/12 01:15:37 tom Exp $")
 
 #if HAVE_REGEX_H_FUNCS || HAVE_LIB_PCRE2	/* We prefer POSIX regex */
 
@@ -340,11 +340,11 @@ static FIELDTYPE typeREGEXP =
 #endif
 };
 
-FORM_EXPORT_VAR(FIELDTYPE*) TYPE_REGEXP = &typeREGEXP;
+FORM_EXPORT_VAR(FIELDTYPE *) TYPE_REGEXP = &typeREGEXP;
 
 #if NCURSES_INTEROP_FUNCS
 /* The next routines are to simplify the use of ncurses from
-   programming languages with restictions on interop with C level
+   programming languages with restrictions on interop with C level
    constructs (e.g. variable access or va_list + ellipsis constructs)
 */
 FORM_EXPORT(FIELDTYPE *)
diff --git a/man/form.3x b/man/form.3x
index 91e91ed8..685ad71f 100644
--- a/man/form.3x
+++ b/man/form.3x
@@ -28,7 +28,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form.3x,v 1.35 2020/03/28 19:06:28 tom Exp $
+.\" $Id: form.3x,v 1.36 2020/12/12 16:34:33 tom Exp $
 .TH form 3X ""
 .ie \n(.g .ds `` \(lq
 .el       .ds `` ``
@@ -79,6 +79,8 @@ rendering of fields already created.
 .
 The following table lists each \fBform\fR routine and the name of
 the manual page on which it is described.
+Routines flagged with \*(``*\*(''
+are ncurses-specific, not present in SVr4.
 .
 .TS
 l l
@@ -115,8 +117,8 @@ form_opts	\fBform_opts\fR(3X)
 form_opts_off	\fBform_opts\fR(3X)
 form_opts_on	\fBform_opts\fR(3X)
 form_page	\fBform_page\fR(3X)
-form_request_by_name	\fBform_requestname\fR(3X)
-form_request_name	\fBform_requestname\fR(3X)
+form_request_by_name	\fBform_requestname\fR(3X)*
+form_request_name	\fBform_requestname\fR(3X)*
 form_sub	\fBform_win\fR(3X)
 form_term	\fBform_hook\fR(3X)
 form_userptr	\fBform_userptr\fR(3X)
@@ -158,7 +160,7 @@ set_form_userptr	\fBform_userptr\fR(3X)
 set_form_win	\fBform_win\fR(3X)
 set_max_field	\fBform_field_buffer\fR(3X)
 set_new_page	\fBform_new_page\fR(3X)
-unfocus_current_field	\fBform_page\fR(3X)
+unfocus_current_field	\fBform_page\fR(3X)*
 unpost_form	\fBform_post\fR(3X)
 .TE
 .SH RETURN VALUE
diff --git a/man/form_field_validation.3x b/man/form_field_validation.3x
index 6da08ab9..8ce9132c 100644
--- a/man/form_field_validation.3x
+++ b/man/form_field_validation.3x
@@ -27,7 +27,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_field_validation.3x,v 1.27 2020/10/18 00:07:45 tom Exp $
+.\" $Id: form_field_validation.3x,v 1.33 2020/12/12 19:57:55 tom Exp $
 .TH form_field_validation 3X ""
 .ie \n(.g .ds `` \(lq
 .el       .ds `` ``
@@ -42,12 +42,14 @@
 .SH SYNOPSIS
 \fB#include \fR
 .sp
-\fBint set_field_type(FIELD *\fP\fIfield\fP\fB, FIELDTYPE *\fP\fItype\fP\fB, ...);\fP
+\fBvoid *field_arg(const FIELD *\fP\fIfield\fP\fB);\fP
 .br
 \fBFIELDTYPE *field_type(const FIELD *\fP\fIfield\fP\fB);\fP
 .br
-\fBvoid *field_arg(const FIELD *\fP\fIfield\fP\fB);\fP
+\fBint set_field_type(FIELD *\fP\fIfield\fP\fB, FIELDTYPE *\fP\fItype\fP\fB, ...);\fP
 .sp
+/* predefined field types */
+.br
 \fBFIELDTYPE *TYPE_ALNUM;\fP
 .br
 \fBFIELDTYPE *TYPE_ALPHA;\fP
@@ -63,58 +65,93 @@
 \fBFIELDTYPE *TYPE_IPV4;\fP
 .br
 .SH DESCRIPTION
-The function \fBset_field_type\fR declares a data type for a given form field.
+By default, no validation is done on form fields.
+You can associate a form with with a \fIfield type\fP,
+making the form library validate input.
+.SS field_arg
+Returns a pointer to the field's argument block.
+The \fIargument block\fP is an opaque structure containing
+a copy of the arguments provided in a \fBset_field_type\fP call.
+.SS field_type
+Returns a pointer to the \fIfield type\fP associated with the form field,
+i.e., by calling \fBset_field_type\fP.
+.SS set_field_type
+The function \fBset_field_type\fR associates
+a field type with a given form field.
 This is the type checked by validation functions.
+Most field types are configurable,
+via arguments which the caller provides when calling \fBset_field_type\fP.
+.PP
+Several field types are predefined by the form library.
+.SS Predefined types
+.PP
+It is possible to set up new programmer-defined field types.
+Field types are implemented via the \fBFIELDTYPE\fP data
+structure, which contains several pointers to functions.
+.PP
+See the \fBform_fieldtype\fR(3X) manual page,
+which describes functions which can be used to construct
+a field-type dynamically.
+.PP
 The predefined types are as follows:
 .TP 5
 TYPE_ALNUM
 Alphanumeric data.
-Requires a third \fBint\fR argument, a minimum field width.
+Required parameter:
+.RS
+.bP
+a third \fBint\fR argument, a minimum field width.
+.RE
 .TP 5
 TYPE_ALPHA
 Character data.
-Requires a third \fBint\fR argument, a minimum field width.
+Required parameter:
+.RS
+.bP
+a third \fBint\fR argument, a minimum field width.
+.RE
 .TP 5
 TYPE_ENUM
 Accept one of a specified set of strings.
-Requires additional parameters:
+Required parameters:
 .RS
 .bP
 a third \fB(char **)\fR argument pointing to a string list;
 .bP
 a fourth \fBint\fR flag argument to enable case-sensitivity;
 .bP
-and a fifth \fBint\fR flag argument specifying whether a partial
+a fifth \fBint\fR flag argument specifying whether a partial
 match must be a unique one.
 If this flag is off, a prefix matches the first
 of any set of more than one list elements with that prefix.
+.RE
 .IP
 The library copies the string list,
 so you may use a list that lives in automatic variables on the stack.
-.RE
 .TP 5
 TYPE_INTEGER
 Integer data, parsable to an integer by \fBatoi\fP(3).
-Requires additional parameters:
+Required parameters:
 .RS
 .bP
 a third \fBint\fR argument controlling the precision,
 .bP
 a fourth \fBlong\fR argument constraining minimum value,
 .bP
-and a fifth \fBlong\fR constraining maximum value.
+a fifth \fBlong\fR constraining maximum value.
 If the maximum value is less than or equal to the minimum value, the range is
 simply ignored.
+.RE
+.IP
 On return, the field buffer is formatted according to the
 \fBprintf\fR format specification \*(``.*ld\*('',
 where the \*(``*\*('' is replaced by the precision argument.
 .IP
 For details of the precision handling see \fBprintf\fR(3).
-.RE
 .TP 5
 TYPE_NUMERIC
 Numeric data (may have a decimal-point part).
-This requires additional parameters:
+Required parameters:
 .RS
 .bP
 a third \fBint\fR argument controlling the precision,
@@ -126,18 +163,22 @@ If your system supports locales,
 the decimal point character must be the one specified by your locale.
 If the maximum value is less than or equal to the minimum value,
 the range is simply ignored.
+.RE
 .IP
 On return, the field buffer is formatted according to the
 \fBprintf\fR format specification \*(``.*f\*('',
 where the \*(``*\*('' is replaced by the precision argument.
 .IP
 For details of the precision handling see \fBprintf\fR(3).
-.RE
 .TP 5
 TYPE_REGEXP
 Regular expression data.
-Requires a regular expression \fB(char *)\fR third argument.
+Required parameter:
+.RS
+.bP
+a third argument, a regular expression \fB(char *)\fR string.
 The data is valid if the regular expression matches it.
+.RE
 .IP
 Regular expressions
 are in the format of \fBregcomp\fR and \fBregexec\fR.
@@ -154,17 +195,19 @@ leading and trailing spaces around the digits.
 .TP 5
 TYPE_IPV4
 An Internet Protocol Version 4 address.
-This requires no additional argument.
-The library checks whether or not the buffer has the form a.b.c.d,
-where a,b,c and d are numbers between 0 and 255.
+Required parameter:
+.RS
+.bP
+none
+.RE
+.IP
+The form library checks whether or not the buffer has the form \fIa.b.c.d\fP,
+where \fIa\fP, \fIb\fP, \fIc\fP, and \fId\fP are numbers in the range 0 to 255.
 Trailing blanks in the buffer are ignored.
 The address itself is not validated.
 .IP
 This is an ncurses extension;
 this field type may not be available in other curses implementations.
-.PP
-It is possible to set up new programmer-defined field types.
-See the \fBform_fieldtype\fR(3X) manual page.
 .SH RETURN VALUE
 The functions \fBfield_type\fR and \fBfield_arg\fR return \fBNULL\fR on error.
 The function \fBset_field_type\fR returns one of the following:
@@ -177,6 +220,7 @@ System error occurred (see \fBerrno\fR(3)).
 .SH SEE ALSO
 \fBcurses\fR(3X),
 \fBform\fR(3X),
+\fBform_fieldtype\fR(3X),
 \fBform_variables\fR(3X).
 .SH NOTES
 The header file \fB\fR automatically includes the header file
diff --git a/man/form_fieldtype.3x b/man/form_fieldtype.3x
index d5b7cefa..767c3fcf 100644
--- a/man/form_fieldtype.3x
+++ b/man/form_fieldtype.3x
@@ -28,7 +28,11 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_fieldtype.3x,v 1.23 2020/10/24 09:05:17 tom Exp $
+.\" $Id: form_fieldtype.3x,v 1.28 2020/12/12 17:11:21 tom Exp $
+.de bP
+.ie n  .IP \(bu 4
+.el    .IP \(bu 2
+..
 .TH form_fieldtype 3X ""
 .SH NAME
 \fBform_fieldtype\fR \- define validation-field types
@@ -55,47 +59,71 @@
 \fBFIELDTYPE *link_fieldtype(FIELDTYPE *\fP\fItype1\fP\fB,\fP
                           \fBFIELDTYPE *\fP\fItype2\fP\fB);\fP
 .SH DESCRIPTION
+.SS new_fieldtype
 The function \fBnew_fieldtype\fR creates a new field type usable for data
 validation.
-You supply it with \fIfield_check\fR, a predicate to check the
+Its parameters are function pointers:
+.TP 5
+\fIfield_check\fR
+This function checks the
 validity of an entered data string whenever the user attempts to leave a field.
+It has two arguments:
+.RS
+.bP
 The (FIELD *) argument is passed in so the validation predicate can see the
-field's buffer, sizes and other attributes; the second argument is an
+field's buffer, sizes and other attributes.
+.bP
+The second argument is an
 argument-block structure, about which more below.
+.RE
+.TP 5
+\fIchar_check\fR
+This function validates input characters as they are entered.
+The form library passes it the character to be checked
+and a pointer to an argument-block structure.
+.SS free_fieldtype
 .PP
-You also supply \fBnew_fieldtype\fR with \fIchar_check\fR,
-a function to validate input characters as they are entered; it will be passed
-the character to be checked and a pointer to an argument-block structure.
-.PP
-The function \fBfree_fieldtype\fR frees the space allocated for a given
-validation type.
+The \fBfree_fieldtype\fR function
+frees the space allocated for a given validation type by \fBnew_fieldtype\fP.
+.SS set_fieldtype_arg
 .PP
 The function \fBset_fieldtype_arg\fR associates
-three storage-management functions with a field type.
-The \fImake_arg\fR function is automatically applied to the
+three storage-management functions with a field type:
+.TP 5
+\fImake_arg\fR
+This function is automatically applied to the
 list of arguments you give \fBset_field_type\fR when attaching validation
-to a field; its job is to bundle these into an allocated argument-block
-object which can later be passed to validation predicated.
-The other two hook arguments should copy and free argument-block structures.
-They will be used by the forms-driver code.
-You must supply the \fImake_arg\fR function,
-the other two are optional, you may supply NULL for them.
-In this case it is assumed
+to a field.
+It stores the arguments in an allocated argument-block
+object which is used when validating input.
+.TP 5
+\fIcopy_arg\fR
+This function may be used by applications to copy argument-blocks.
+.TP 5
+\fIfree_arg\fR
+Frees an argument-block structure.
+.PP
+You must supply the \fImake_arg\fR function.
+The other two are optional: you may supply NULL for them.
+In this case, the form library assumes
 that \fImake_arg\fR does not allocate memory but simply loads the
 argument into a single scalar value.
-.PP
-The function \fBlink_fieldtype\fR creates
-a new field type from the two given types.
-They are connected by an logical 'OR'.
+.SS set_fieldtype_choice
 .PP
 The form driver requests \fBREQ_NEXT_CHOICE\fR and \fBREQ_PREV_CHOICE\fR assume
 that the possible values of a field form an ordered set, and provide the forms
 user with a way to move through the set.
+.PP
 The \fBset_fieldtype_choice\fR
 function allows forms programmers to define successor and predecessor functions
 for the field type.
 These functions take the field pointer and an
 argument-block structure as arguments.
+.SS link_fieldtype
+.PP
+The function \fBlink_fieldtype\fR creates
+a new field type from the two given types.
+They are connected by an logical 'OR'.
 .SH RETURN VALUE
 The pointer-valued routines return NULL on error.
 They set \fBerrno\fP according to their success:
@@ -127,14 +155,12 @@ The field is the current field.
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fR(3)).
 .SH SEE ALSO
-\fBcurses\fR(3X), \fBform\fR(3X).
+\fBcurses\fR(3X),
+\fBform\fR(3X),
+\fBform_field_validation\fR(3X).
 .SH NOTES
 The header file \fB\fR automatically includes the header file
 \fB\fR.
-.PP
-All of the \fB(char *)\fR arguments of these functions should actually be
-\fB(void *)\fR.  The type has been left uncorrected for strict compatibility
-with System V.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
diff --git a/man/form_requestname.3x b/man/form_requestname.3x
index 265735dc..11e5c0fb 100644
--- a/man/form_requestname.3x
+++ b/man/form_requestname.3x
@@ -28,7 +28,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_requestname.3x,v 1.15 2020/10/24 09:01:37 tom Exp $
+.\" $Id: form_requestname.3x,v 1.16 2020/12/12 16:37:14 tom Exp $
 .TH form_requestname 3X ""
 .SH NAME
 \fBform_request_by_name\fP,
@@ -41,16 +41,17 @@
 \fBint form_request_by_name(const char *\fP\fIname\fP\fB);\fP
 .br
 .SH DESCRIPTION
+.SS form_request_name
 The function \fBform_request_name\fR returns the printable name of a form
 request code.
-.br
+.SS form_request_name_by_name
 The function \fBform_request_by_name\fR searches in the name-table for a request
 with the given name and returns its request code.
 Otherwise E_NO_MATCH is returned.
 .SH RETURN VALUE
 \fBform_request_name\fR returns \fBNULL\fR on error and sets \fBerrno\fP
 to \fBE_BAD_ARGUMENT\fR.
-.br
+.PP
 \fBform_request_by_name\fR returns \fBE_NO_MATCH\fR on error.
 It does not set \fBerrno\fP.
 .SH SEE ALSO
diff --git a/man/form_variables.3x b/man/form_variables.3x
index 5b4387ee..0419cb74 100644
--- a/man/form_variables.3x
+++ b/man/form_variables.3x
@@ -27,7 +27,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_variables.3x,v 1.6 2020/02/02 23:34:34 tom Exp $
+.\" $Id: form_variables.3x,v 1.7 2020/12/12 14:45:16 tom Exp $
 .TH form_variables 3X ""
 .na
 .hy 0
@@ -56,7 +56,8 @@
 .fi
 .SH DESCRIPTION
 These are building blocks for the form library,
-defining fields that can be created using \fBset_fieldtype\fP(3X).
+defining fields that can be created using
+the \fBform_fieldtype\fP(3X) functions.
 Each provides functions for field- and character-validation,
 according to the given datatype.
 .SS TYPE_ALNUM
diff --git a/man/manhtml.aliases b/man/manhtml.aliases
index 3b3252bd..a9f18ca7 100644
--- a/man/manhtml.aliases
+++ b/man/manhtml.aliases
@@ -1,4 +1,4 @@
-# $Id: manhtml.aliases,v 1.18 2020/10/17 22:56:04 tom Exp $
+# $Id: manhtml.aliases,v 1.19 2020/12/12 14:45:55 tom Exp $
 #***************************************************************************
 # Copyright 2019,2020 Thomas E. Dickey                                     *
 # Copyright 2013,2017 Free Software Foundation, Inc.                       *
@@ -50,7 +50,6 @@ mvwin(3X)		curs_window(3X)
 newterm(3X)		curs_initscr(3X)
 refresh(3X)		curs_refresh(3X)
 reset_shell_mode(3X)	curs_kernel(3X)
-set_fieldtype(3X)	form_fieldtype(3X)
 set_term(3X)		curs_initscr(3X)
 setcchar(3X)		curs_getcchar(3X)
 setupterm(3X)		curs_terminfo(3X)
diff --git a/menu/m_cursor.c b/menu/m_cursor.c
index fe50667c..8cf15ce5 100644
--- a/menu/m_cursor.c
+++ b/menu/m_cursor.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_cursor.c,v 1.24 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_cursor.c,v 1.25 2020/12/12 00:38:02 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu
@@ -51,15 +51,15 @@ MODULE_ID("$Id: m_cursor.c,v 1.24 2020/05/24 01:40:20 anonymous.maarten Exp $")
 |                    E_NOT_POSTED    - Menu is not posted
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-_nc_menu_cursor_pos(const MENU * menu, const ITEM * item, int *pY, int *pX)
+_nc_menu_cursor_pos(const MENU *menu, const ITEM *item, int *pY, int *pX)
 {
   if (!menu || !pX || !pY)
     return (E_BAD_ARGUMENT);
   else
     {
-      if ((ITEM *) 0 == item)
+      if ((ITEM *)0 == item)
 	item = menu->curitem;
-      assert(item != (ITEM *) 0);
+      assert(item != (ITEM *)0);
 
       if (!(menu->status & _POSTED))
 	return (E_NOT_POSTED);
@@ -81,11 +81,11 @@ _nc_menu_cursor_pos(const MENU * menu, const ITEM * item, int *pY, int *pX)
 |                    E_NOT_POSTED    - Menu is not posted
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-pos_menu_cursor(const MENU * menu)
+pos_menu_cursor(const MENU *menu)
 {
   WINDOW *win, *sub;
   int x = 0, y = 0;
-  int err = _nc_menu_cursor_pos(menu, (ITEM *) 0, &y, &x);
+  int err = _nc_menu_cursor_pos(menu, (ITEM *)0, &y, &x);
 
   T((T_CALLED("pos_menu_cursor(%p)"), (const void *)menu));
 
diff --git a/menu/m_driver.c b/menu/m_driver.c
index 9ae7aaa5..b1d7c354 100644
--- a/menu/m_driver.c
+++ b/menu/m_driver.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_driver.c,v 1.35 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_driver.c,v 1.36 2020/12/12 00:38:02 tom Exp $")
 
 /* Macros */
 
@@ -117,7 +117,7 @@ Is_Sub_String(
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
 _nc_Match_Next_Character_In_Item_Name
-(MENU * menu, int ch, ITEM ** item)
+(MENU *menu, int ch, ITEM **item)
 {
   bool found = FALSE, passed = FALSE;
   int idx, last;
@@ -210,7 +210,7 @@ _nc_Match_Next_Character_In_Item_Name
 |                    E_NOT_POSTED    - menu is not posted
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-menu_driver(MENU * menu, int c)
+menu_driver(MENU *menu, int c)
 {
 #define NAVIGATE(dir) \
   if (!item->dir)\
diff --git a/menu/m_format.c b/menu/m_format.c
index 20c4454a..848de0b2 100644
--- a/menu/m_format.c
+++ b/menu/m_format.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_format.c,v 1.20 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_format.c,v 1.21 2020/12/12 00:38:02 tom Exp $")
 
 #define minimum(a,b) ((a)<(b) ? (a): (b))
 
@@ -57,7 +57,7 @@ MODULE_ID("$Id: m_format.c,v 1.20 2020/05/24 01:40:20 anonymous.maarten Exp $")
 |                    E_POSTED               - the menu is already posted
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-set_menu_format(MENU * menu, int rows, int cols)
+set_menu_format(MENU *menu, int rows, int cols)
 {
   int total_rows, total_cols;
 
@@ -121,7 +121,7 @@ set_menu_format(MENU * menu, int rows, int cols)
 |   Return Values :  -
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(void)
-menu_format(const MENU * menu, int *rows, int *cols)
+menu_format(const MENU *menu, int *rows, int *cols)
 {
   if (rows)
     *rows = Normalize_Menu(menu)->frows;
diff --git a/menu/m_global.c b/menu/m_global.c
index 044958c5..2e521146 100644
--- a/menu/m_global.c
+++ b/menu/m_global.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_global.c,v 1.31 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_global.c,v 1.32 2020/12/12 00:38:02 tom Exp $")
 
 static char mark[] = "-";
 /* *INDENT-OFF* */
@@ -108,7 +108,7 @@ MENU_EXPORT_VAR(ITEM) _nc_Default_Item = {
 |   Return Values :  -
 +--------------------------------------------------------------------------*/
 NCURSES_INLINE static void
-ComputeMaximum_NameDesc_Lengths(MENU * menu)
+ComputeMaximum_NameDesc_Lengths(MENU *menu)
 {
   unsigned MaximumNameLength = 0;
   unsigned MaximumDescriptionLength = 0;
@@ -142,7 +142,7 @@ ComputeMaximum_NameDesc_Lengths(MENU * menu)
 |   Return Values :  -
 +--------------------------------------------------------------------------*/
 NCURSES_INLINE static void
-ResetConnectionInfo(MENU * menu, ITEM ** items)
+ResetConnectionInfo(MENU *menu, ITEM **items)
 {
   ITEM **item;
 
@@ -150,13 +150,13 @@ ResetConnectionInfo(MENU * menu, ITEM ** items)
   for (item = items; *item; item++)
     {
       (*item)->index = 0;
-      (*item)->imenu = (MENU *) 0;
+      (*item)->imenu = (MENU *)0;
     }
   if (menu->pattern)
     free(menu->pattern);
   menu->pattern = (char *)0;
   menu->pindex = 0;
-  menu->items = (ITEM **) 0;
+  menu->items = (ITEM **)0;
   menu->nitems = 0;
 }
 
@@ -172,7 +172,7 @@ ResetConnectionInfo(MENU * menu, ITEM ** items)
 |                    FALSE      - connection failed
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(bool)
-_nc_Connect_Items(MENU * menu, ITEM ** items)
+_nc_Connect_Items(MENU *menu, ITEM **items)
 {
   ITEM **item;
   unsigned int ItemCount = 0;
@@ -234,7 +234,7 @@ _nc_Connect_Items(MENU * menu, ITEM ** items)
 |   Return Values :  -
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(void)
-_nc_Disconnect_Items(MENU * menu)
+_nc_Disconnect_Items(MENU *menu)
 {
   if (menu && menu->items)
     ResetConnectionInfo(menu, menu->items);
@@ -249,7 +249,7 @@ _nc_Disconnect_Items(MENU * menu)
 |   Return Values :  the width
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-_nc_Calculate_Text_Width(const TEXT * item /*FIXME: limit length */ )
+_nc_Calculate_Text_Width(const TEXT *item /*FIXME: limit length */ )
 {
 #if USE_WIDEC_SUPPORT
   int result = item->length;
@@ -289,7 +289,7 @@ _nc_Calculate_Text_Width(const TEXT * item /*FIXME: limit length */ )
  */
 #if USE_WIDEC_SUPPORT
 static int
-calculate_actual_width(MENU * menu, bool name)
+calculate_actual_width(MENU *menu, bool name)
 {
   int width = 0;
   int check = 0;
@@ -338,7 +338,7 @@ calculate_actual_width(MENU * menu, bool name)
 |   Return Values :  -
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(void)
-_nc_Calculate_Item_Length_and_Width(MENU * menu)
+_nc_Calculate_Item_Length_and_Width(MENU *menu)
 {
   int l;
 
@@ -377,7 +377,7 @@ _nc_Calculate_Item_Length_and_Width(MENU * menu)
 |   Return Values :  -
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(void)
-_nc_Link_Items(MENU * menu)
+_nc_Link_Items(MENU *menu)
 {
   if (menu && menu->items && *(menu->items))
     {
@@ -408,14 +408,14 @@ _nc_Link_Items(MENU * menu)
 		(cycle ? menu->items[(Last_in_Row >= Number_Of_Items) ?
 				     Number_Of_Items - 1 :
 				     Last_in_Row] :
-		 (ITEM *) 0);
+		 (ITEM *)0);
 
 	      item->right = ((col < (Number_Of_Columns - 1)) &&
 			     ((i + 1) < Number_Of_Items)
 		)?
 		menu->items[i + 1] :
 		(cycle ? menu->items[row * Number_Of_Columns] :
-		 (ITEM *) 0
+		 (ITEM *)0
 		);
 
 	      Last_in_Column = (menu->rows - 1) * Number_Of_Columns + col;
@@ -424,14 +424,14 @@ _nc_Link_Items(MENU * menu)
 		(cycle ? menu->items[(Last_in_Column >= Number_Of_Items) ?
 				     Number_Of_Items - 1 :
 				     Last_in_Column] :
-		 (ITEM *) 0);
+		 (ITEM *)0);
 
 	      item->down = ((i + Number_Of_Columns) < Number_Of_Items)
 		?
 		menu->items[i + Number_Of_Columns] :
 		(cycle ? menu->items[(row + 1) < menu->rows ?
 				     Number_Of_Items - 1 : col] :
-		 (ITEM *) 0);
+		 (ITEM *)0);
 	      item->x = (short)col;
 	      item->y = (short)row;
 	      if (++col == Number_Of_Columns)
@@ -456,12 +456,12 @@ _nc_Link_Items(MENU * menu)
 		(cycle ? (Last_in_Column >= Number_Of_Items) ?
 		 menu->items[Last_in_Column - Number_Of_Rows] :
 		 menu->items[Last_in_Column] :
-		 (ITEM *) 0);
+		 (ITEM *)0);
 
 	      item->right = ((i + Number_Of_Rows) < Number_Of_Items)
 		?
 		menu->items[i + Number_Of_Rows] :
-		(cycle ? menu->items[row] : (ITEM *) 0);
+		(cycle ? menu->items[row] : (ITEM *)0);
 
 	      Last_in_Row = col * Number_Of_Rows + (Number_Of_Rows - 1);
 
@@ -471,7 +471,7 @@ _nc_Link_Items(MENU * menu)
 		 menu->items[(Last_in_Row >= Number_Of_Items) ?
 			     Number_Of_Items - 1 :
 			     Last_in_Row] :
-		 (ITEM *) 0);
+		 (ITEM *)0);
 
 	      item->down = (row < (Number_Of_Rows - 1))
 		?
@@ -480,7 +480,7 @@ _nc_Link_Items(MENU * menu)
 			     (col - 1) * Number_Of_Rows + row + 1]) :
 		(cycle ?
 		 menu->items[col * Number_Of_Rows] :
-		 (ITEM *) 0
+		 (ITEM *)0
 		);
 
 	      item->x = (short)col;
@@ -504,7 +504,7 @@ _nc_Link_Items(MENU * menu)
 |   Return Values :  -
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(void)
-_nc_Show_Menu(const MENU * menu)
+_nc_Show_Menu(const MENU *menu)
 {
   WINDOW *win;
   int maxy, maxx;
@@ -545,9 +545,9 @@ _nc_Show_Menu(const MENU * menu)
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(void)
 _nc_New_TopRow_and_CurrentItem(
-				MENU * menu,
+				MENU *menu,
 				int new_toprow,
-				ITEM * new_current_item)
+				ITEM *new_current_item)
 {
   ITEM *cur_item;
   bool mterm_called = FALSE;
diff --git a/menu/m_item_cur.c b/menu/m_item_cur.c
index f0da8b06..dcb0be15 100644
--- a/menu/m_item_cur.c
+++ b/menu/m_item_cur.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_item_cur.c,v 1.20 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_item_cur.c,v 1.21 2020/12/12 00:38:02 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -49,7 +49,7 @@ MODULE_ID("$Id: m_item_cur.c,v 1.20 2020/05/24 01:40:20 anonymous.maarten Exp $"
 |   Return Values :  E_OK                - success
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-set_current_item(MENU * menu, ITEM * item)
+set_current_item(MENU *menu, ITEM *item)
 {
   T((T_CALLED("set_current_item(%p,%p)"), (void *)menu, (void *)item));
 
@@ -90,10 +90,10 @@ set_current_item(MENU * menu, ITEM * item)
 |   Return Values :  Item pointer or NULL if failure
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(ITEM *)
-current_item(const MENU * menu)
+current_item(const MENU *menu)
 {
   T((T_CALLED("current_item(%p)"), (const void *)menu));
-  returnItem((menu && menu->items) ? menu->curitem : (ITEM *) 0);
+  returnItem((menu && menu->items) ? menu->curitem : (ITEM *)0);
 }
 
 /*---------------------------------------------------------------------------
@@ -105,7 +105,7 @@ current_item(const MENU * menu)
 |   Return Values :  The index or ERR if this is an invalid item pointer
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-item_index(const ITEM * item)
+item_index(const ITEM *item)
 {
   T((T_CALLED("item_index(%p)"), (const void *)item));
   returnCode((item && item->imenu) ? item->index : ERR);
diff --git a/menu/m_item_nam.c b/menu/m_item_nam.c
index 7d11fe5d..92966270 100644
--- a/menu/m_item_nam.c
+++ b/menu/m_item_nam.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_item_nam.c,v 1.17 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_item_nam.c,v 1.18 2020/12/12 00:38:08 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -49,7 +49,7 @@ MODULE_ID("$Id: m_item_nam.c,v 1.17 2020/05/24 01:40:20 anonymous.maarten Exp $"
 |   Return Values :  See above; returns NULL if item is invalid
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(const char *)
-item_name(const ITEM * item)
+item_name(const ITEM *item)
 {
   T((T_CALLED("item_name(%p)"), (const void *)item));
   returnCPtr((item) ? item->name.str : (char *)0);
@@ -64,7 +64,7 @@ item_name(const ITEM * item)
 |   Return Values :  See above; Returns NULL if item is invalid
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(const char *)
-item_description(const ITEM * item)
+item_description(const ITEM *item)
 {
   T((T_CALLED("item_description(%p)"), (const void *)item));
   returnCPtr((item) ? item->description.str : (char *)0);
diff --git a/menu/m_item_new.c b/menu/m_item_new.c
index 403a470c..1e6130e6 100644
--- a/menu/m_item_new.c
+++ b/menu/m_item_new.c
@@ -45,7 +45,7 @@
 #endif
 #endif
 
-MODULE_ID("$Id: m_item_new.c,v 1.35 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_item_new.c,v 1.36 2020/12/12 00:38:08 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -75,7 +75,7 @@ Is_Printable_String(const char *s)
 
       mbstowcs(temp, s, (unsigned)count);
       for (n = 0; n < count; ++n)
-	if (!iswprint((wint_t) temp[n]))
+	if (!iswprint((wint_t)temp[n]))
 	  {
 	    result = FALSE;
 	    break;
@@ -118,12 +118,13 @@ new_item(const char *name, const char *description)
 
   if (!name || (*name == '\0') || !Is_Printable_String(name))
     {
-      item = (ITEM *) 0;
+      item = (ITEM *)0;
       SET_ERROR(E_BAD_ARGUMENT);
     }
   else
     {
       item = typeCalloc(ITEM, 1);
+
       if (item)
 	{
 	  *item = _nc_Default_Item;	/* hope we have struct assignment */
@@ -161,7 +162,7 @@ new_item(const char *name, const char *description)
 |                    E_CONNECTED       - item is still connected to a menu    
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-free_item(ITEM * item)
+free_item(ITEM *item)
 {
   T((T_CALLED("free_item(%p)"), (void *)item));
 
@@ -194,7 +195,7 @@ free_item(ITEM * item)
 |                    E_SYSTEM_ERROR     - no memory to store mark
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-set_menu_mark(MENU * menu, const char *mark)
+set_menu_mark(MENU *menu, const char *mark)
 {
   short l;
 
@@ -266,7 +267,7 @@ set_menu_mark(MENU * menu, const char *mark)
 |   Return Values :  The marker string pointer or NULL if no marker defined
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(const char *)
-menu_mark(const MENU * menu)
+menu_mark(const MENU *menu)
 {
   T((T_CALLED("menu_mark(%p)"), (const void *)menu));
   returnPtr(Normalize_Menu(menu)->mark);
diff --git a/menu/m_item_opt.c b/menu/m_item_opt.c
index c40eb3ab..985fd298 100644
--- a/menu/m_item_opt.c
+++ b/menu/m_item_opt.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_item_opt.c,v 1.20 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_item_opt.c,v 1.21 2020/12/12 00:38:08 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -52,7 +52,7 @@ MODULE_ID("$Id: m_item_opt.c,v 1.20 2020/05/24 01:40:20 anonymous.maarten Exp $"
 |                    E_BAD_ARGUMENT  - invalid item options
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-set_item_opts(ITEM * item, Item_Options opts)
+set_item_opts(ITEM *item, Item_Options opts)
 {
   T((T_CALLED("set_menu_opts(%p,%d)"), (void *)item, opts));
 
@@ -95,7 +95,7 @@ set_item_opts(ITEM * item, Item_Options opts)
 |                    E_BAD_ARGUMENT  - invalid options
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-item_opts_off(ITEM * item, Item_Options opts)
+item_opts_off(ITEM *item, Item_Options opts)
 {
   ITEM *citem = item;		/* use a copy because set_item_opts must detect
 
@@ -123,7 +123,7 @@ item_opts_off(ITEM * item, Item_Options opts)
 |                    E_BAD_ARGUMENT  - invalid options
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-item_opts_on(ITEM * item, Item_Options opts)
+item_opts_on(ITEM *item, Item_Options opts)
 {
   ITEM *citem = item;		/* use a copy because set_item_opts must detect
 
@@ -151,7 +151,7 @@ item_opts_on(ITEM * item, Item_Options opts)
 |   Return Values :  Items options
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(Item_Options)
-item_opts(const ITEM * item)
+item_opts(const ITEM *item)
 {
   T((T_CALLED("item_opts(%p)"), (const void *)item));
   returnItemOpts(ALL_ITEM_OPTS & Normalize_Item(item)->opt);
diff --git a/menu/m_item_top.c b/menu/m_item_top.c
index 57f1a431..ee0d17b4 100644
--- a/menu/m_item_top.c
+++ b/menu/m_item_top.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_item_top.c,v 1.13 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_item_top.c,v 1.14 2020/12/12 00:38:08 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -51,7 +51,7 @@ MODULE_ID("$Id: m_item_top.c,v 1.13 2020/05/24 01:40:20 anonymous.maarten Exp $"
 |                    E_NOT_CONNECTED  - there are no items for the menu
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-set_top_row(MENU * menu, int row)
+set_top_row(MENU *menu, int row)
 {
   ITEM *item;
 
@@ -61,7 +61,7 @@ set_top_row(MENU * menu, int row)
     {
       if (menu->status & _IN_DRIVER)
 	RETURN(E_BAD_STATE);
-      if (menu->items == (ITEM **) 0)
+      if (menu->items == (ITEM **)0)
 	RETURN(E_NOT_CONNECTED);
 
       if ((row < 0) || (row > (menu->rows - menu->arows)))
@@ -93,7 +93,7 @@ set_top_row(MENU * menu, int row)
 |   Return Values :  The row number or ERR if there is no row
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-top_row(const MENU * menu)
+top_row(const MENU *menu)
 {
   T((T_CALLED("top_row(%p)"), (const void *)menu));
   if (menu && menu->items && *(menu->items))
diff --git a/menu/m_item_use.c b/menu/m_item_use.c
index 6bf738a4..52d087e9 100644
--- a/menu/m_item_use.c
+++ b/menu/m_item_use.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_item_use.c,v 1.20 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_item_use.c,v 1.21 2020/12/12 00:38:08 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu
@@ -50,7 +50,7 @@ MODULE_ID("$Id: m_item_use.c,v 1.20 2020/05/24 01:40:20 anonymous.maarten Exp $"
 |   Return Values :  E_OK               - success
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-set_item_userptr(ITEM * item, void *userptr)
+set_item_userptr(ITEM *item, void *userptr)
 {
   T((T_CALLED("set_item_userptr(%p,%p)"), (void *)item, (void *)userptr));
   Normalize_Item(item)->userptr = userptr;
@@ -68,7 +68,7 @@ set_item_userptr(ITEM * item, void *userptr)
 |                    NULL is returned.
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(void *)
-item_userptr(const ITEM * item)
+item_userptr(const ITEM *item)
 {
   T((T_CALLED("item_userptr(%p)"), (const void *)item));
   returnVoidPtr(Normalize_Item(item)->userptr);
diff --git a/menu/m_item_val.c b/menu/m_item_val.c
index c62a4e17..a5c38e27 100644
--- a/menu/m_item_val.c
+++ b/menu/m_item_val.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_item_val.c,v 1.17 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_item_val.c,v 1.18 2020/12/12 00:38:08 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -54,7 +54,7 @@ MODULE_ID("$Id: m_item_val.c,v 1.17 2020/05/24 01:40:20 anonymous.maarten Exp $"
 |                    E_REQUEST_DENIED  - not selectable or single valued menu
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-set_item_value(ITEM * item, bool value)
+set_item_value(ITEM *item, bool value)
 {
   MENU *menu;
 
@@ -96,7 +96,7 @@ set_item_value(ITEM * item, bool value)
 |                    FALSE  - if item is not selected
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(bool)
-item_value(const ITEM * item)
+item_value(const ITEM *item)
 {
   T((T_CALLED("item_value(%p)"), (const void *)item));
   returnBool((Normalize_Item(item)->value) ? TRUE : FALSE);
diff --git a/menu/m_item_vis.c b/menu/m_item_vis.c
index 628396e7..8e409cb8 100644
--- a/menu/m_item_vis.c
+++ b/menu/m_item_vis.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_item_vis.c,v 1.18 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_item_vis.c,v 1.19 2020/12/12 00:38:08 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -51,7 +51,7 @@ MODULE_ID("$Id: m_item_vis.c,v 1.18 2020/05/24 01:40:20 anonymous.maarten Exp $"
 |                    FALSE if invisible
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(bool)
-item_visible(const ITEM * item)
+item_visible(const ITEM *item)
 {
   MENU *menu;
 
diff --git a/menu/m_items.c b/menu/m_items.c
index a539fddd..5b24cb76 100644
--- a/menu/m_items.c
+++ b/menu/m_items.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_items.c,v 1.19 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_items.c,v 1.20 2020/12/12 00:38:08 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -54,7 +54,7 @@ MODULE_ID("$Id: m_items.c,v 1.19 2020/05/24 01:40:20 anonymous.maarten Exp $")
 |                                     passed to the function
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-set_menu_items(MENU * menu, ITEM ** items)
+set_menu_items(MENU *menu, ITEM **items)
 {
   T((T_CALLED("set_menu_items(%p,%p)"), (void *)menu, (void *)items));
 
@@ -86,10 +86,10 @@ set_menu_items(MENU * menu, ITEM ** items)
 |   Return Values :  NULL on error
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(ITEM **)
-menu_items(const MENU * menu)
+menu_items(const MENU *menu)
 {
   T((T_CALLED("menu_items(%p)"), (const void *)menu));
-  returnItemPtr(menu ? menu->items : (ITEM **) 0);
+  returnItemPtr(menu ? menu->items : (ITEM **)0);
 }
 
 /*---------------------------------------------------------------------------
@@ -102,7 +102,7 @@ menu_items(const MENU * menu)
 |   Return Values :  Number of items or -1 to indicate error.
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-item_count(const MENU * menu)
+item_count(const MENU *menu)
 {
   T((T_CALLED("item_count(%p)"), (const void *)menu));
   returnCode(menu ? menu->nitems : -1);
diff --git a/menu/m_new.c b/menu/m_new.c
index c1133896..5526887c 100644
--- a/menu/m_new.c
+++ b/menu/m_new.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_new.c,v 1.23 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_new.c,v 1.24 2020/12/12 00:38:08 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -52,7 +52,7 @@ MODULE_ID("$Id: m_new.c,v 1.23 2020/05/24 01:40:20 anonymous.maarten Exp $")
 |   Return Values :  NULL on error
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(MENU *)
-NCURSES_SP_NAME(new_menu) (NCURSES_SP_DCLx ITEM ** items)
+NCURSES_SP_NAME(new_menu) (NCURSES_SP_DCLx ITEM **items)
 {
   int err = E_SYSTEM_ERROR;
   MENU *menu = typeCalloc(MENU, 1);
@@ -77,7 +77,7 @@ NCURSES_SP_NAME(new_menu) (NCURSES_SP_DCLx ITEM ** items)
 	    {
 	      err = E_NOT_CONNECTED;
 	      free(menu);
-	      menu = (MENU *) 0;
+	      menu = (MENU *)0;
 	    }
 	  else
 	    err = E_OK;
@@ -103,7 +103,7 @@ NCURSES_SP_NAME(new_menu) (NCURSES_SP_DCLx ITEM ** items)
 +--------------------------------------------------------------------------*/
 #if NCURSES_SP_FUNCS
 MENU_EXPORT(MENU *)
-new_menu(ITEM ** items)
+new_menu(ITEM **items)
 {
   return NCURSES_SP_NAME(new_menu) (CURRENT_SCREEN, items);
 }
@@ -121,7 +121,7 @@ new_menu(ITEM ** items)
 |                    E_POSTED           - Menu is already posted
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-free_menu(MENU * menu)
+free_menu(MENU *menu)
 {
   T((T_CALLED("free_menu(%p)"), (void *)menu));
   if (!menu)
diff --git a/menu/m_opts.c b/menu/m_opts.c
index 5f4cd76c..bbf9459c 100644
--- a/menu/m_opts.c
+++ b/menu/m_opts.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_opts.c,v 1.22 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_opts.c,v 1.23 2020/12/12 00:38:08 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu
@@ -54,7 +54,7 @@ MODULE_ID("$Id: m_opts.c,v 1.22 2020/05/24 01:40:20 anonymous.maarten Exp $")
 |                    E_POSTED       - menu is already posted
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-set_menu_opts(MENU * menu, Menu_Options opts)
+set_menu_opts(MENU *menu, Menu_Options opts)
 {
   T((T_CALLED("set_menu_opts(%p,%d)"), (void *)menu, opts));
 
@@ -86,7 +86,7 @@ set_menu_opts(MENU * menu, Menu_Options opts)
 	{
 	  ITEM **item;
 
-	  if (((item = menu->items) != (ITEM **) 0))
+	  if (((item = menu->items) != (ITEM **)0))
 	    for (; *item; item++)
 	      (*item)->value = FALSE;
 	}
@@ -114,7 +114,7 @@ set_menu_opts(MENU * menu, Menu_Options opts)
 |                    E_POSTED       - menu is already posted
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-menu_opts_off(MENU * menu, Menu_Options opts)
+menu_opts_off(MENU *menu, Menu_Options opts)
 {
   MENU *cmenu = menu;		/* use a copy because set_menu_opts must detect
 
@@ -147,7 +147,7 @@ menu_opts_off(MENU * menu, Menu_Options opts)
 |                    E_POSTED       - menu is already posted
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-menu_opts_on(MENU * menu, Menu_Options opts)
+menu_opts_on(MENU *menu, Menu_Options opts)
 {
   MENU *cmenu = menu;		/* use a copy because set_menu_opts must detect
 
@@ -175,7 +175,7 @@ menu_opts_on(MENU * menu, Menu_Options opts)
 |   Return Values :  Menu options
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(Menu_Options)
-menu_opts(const MENU * menu)
+menu_opts(const MENU *menu)
 {
   T((T_CALLED("menu_opts(%p)"), (const void *)menu));
   returnMenuOpts(ALL_MENU_OPTS & Normalize_Menu(menu)->opt);
diff --git a/menu/m_pad.c b/menu/m_pad.c
index 6c87992a..88dad151 100644
--- a/menu/m_pad.c
+++ b/menu/m_pad.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_pad.c,v 1.15 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_pad.c,v 1.16 2020/12/12 00:38:14 tom Exp $")
 
 /* Macro to redraw menu if it is posted and changed */
 #define Refresh_Menu(menu) \
@@ -60,9 +60,9 @@ MODULE_ID("$Id: m_pad.c,v 1.15 2020/05/24 01:40:20 anonymous.maarten Exp $")
 |                    E_BAD_ARGUMENT    - an invalid value has been passed
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-set_menu_pad(MENU * menu, int pad)
+set_menu_pad(MENU *menu, int pad)
 {
-  bool do_refresh = (menu != (MENU *) 0);
+  bool do_refresh = (menu != (MENU *)0);
 
   T((T_CALLED("set_menu_pad(%p,%d)"), (void *)menu, pad));
 
@@ -87,7 +87,7 @@ set_menu_pad(MENU * menu, int pad)
 |   Return Values :  The pad character
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-menu_pad(const MENU * menu)
+menu_pad(const MENU *menu)
 {
   T((T_CALLED("menu_pad(%p)"), (const void *)menu));
   returnCode(Normalize_Menu(menu)->pad);
diff --git a/menu/m_pattern.c b/menu/m_pattern.c
index 469a0021..58047df2 100644
--- a/menu/m_pattern.c
+++ b/menu/m_pattern.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_pattern.c,v 1.18 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_pattern.c,v 1.19 2020/12/12 00:38:14 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -52,7 +52,7 @@ MODULE_ID("$Id: m_pattern.c,v 1.18 2020/05/24 01:40:20 anonymous.maarten Exp $")
 |                    PatternString - as expected
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(char *)
-menu_pattern(const MENU * menu)
+menu_pattern(const MENU *menu)
 {
   static char empty[] = "";
 
@@ -74,7 +74,7 @@ menu_pattern(const MENU * menu)
 |                    E_NO_MATCH        - no item matches pattern
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-set_menu_pattern(MENU * menu, const char *p)
+set_menu_pattern(MENU *menu, const char *p)
 {
   ITEM *matchitem;
   int matchpos;
diff --git a/menu/m_post.c b/menu/m_post.c
index c8ccab2d..bfc63316 100644
--- a/menu/m_post.c
+++ b/menu/m_post.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_post.c,v 1.33 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_post.c,v 1.34 2020/12/12 00:38:14 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu
@@ -50,7 +50,7 @@ MODULE_ID("$Id: m_post.c,v 1.33 2020/05/24 01:40:20 anonymous.maarten Exp $")
 |   Return Values :  -
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(void)
-_nc_Post_Item(const MENU * menu, const ITEM * item)
+_nc_Post_Item(const MENU *menu, const ITEM *item)
 {
   int i;
   chtype ch;
@@ -198,7 +198,7 @@ _nc_Post_Item(const MENU * menu, const ITEM * item)
 |   Return Values :  -
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(void)
-_nc_Draw_Menu(const MENU * menu)
+_nc_Draw_Menu(const MENU *menu)
 {
   ITEM *item = menu->items[0];
   ITEM *lasthor, *lastvert;
@@ -213,14 +213,14 @@ _nc_Draw_Menu(const MENU * menu)
   werase(menu->win);
   wbkgdset(menu->win, s_bkgd);
 
-  lastvert = (menu->opt & O_NONCYCLIC) ? (ITEM *) 0 : item;
+  lastvert = (menu->opt & O_NONCYCLIC) ? (ITEM *)0 : item;
 
   do
     {
       wmove(menu->win, y, 0);
 
       hitem = item;
-      lasthor = (menu->opt & O_NONCYCLIC) ? (ITEM *) 0 : hitem;
+      lasthor = (menu->opt & O_NONCYCLIC) ? (ITEM *)0 : hitem;
 
       do
 	{
@@ -268,7 +268,7 @@ _nc_Draw_Menu(const MENU * menu)
 |                    E_POSTED            - Menu already posted
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-post_menu(MENU * menu)
+post_menu(MENU *menu)
 {
   T((T_CALLED("post_menu(%p)"), (void *)menu));
 
@@ -340,7 +340,7 @@ post_menu(MENU * menu)
 |                    E_NOT_POSTED      - menu is not posted
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-unpost_menu(MENU * menu)
+unpost_menu(MENU *menu)
 {
   WINDOW *win;
 
diff --git a/menu/m_scale.c b/menu/m_scale.c
index 3021b3e2..0067ae76 100644
--- a/menu/m_scale.c
+++ b/menu/m_scale.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_scale.c,v 1.12 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_scale.c,v 1.13 2020/12/12 00:38:14 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -52,7 +52,7 @@ MODULE_ID("$Id: m_scale.c,v 1.12 2020/05/24 01:40:20 anonymous.maarten Exp $")
 |                    E_NOT_CONNECTED       - no items are connected to menu
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-scale_menu(const MENU * menu, int *rows, int *cols)
+scale_menu(const MENU *menu, int *rows, int *cols)
 {
   T((T_CALLED("scale_menu(%p,%p,%p)"),
      (const void *)menu,
diff --git a/menu/m_spacing.c b/menu/m_spacing.c
index ff32c86b..76f8d5ca 100644
--- a/menu/m_spacing.c
+++ b/menu/m_spacing.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_spacing.c,v 1.21 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_spacing.c,v 1.22 2020/12/12 00:38:14 tom Exp $")
 
 #define MAX_SPC_DESC ((TABSIZE) ? (TABSIZE) : 8)
 #define MAX_SPC_COLS ((TABSIZE) ? (TABSIZE) : 8)
@@ -53,7 +53,7 @@ MODULE_ID("$Id: m_spacing.c,v 1.21 2020/05/24 01:40:20 anonymous.maarten Exp $")
 |   Return Values :  E_OK                 - on success
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-set_menu_spacing(MENU * menu, int s_desc, int s_row, int s_col)
+set_menu_spacing(MENU *menu, int s_desc, int s_row, int s_col)
 {
   MENU *m;			/* split for ATAC workaround */
 
@@ -88,7 +88,7 @@ set_menu_spacing(MENU * menu, int s_desc, int s_row, int s_col)
 |   Return Values :  E_OK             - on success
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-menu_spacing(const MENU * menu, int *s_desc, int *s_row, int *s_col)
+menu_spacing(const MENU *menu, int *s_desc, int *s_row, int *s_col)
 {
   const MENU *m;		/* split for ATAC workaround */
 
diff --git a/menu/m_sub.c b/menu/m_sub.c
index 9f2fc139..5f898b0f 100644
--- a/menu/m_sub.c
+++ b/menu/m_sub.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_sub.c,v 1.14 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_sub.c,v 1.15 2020/12/12 00:38:14 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -50,7 +50,7 @@ MODULE_ID("$Id: m_sub.c,v 1.14 2020/05/24 01:40:20 anonymous.maarten Exp $")
 |                    E_POSTED       - menu is already posted
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-set_menu_sub(MENU * menu, WINDOW *win)
+set_menu_sub(MENU *menu, WINDOW *win)
 {
   T((T_CALLED("set_menu_sub(%p,%p)"), (void *)menu, (void *)win));
 
@@ -90,7 +90,7 @@ set_menu_sub(MENU * menu, WINDOW *win)
 |   Return Values :  NULL on error, otherwise a pointer to the window
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(WINDOW *)
-menu_sub(const MENU * menu)
+menu_sub(const MENU *menu)
 {
   const MENU *m = Normalize_Menu(menu);
 
diff --git a/menu/m_trace.c b/menu/m_trace.c
index b0ab45ee..331236c5 100644
--- a/menu/m_trace.c
+++ b/menu/m_trace.c
@@ -33,17 +33,17 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_trace.c,v 1.8 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_trace.c,v 1.9 2020/12/12 00:38:14 tom Exp $")
 
 MENU_EXPORT(ITEM *)
-_nc_retrace_item(ITEM * code)
+_nc_retrace_item(ITEM *code)
 {
   T((T_RETURN("%p"), (void *)code));
   return code;
 }
 
 MENU_EXPORT(ITEM **)
-_nc_retrace_item_ptr(ITEM ** code)
+_nc_retrace_item_ptr(ITEM **code)
 {
   T((T_RETURN("%p"), (void *)code));
   return code;
@@ -57,7 +57,7 @@ _nc_retrace_item_opts(Item_Options code)
 }
 
 MENU_EXPORT(MENU *)
-_nc_retrace_menu(MENU * code)
+_nc_retrace_menu(MENU *code)
 {
   T((T_RETURN("%p"), (void *)code));
   return code;
diff --git a/menu/m_userptr.c b/menu/m_userptr.c
index dc87da12..72f2d4ca 100644
--- a/menu/m_userptr.c
+++ b/menu/m_userptr.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_userptr.c,v 1.20 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_userptr.c,v 1.21 2020/12/12 00:38:14 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu
@@ -50,7 +50,7 @@ MODULE_ID("$Id: m_userptr.c,v 1.20 2020/05/24 01:40:20 anonymous.maarten Exp $")
 |   Return Values :  E_OK         - success
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-set_menu_userptr(MENU * menu, void *userptr)
+set_menu_userptr(MENU *menu, void *userptr)
 {
   T((T_CALLED("set_menu_userptr(%p,%p)"), (void *)menu, (void *)userptr));
   Normalize_Menu(menu)->userptr = userptr;
@@ -68,7 +68,7 @@ set_menu_userptr(MENU * menu, void *userptr)
 |                    NULL is returned
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(void *)
-menu_userptr(const MENU * menu)
+menu_userptr(const MENU *menu)
 {
   T((T_CALLED("menu_userptr(%p)"), (const void *)menu));
   returnVoidPtr(Normalize_Menu(menu)->userptr);
diff --git a/menu/m_win.c b/menu/m_win.c
index d4a9f75d..72f72ad0 100644
--- a/menu/m_win.c
+++ b/menu/m_win.c
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_win.c,v 1.19 2020/05/24 01:40:20 anonymous.maarten Exp $")
+MODULE_ID("$Id: m_win.c,v 1.20 2020/12/12 00:38:14 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -50,7 +50,7 @@ MODULE_ID("$Id: m_win.c,v 1.19 2020/05/24 01:40:20 anonymous.maarten Exp $")
 |                    E_POSTED           - menu is already posted
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(int)
-set_menu_win(MENU * menu, WINDOW *win)
+set_menu_win(MENU *menu, WINDOW *win)
 {
   T((T_CALLED("set_menu_win(%p,%p)"), (void *)menu, (void *)win));
 
@@ -90,7 +90,7 @@ set_menu_win(MENU * menu, WINDOW *win)
 |   Return Values :  NULL on error, otherwise pointer to window
 +--------------------------------------------------------------------------*/
 MENU_EXPORT(WINDOW *)
-menu_win(const MENU * menu)
+menu_win(const MENU *menu)
 {
   const MENU *m = Normalize_Menu(menu);
 
diff --git a/menu/menu.h b/menu/menu.h
index bef5a5cb..e5a53729 100644
--- a/menu/menu.h
+++ b/menu/menu.h
@@ -31,7 +31,7 @@
  *   Author:  Juergen Pfeifer, 1995,1997                                    *
  ****************************************************************************/
 
-/* $Id: menu.h,v 1.25 2020/07/04 20:38:43 tom Exp $ */
+/* $Id: menu.h,v 1.26 2020/12/12 00:38:02 tom Exp $ */
 
 #ifndef ETI_MENU
 #define ETI_MENU
@@ -44,7 +44,8 @@
 #include 
 
 #ifdef __cplusplus
-extern "C" {
+extern "C"
+{
 #endif
 
 #if defined(BUILDING_MENU)
@@ -58,8 +59,8 @@ extern "C" {
 #define MENU_EXPORT(type) MENU_IMPEXP type NCURSES_API
 #define MENU_EXPORT_VAR(type) MENU_IMPEXP type
 
-typedef int Menu_Options;
-typedef int Item_Options;
+  typedef int Menu_Options;
+  typedef int Item_Options;
 
 /* Menu options: */
 #define O_ONEVALUE      (0x01)
@@ -74,85 +75,85 @@ typedef int Item_Options;
 #define O_SELECTABLE    (0x01)
 
 #if !NCURSES_OPAQUE_MENU
-typedef struct
-{
-  const char* str;
-  unsigned short length;
-} TEXT;
-#endif /* !NCURSES_OPAQUE_MENU */
+  typedef struct
+    {
+      const char *str;
+      unsigned short length;
+    }
+  TEXT;
+#endif				/* !NCURSES_OPAQUE_MENU */
 
-struct tagMENU;
+  struct tagMENU;
 
-typedef struct tagITEM 
+  typedef struct tagITEM
 #if !NCURSES_OPAQUE_MENU
-{
-  TEXT           name;        /* name of menu item                         */
-  TEXT           description; /* description of item, optional in display  */ 
-  struct tagMENU *imenu;      /* Pointer to parent menu                    */
-  void           *userptr;    /* Pointer to user defined per item data     */ 
-  Item_Options   opt;         /* Item options                              */ 
-  short          index;       /* Item number if connected to a menu        */
-  short          y;           /* y and x location of item in menu          */
-  short          x;
-  bool           value;       /* Selection value                           */
-                             
-  struct tagITEM *left;       /* neighbor items                            */
-  struct tagITEM *right;
-  struct tagITEM *up;
-  struct tagITEM *down;
-
-}
-#endif /* !NCURSES_OPAQUE_MENU */
-ITEM;
-
-typedef void (*Menu_Hook)(struct tagMENU *);
-
-typedef struct tagMENU 
-#if 1					/* not yet: !NCURSES_OPAQUE_MENU   */
-{
-  short          height;                /* Nr. of chars high               */
-  short          width;                 /* Nr. of chars wide               */
-  short          rows;                  /* Nr. of items high               */
-  short          cols;                  /* Nr. of items wide               */
-  short          frows;                 /* Nr. of formatted items high     */
-  short          fcols;                 /* Nr. of formatted items wide     */
-  short          arows;                 /* Nr. of items high (actual)      */
-  short          namelen;               /* Max. name length                */
-  short          desclen;               /* Max. description length         */
-  short          marklen;               /* Length of mark, if any          */
-  short          itemlen;               /* Length of one item              */
-  short          spc_desc;              /* Spacing for descriptor          */
-  short          spc_cols;              /* Spacing for columns             */
-  short          spc_rows;              /* Spacing for rows                */ 
-  char          *pattern;               /* Buffer to store match chars     */
-  short          pindex;                /* Index into pattern buffer       */
-  WINDOW        *win;                   /* Window containing menu          */
-  WINDOW        *sub;                   /* Subwindow for menu display      */
-  WINDOW        *userwin;               /* User's window                   */
-  WINDOW        *usersub;               /* User's subwindow                */
-  ITEM          **items;                /* array of items                  */ 
-  short          nitems;                /* Nr. of items in menu            */
-  ITEM          *curitem;               /* Current item                    */
-  short          toprow;                /* Top row of menu                 */
-  chtype         fore;                  /* Selection attribute             */
-  chtype         back;                  /* Nonselection attribute          */
-  chtype         grey;                  /* Inactive attribute              */
-  unsigned char  pad;                   /* Pad character                   */
-
-  Menu_Hook      menuinit;              /* User hooks                      */
-  Menu_Hook      menuterm;
-  Menu_Hook      iteminit;
-  Menu_Hook      itemterm;
-
-  void          *userptr;               /* Pointer to menus user data      */
-  char          *mark;                  /* Pointer to marker string        */
-
-  Menu_Options   opt;                   /* Menu options                    */
-  unsigned short status;                /* Internal state of menu          */
-}
-#endif /* !NCURSES_OPAQUE_MENU */
-MENU;
-
+    {
+      TEXT name;		/* name of menu item                         */
+      TEXT description;		/* description of item, optional in display  */
+      struct tagMENU *imenu;	/* Pointer to parent menu                    */
+      void *userptr;		/* Pointer to user defined per item data     */
+      Item_Options opt;		/* Item options                              */
+      short index;		/* Item number if connected to a menu        */
+      short y;			/* y and x location of item in menu          */
+      short x;
+      bool value;		/* Selection value                           */
+
+      struct tagITEM *left;	/* neighbor items                            */
+      struct tagITEM *right;
+      struct tagITEM *up;
+      struct tagITEM *down;
+
+    }
+#endif				/* !NCURSES_OPAQUE_MENU */
+  ITEM;
+
+  typedef void (*Menu_Hook) (struct tagMENU *);
+
+  typedef struct tagMENU
+#if 1				/* not yet: !NCURSES_OPAQUE_MENU   */
+    {
+      short height;		/* Nr. of chars high               */
+      short width;		/* Nr. of chars wide               */
+      short rows;		/* Nr. of items high               */
+      short cols;		/* Nr. of items wide               */
+      short frows;		/* Nr. of formatted items high     */
+      short fcols;		/* Nr. of formatted items wide     */
+      short arows;		/* Nr. of items high (actual)      */
+      short namelen;		/* Max. name length                */
+      short desclen;		/* Max. description length         */
+      short marklen;		/* Length of mark, if any          */
+      short itemlen;		/* Length of one item              */
+      short spc_desc;		/* Spacing for descriptor          */
+      short spc_cols;		/* Spacing for columns             */
+      short spc_rows;		/* Spacing for rows                */
+      char *pattern;		/* Buffer to store match chars     */
+      short pindex;		/* Index into pattern buffer       */
+      WINDOW *win;		/* Window containing menu          */
+      WINDOW *sub;		/* Subwindow for menu display      */
+      WINDOW *userwin;		/* User's window                   */
+      WINDOW *usersub;		/* User's subwindow                */
+      ITEM **items;		/* array of items                  */
+      short nitems;		/* Nr. of items in menu            */
+      ITEM *curitem;		/* Current item                    */
+      short toprow;		/* Top row of menu                 */
+      chtype fore;		/* Selection attribute             */
+      chtype back;		/* Nonselection attribute          */
+      chtype grey;		/* Inactive attribute              */
+      unsigned char pad;	/* Pad character                   */
+
+      Menu_Hook menuinit;	/* User hooks                      */
+      Menu_Hook menuterm;
+      Menu_Hook iteminit;
+      Menu_Hook itemterm;
+
+      void *userptr;		/* Pointer to menus user data      */
+      char *mark;		/* Pointer to marker string        */
+
+      Menu_Options opt;		/* Menu options                    */
+      unsigned short status;	/* Internal state of menu          */
+    }
+#endif				/* !NCURSES_OPAQUE_MENU */
+  MENU;
 
 /* Define keys */
 
@@ -191,92 +192,90 @@ MENU;
 #  define MAX_COMMAND (KEY_MAX + 128)
 #endif
 
-
 /* --------- prototypes for libmenu functions ----------------------------- */
 
-extern MENU_EXPORT(ITEM **)	menu_items (const MENU *);
-extern MENU_EXPORT(ITEM *)	current_item (const MENU *);
-extern MENU_EXPORT(ITEM *)	new_item (const char *,const char *);
-
-extern MENU_EXPORT(MENU *)	new_menu (ITEM **);
-
-extern MENU_EXPORT(Item_Options)	item_opts (const ITEM *);
-extern MENU_EXPORT(Menu_Options)	menu_opts (const MENU *);
-
-extern MENU_EXPORT(Menu_Hook)	item_init (const MENU *);
-extern MENU_EXPORT(Menu_Hook)	item_term (const MENU *);
-extern MENU_EXPORT(Menu_Hook)	menu_init (const MENU *);
-extern MENU_EXPORT(Menu_Hook)	menu_term (const MENU *);
-
-extern MENU_EXPORT(WINDOW *)	menu_sub (const MENU *);
-extern MENU_EXPORT(WINDOW *)	menu_win (const MENU *);
-
-extern MENU_EXPORT(const char *)	item_description (const ITEM *);
-extern MENU_EXPORT(const char *)	item_name (const ITEM *);
-extern MENU_EXPORT(const char *)	menu_mark (const MENU *);
-extern MENU_EXPORT(const char *)	menu_request_name (int);
-
-extern MENU_EXPORT(char *)	menu_pattern (const MENU *);
-
-extern MENU_EXPORT(void *)	menu_userptr (const MENU *);
-extern MENU_EXPORT(void *)	item_userptr (const ITEM *);
-
-extern MENU_EXPORT(chtype)	menu_back (const MENU *);
-extern MENU_EXPORT(chtype)	menu_fore (const MENU *);
-extern MENU_EXPORT(chtype)	menu_grey (const MENU *);
-
-extern MENU_EXPORT(int)	free_item (ITEM *);
-extern MENU_EXPORT(int)	free_menu (MENU *);
-extern MENU_EXPORT(int)	item_count (const MENU *);
-extern MENU_EXPORT(int)	item_index (const ITEM *);
-extern MENU_EXPORT(int)	item_opts_off (ITEM *,Item_Options);
-extern MENU_EXPORT(int)	item_opts_on (ITEM *,Item_Options);
-extern MENU_EXPORT(int)	menu_driver (MENU *,int);
-extern MENU_EXPORT(int)	menu_opts_off (MENU *,Menu_Options);
-extern MENU_EXPORT(int)	menu_opts_on (MENU *,Menu_Options);
-extern MENU_EXPORT(int)	menu_pad (const MENU *);
-extern MENU_EXPORT(int)	pos_menu_cursor (const MENU *);
-extern MENU_EXPORT(int)	post_menu (MENU *);
-extern MENU_EXPORT(int)	scale_menu (const MENU *,int *,int *);
-extern MENU_EXPORT(int)	set_current_item (MENU *menu,ITEM *item);
-extern MENU_EXPORT(int)	set_item_init (MENU *, Menu_Hook);
-extern MENU_EXPORT(int)	set_item_opts (ITEM *,Item_Options);
-extern MENU_EXPORT(int)	set_item_term (MENU *, Menu_Hook);
-extern MENU_EXPORT(int)	set_item_userptr (ITEM *, void *);
-extern MENU_EXPORT(int)	set_item_value (ITEM *,bool);
-extern MENU_EXPORT(int)	set_menu_back (MENU *,chtype);
-extern MENU_EXPORT(int)	set_menu_fore (MENU *,chtype);
-extern MENU_EXPORT(int)	set_menu_format (MENU *,int,int);
-extern MENU_EXPORT(int)	set_menu_grey (MENU *,chtype);
-extern MENU_EXPORT(int)	set_menu_init (MENU *, Menu_Hook);
-extern MENU_EXPORT(int)	set_menu_items (MENU *,ITEM **);
-extern MENU_EXPORT(int)	set_menu_mark (MENU *, const char *);
-extern MENU_EXPORT(int)	set_menu_opts (MENU *,Menu_Options);
-extern MENU_EXPORT(int)	set_menu_pad (MENU *,int);
-extern MENU_EXPORT(int)	set_menu_pattern (MENU *,const char *);
-extern MENU_EXPORT(int)	set_menu_sub (MENU *,WINDOW *);
-extern MENU_EXPORT(int)	set_menu_term (MENU *, Menu_Hook);
-extern MENU_EXPORT(int)	set_menu_userptr (MENU *,void *);
-extern MENU_EXPORT(int)	set_menu_win (MENU *,WINDOW *);
-extern MENU_EXPORT(int)	set_top_row (MENU *,int);
-extern MENU_EXPORT(int)	top_row (const MENU *);
-extern MENU_EXPORT(int)	unpost_menu (MENU *);
-extern MENU_EXPORT(int)	menu_request_by_name (const char *);
-extern MENU_EXPORT(int)	set_menu_spacing (MENU *,int,int,int);
-extern MENU_EXPORT(int)	menu_spacing (const MENU *,int *,int *,int *);
-
-
-extern MENU_EXPORT(bool)	item_value (const ITEM *);
-extern MENU_EXPORT(bool)	item_visible (const ITEM *);
-
-extern MENU_EXPORT(void)	menu_format (const MENU *,int *,int *);
+  extern MENU_EXPORT(ITEM **) menu_items(const MENU *);
+  extern MENU_EXPORT(ITEM *) current_item(const MENU *);
+  extern MENU_EXPORT(ITEM *) new_item(const char *, const char *);
+
+  extern MENU_EXPORT(MENU *) new_menu(ITEM **);
+
+  extern MENU_EXPORT(Item_Options) item_opts(const ITEM *);
+  extern MENU_EXPORT(Menu_Options) menu_opts(const MENU *);
+
+  extern MENU_EXPORT(Menu_Hook) item_init(const MENU *);
+  extern MENU_EXPORT(Menu_Hook) item_term(const MENU *);
+  extern MENU_EXPORT(Menu_Hook) menu_init(const MENU *);
+  extern MENU_EXPORT(Menu_Hook) menu_term(const MENU *);
+
+  extern MENU_EXPORT(WINDOW *) menu_sub(const MENU *);
+  extern MENU_EXPORT(WINDOW *) menu_win(const MENU *);
+
+  extern MENU_EXPORT(const char *) item_description(const ITEM *);
+  extern MENU_EXPORT(const char *) item_name(const ITEM *);
+  extern MENU_EXPORT(const char *) menu_mark(const MENU *);
+  extern MENU_EXPORT(const char *) menu_request_name(int);
+
+  extern MENU_EXPORT(char *) menu_pattern(const MENU *);
+
+  extern MENU_EXPORT(void *) menu_userptr(const MENU *);
+  extern MENU_EXPORT(void *) item_userptr(const ITEM *);
+
+  extern MENU_EXPORT(chtype) menu_back(const MENU *);
+  extern MENU_EXPORT(chtype) menu_fore(const MENU *);
+  extern MENU_EXPORT(chtype) menu_grey(const MENU *);
+
+  extern MENU_EXPORT(int) free_item(ITEM *);
+  extern MENU_EXPORT(int) free_menu(MENU *);
+  extern MENU_EXPORT(int) item_count(const MENU *);
+  extern MENU_EXPORT(int) item_index(const ITEM *);
+  extern MENU_EXPORT(int) item_opts_off(ITEM *, Item_Options);
+  extern MENU_EXPORT(int) item_opts_on(ITEM *, Item_Options);
+  extern MENU_EXPORT(int) menu_driver(MENU *, int);
+  extern MENU_EXPORT(int) menu_opts_off(MENU *, Menu_Options);
+  extern MENU_EXPORT(int) menu_opts_on(MENU *, Menu_Options);
+  extern MENU_EXPORT(int) menu_pad(const MENU *);
+  extern MENU_EXPORT(int) pos_menu_cursor(const MENU *);
+  extern MENU_EXPORT(int) post_menu(MENU *);
+  extern MENU_EXPORT(int) scale_menu(const MENU *, int *, int *);
+  extern MENU_EXPORT(int) set_current_item(MENU *menu, ITEM *item);
+  extern MENU_EXPORT(int) set_item_init(MENU *, Menu_Hook);
+  extern MENU_EXPORT(int) set_item_opts(ITEM *, Item_Options);
+  extern MENU_EXPORT(int) set_item_term(MENU *, Menu_Hook);
+  extern MENU_EXPORT(int) set_item_userptr(ITEM *, void *);
+  extern MENU_EXPORT(int) set_item_value(ITEM *, bool);
+  extern MENU_EXPORT(int) set_menu_back(MENU *, chtype);
+  extern MENU_EXPORT(int) set_menu_fore(MENU *, chtype);
+  extern MENU_EXPORT(int) set_menu_format(MENU *, int, int);
+  extern MENU_EXPORT(int) set_menu_grey(MENU *, chtype);
+  extern MENU_EXPORT(int) set_menu_init(MENU *, Menu_Hook);
+  extern MENU_EXPORT(int) set_menu_items(MENU *, ITEM **);
+  extern MENU_EXPORT(int) set_menu_mark(MENU *, const char *);
+  extern MENU_EXPORT(int) set_menu_opts(MENU *, Menu_Options);
+  extern MENU_EXPORT(int) set_menu_pad(MENU *, int);
+  extern MENU_EXPORT(int) set_menu_pattern(MENU *, const char *);
+  extern MENU_EXPORT(int) set_menu_sub(MENU *, WINDOW *);
+  extern MENU_EXPORT(int) set_menu_term(MENU *, Menu_Hook);
+  extern MENU_EXPORT(int) set_menu_userptr(MENU *, void *);
+  extern MENU_EXPORT(int) set_menu_win(MENU *, WINDOW *);
+  extern MENU_EXPORT(int) set_top_row(MENU *, int);
+  extern MENU_EXPORT(int) top_row(const MENU *);
+  extern MENU_EXPORT(int) unpost_menu(MENU *);
+  extern MENU_EXPORT(int) menu_request_by_name(const char *);
+  extern MENU_EXPORT(int) set_menu_spacing(MENU *, int, int, int);
+  extern MENU_EXPORT(int) menu_spacing(const MENU *, int *, int *, int *);
+
+  extern MENU_EXPORT(bool) item_value(const ITEM *);
+  extern MENU_EXPORT(bool) item_visible(const ITEM *);
+
+  extern MENU_EXPORT(void) menu_format(const MENU *, int *, int *);
 
 #if NCURSES_SP_FUNCS
-extern MENU_EXPORT(MENU *)	NCURSES_SP_NAME(new_menu) (SCREEN*, ITEM **);
+  extern MENU_EXPORT(MENU *) NCURSES_SP_NAME(new_menu) (SCREEN *, ITEM **);
 #endif
 
 #ifdef __cplusplus
-  }
+}
 #endif
 
-#endif /* ETI_MENU */
+#endif				/* ETI_MENU */
diff --git a/ncurses/tinfo/tinfo_driver.c b/ncurses/tinfo/tinfo_driver.c
index 1f2641ff..c28d7641 100644
--- a/ncurses/tinfo/tinfo_driver.c
+++ b/ncurses/tinfo/tinfo_driver.c
@@ -52,7 +52,7 @@
 # endif
 #endif
 
-MODULE_ID("$Id: tinfo_driver.c,v 1.70 2020/08/29 21:03:50 tom Exp $")
+MODULE_ID("$Id: tinfo_driver.c,v 1.71 2020/12/12 01:06:40 tom Exp $")
 
 /*
  * SCO defines TIOCGSIZE and the corresponding struct.  Other systems (SunOS,
@@ -1534,8 +1534,8 @@ _nc_get_driver(TERMINAL_CONTROL_BLOCK * TCB, const char *name, int *errret)
 	if ((i + 1) == SIZEOF(DriverTable)) {
 	    /* For Windows >= 10.0.17763 Windows Console interface implements 
 	       virtual Terminal functionality.
-	       If on Windows td_CanHandle returned FALSE althoug the terminal name
-	       is empty, we default to ms-terminal as tinfo TERM type.
+	       If on Windows td_CanHandle returned FALSE although the terminal
+	       name is empty, we default to ms-terminal as tinfo TERM type.
 	     */
 	    if (name == 0 || *name == 0 || (strcmp(name, "unknown") == 0)) {
 		name = MS_TERMINAL;
diff --git a/package/debian-mingw/changelog b/package/debian-mingw/changelog
index 86fb6733..cbdc6076 100644
--- a/package/debian-mingw/changelog
+++ b/package/debian-mingw/changelog
@@ -1,8 +1,8 @@
-ncurses6 (6.2+20201205) unstable; urgency=low
+ncurses6 (6.2+20201212) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey   Sat, 05 Dec 2020 07:53:06 -0500
+ -- Thomas E. Dickey   Fri, 11 Dec 2020 16:43:33 -0500
 
 ncurses6 (5.9-20131005) unstable; urgency=low
 
diff --git a/package/debian-mingw64/changelog b/package/debian-mingw64/changelog
index 86fb6733..cbdc6076 100644
--- a/package/debian-mingw64/changelog
+++ b/package/debian-mingw64/changelog
@@ -1,8 +1,8 @@
-ncurses6 (6.2+20201205) unstable; urgency=low
+ncurses6 (6.2+20201212) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey   Sat, 05 Dec 2020 07:53:06 -0500
+ -- Thomas E. Dickey   Fri, 11 Dec 2020 16:43:33 -0500
 
 ncurses6 (5.9-20131005) unstable; urgency=low
 
diff --git a/package/debian/changelog b/package/debian/changelog
index 7fb866ca..2388b5dd 100644
--- a/package/debian/changelog
+++ b/package/debian/changelog
@@ -1,8 +1,8 @@
-ncurses6 (6.2+20201205) unstable; urgency=low
+ncurses6 (6.2+20201212) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey   Sat, 05 Dec 2020 07:53:06 -0500
+ -- Thomas E. Dickey   Fri, 11 Dec 2020 16:43:33 -0500
 
 ncurses6 (5.9-20120608) unstable; urgency=low
 
diff --git a/package/mingw-ncurses.nsi b/package/mingw-ncurses.nsi
index 1004d297..3cb89dcd 100644
--- a/package/mingw-ncurses.nsi
+++ b/package/mingw-ncurses.nsi
@@ -1,4 +1,4 @@
-; $Id: mingw-ncurses.nsi,v 1.432 2020/12/05 12:53:06 tom Exp $
+; $Id: mingw-ncurses.nsi,v 1.433 2020/12/12 11:43:33 tom Exp $
 
 ; TODO add examples
 ; TODO bump ABI to 6
@@ -10,7 +10,7 @@
 !define VERSION_MAJOR "6"
 !define VERSION_MINOR "2"
 !define VERSION_YYYY  "2020"
-!define VERSION_MMDD  "1205"
+!define VERSION_MMDD  "1212"
 !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
 
 !define MY_ABI   "5"
diff --git a/package/mingw-ncurses.spec b/package/mingw-ncurses.spec
index 89bdc7ae..c82a77f9 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.2
-Release: 20201205
+Release: 20201212
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
diff --git a/package/ncurses.spec b/package/ncurses.spec
index 20bd3d73..8c29ab17 100644
--- a/package/ncurses.spec
+++ b/package/ncurses.spec
@@ -1,7 +1,7 @@
 Summary: shared libraries for terminal handling
 Name: ncurses6
 Version: 6.2
-Release: 20201205
+Release: 20201212
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
diff --git a/package/ncursest.spec b/package/ncursest.spec
index 7c981b33..45482f26 100644
--- a/package/ncursest.spec
+++ b/package/ncursest.spec
@@ -1,7 +1,7 @@
 Summary: Curses library with POSIX thread support.
 Name: ncursest6
 Version: 6.2
-Release: 20201205
+Release: 20201212
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
-- 
2.44.0